1月27日 IchigoJamセンサー(未完)

今日は久々になんも用事の入ってない日だった!


 ●

昨日は結局、二人分しか用意してなかった晩飯を嵩増しして4人で食った。愛だな。

目の隈を心配されたので、割と早めに寝た。抜け毛も多いんだよねー最近。歳とったなあ。

 ●

つーちゃんがFacebookに「センサーが無いので」とか言ってたので、
早速ここまでの知識を活かして、うちのセンサーも作ってみることにした。

その発言の元は、若新さんの記事らしい。
http://dentsu-ho.com/articles/3623

自由な時間ができたことで、彼らはいろいろな取り組みを創り出しています。最近では、「オープン団地」というのを運営し始めました。「楽しそうだから、自分も(移住者が住む)団地に行ってみたい」という市民が増えてきたんです。そこで、インターネット上に「今の時間は団地に○○がいます」という情報を随時公開して、部屋を開放することを始めて。差し入れを持っていけば誰でも入れるというシステムなので、彼らの移住部屋は食べ物であふれている。


ちなみに昼飯はパン耳と甘口レトルトカレーと、つーちゃん特製ポークシチュー。
あんまり食べ物では溢れてないけど、生きていくのに十分な食事は戴けてます。

 ●

たぶん、こういう手順なんじゃないかと思うのだけど。

1. IchigoJamを最新の命令が使えるようにバージョンアップする
2. うちのWiFiにESP-WROOM-02から繋げるように命令する(これで接続設定を覚えてくれる)
3. IchigoJamにHTTP通信プログラムをSAVEする
4. IchigoJamとESP-WROOM-02を配線する
5. IchigoJamをボタン押しながら起動して、HTTP通信がうまくいったことを確認する
6. IchigoJamにセンサーの数値に応じてHTTP通信をするプログラムをSAVEする
7. 4と同じ
8. 5と同じ

今日は5までいって挫折しました。

 ●

1 ファームウェアのアップデートはうまくいった。

IchigoJam 1.2 beta 6をFacebookのグループからダウンロード。
https://www.facebook.com/groups/ichigojam/400048676801558/

あとはここの手順通り。
http://weekly.ascii.jp/elem/000/000/348/348651/

うちにあるのは AE-UM232R なのだけど、USBから電源供給を得る設定になっているらしい。
GND,TXD(→RXD),RXD(→TXD)を繋げば、ちゃんと動くはず。

CoolTermはインストール済みなので、これを起動。

うまくいかなくて、シリアル接続ドライバを最新にした。
CDM v2.12.12 WHQL Certified。
インストールするには古いデバイスを一度削除して、
物理的に繋ぎ直してから、デバイスマネージャで「ドライバの更新」をする必要がある。

でもダメだった原因はそこじゃなくて、どうやら使ってたケーブルがダメだったらしい。
別のに取り換えたら、あっさり動いた。

あとはBPS9600だと思い込んでたけど、115200がデフォルト。
一度設定しても電源を切ると忘れるので、115200で試せば間違いない。

LED1とか送って、うまく動くことを確認。

今度はISPとGNDを繋いで、Flash MagicのStartボタンを押したら書き込み開始。
うまくいった! ファームウェアの更新はいつも緊張するわ。ルータとか。

 ●

2 なんかうまくいかない。

今度はパソコンとESP-WROOM-02を繋ぐ。
このとき、電源供給のために、VIOを3V3に繋ぐ必要がある。
あとは、GND,TXD(→RXD),RXD(→TXD)を繋げばいいはず。

9600bpsに設定してみたが繋がらなかったので、115200bpsに設定したら動いた。

AT

と打って、

OK

と返ってきたら、とりあえず成功。

AT+CWMODE=3
AT+CWJAP="SSID名を入れる","パスワードを入れる"

と打って、繋がったっぽいメッセージが出たりして、最終的に、

WIFI GOT IP

と出れば、IPアドレスを受け取れるところまで進んでるっぽい。
そのままHTTP通信を試した方が良さそう。手元ではなぜかうまくいかなかった。

水位を取得する例。

