Arduinoをシミュレータで入門してみた
IoTには興味あるけど、実際に機器を買うまでモチベーションが至らなかったので、シミュレータから入った話。
ラズパイとWebの力で何かしたい、でも実際に何ができるかわからないから、名古屋版IoT縛りの勉強会! IoTLT vol1 - connpass に参加して聴講。
どうやら電子工作でのWebはArduino + esp8266の方が簡単らしい、ということでArduinoから入ることにしました。
123d circuits
Bring ideas to life with free online Arduino simulator and PCB apps | 123D Circuits by Autodesk
入門するにあたって使ったシミュレータです。
123d circuitsは、ウェブ上で動くシミュレータで、作った回路やコードを公開できます。
どうやら、パーツを壊すこともできるみたいで、「抵抗間違えてArduinoやパーツがお釈迦になった」なんていうハプニングも未然に防げるとか。
使ってみた感想、というか簡単な考察はこんな感じ。
メリット
デメリット
- Arduinoの基本的なライブラリしか読めない。外部ライブラリを使いたければそのソースコードをコピペしろとのこと。
- 動作が妙に遅い。シミュレータないの一秒が一秒以上であることがが普通。
- esp8266でアクセスして、取得した結果がやけにおかしい。思った通りの情報を受け取れない。
- pythonで書けない(憤怒)。巷ではpythonでArduinoが書けるというらしいが、シミュレータにそんなものはサポートされているわけなかった。
以上のように、気軽に電子工作ができて共有もできるうえに、Wifi通信もシミュレートできる一方、
さすがになんでもかんでも作れるわけではない。そこについては、まあ仕方ないと割り切りましたが、さすがにWebから取得したレスポンスのメッセージが変ってのは腑に落ちませんね・・・
しかし、シミュレータ上で回路が落ちていたり、それを編集できるので、とりあえずArduino本体やパーツを買って、作りたい回路を見つけたorできたら早速作るのもアリですね。
で、シミュレータで遊んで作ったものを以下に記載します
制作物
ArduinoでWebAPIにアクセスして、取得した結果をLCDに表示させてみました。
回線だけは完全に丸パクリ。配線はその上で必要最低限分勉強しただけで、コードを変えてみたって感じです。
とりあえずHTTPリクエストの結果まんま(?)LCD上に表示させました。
動かしてみたらわかりますが、JSONのデータらしいものが表示されます。どうも結果の挙動がおかしいです。
そのせいで、肝心な欲しいデータだけを抽出しようにも全くできない状態。
本当は、クライアント端末からLEDやモーターを操作したかったのに、謎の取得結果のせいで実現できない状態に。
今後は、原因究明をするか、諦めて本番で作るかですかねー・・・
esp8266への接続
esp8266での接続では、ssidを "Simulator Wifi" で、パスワードは未入力("")で接続ができます。
つまり、123d circuitsでWifiに接続するまでなら、こんな感じに書ける。
(他人のコードのコピペですが・・・)
String ssid = "Simulator Wifi"; // SSID to connect to String password = ""; // Our virtual wifi has no password (so dont do your banking stuff on this network) void setup() { // Start our ESP8266 Serial Communication Serial.begin(115200); // Serial connection over USB to computer Serial.println("AT"); // Serial connection on Tx / Rx port to ESP8266 delay(10); // Wait a little for the ESP to respond // Connect to 123D Circuits Simulator Wifi Serial.println("AT+CWJAP=\"" + ssid + "\",\"" + password + "\""); delay(10); // Wait a little for the ESP to respond }
その他
123d circuitsでdweet.ioという、簡単にWebAPIを作れるものを使いたかったです。(使ったけど)
これは、認証も登録もなしで簡単にWebAPIが作れるというもので、プロトタイプには超うってつけです。
URLやパラメータで簡単にデザインできます。