この一週間WeMos miniのWiFi関連の開発中も頻繁にリブートしています。あまりにも回数が多いから、いつの間にchromeのたくさんの開いたタブも消えて復帰不能になりました。Macbook, Win10どちらも頻繁に発生。
原因がわからず、仕方なく開発中書き込み直前にUSBケーブル接続、書き込み終わったらすぐUSBケーブ抜く方法で運がよければリブート回避する状態が続て、悩んでいます。
気分転換に、IoT-Cloud-Mobile Kitに、Weather Station機能を組み入れると考えて、これも苦労の連続。
もともとWeather Station Kitは、NodeMcu V2とOLED, DHT11のセットになっている。IoT-Cloud-Mobile Kitは、Wemos MiniとOLED, BMP280のセットになっている。
IoT-Cloud-Mobile Kit | Weather Station Kit | |
MPU | Wemos Mini | NodeMcu V2 |
OLED | 128X64 OLED | 128X64 OLED |
Sensor | BMP280 | DHT11 |
最初は、WemosらしいのWeather Station ソースコードを改造して、IoT-Cloud-Mobile Kitで動くを考えたが、理由不明のリブートでやる気を無くされ、もうWeather Station Kitのまま部品を用意して、まず動かしてみることに。
I2CのOLED端子配列2種類があり:
- VCC,GND,SCL,SDA (Wemos, BMP180, BMP280バス直結可能)
- GND,VCC,SCL,SDA (NodeMcu直結可能)
IoT-Cloud-Mobile Kitでは、BMP280バス直結のため、1番目のOLED端子配列が欲しくて、商品写真見てこれだと、高めのOLED物を購入したが、結局送ってきたのは2番目のOLED物。
今度繋がってみたらわかった、2番目のOLED端子配列なら、嬉しいことに、NodeMcu直結可能。
つまり、1番目のOLED端子配列はWemos向き、2番目のOLED端子配列はNodeMcu向きと言える。
接線 (Wiring) NodeMCU –> OLED
- NodeMCU GND –> OLED GND
- NodeMCU 3.3V —> OLED Vcc
- NodeMCU D4 —-> OLED SCL
- NodeMCU D3 —-> OLED SDA
手元に余ってるはDHT22、それで試すことに。OLEDが邪魔で、D8に繋いで見た。
しかし上手くプログラム書き込めないので、DHT22を外したら、プログラム書き込めて、動いた。
また下記のセッティングは、自分の環境に合わせて設定。
* Begin Settings const char* WIFI_SSID = "xxxx"; // your ssid const char* WIFI_PWD = "xxxx"; // your password const int I2C_DISPLAY_ADDRESS = 0x3c; // OLED I2C address const int SDA_PIN = 13; // I2C OLED SDA const int SDC_PIN = 14; // I2C OLED SCL const float UTC_OFFSET = 9; // JST = +9 const String WUNDERGRROUND_API_KEY = "xxxxx"; // WUNDERGROUND API KEY const String WUNDERGROUND_COUNTRY = "JP"; // japan const String WUNDERGROUND_CITY = "Tokyo"; // tokyo const String THINGSPEAK_CHANNEL_ID = "xxxxx"; // ThingSpeak CHANNEL const String THINGSPEAK_API_READ_KEY = "xxxxx"; // ThingSpaek API KEY
OLEDの表示を上下逆にするには、void setup() の display.clear(); と ui.init(); の次にdisplay.flipScreenVertically(); を入れる。