2017年5月31日水曜日

ESP-WROOM-02を触ってみる

スイッチサイエンスでモータドライバを購入する際,値段合わせで
ESP-WROOM-02を購入してみたのを思い出し,早速テストしてみる
ことにしました.

ESP-WROOM-02は安価なWiFiモジュールです.ArduinoIDEに対応
しているので簡単にネットワークに接続することが可能です.
センサ値をワイヤレスで取得したり,スマホからWiFi経由で操縦できる
ロボットなど結構遊べそう.

購入したのはこちら.開発ボードではなくピッチ変換基盤ですので
外部で回路を構成してやる必要があります.



とりあえず動作させる回路は
3V3   ->  3.3V
GND  ->  GND
EN    ->  10k  ->  3.3V
IO15 ->  10k  ->  GND
IO2   ->  10k  ->  3.3V
IO0   ->  10k-  >  3.3V(boot) or GND(書き込み)
RST   ->  10k-  >  3.3V
TXD   ->  シリアルのRXD
RXD   ->  シリアルのTXD

このほかに後述するLチカのためにIO4にLEDを追加しました.
ちなみに3.3Vは外部からACアダアプタを用いて供給しています.



ArduinoIDEのシリアルモニタで接続します.
"CRおよびLF","115200"を選択します.
以下のように表示されました.

AT+GMR

AT version:0.52.0.0(Jan  7 2016 18:44:24)
SDK version:1.5.1(e67da894)
compile time:Jan  7 2016 19:03:11
OK

接続は成功のようです.少しATコマンドで遊びつつ,今度は
Lチカをやってみます.(ATコマンドはコチラを参考にしました.)

ArduinoIDEボードマネージャーにESP8266ボードをインストールします.
かなり情報があるのでここでは省略します.
自分の環境ではインストールに非常に時間がかかりました.
スケッチの例->ESP8266->BlinkをちょっといじりIO4から出力にします.

#define LED_BUILTIN 4

void setup() {
  pinMode(LED_BUILTIN, OUTPUT); 
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(2000); 
}

IO0をGNDに接続,電源の抜き差しでリセットをかけます.
後は普通にArduinoに書き込むようにします.
ちょっと違った表示が出ましたが,[100%]となり無事書き込めました.
IO0を3.3Vに,もう一度リセットをかけます.

できました!!


特に引っかかることなくLチカできました.
ESP-WROOM-02については空いた時間で遊びつつ,
アイデアが浮かんだらなんか製作したいと思います.
その前にまずはファームの戻し方をメモしなければ.


参考サイト
https://www.mgo-tec.com/esp8266-board-install01-html
http://nonnoise.github.io/ESP-WROOM-02/ATcommand.html
https://tpedia.tech.gr.jp/20160111434/











2017年5月29日月曜日

I2C接続顔モジュール製作 動かしてみる 

お久しぶりです.もう二ヶ月前になりますがこれの続きです.

まずガンガン動かすことになりそうなので回路製作とハード面をもう少し
かっちり固めました

回路面は余っていたATmega328PUを使用し回路を製作.
ブートローダー書き込み済みなのでArduinoIDEでプログラミングできます.
マトリクスLEDドライバとはソフトウェアI2C,モジュールへの指示は
ハードウェアI2Cを使用します.マトリクスLEDとCPUはバスパワーですが,
サーボは別電源を使用します.試行錯誤した結果これが一番安定しました.



こちらを使用したサーボマウントは少しだけ改良.チルト軸は上から
押さえつけるようにし,取れにくくしました.パン軸はついていたアームを
なくし,サーボに直接回路をテープで止めました.簡単な処置ですが
意外と安定しています.動作中に首がポロリといったことはなくなりました.
ついでにカメラは基盤を直接固定しました.かなり軽量になりました.



別のArduinoを用いて動作確認です.





今回顔モジュール側に用いたコード.Arduino_I2C_face
プロトコルは顔モジュール側でモーションを作るのはやめて,
サーボ動作 -> ’s’+パン角[deg]+チルト角[deg]
LED表示右 -> ’r’+8byte 
LED表示左 -> ’l’+8byte
のようにしました.暫定です.
欠点は,サーボ動作させたら,終わるまで待たなければならないところです.
割り込みによるサーボ動作も試しましたが,どうもうまくいかず・・・
要改良です.

ソフトは暫定でいいとして,次回はRaspberryPiとの接続を試したいと思います.