月別アーカイブ: 6月 2016

ESP8266ボードにジャイロを搭載した

ESP8266ボードにジャイロを搭載した

Elecrowに出していた基板のVer.2が納品されたので早速リフローしました。

なんと今度はジャイロ搭載です!

記載の動画は、ジャイロの情報をESP8266経由でシリアルに流して、それをPCのProcessing上で動くアニメーターで受けて思うがままに追従させるデモです。

もちろん、ESP8266はWiFi SoCですから、UDPパケットにして送信したりすればシリアルラインは不要となります。また、今回のオリジナルボードにはリチウムポリマーの端子がついているので、完全ノンワイヤーで動かすことができます。

何に使うの?

今回使ったMPU-6050は、加速度とジャイロ(角速度)の2種類のセンサーと、DMPというモーションプロセッサが内蔵されたチップです。こういうユニットのことを、一般にはInertial Measurement Unit(IMU)と言って、自動制御には欠かせない部品です。センサーですから単体で何ができるかというわけではありませんが・・・そうだな・・・一般には、ドローンに1個は必ず搭載されているもの、であって、自動運転自動車とか多関節の歩行ロボットだと複数個ついていてセンサーデータを統合しながら動いているんですね。まあ「ロボット用」と言って差し支えないと思います。

QFNパッケージ

今回のオリジナルボードの場合、ESP8266のIO4,IO5をI2CバスとしてMPU-6050が接続されています。IO15ははんだジャンパで割り込み入力用に割り当てることができます。IO12,IO13,IO14はSPIバス用に開放されていますので、モータードライバー等をSPIバスに接続すれば、これは「WiFiでコントロール可能なドローンの頭脳」として活用することが可能なわけです。

ま、そこまでできないですが(^^;自動制御よくわかんないし。でも、単純にrawデータを得るだけでも、デジタルガジェットとしてのGUIの改善などに役立てることができるでしょう(iPhoneアプリでよくある、横に向けると画面も横になる、みたいなやつです)。

ちょっと高くなってしまうけど、おおよそボードの仕様が固まりつつあるかなーという感じです。本音を言うと、QFN24ピンのはんだ付けが一番大変でした・・・・

ESP8266にmicropythonをインスコ

言語micropython

せっかく画面付きのマイコンが手に入ったので、その上で遊べるインタプリタ言語があれば色々楽しめるかなと思っていました。最も有名なのはNodeMCU上のLua言語だと思います。LuaはTokyoTyrantの組み込みプロシージャ拡張でも使ったことがあるので馴染みがあります。ESP8266界隈では最も普及しており情報も豊富なのですが、私はひねくれものなので別の言語を探しました。

しばらく調べているとmicropythonというものがあることがわかりました。元々Kickstarterで募集していた「pyboard」というSTMicro SoC搭載のマイコンボード上で動く組込用Pythonのようです。これがESP8266にも移植されているということのようです。

さっそくgitから色々引っ張ってきてコンパイル。若干苦労しましたが書き込み自体は割と簡単でした。ターミナルつないで動かしてみると、ちゃんとプロンプトが出て、その中でLEDを光らせたり、OLEDに文字列を表示できたりするのは、なかなか箱庭感覚で不思議なものです。どうせならPS/2キーボード付けて完全スタンドアロンにしたい衝動にかられます。

saveができない

しかし・・・一通り楽しんで・・・ありゃ?これはREPL(インタプリタ)単体でスクリプトを書けないの???WebREPL(別のPCからWebブラウザで見るためのWebUI)を起動するか、webrepl_cli.pyというスクリプトで外部から接続しないといけなそうなのです。間違いだったらすみません。

もう少し、手軽に使えるものだとばかり思っていました。そりゃ今は確かに仮想端末でUSBシリアルでつないで文字入力してますが、必ずPCが必要というのはちょっと夢がないような(完全に難癖ですが)。でも、UNIXサーバでの開発がそうであるように、まずインタプリタで試して、再現した手順をバッチに保存したい、みたいな用途は絶対あると思うのですよね。

ちょっとソースを読もうと思いましたが、完全に荷が勝ちすぎております。どなたか解決方法あれば教えてくだされ。