「ESP8266」で始めるIoT入門シリーズはこちらからお読みいただけます
- ブレイクアウトボード実装編
- Arduinoでワイヤレススイッチ作成編
- ESP8266モジュール単体でミニ四駆をワイヤレス化!
- スマホで操作できるIoTミニ四駆の仕組み(ワークショップ開催)
みなさんこんにちは、Cerevoで回路設計を担当している押切という者です。 今回は予告通りモジュール単体で動作させてみます。作例もミニ四駆を無線操縦するなど動きものを作ったのでご期待下さい。 開発環境はいろいろありますが、ArduinoIDEを拡張するのが手軽ですので、まずはその手順を解説します。バージョンは.ccの方の1.6.5をインストールして下さい。(オープンソースハードウェアの立て役者が2つに分かれてしまったのは個人的に残念です…)
Arduino – Software https://www.arduino.cc/en/Main/Software
その後の手順は以下に従って下さい。
Preferences」を選択
環境設定で、「Additional Boards Manager URLs:」に以下のURLをコピー&ペーストし、「OK」をクリック。
http://arduino.esp8266.com/stable/package_esp8266com_index.json
注意:以前のリンクだと、APが動作しない不具合が発生したので、新たに導入される方は上記をお願いします(2016/2/29)
不具合情報:https://github.com/esp8266/Arduino/issues/1141
「ツール>ボード:Board Manager…」を選択 一番下にスクロールして、「esp8266 by ESP8266 Community」 の右下の「install」をクリック。バージョンは、1.6.5−947-g39819f0を選択してください。別バージョンだとWi-Fiに問題があるようです。(2016/3/4追記)
自動的にダウンロードが始まり設定を開始
ESP8266がボードで選択できる
のようになるので、「Generic ESP8266 Module」を選択 ツールでさらに詳細に設定ができる。今回はデフォルトままでOK
ライブラリやスケッチも自動で追加。Lチカもすぐに実行できる Cerevoブレイクアウトボードで単体使用する場合の注意点が3点あります。
- JP2とJP3はショートでなく、10k ohm程度を間にいれてください。特にJP2はショートしたままだと電源GNDがショートしてOSから警告される場合があります。
- 書き込み時は、3ピンヘッダを「D」側「URART Download Mode」に差し替えてから、Arduino IDEで書き込んでください。書き込み後「B」位置に戻してください。
- 一端書き込むと、「B」位置に戻しても、ATコマンドを受け付けるデフォルトの状態には戻りません。戻すにはArduinoIDEではなく、別のツールが必要になります。
マイコンはI2Cのインターフェースを持っていませんがWire Libraryを使うとことでソフト的に可能になります。作例では、モータを制御するために秋月電子さんのDRV8830を使用したDCモータードライブキットを使います。
DRV8830使用DCモータードライブキット: 組立キット 秋月電子通商 電子部品 ネット通販 http://akizukidenshi.com/catalog/g/gK-06489/
ESPモジュールと、このモータドライブキットだけでI2C通信でモータのスタート、ストップ、正転、逆転、スピードの制御ができます。制御方法の詳細を知りたい方は、ソフトとしての通信のキーワードは”I2C”、ハードでDCモーターのスピードや正転、逆転をコントロールするには”Hブリッジモータードライバ”をキーワードとして検索してみて下さい。 また、動作時には必要ありませんが、FWの書き込み用にFT232RLモジュールが必要になります。第1回連載の様に組み立てて、Arduino IDEでsketchを書き込んでから車に実装します。 ミニ四駆に実装するため、なるべく背を低くしたいので、3ピンヘッダは”L型”、ピンヘッダは低背のピンソケットを実装します。 図のように電源、GND、RXD、TXDを引き出して接続します。なお、ESPモジュールの裏にENの10k ohmとRESETの4.7k ohmを実装しています。 準備が終わったらArduino IDEで書き込みます。通常のArduinoより長い時間が掛かりますが、特に書き込み装置を指定することなく書き込むことができます。 スケッチは、GitHubに掲載しましたので「ESP8266_I2C_motor_drive_V01.ino」を参考にしてください。
cerevo/techblog-ESP8266-3rd · GitHub https://github.com/cerevo/techblog-ESP8266-3rd
モータドライバも低くするため、ピンヘッダと端子台は実装せず、直接ジャンパー線を半田付けしてください。 ESPモジュールとモータードライバ、ミニ四駆との接続は下図のようになります。単3電池ですが、アルカリ電池だとすぐ電圧が下がってしまい、モータドライバやESPモジュールの動作下限電圧にひっかかってしまうので、もっと電流が流せる、「eneloop Pro」等を使って下さい。一本1.2Vですが、アルカリ電池より電流を多く流せるので電圧降下しにくいです。 カーブやトルクが少ないと電圧降下も許容範囲内ですが、状況に応じて電気二重層コンデンサを追加すると安定度が増します。 ※初掲載時にミニ四駆のSWの位置が中点でなかっておらず実物と異なっていた為回路図を修正しました(2015/9/19) ESPモジュールとモータードライバキットの接続は、
- 電源、GND
- ESP(3pin)-モータードライバキット:SCL(4.7kでプルアップ)
- ESP(10pin)-モータードライバキット:SDA(4.7kでプルアップ)
接続した結果は下記のようになります。分かりやすいように、アバンテMk.II ピンクスペシャル(クリヤーボディ)(MSシャーシ)の透明ボディに組み込みました。 電池端子に半田付け モータはモータードライバモジュールと半田付け後、絶縁してミニ四駆本体の端子に直接触れないようにする ボディのデザイン上なんとか収まったので電気2重層コンデンサを無理やり載せてみました。2.5V耐圧なので、直列にして電源に繋いでいます。 これで、電源はミニ四駆動のスイッチを入れると起動してWi-Fi接続できるようになります。 Wi-Fiとのとの接続は下記で行って下さい。
SSID: ESP-Cerevo パスワード: なし
接続したら、ブラウザのURLに「192.168.4.1」を入力するとコントロール画面がでます。
[start]で前進、[stop]で停止、[back]で後退します。 前進から後退する場合は一旦停止してください。 以下は実際に走っている動画です。
バックするミニ四駆というのは新鮮だと思いますので、是非試してみて下さい。 ほぼ同じ構成で”Bトレイン”や、”はこてつ”の制御も可能です。こちらは線路に流す電流でコントロールするので電車に内蔵する必要はないので、工作の難易度はこちらの方が低いと思います、ただし、単3二本では、電圧が足りないので、モータードライバ側には四本使って、レギュレータで3.3Vに落とした電圧をESPモジュールに供給して下さい。 あえてブレッドボードで作成したむき出しの写真を載せると下記のようになります。 動画は下記です。
次回はArduinoIDE以外の環境に挑戦したいと思っていますが、回路設計が専門なのでだんだんソフトよりになると上手くいくかどうか・・・・・・。ご期待下さい。
著者プロフィール
- 2015年にCerevoへジョイン。電気エンジニアを経て、現在は執行役員