Contenu connexe
Similaire à 20130713 オープンハードセミナー raspberry_piに何かつないで遊ぼう
Similaire à 20130713 オープンハードセミナー raspberry_piに何かつないで遊ぼう (18)
20130713 オープンハードセミナー raspberry_piに何かつないで遊ぼう
- 5. Raspbian "wheezy"
• 公式オススメ
• Debianのカスタマイズ版
• デスクトップ環境はLXDE(マイコンボードというより、殆どパソコン
感覚)
• 開発ツールも搭載(クロス環境はもちろん、RPi自身でも
ビルド可能(=セルフビルド))
• (当然)パッケージマネージャapt-get等入っているので、簡単にモジ
ュール追加出来る。ex) $ sudo apt-get install ruby
• POSIX環境用のオープンソースのコードを利用したプロジェクトの作
13年7月13日土曜日
- 23. UART• Universal Asynchronous Receiver Transmitter
• 通常1対1で使用
• RS-232C通信出来る。以下は使用例
• USBシリアル変換チップ経由でPCからコンソール操作
• Arduinoと接続して連携
• UART接続タイプのGPSモジュールを接続
• シリアルサーボを接続
13年7月13日土曜日
- 24. SPI
• Serial Peripheral Interface
• MISO、MOSI、SCLK、SS(その他の名称の場合もあり)の4本で接続
• 1対多で通信可能(通信相手数分、SS信号が必要)
RPi
有機EL
EEPROM
NFCデバイス
接続例
13年7月13日土曜日
- 25. I2C
• Inter-Integrated Circuit
• 2本の信号線で複数の機器と接続可能
• 1対多接続可能(I2Cバス上で、個々のデバイス毎がユニークな番号(ス
レーブアドレス)を持つ。
RPiモータードライバ
モジュール
電流・電圧測定
モジュール
LCD
RTC EEPROM
13年7月13日土曜日
- 30. I2Cデバドラオープン
int
fd;
printf("radicon
startn");
fd
=
open("/dev/i2c-‐1",O_RDWR);
//
RPi
rev1.0は/dev/i2c-‐0
if(fd
<
0){
printf("i2c
open
errorn");
return(-‐1);
}
13年7月13日土曜日
- 31. キーイベント取得
#include
<linux/input.h>
while(1){
read(0,&event,sizeof(event));
if(event.type
==
EV_KEY
&&
event.value
!=
0){
switch(event.code){
case
KEY_UP:
printf("UP
is
pressedn");
motor_l.control(MOTOR_POWER,DRV8830::MOTOR_FORWARD);
motor_r.control(MOTOR_POWER,DRV8830::MOTOR_FORWARD);
break;
case
KEY_DOWN:
printf("DOWN
is
pressedn");
motor_l.control(MOTOR_POWER,DRV8830::MOTOR_REVERSE);
motor_r.control(MOTOR_POWER,DRV8830::MOTOR_REVERSE);
break;
13年7月13日土曜日
- 32. モータードライバ制御
int
DRV8830::control(int
power,int
type)
{
unsigned
char
buff[2];
int
result;
if(type
!=
MOTOR_STANDBY
&&
type
!=
MOTOR_REVERSE
&&
type
!=
MOTOR_FORWARD
&&
type
!=
MOTOR_BRAKE)
{
printf("Errn");
return
0;
}
//
set
slave
address
to
i2c
driver
ioctl(i2c_fd,I2C_SLAVE,i2c_slaveaddr);
//
create
data
to
send
to
DRV8830
buff[0]
=
0x00;
buff[1]
=
(unsigned
char)(power
<<
2)
|
(unsigned
char)(type
&
0x03);
13年7月13日土曜日