AT+CIPSTART="TCP","133.242.236.70",80
AT+CIPSEND=57

> GET /pm25/1/fukui/sabae.txt HTTP/1.0
Host: sabae.cc

やってることは、
http://sabae.cc/pm25/1/fukui/sabae.txt
と同じ。ブラウザでアクセスして確認しておこう。って、中身かわっとる!

しかたないので、自分のサーバにダミーファイルを設置して、
http://49.241.159.135/dummy.txt
で試すことにした。(動的IPアドレスなので変わります)
ブラウザでアクセスして、「123」が出ることを確認。

AT+CIPSTART="TCP","49.241.159.135",80
AT+CIPSEND=57

> GET /dummy.txt HTTP/1.0

これを送ろうとしたんだけど、応答なくCLOSEDになる。
サーバ側のログを見ても何も書かれていない。

何度も試行錯誤をしているうちに、全く反応が無いか、
さもなくば「104: Framing Error」が出るようになってしまった。

ets Jan 8 2013,rst cause:4, boot mode:(3,0)

wdt reset
load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0

2nd boot version : 1.4(b1)
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

たまーにうまくいく事もあったかな? と思ったけど、
もう何回やってもダメになってしまった・・・未解決。

 ●

3 うまくいってるかわからない。

福野さんのブログからコードを拝借して、
生のソケット通信じゃなくて、HTTPを送るように書き換えてみた。
センサーの判定部分を一旦削って、電源入れたら必ず通信するようにしてみた。
変数Aはダミーの値を適当に入れておくことにした。

手元でRUNして、Syntax Errorが無いことを確認してSave。
実際に動くかどうかは、繋ぎ直してみないとわからない。

111 H="49.241.159.135"
112 P=80
113 T="/get.php?"
115 B=0:OUT2,1:OUT1,0
190 A=123
191 LED1:WAIT30:LED0
220 GOSUB 310
230 UART3,0
240 ?"AT+CIPMODE=1":WAIT 60*2
250 ?"AT+CIPSTART=";CHR$(34);"TCP";CHR$(34);",";CHR$(34);STR$(H);CHR$(34);",";P:WAIT 60*2
255 ?"AT+CIPSEND=57":WAIT 60
260 ?"GET ";T;D;"&";A" HTTP/1.0":WAIT 60
280 LED1:WAIT30:LED0
290 OUT1,0:UART2
300 RETURN
310 'WIFI WAIT
320 OUT1,1:OUT2,0:WAIT1:OUT2,1:UART0,2
330 FOR F=0 TO 1
335 CLS:INPUT S
340 C="WIFI GOT IP"
350 F=1:FORI=0TOLEN(C)-1
351 F=F*(SCR(I+1,0)=PEEK(C+I))
352 NEXT
360 NEXT:RETURN

全部まとめてCoolTermにコピペすると、最初の一行しかうまくいかないので、
毎行毎行コピペして済ませている。めんどくさいのでもっといい方法が知りたい。

 ●

4,5 反応なし

試してみたけど、やはり通信はうまくいっていない。
手順2が確実に成功するようにならないと、ここもうまくいかないのだろう。

あえてVIDEO0を消してモニタを確認したのだけど、文字化けしたようなのが並びまくっている。
191番の命令で0.5秒くらいLEDをつけるようにしてみたのだけど、どうもそこまで実行できていない。

 ●

少しは進んだけど、前途多難だなあ。
ごはんを挟んで3時間くらい遊んだ気がするので、今日はオシマイ。

プログラミングもそうなんだけど、うまくいかない時に、何が悪いのかに気付ける仕組みが欲しい。
もっと言えば、一見うまくいってるように見えても、何かおかしいなら教えてくれればベスト。

ひょっとしてESP-WROOM-02を壊しちゃったんじゃないかなーと不安がってるんだけど、
予備に貰ったチップは、はんだづけしないと使えないのだけど、道具が足りてない。
最初に貰った基盤はピンアサインが書いてなくて微妙に不便なので、取り換えたいんだけどなあ。

Milkcocoaも試したいけど、まずは自分のサーバで疎通確認まで出来てからがいいな。

PageTop