■ESP版■
というわけで前回のArduino版をESP-WROOM-02でも動かしてみました。AdafruitによるWS2811最新版ライブラリはESP8266にも対応しています。
ただ、うちのWS2811がNeoPixelではなく安物なのがいけないのか、指示した通りに光ってくれません。Greenだけは良い感じなんですが、Red/Blueについては意図した信号になっていません。トランジスタで3.3->5vへのレベルコンバータをはさんでみたのですが変わりませんでした。うーん。
400khzに切り替えても同じ。うーん。
光り方をみていると最上位ビットがズレているような感じ。
ということでLEDの点滅が意図したパターンとは違いますが、ESPでも動作させることができました。加速度センサーの値に応じてLEDを点滅させるところまではArduino版と同じですが、1分ごとにThingSpeak.comあてに各軸ごとの最大加速度を送信するようにしました。
■配線など■
相変わらずプルアップ/プルダウン/GND接続が多くて面倒くさい。ESP-WROOM-02 | 接続先 |
3V3 | 3V3 |
GND(すべて) | GND |
EN | 10kΩ経由で3V3 |
IO14 | ADXL345のSCL |
IO12 | WS2811のDin |
IO13 | N.C. |
IO15 | 10kΩ経由でGND |
IO2 | 10kΩ経由で3V3 |
IO0 | 10kΩ経由で3V3 およびISPスイッチ※ |
IO16 | N.C. |
TOUT | N.C. |
RST | 10kΩ経由で3V3 およびRSTスイッチ※ |
IO5 | N.C. |
Txd | FTDIのRxへ |
Rxd | FTDIのTxへ |
IO4 | ADXL345のSDAへ |
※ISPスイッチ/RSTスイッチはノーマリーオープンのタクトスイッチで、他方をGNDにつないでください。これによりRSTとISPは常時Highレベルでスイッチを押した時にLowレベルになります。
レベル変換回路はこちらのページ(3.3V 5V レベル変換)に記載されていた「3.FETによる3.3V 5Vレベル変換」と「4.トランジスタによる3.3V 5Vレベル変換」回路を試しました。このページ上の写真にうつっているのはトランジスタによる回路です。なお、WS2811の場合は流れ込む電流が多いのか5V側のプルアップ抵抗は10kΩでは電圧が上がらなかったので1kΩを使いました。出力側の回路に応じて使い分ける必要があります。
それとFTDIを接続する際には、GND同士の接続をお忘れなく。
ADXL345 | 接続先 |
SCL | ESPのIO14 |
SDA | ESPのIO4 |
SDO | GND |
CS | 3.3v |
Vs | 3.3v |
GND | GND |
Vdd | 3.3v |
WS2811 | 接続先 |
Din | ESPのIO12 |
Vcc | 5V |
GND | GND |
Dout | N.C. |
M78AR033-0.5 | 接続先 |
Vin | 5V |
GND | GND |
Vout | 3V3ライン |
この他、ESPの3V3近くとADXL345のVccに0.1μFのパスコン、WS2811のVccとGNDの間に470uFのアルミ電解コンデンサを入れてます。
■ADXL345ライブラリの修正■
Android Citiさんのライブラリは Wire.begin(); でI2Cを初期化しているので、これを接続したピンに合わせて Wire.begin(4, 14); に変えます。ただそのままだと後日このライブラリをArduinoで使った時に動かなくて苦しみそうなので、#ifdef ESP8266と書いておきます。
Wire.begin(4,15);
#else
Wire.begin();
#endif
■ソース■
Arduino版との違いはボリューム読み込みをしていないのとThingSpeak.comへの送信処理を行っている点です。ThingSpeakへは1分ごとにその間の最高値を送るようにしています。ESPからThingSpeak.comへの送出には鳩退治デバイスに使ったsendなどの処理をほぼそのまま使ってます。楽だわー。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。