シリアルをtelnet 経由してつなげるようになったので、ArduinoIDE からシリアルをWiFi で書き込めるようにしてみようとあれこれやること、1日弱。結局、osx では良いツールが見つからずできませんでした。
何ができなかったかと言うと、仮想シリアルポートを作成して、それをArduinoIDE から認識できずで、何かやり方があるんだろうと思います。socat の使い方が悪いんだと思うので、継続して調査。Windows だとこのあたりのツールはたくさんあって、苦労しない感じなので、次回は、Windows でやってみることに。
で、いろいろsocat の使い方を試しているうちに、昨日の疑問が解けました。
・ESP12 の接続IPにつなげて、echo が表示されてしまう問題
・CTL + C など 接続した先でやりたいんだけど、socat の接続元(osx 側)で CTL + C になる問題
これは、以下のようにすれば良いようです。
$ socat STDIN,raw,echo=0 TCP:192.168.1.36:23
raw をつけておけば、そのままコントロール信号も送られるけども、手元のターミナルは中断できないので、ターミナルウィンドウを閉じてしまう感じ。tcpdump とか、WiFi 経由のシリアルから入って採取してるときとか、CTL + C できるし、上矢印のコマンド履歴も、tab 補完キーも効きます。理屈がわかってしまえば、あ、そうかということですが。。。。
調べているときに、よくまとまったBlog記事があったので、メモしておきます。
Make RS232 Serial Devices Accessible via Ethernet
http://blog.philippklaus.de/2011/08/make-rs232-serial-devices-accessible-via-ethernet/
最後に、socat でのソケットを分割するには、以下のようにやれば良い事がわかりました。
sudo socat -d -d -d -d -lf /tmp/socat \ pty,\ link=/dev/master,\ raw,\ echo=0,\ user=junkhack,\ group=staff\ \ pty,\ link=/dev/slave,\ raw,\ echo=0,\ user=junkhack,\ group=staff
どうやって、arduinoIDE のシリアルポートに表示させるかが課題です。
WiFi 経由のシリアルコンソールで、ずっとtcpdump を流してテストしていますが、接続もきれず良い感じです。あと、話は飛びますが、ESP8266 Arduino Core のドキュメント見てましたら、File system も使えるようですね。これはある程度まで、データをメモリに貯めておいて、まとめてWifi 出力でデータを飛ばせば、電力の消費も抑えられそうです。sleep mode の下調べはおおよそ終わったので、コード実装して、電池駆動にしてテストするデバイス作りを夏休み(まだこれからなんですが)にやれればと思っています。ESP8266 、こんなに遊べるとは。まだlua にするのもありますしね。今年いっぱいは遊べる感じです。飽きるか、いきづまらなければね。