Webduino (5) Smart+DHT+OLED

Webduino Cloud Platformは、スケッチ保存できるクラウド環境。

(それまで、作ったスケッチは、保存できない!)

開始使用:https://cloud.webduino.io

Gmailのアカウントで簡単にログイン可能。

早速公開しているのスケッチ(Public Files から検索)を試す。意外に簡単。

Smart+OLED(圖片)

まずOLEDを増設、スケッチの通り結線しただけで表示ができた。

OLEDの接続と表示。

Smart+DHT+OLED

さらにDHT11を追加し、スケッチの通り結線しただけ、すごく気楽にできた。

DHT11を接続して、温度と湿度も簡単に表示できた。

Webduino (3) RGB LED

Webduino Smartに接続

Webduino Smartに接続方法は2つある

WiFi接続

WiFi接続はデバイスIDを利用して接続する。

この場合はWebduino Blockly ( https://blockly.webduino.io )を開いてプログラミングする。

WebSocket接続

WebSocket接続は、デバイスのローカルIPで接続する。

この場合、http://blockly.webduino.io/ を開いてプログラミングする。

ボタンでRGB LED点灯

Webduino Smartには、RGB LED内蔵なので、まず点灯してみる。

http://blockly.webduino.io/ を開いて、下記の通り、プログラミングする。

右上の “Run Blocks”をクリックして、Web Demo エリアのボタン1..5をクリックすると、対応色が点灯する。

因みに正面表記のGPIO番号で、ピン番号との対応は下記の通り:

static const uint8_t D0   = 16;
static const uint8_t D1   = 5;
static const uint8_t D2   = 4;
static const uint8_t D3   = 0;
static const uint8_t D4   = 2;
static const uint8_t D5   = 14;
static const uint8_t D6   = 12;
static const uint8_t D7   = 13;
static const uint8_t D8   = 15;
static const uint8_t D9   = 3;
static const uint8_t D10  = 1;

つまり、次のような対応関係になり、

TX RST
RX AD(Photocell)
05 D1 3.3
04(Switch) D2 D0 16
00 D3 D5 14
02 D4 D6 12(LED-Green)
15(LED-Red) D8 D7 13(LED-BLue)
GND ===================== VCC

Webduino (2) Update Firmware

ブラウザからデバイスにアクセスする場合、画面の左下に、Firmwareのバージョンが表示され(Ver 3.0.07)

セットアップが終わり、ファームウェアのアップデートを行うと勧められて、しかしどうしてもうまくいかないて、二日悩み中。

英語と中国語のtutorialsは、ここでマイクロスイッチを押し続け、ファームウェアのアップデートが自動的に行う。

  • https://webduino.io/en/tutorials/smart-02-setup.html
  • https://tutorials.webduino.io/zh-tw/docs/basic/board/smart-setup.html

しかし、いくら押し続けでも、LEDの反応がない、だがなぜかファームウェアのアップデートできない。ファームウェアのアップデートため、デバイスIDが取得できない。そして、Webduinoクラウドにも繋げられない。

悩んだ末、たまたまtutorialsのyoutubuを見てわかった。電源を再投入して、赤いLED点滅してる間に、マイクロスイッチを押し続ける

これてうまく行った!緑LED点灯など、しばらくして更新終了(無論更新中電源OFF駄目)、今度ブラウザからデバイスにアクセスする場合、デバイスIDが表示され、画面の左下に、更新後のFirmwareのバージョンが表示された。

Ver 3.1.4_0802

次にWebブラウザを使ったプログラミングを行う。

 

Webduino (1) Setup

About Webduino Smart

Webduino Smartとは、Web + Arduinoの意味合いをもち、ブラウザプログラミングができるESP8266モジュール。

https://webduino.io/

外形はESP8266でできたWemosと似ている、ただ基板の裏面は3色LED」と「明度センサー」が付いている。

Webduino Smart Wi-Fi Setup

このリンク先Webduino Smart Wi-Fi Setupを参考しながら進み。

まずはmicroUSBケーブルをさして電源を入れる。青LEDが点灯し、また裏面の3色LEDは赤点灯する。

この状態で、Webduino SmartはAPモードになる。

スマホなどからWiFi APを検索すると「Smart」というAPがいるので、そこに接続する。接続パスワードは「12345678」。

接続したらブラウザから「http://192.168.4.1」にアクセス。WiFi SSID/WiFI PWDは、自宅などのWiFI APを指定。また、Device IDは識別できるようなものを指定。「SUBMIT」ボタンをクリックし、変更を反映したら、電源を抜く。

電源を入れ直すと、裏面の3色LEDは、赤点灯したあと、一瞬緑点灯し、消灯する。

この状態で、自宅WiFI APに接続された状態となる。

Webdiunoに割り当てられたIPアドレスを確認するには、スマホなどでWiFi AP検索する。

上記の様に「Smart_<IPアドレス>」という形でIPアドレスが表示されるので確認する。

まずは動作確認として、パソコンから「http://<IPアドレス>」にアクセスできることを確認。

表示画面は、APモードでブラウザから「http://192.168.4.1」にアクセスする際と同じです。

 

C.H.I.P. (8) BMP280 i2c

OLED繋いだから、早速同じi2cのBMP280を試す。

chen@chip:~$ git clone https://github.com/prisme60/BMP280.git

コメントに書いてる方法でコンパイル

chen@chip:~/BMP280$ gcc -Wall -o BMP280 ./BMP280.c
./BMP280.c: In function ‘main’:
./BMP280.c:339:2: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
for(int i = 0; i < argc; i++) {
^
./BMP280.c:339:2: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
./BMP280.c:371:4: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
for(int i=0;i<20;i++) {
^

エラーがたくさんある。オプションがつければいいらしい。

chen@chip:~/BMP280$ vi BMP280.c

でもソースを斜めてみると、二箇所だけfor文に定義するから、簡単に直せる。ただ定義文を関数先頭に書くだけ。

chen@chip:~/BMP280$ gcc -Wall -o BMP280 ./BMP280.c
chen@chip:~/BMP280$ ./BMP280

i2c_Open : Failed to open the i2c bus, error : 13
Check to see if you have a bus: /dev/i2c-1
This is not a slave device problem, I can not find the bus/port with which to talk to the device

sudoじゃないとダメだね。

chen@chip:~/BMP280$ sudo ./BMP280

Device accessed via File descriptor:3 at Address:0x76 has returned:0
[0]=3 [1]=6E [2]=B5 [3]=66 [4]=32 [5]=0
T1=28163 T2=26293 T3=50
P1=38053 P2=-10790 P3=3024 P4=7462 P5=-175 P6=-7 P7=15500 P8=-14600 P9=6000
adc_Temperature=536630 adc_Pressure=311387
{“temperature”:26.96,”Pressure64″:1017.5,”Pressure32″:1017.5,”PressureDouble”:1017.5}
adc_Temperature=536636 adc_Pressure=311390
{“temperature”:26.97,”Pressure64″:1017.5,”Pressure32″:1017.5,”PressureDouble”:1017.5}
adc_Temperature=536636 adc_Pressure=311390
{“temperature”:26.97,”Pressure64″:1017.5,”Pressure32″:1017.5,”PressureDouble”:1017.5}

延々と続く…

C.H.I.P. (7) OLED i2c

NokiaのLCDを付けるつもりで進んていたが、接続例が見つからないので、例があるOLEDにした。

Battery Connector, OLED, BMP280, Buttons shield

バッテリー、OLED、温度気圧センサー、いくつボタンを入れたシェルターを作った。(バッテリーちょっと大きかった)

OLEDは、i2c-1に繋いだ。

いざmakeすると、足りないものが多いので、足しながら、makeが成功。

root@chip:/home/chip# apt-get update #しないと、パッケージインストールがうまくいかない

root@chip:/home/chen# git clone https://github.com/vkomenda/ssd1306.git

root@chip:/home/chen# cd ssd1306/

root@chip:/home/chen/ssd1306# apt-get install gcc make #make がまたないので、追加

root@chip:/home/chen/ssd1306# make

 

これてやっと完了。

root@chip:/home/chen/ssd1306# ./ssd1306_demo /dev/i2c-
i2c-0 i2c-1 i2c-2
root@chip:/home/chen/ssd1306# ./ssd1306_demo /dev/i2c-1

devには、i2cは3つもあるので、繋がっているのは、i2c-1でしょうだから、試したら、成功。