2015年1月30日金曜日

ESP8266で透過モードを使ってみた。

ESP8266でTDPやUDP通信をするためにはATコマンドで送信する文字長さを最初に指定してから送信が必要だったりするので、既存のシリアルデバイスにそのままESP8266を直結しても通信できない。

Arduinoを間に挟んで実装できないかと思っていたらESP8266モジュールのファームウェアを書き換えて透過モードを実装するファームウェアを発見!

ESP8266はデフォルトでATコマンドのファームウェアが入ってるけどWeb鯖になったり、Luaを使えるようになったり、NTPから時間を取得するATコマンドが追加されてたり、有志によってさまざまなファームウェアが作られているようで、透過モードのファームウェアも有志によって作られた模様。

ESP8266-transparent-bridge
こちらにソースコードとバイナリがおいてあるので今回はバイナリを頂戴してきた。

しかしなぜかファイルが2つ有る…
どうやら書き込む領域が異なる模様。
書き込む領域を見するとヤバイらしい(MACアドレス消えたり)のでくれぐれも注意すること。
領域さえミスらなければ書き込み中に電源が切れたりしてもまたGPIO 0をGNDに落として起動することにより再書き込みできたw

とりあえず前回同様のツールでやってみた。
ESP8266モジュールのGPIO 0をGNDに落としながら電源を入れる。
電源入れたらGPIO 0はGNDに落ちてなくても大丈夫。起動する瞬間だけ必要な模様。
eagle.app.v6.flash.binを0x00000から書込み
eagle.app.v6.irom0text.binを0x40000から書き込む。
このとき書込みモードが外れてしまうようで、GPIO 0をGNDに落として再起動が必要だった。

2つ目も書き終わったら再起動でOKなはずだが…
ESP8266のSSIDが出ない…

とりあえず元のATコマンド用のファームウェアを0x00000から書き戻してみた。
ちゃんとSSIDが検出される。つまりモジュールは壊れてないので書込みツールが悪い?

esptoolを使用してみることに。
esptoolはPythonでできてる書込みツール。PySerialが必要なのでインストールしておく。

今回はOSXを使用した。esptoolのフォルダのなかに先ほどのファームウェアのbinファイルを入れておく。

ESP8266のGPIO 0をGNDにいれて起動

sudo ./esptool.py --port /dev/tty.使用するCOMポート write_flash 0x00000 eagle.app.v6.flash.bin 0x40000 eagle.app.v6.irom0text.bin

ってな具合で書き込むことができた。
書き込み後はESPから始まるSSIDが検出されたので接続してみる。
このファームウェアだとTelnetから設定変更できるみたいなのでIPが取得できたらTelnetで192.168.4.1に接続。

+++AT

これでOKって帰ってくるはず。かえってこなかったらなにかおかしい…

自分の場合、アクセスポイントに接続したかったので下のように設定変更した
+++AT MODE 3
でAP+STAモードに変更し
+++AT STA ssid password
でアクセスポイントに接続。ATコマンドの時と違って""で囲む必要なし。
+++AT BAUD
でボーレートを確認したら115200だったので変更なし。
+++AT PORT
でポート確認したら23だった。とりあえずそのまま。


FLASHに設定を記録させるにはPORTかBAUDコマンドが必要らしい?
FLASHに書き込まない設定もできる模様。

とりあえずこれで設定が保存されたようなのでnetcatとかから接続してみた。
netcatで打った文字がそのままESP8266のシリアルポートから出力されて、ESP8266のシリアルポートに送信した文字列がnetcat上にそのまま表示される。

これでどんなシリアルデバイスもWiFi化できそう?

とりあえずMultiWiiとESP8266を接続してWiFiテレメトリとかできそうだなー




2015年1月25日日曜日

ルンバ770のバッテリーを交換してみた。

最近ルンバが仕事しないですぐ帰ってしまうのでバッテリーがもうヘタってるのかなぁと思いバッテリーを交換してみた。

純正のバッテリーは結構高級なので互換品の大容量バッテリーをポチった。
4000円ぐらい。他にもサードパティからリチウムイオンタイプとかもでてて長時間駆動できるみたいだけどそちらも高かったのでNi-MHの大容量タイプをとりあえず試してみることに。
ちなみに互換品は当たり外れあるみたいなのでレビューが良さそうなやつを選んでみた。
ルンバ770純正のバッテリーは3000mAhに対して、互換品の大容量版は4500mAhって書いてある。
互換品(上)と純正品(下)

とりあえず装着して充電中。最初は充電に結構掛かるらしい。
これでちゃんと仕事してくれるようになるといいんだけどなぁ。

 

2015年1月23日金曜日

Digispark互換基板を買ってみた

DigisparkはArduino的に使えるATtiny85を搭載したマイコンボード。
こいつの互換基板がeBayでお安くてに入ったので使ってみた。
元々はUSBポートに直結できるボードなんだけどmicroUSBのほうが使い勝手が良さそうだったのでmicroUSB搭載版にしてみた。

ボード自体はいたってシンプルでAttiny85だけでUSB接続を実現してるっぽい。
IOは6ポートあるけどUSBで通信しながら使う場合は4ポートしか使えない。

使用するにはArduino IDEベースの専用ツールを使用する感じ。

ツール→ボードでDigisparkを選択し、
ツール→書込装置でMicronucleusを選択するだけ。

プログラムを書き込む時は書き込みボタンを押しても自動リセットされないので1分以内に一回USBを抜いてもっかい指す必要がある。

とりあえず400円ぐらいで手に入ったので軽くなにか動かしたいときには良さそう。
しかしシリアル通信が使えないのでPCと通信する場合はちょっとしたプログラムを書かないといけなさそう?

2015年1月17日土曜日

WT3020のUSB速度低下問題

OpenWRTを書き込んだりNAND Flashを16MBに増設したりしてきたWT3020だけど、なんかUSBメモリの読み書きが遅い気がする…

ということで調べてみたらどうやらハードウェアの問題の模様。
中国のフォーラムでは余計なコンデンサが付いているとの報告が。
ここを見るとMT7620N搭載の他のルーターでも同じようにコンデンサが付いているものがあるようで、データシートにはこのピンに関してはそのような説明はされてない模様。

CPUの左上に抵抗と並んでくっついてるコンデンサが問題のやつ。

外すと通常のレベルまで高速化するようなので外してみた。
場所はCPUの左上のほうに抵抗と並んで取り付けてあるので、抵抗を外さないようにうまくハンダゴテを当てると外れる。

片方がグラウンドパターンに乗ってる?熱が入りにくくて外れにくい。

これを取り外したらUSBメモリはもちろんのこと、USBカメラでmjpg-streamerを使ってのストリーミングで1280x720の25FPSとかでも普通にスムーズに動くようになった。
今のところ問題も起きてないし、データシートに乗ってないってことは要らないんだろうけど基板の設計ミスとかなのかな?