Arduino」カテゴリーアーカイブ

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サーバでの開発がそうであるように、まずインタプリタで試して、再現した手順をバッチに保存したい、みたいな用途は絶対あると思うのですよね。

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

 

ESPタイニーサイネージを作った

ESPタイニーサイネージを作った

長かったが、ようやくできました!

ESPタイニーサイネージ

ベース基板は↓のような感じ。ホームリフローでも、がんばればこんなミニ基板が作れるのね。

ベースボード

ベース基板には、WiFi SoCのESP8266EX W-ROOM-02をメインとして、フルカラーLEDのWS2812Bが載っています。電源はマイクロUSB端子以外に、リチウムイオンポリマー電池も使えます。

残念ながら、USBシリアル変換チップは載っていません。USB端子は本当に電源だけの利用です。これは、省スペースと低消費電力化のためです。開発時にしか使いませんから・・・・

スイッチサイエンスの5V/3.3VUSBシリアル変換

開発したい場合は、スイッチサイエンスのFTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)をぶっさすと、Arduinoでプログラミングできるようになります。上記のはお高めですが、Arduino micro互換のピン配列のUSBシリアル(DTRが6番ピンに来ているもの)なら大丈夫です。

なお、eBayやAliexpressで$5くらいで売っている(電子工作では定番な)有機ELディスプレイ(128×64ドット)ボードが、ちょうど乗っかるようにi2c端子が生えています。最初の写真はディスプレイをつけたものです。

開発目的

覚えてらっしゃるでしょうか?その昔、Chumbyというデジタルガジェットがあったことを。

chumby

LinuxとAdobe Flash Lite(だったような)が載っていて、アプリもいろいろ入れ替えて使える、WiFi付きの時計、みたいなガジェットでした。言うまでもなく”スマホ”にやられてしまいましたが・・・(*_*)

そう、スマホ、iOSやAndroidの通知機能は便利ですよね。しかし、「認知」=「事象の存在そのものを把握する」ということに関しては、単一の画面、単一のデバイスのスマートフォンだけに頼っていいのだろうか?という疑問が私にはあるわけです。

むしろ、人間はデバイスを持たず、ありとあらゆるところ、キッチン、玄関、廊下、ベットサイド、そこら中に表示デバイスがあれば、ロックを解除して通知画面をフリックしてアプリを起動して・・・とやらなくても良いんじゃないかと。かなりパッシブな情報提供でも事足りるのではないかと。本来の意味でのユビキタスコンピューティングですね。

例えば、朝もうあと1分で家を出なきゃ遅刻しちゃう、でも今日傘持っていく必要があるか知りたい!テレビのDボタン?いやテレビは消しちゃった、スマホスマホ・・・Yahoo天気を起動、遅い!みたいなことをやらなくても、玄関でLEDが水色に光ってたら傘を持っていく、というシンプルな仕組みにしたいのです。

これ、実は世間様ではすでに実現されていますよね。街頭や山手線内の「デジタルサイネージ」として。だから私は「ホームサイネージ」を作ればいいんじゃないかと。で、出来たのが、このしょぼい自作デバイスというわけです。私は本当はLinuxが得意なので、RaspberryPiで作れば何もしなくても済んだのかもしれませんが、RaspberryPiはパッシブ表示デバイスとして扱うには、ちょっとでかくてお高くてリッチで、鶏を割くに焉んぞ牛刀を用いん感が無きにもあらず。画面もついていませんし。

てなわけで、この界隈では「タイニー」と付ければしょぼくても許される気風がある(ねえよ)と勝手に思っているので、名前は「ESPタイニーサイネージ」です。