く
第一弾
~
RaspberryPi
コン~
様
車体 い
部品表
そ 備品
ソ い
回路設計
GPIO端子
基盤配線
ソ 設計
全体構成
制御
共通部
関数 戻 値
rccontrol
rccontrol コ ン 様
Unix ンソ 構成
rcdrive
rcdrive コ ン 様 構成
構成
コン
GUI設計
RaspberryPi 使 く 第一弾 Web 制御 コ
ン 作 Web 制御 コン
HTTP 用い 信 RaspberryPi用 ワ WebIOPi あ
兼 GUI Web ン HTTP+JavaScript+
PHP 制御 C言語 記述
様
車体
い
● 4輪 コン 作
● コン 車体 販売 い 適当
買う
● 前輪 繋 右 車輪 回転数 変え 車体 回転 実現
● 車輪 回転数 PWM 制御
● 回転 変え 使用
● RaspberryPi 接続 配線
基盤 付 作成
● 電源 乾電池 使う
● RaspberryPi 電源 5V 1A 使う
● RaspberryPi 通信 WiFi経由 実施 RaspberryPi 無線LAN 内蔵
さ い い USB無線LAN子機 使う
● USB無線LAN子機 RaspberryPi USB 接続 電力 足 使え
い ワ USB 経由
● ワ USB へ 電源供給 使う
● RaspberryPi ワ USB 2 必要
出力 あ 用意
部品表
部品 品番 個数 価格 URL 備考
RaspberryPi本
体 1
SD 1 32GB
Raspberry Pi
電源
JapaNice
用 電 源
12000mAh 2USB
時充電
価 格
E3%83%83%E3%83%86%E3%83 %AA%E3%83%BC12000mAh2U SB%E3%83%9D%E3%83%BC%E 3%83%88%E5%90%8C%E6%99% 82%E5%85%85%E9%9B%BBiPho ne5S/dp/B00K9J3RE8/ref=sr_1_6? s=electronics&ie=UTF8&qid=14039 83840&sr=16&keywords=%E3%83 %A2%E3%83%90%E3%82%A4%E 3%83%AB%E3%83%90%E3%83% 83%E3%83%86%E3%83%AA%E3 %83%BC+12000mAh+2USB%E3% 83%9D%E3%83%BC%E3%83%88 %E5%90%8C%E6%99%82%E5%8 5%85%E9%9B%BB MicroUSB(A MicroB)
MPAAMB015BK 1 458
http://www.amazon.co.jp/gp/product /B003UIRIFO/ref=as_li_ss_tl?ie=UT F8&camp=247&creative=7399&cre ativeASIN=B003UIRIFO&linkCode= as2&tag=hiraminecom22
駆動 用電池
電池 単
×
付 1 430
http://www.amazon.co.jp/%E3%82 %AA%E3%83%BC%E3%83%A0% E9%9B%BB%E6%A9%9F%E9%9 B%BB%E6%B1%A0%E3%82%B1 %E3%83%BC%E3%82%B9%E5% 8D%98%EF%BC%93%C3%97%E F%BC%94%E3%82%B9%E3%82 %A4%E3%83%83%E3%83%81%E 3%83%BB%E3%82%AB%E3%83 %90%E3%83%BC%E4%BB%98/d p/B001TRVXKY
無線LAN
WLIUCGNM 1 767
http://www.amazon.co.jp/BUFFALO %E7%84%A1%E7%B7%9ALAN% E5%AD%90%E6%A9%9F%E3%8 2%B3%E3%83%B3%E3%83%91% E3%82%AF%E3%83%88%E3%83 %A2%E3%83%87%E3%83%AB11 n%E6%8A%80%E8%A1%93%E3% 83%BB11gWLIUCGNM/dp/B003 NSAMW2
電源
USB BSH4A01BK 1 1036
%98%E3%80%90PlayStation4BS H4A01BK/dp/B001QS17WA
USB→DC変換
ン
USB→DC(外
3.5mm内
1.3mm)電源供
給
1 405
http://www.amazon.co.jp/gp/product /B0040PGNY8/ref=ox_sc_act_title_ 1?ie=UTF8&psc=1&smid=ALNZ5U
1OCLK
2枚
70157 2 1296
http://www.amazon.co.jp/gp/product /B001VZHRXG/ref=as_li_ss_tl?ie= UTF8&camp=247&creative=7399&c reativeASIN=B001VZHRXG&linkCo de=as2&tag=hiraminecom22
楽 い 作
No.101 36mm
(70101) 4 115
http://www.amazon.co.jp/%E6%A5 %BD%E3%81%97%E3%81%84% E5%B7%A5%E4%BD%9C%E3%8 2%B7%E3%83%AA%E3%83%BC %E3%82%BANo101%E3%83%8 8%E3%83%A9%E3%83%83%E3% 82%AF%E3%82%BF%E3%82%A4 %E3%83%A436mm70101/dp/B00 1VZNA96
楽 い 作
No.97
ン
(70097) 2 907
http://www.amazon.co.jp/%E3%82 %BF%E3%83%9F%E3%83%A470 097000%E6%A5%BD%E3%81% 97%E3%81%84%E5%B7%A5%E4 %BD%9C%E3%82%B7%E3%83% AA%E3%83%BC%E3%82%BANo 97%E3%83%84%E3%82%A4%E3 %83%B3%E3%83%A2%E3%83%B C%E3%82%BF%E3%83%BC%E3 %82%AE%E3%83%A4%E3%83% BC%E3%83%9C%E3%83%83%E3 %82%AF%E3%82%B9/dp/B001Q1
19AC
A
P 2 300
http://akizukidenshi.com/catalog/g/g I02001/
基板
両面
基板 C
抵抗
炭素皮膜抵 抗
W kΩ
本
入 1袋 100
http://akizukidenshi.com/catalog/g/g R25103/
耐熱電子ワ
耐熱電子ワ m×
色 外
mm L
AWG 1袋 480
http://akizukidenshi.com/catalog/g/g P06756/
ン ワ
01167190405015 1袋 200
http://akizukidenshi.com/catalog/g/g C05159/
ン ワ
赤
0116719040
1015 1袋 300
http://akizukidenshi.com/catalog/g/g P03471/
ン ワ
黒
0116719040
5015 1袋 300
http://akizukidenshi.com/catalog/g/g P03472/
L型 ンソ
2212R06G85 2個
1個
予備 40
http://akizukidenshi.com/catalog/g/g C03795/
割 ン
ンソ
x FHU2x42SG 1 100
http://akizukidenshi.com/catalog/g/g C05780/
+連結 角 ン
m
m 1 100
http://akizukidenshi.com/catalog/g/g P01864/
mm mm +六角
m
m 1 50
そ
備品
小手先
1 650
http://akizukid enshi.com/cat alog/g/gT036 42/
ソ
い
● 制御 C言語 実装
● 作成 ン Web ン 指示 信
部 rccontrol 実際 制御 駆動部
rcdrive
● rccontrol rcdrive 通信 Unix ンソ 利用
● Web ン HTML+JavaScript+PHP 実装
● GUI 操作用 ン Web 配置 わ ン 押
度 全体 さ 困
● 発生 い う Ajax 利用
● 制御 実行 Linuxコ ン 実行 必要
あ PHP 利用
● 配置さ ン 押さ 書 換え PHP
実行 そ rccontrol 呼び出 制御
ソ
コ
構成管理
ソ コ GitHub 管理
[email protected]:ryomajp/rccar.git
回路設計
GPIO
端子
RaspberryPi Revesion2 GPIO端子 配列 図 通 詳細 http://elinux.org/RPi_Lowlevel_peripherals 参照
端子 配列 図 通
基盤配線
今回作成 コン 基盤配線 図 通
ソ
設計
全体構成
制御
共通部
関数 戻 値
関数 機能 戻 値 OK/NG 返 う 関数 型 int型 定義 記 値
返 う
#define RC_RET_ERROR_STATE (2) /* 状態 */
#define RC_RET_ERROR_INTERNAL (3) /* 内部変数異常値 */
#define RC_RET_ERROR_SYSCALL (4) /* コ */
rc‐control
rccontrol 引数 コ ン 指示 Unix ンソ 利用 rcdrive コ
ン 渡
rccontrol 引数 指定 コ ン 様 次項 通 rcdrive 渡 コ ン
様 rcdrive 項 参照
rc‐control コ ン 様
コ ン forward
説明 前進
処理 rcdrive 前進通知
コ ン backward
説明 後
処理 rcdrive 後 通知
コ ン right
説明 右旋回
処理 rcdrive 右旋回通知
コ ン left
説明 旋回
処理 rcdrive 旋回通知
コ ン faster
説明 速度
処理 rcdrive 加速通知
コ ン slower
説明 速度
処理 rcdrive 減速通知
コ ン stop
説明 停
処理 rcdrive 停 通知
コ ン terminate
説明 終了
処理 rcdrive 終了通知
Unix ンソ
記参照
http://www.geocities.co.jp/AthleteSamos/7760/study/unix_socket1.html
構成
main関数
割 rcdrive コ ン 信
main
引数 in
int argc
引数 数
char* argv[]
引数
機能 ● rccontrol ン 関数
● 引数 え コ ン rcdrive
信
処理内容 ● rccontrol 接続用ソ 生成
● 引数 え コ ン
RC_DRIVE_COMMAND 変換
● rccontrol コ ン 信
● 非対応 コ ン 指定さ
rccontrol コ ン 信 い
rc‐drive
Unix ンソ コ ン 文字列 コ ン 様
次項 通
rc‐drive コ ン 様
rcdrive コ ン RC_DRIVE_COMMAND列挙型 定義
typedef enum _RC_DRIVE_COMMAND { RC_DRIVE_COMMAND_FORWARD, RC_DRIVE_COMMAND_BACKWARD, RC_DRIVE_COMMAND_RIGHT, RC_DRIVE_COMMAND_LEFT, RC_DRIVE_COMMAND_FASTER, RC_DRIVE_COMMAND_SLOWER, RC_DRIVE_COMMAND_STOP, RC_DRIVE_COMMAND_TERMINATE } RC_DRIVE_COMMAND;
コ ン RC_DRIVE_COMMAND_FORWARD
説明 前進
処理 ● 右 速度 前回転
う 制御
コ ン RC_DRIVE_COMMAND_BACKWARD,
説明 後
処理 ● 右 速度 後回転
う 制御
コ ン RC_DRIVE_COMMAND_RIGHT
説明 右旋回
処理 ● 右 前 後 回
転 う 制
御
コ ン RC_DRIVE_COMMAND_LEFT
説明 旋回
処理 ● 前 右 後 回
転 う 制
御
コ ン RC_DRIVE_COMMAND_FASTER
説明 加速
処理 ● 回転数 増や う
制御
コ ン RC_DRIVE_COMMAND_SLOWER
説明 減速
処理 ● 回転数 減 う
制御
説明 停
処理 ● 回転 う
制御
コ ン RC_DRIVE_COMMAND_TERMINATE
説明 終了
処理 ● 制御 終了
ン 終了
構成
以 構成さ
● main
● rc_drive_init
● rc_drive_receive_command ● rc_drive_set_forward ● rc_drive_set_backward ● rc_drive_set_turn_right ● rc_drive_set_turn_left ● rc_drive_set_faster ● rc_drive_set_slower ● rc_drive_set_stop ● rc_drive_terminate
各 機能 処理内容 記 通
main
引数 ● in
○ int argc
■ 引数 数
○ char* argv[] ■ 引数
● out
機能 ● rcdrive ン 関数
● 初期化→終了 →終了処理 実行
処理内容 ● rc_drive_init コ 初期化
● コ ン 信 コ ン
実行
● RC_DRIVE_COMMAND_TERMINAT
E 信 抜
● 抜
停 さ ン
終了
rc_drive_init
引数 ● in
○
● out
○
戻 値 RC_RET_* 返
機能 rcdrive 初期化
処理内容 ● 各変数 初期化
● コ ン 信用 生成
rc_drive_receive_command
引数 ● in
○
● out
○
戻 値 RC_RET_OK固定
機能 コ ン 信用 ン 関数
信 コ ン ン 渡
処理内容 ● コ ン 信 socket 生成
● コ ン 信 ン
信 コ ン 渡
● TERMINATEコ ン 信 抜
rc_drive_set_forward
引数 ● in
○
● out
○
戻 値 RC_RET* 返
機能 前進
処理内容
構成
● ン
○ 全体 初期化処理実行後 コ ン 実行 入
○ コ ン 信自体 コ ン 信 行う 信コ ン 応 処理
ン 実行
○ 部 間通信 今回 pthread_cond_wait コ ン 信
○ 信コ ン 渡 変数 使用 mutex_lock/unlock
忘
○ TERMINATEコ ン 信 抜
○ 抜 回転 コ ン 信 終了 確
認 終了
● コ ン 信
○ ン 生成後 rccontrol コ ン 信 為
sock 生成 コ ン 信 実行
○ 信 コ ン 変数 格納 pthread_cond_broadcast
ン wait 解除
コン
HTML input ン 配置 type submit 生成
ン 押さ ン 発生 あ 処理
JavaScript 実装
● ン ン 追加
● createXMLHttpRequest 生成
● phpへ
rccontrolへ コ ン 信 あ PHP 実装
GUI
設計
ン 配置 感
組
立
組 立 感
● 完成図 駆動用 無線LAN子機
動
動 や 制御基板 配線 ソ 実装以
外 無線LAN 設定 rcdrive 自動起動設定 必要
● 無線LAN設定
○ 環境 設定方法 異 い
○ 今回 記 設定 無線通信 確認
○ /etc/network/interfaces 編集 記 追加
allowhotplug wlan0 #iface wlan0 inet manual iface wlan0 inet static
address xxx.xxx.xxx.xxx (設定 い固定IP)
netmask 255.255.255.0 gateway 192.168.0.1
#wparoam /etc/wpa_supplicant/wpa_supplicant.conf #iface wlan0 inet dhcp
wpassid "SSID" wpapsk " ワ "
○ /etc/wpa_supplicant/wpa_supplicant.conf 編集 い
● rcdrive 自動起動設定
○ crontab 使用
$ sudo crontab e
実行 開く 記 行 追加
@reboot sudo [rcdrive ]