電子工作入門日記 ESP-WROOM-02に書き込めない!

とりあえず、ArduinoでのBME280の試験はブログに書くほどのこともなく完了し、本丸であるESP-WROOM-02とBME280との連携を確認しています。
それで、まずはESP-WROOM-02とお友達になりたいので、適当なスケッチを描いて書き込んで遊んでみようと思いました。
ここで、大ハマり。かきこめる時と書き込めない時がある。
書き込めない時は以下のログが出ました。

Arduino:1.8.3 (Mac OS X), ボード:"Generic ESP8266 Module, 160 MHz, 80MHz, QIO, 115200, 4M (3M SPIFFS), nodemcu, Disabled, All"

Archiving built core (caching) in: /var/folders/pj/_b76f5vs3zx9rq5lfg068xkm0000gn/T/arduino_cache_164851/core/core_esp8266_esp8266_generic_CpuFrequency_160,FlashFreq_80,FlashMode_qio,UploadSpeed_115200,FlashSize_4M3M,ResetMethod_nodemcu,Debug_Disabled,DebugLevel_all______8886ee52af8abeec90f379cbde8a6821.a
最大1044464バイトのフラッシュメモリのうち、スケッチが230621バイト(22%)を使っています。
最大81920バイトのRAMのうち、グローバル変数が32212バイト(39%)を使っていて、ローカル変数で49708バイト使うことができます。
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

これで、数日悩み諦めかけた時、ふと気がつきました。
今の構成はUSB Serial変換モジュールとして「FT232RL」を使い、それを経由してESP-WROOM-02と通信しています。電源は後々のことを考えて電池ボックスからDCDCコンバータを経由して3.3Vを供給しています。
電源は電池ボックスからとってるからFT232RLはRX,TXだけ繋がってればいいよね。通信内容も見えてるし、と思っていました。
でも、違ったんですね。FT232RLもGRDを取らないとダメだったみたい。
GRDをとるようにしたら、すんなり書き込めました。
初心者の変な思い込みが問題となるいい例だと思いました。

電子工作入門日記 序章

電子工作始めます。

きっかけ

数年前に導入した屋外、屋内の環境センサーがとうとう壊れてしまいました。
新しいのを買おうと考えましたがいいのがない。
そういえば、最近ArduinoとかRaspberry Piとか流行ってるよね。IoTだよね!ということで、自分で作ることに決めました。

初心者丸出し

そもそもRaspberry PiとArduinoの違いがよくわかっていなかった。
わかったことはRaspberry PiはPCであるということ。一方ArduinoはマイコンでありOSは動いていないということです。
次に、回路について。なんとなくプラスとマイナスがあって、ぐるっと回ってなければいけないということは知っていた。
触ってみて、デジタルなモジュールはピンに電圧がかかっているか、グランドなのかということが重要だってことです。考えてみればデジタルな世界は0か1かってことです。

構想

さて、今回の目的は屋外、屋内に環境センサーをつけてデータをとってリビングで表示させることです。
いろいろ調べて、それぞれどのようなモジュールが必要かを検討しました。
検討した結果がこちら。

環境センサー
-BME280

通信モジュール
-ESP-WROOM-02

当初は、屋外用としてArduinoにBME280とZigBeeという短距離無線通信モジュールをつける、屋内ではRaspberry PiにBME280,ZigBeeと液晶モジュールをつけて、Raspberry Pi親機構想を考えたのですが、いくつか問題点があって変えました。
問題点は以下。

  • ZigBeeモジュールが高い!
  • 液晶モジュールが高い!
  • ESP-WROOM-02は安くてwifiが使えて、BME280のデータも扱える

まあ、予算的な話ですわ。
結局最終的な構成は以下のとおり。

屋外用、屋内用
-ESP-WROOM-02
-BME280
-電池ボックス

屋内、屋外両方とも上記構成にして、一旦データをネットに上げて、それをリビングの適当なブラウザで見ることにしました。

さてさて、上記構想が実現されるかどうかは、これからのお楽しみ。

つ づ く(おんな城主直虎風に)