「DFRobot」タグアーカイブ

ロボット犬『Mini Pupperミニぷぱ』で 書道

これまでミニぷパに色々な動作や機能を実装し楽しんでまいりましたが、
ついに字を書けるようになりました!

 

 

動作

早速 凛々しい書道スタイルをご覧ください。

 

足に筆ペンを固定していますw

 

機構

基本的には以前ロボットアームで実施した機構と同じです。

Processing で制御 ーロボットアーム自作への道3ー

 

Processingのウィンドウ上の座標をミニぷパに送信して足の平面座標(x, y)として制御します。

マウスをクリックすると足の高さを下げて筆ペンを地面に接地します。
ドラッグで線や絵を描けます。マウスがクリックされていない時は足を20mm上げてペン先を浮かせています。

 

ProcessingからのUSBシリアルはATOM Liteで直接うまく受信できなかったので
前回のAIカメラ HuskyLensの時と同様に一旦Seeeduino XIAOで受信してATOMに座標情報を送りました。

ロボット犬『Mini Pupperミニぷぱ』を AIカメラ HuskyLens で堪能

前回は9軸 IMUセンサ BNO055を用いてミニぷぱ制御を楽しみました。

ダイソー版 プラレール を改造したよ♪

 

ここでは更に AIカメラ HuskyLensを追加して ミニぷぱを賢くしちゃいます。

 

 

AIカメラ HuskyLens

HuskyLensは顔認識、物体追跡、物体認識、ライン追跡、色認識、タグ認識などの機能を有するAIカメラです。

 

 

ここではHuskyLensの設定で色認識データをI2C出力にして使用しました。

 

認識した色の座標位置でミニぷぱを制御します。

 

 

HuskyLensをミニぷぱに接続

前回製作したATOM Liteをコントローラに採用したミニぷぱにHuskyLensを接続します。

注意点

HuskyLensのI2C出力をATOM Liteに接続して素直に行きたかったのですが。。
毎度恒例の問題発生。

以下のHuskyLens Arduinoライブラリを使用してI2C通信したいのですが、ESP32には使用できませんでした。
 https://github.com/HuskyLens/HUSKYLENSArduino/tree/master/HUSKYLENS/examples/HUSKYLENS_I2C

かなりライブラリを修正しないといけない感じだったので直結は潔くあきらめて、Seeeduino XIAOで中継することにいたしました。

 

構成

 

HuskyLensとATOM Lite間にSeeeduino XIAOを挿入してI2C-Uart変換を実施しています。

 

 

部品

 

動作

赤色の横方向座標で旋回移動させてみました。

XIAOからのHuskyLensデータをATOM Liteを2コアにしてCore0で常時シリアル受信するようにして、サーボ制御との並行動作を実現しています。

 

これまで仕込んだ歩行動作なども問題なく実行できます。

 

おわりに

AIカメラ HuskyLensの追加によって ミニぷぱ がとても賢くなりました!

今回は色認識で制御していますが顔認識やライントレースなどもできそうです。

どんどん賢く 高機能になる 我が家のミニぷぱ

 

そのうちしゃべりだして立ち上がって二足歩行するかもしれませんね。

HuskyLens で ロボットを遠隔操作  ー二足歩行ロボットへの道7ー

前回はコントローラで二足歩行ロボットの全身を遠隔操作し、モーションの記録・再生を可能としました。

モーションコントローラ REC & PLAY  ー二足歩行ロボットへの道6ー

 

ここでは、少し寄り道をしてAIカメラ HuskyLensを用いてロボットの遠隔動作を試してみました。

 

 

 

Tag Recognition

HuskyLensのタグ認識機能を使ってロボットの関節角度を導出してみます。

HuskyLensは以下のタグを認識できます。

 

ロボット用コントローラの関節にタグ(8個)を貼り付けてみました。

 

HuskyLensでタグを認識し、座標から関節の角度を導出します。

 

構成

HuskyLensでコントローラのタグを認識し、座標から関節角度を導出します。
導出した角度をArduino UNOを介してコントローラのM5StickCにシリアルで転送します。

参考

動作

腕の2個のタグの座標から角度を導出して、腕を動かしてみました。

 

おわりに

ここでは画像認識でロボットを遠隔する可能性を確かめることができました。

次回は本題に戻って二足歩行ロボットの動作を学びたいと思います。

それでは次の道でお会いしましょう!

micro:Maqueen Plus を堪能 – HuskyLens を 添えて –

先日、DFRobot様より素敵な製品をいただきました!ありがとうございます!!

今回は micro:Maqueen Plus を楽しみましたので報告いたします。

 

 

micro:Maqueen Plus

micro:Maqueen Plusはエンコーダ付きモータ2個と各種センサを搭載したプログラミングロボットです。

 

micro:bit用のスロットが搭載されており、Arduino IDE や MakeCodeなどでプログラミング可能です。

可愛い専用ボックスに入っており、超音波センサも同梱されています。

 

micro:Maqueen Plus の前機種の micro:Maqueen よりもサイズが大きく、ライントレース用のセンサの数も多くなっています。

 

micro:Maqueen Plus は18650型バッテリで給電します。ここでは以下を購入し使用しました。
充電用のUSBマイクロ端子も実装されています。


500円OFFクーポン配布中 リチウムイオン充電池 18650充電池 多重保護回路 PSE認証済 2600mAh 3.7V 大容量 二次電池 長寿命 充電可 リサイクル LDC-260H - 500円OFFクーポン配布中 リチウムイオン充電池 18650充電池 多重保護回路 PSE認証済 2600mAh 3.7V 大容量 二次電池 長寿命 充電可 リサイクル LDC-260H

動作

同梱されていた紙のライントレースコースを以下のサンプルMakeCode で走らせてみました。
 https://makecode.microbit.org/54033-76373-09765-24488

参考

 

HuskyLens との連携

前機種のmicro:MaqueenでもやったAIカメラの HuskyLens との連携動作を試してみました。

Microsoft MakeCode で ビジュアルプログラミング

 

HuskyLensの色認識機能で金魚を認識してモータを制御して追従してみます。

 

HuskyLensは設定でデータ出力を”I2C”にして、同梱の4線コネクタでmicro:Maqueen PlusのI2Cコネクタに接続します。

MakeCode

MakeCodeでプログラミングします。
MakeCodeはブロックエディタやJavaScriptエディタでプログラムできるWebベースのコードエディタです。
 https://www.microsoft.com/ja-jp/makecode

micro:bitのプロジェクトを起動して ”高度なブロック” ->  “拡張機能” で検索してMakeCodeにMaqueen plusとHuskyLensのブロックを追加します。

金魚の赤色がHuskyLensの画面の中央に来るようにモータを駆動し旋回する。

物体の中心座標がx軸の中心(160)付近からずれたらモータで旋回するようにしました。

 

動作

 

参考

メカナムホイールでLEGOラジコンカー製作

DFRobot様よりメカナムホイールをいただきましたので、ラジコンカーを製作してみました。

 

 

思想

非常によいメカナムホイールが手に入ったので、これをどう利用しようかとウキウキで考えました。

長男くんはずっとLEGOが大好きで毎日いろいろ製作しています。

長男くん のレゴ作品集

 

そこで、折角ですのでLEGOで色々カスタマイズできるラジコンにしようと思います。

 

構成

メカナムホイールはレゴを接続できる360°回転サーボで回すことにしました。

サーボとしても低価格で非常に良い買い物をしました♪

 

ホイールとサーボの接続のために3Dプリンタで治具を製作しました。

 
 
サーボの制御にはM5StickCとM5StickC 8Servos Hatを用いました。

 
M5StickCとM5StickC 8Servos Hatによるビークル制御は以前試しているので慣れたものです。

M5StickC 8Servos Hat でラジコンを堪能

 

車体

車体はLEGOで構築しました。

 

Blynk設定

ここではスマホアプリのblynkでBLE通信で車体を動かします。

 

新規プロジェクトを作成します。ハードウェアはESP32 Dev Boardを選択。Conection TypeにはBLEを指定します。
AUTH TOKENはArduinoコード生成時に使用します (アカウント登録したメールに送信されます)。

 

ウィジェットとしてBLEウィジェットとNumeric InputウィジェットとJoystickウェジットを配置します。

 

Numeric InputウェジットはV1を使用します。
メカナムホイールの回転速度を決定します (0~90)。

 

JoystickウェジットはバーチャルピンV0を使用します。

ジョイスティックの設定はx軸とy軸の出力をMERGEしてヴァーチャルピンV0に出力させ、それぞれ値は-100~100としました。

AUTO RETURNはONにしてジョイスティックはタップ移動後離すと自動的に中央に戻します。
ROTATE ON TILTはOFFにてスマホの回転に依存せずのx, y軸を固定とします。

 

メカナムホイール動作

Arduinoコード

ジョイスティックのx, y値をM5StickCで受けて角度に変換してディスプレイ表示しています。
角度のディスプレイ表示は以下のM5StickCのサンプルコードTFT_Pie_Chartを利用しました。

8Servos Hatのサンプルコードを元に制御しております。 

 

 

動作

 

おわりに

憧れのメカナムホイールを用いてレゴカーができました!

あとは長男くんに自由にカスタマイズしていただきましょう。

DFRobot フレキシブルLEDマトリクスと円形ディスプレイを堪能

DFRobot様より素敵な製品をいただきました!ありがとうございます!!

ここではフレキシブルLEDマトリクスと円形ディスプレイを紹介させていただきます。

 

 

フレキシブルLEDマトリクス

フレキシブル基板に3.2mmピッチ 7 x 71 のLEDが搭載されています。

 

UARTシリアルで制御可能です。

 

以下でライブラリとサンプルコードが公開されています。
 https://github.com/DFRobot/DFRobot_SerialScreen771

動作

シリアルで簡単に制御できるので接続も制御も非常に簡単です。

 

フレキシブルにグニャグニャ曲げれるので色々応用ができそうです!

参考

 

円形ディスプレイ

直径128ピクセルの円形ディスプレイです。
ドライバは ST7687S というのが使われています。

 

SPIで制御可能です。

 

以下でライブラリとサンプルコードが公開されています。
 https://github.com/DFRobot/DFRobot_ST7687S
 https://github.com/DFRobot/DFRobot_Display

動作

時計のサンプルコードを動かしてみました。

 

画像をバイナリに変換するソフト image2lcd.exe も配布されており好きな画像を表示することもできます。

参考

 

HuskyLens でお絵描き実験

HuskyLens の公式紹介動画にある物体追従によるエフェクト描画みたいのをやりたく実験いたしました。

 

 

構成

HuskyLens の物体追従機能で学習した物体(ここではHuskyLens君のキーホルダー)の中心座標を検出してArduinoにシリアル伝送します。

更にArduinoからProcessing へ座標を送信してパレットに描画させます。

 

Arduinoコード

公式のHuskyLens  Arduinoチュートリアルを参考にプログラミングしました。

チュートリアル:Arduino Tutorial
Arduinoライブラリ:https://github.com/HuskyLens/HUSKYLENSArduino
参考サンプルコード:HUSKYLENS_GET_STARED.ino

 
ソフトウェアシリアル(RX : D10, TX : D11)でHuskyLens からの物体中心座標を受信し、
USBシリアルでPCのProcessingに送信します。

検出される座標はHuskyLensの画像サイズと同様に320×240です。

Processingコード

Arduinoからの座標を受信してパレットに点を描画します。

参考

 

動作

いいですねぇ

物体の学習も簡単だし、シリアル出力でデータを気軽に利用できるので
これはかなり応用ができそう!

応用 (2020/6/4)

Color Recognition 機能で色を3色学習してお絵描きしてみました。

HuskyLens を MakeCodeで楽しむ

前回、味見程度ではありますが HuskyLens の動作を楽しみました。
今回はHuskyLensの沼にもう少しだけ踏み込んでみようと思います。

 

 

MakeCode

サヌキテックネットさんの記事でHuskyLensがMakeCodeでプログラミングできることがわかりました。

MakeCodeはブロックエディタやJavaScriptエディタでプログラムできるWebベースのコードエディタです。
 https://www.microsoft.com/ja-jp/makecode

micro:bitやAdafruitのCircuit Playground Express というマイコンシリーズなどに対応しています。

Microsoft MakeCode で ビジュアルプログラミング

 

前述の記事のとおりHuskyLensのブロックも用意されていますのでここでは、micro:bitと組み合わせて楽しみました。
めっちゃ便利!!

 

micro:bit(Maqueen)と連結

ここではmicro:bit用のロボットプラットフォームMaqueenとHuskyLensを連結して使用します。
付属の金具で可愛く実装できました♪

 

 

HuskyLensの4ピンコネクタとMaqueenのI2Cコネクタで結線します。

 

 

MakeCodeコーディング

まずはMakeCodeにMaqueenとHuskyLensのブロックを追加します。

micro:bitのプロジェクトを起動して”高度なブロック” ->  “拡張機能”で検索して追加します。

  • Maqueen:Maqueenと検索
  • HuskyLens:”https://github.com/tangjie133/pxt-huskylens”と入力し検索

物体追従 味見

学習した物体(HuskyLens君)を検出したら、右赤LEDを光らす。

“最初だけ”でI2C通信と物体追従モードを確立させます。

“ずっと”で物体検出したら右赤LEDを点灯させてます。

簡単すぎる。。。

物体追従 モータ駆動

対象の物体がHuskyLensの画面の中央に来るようにモータを駆動し旋回する。

物体の中心座標がx軸の中心(160)付近からずれたらモータで旋回するようにしました。

 

 

ちょっと制動が甘いですが。。。簡単にできてしましました。
モータ駆動はArduino IDEとかでまじめに制御したほうがよさそうです。
 

おわりに

HuskyLensのたぐいまれなるAI機能をI2C通信で気軽に利用することができました!

micro:bitと接続してMakeCodeで試せるのも簡単で魅力的ですね。
思い付きが簡単に実現できるので今後もいろいろ作ってみたいです。

HuskyLens をつかってみた

なんと DFRobot様よりAIカメラ HuskyLensをいただきました!
ありがとうございます!!

 
可愛いメッセージカードやキーホルダーやHuskyLens用のシリコンケースもいただきました。

 

HuskyLensは”HuskyLensの大冒険”と題して
日本での販売拡大を進めているようですので、今後入手しやすくなるのではないでしょうか。

 

 

HuskyLens

HuskyLensは顔認識、物体追跡、物体認識、ライン追跡、色認識、タグ認識などの機能を有するAIカメラです。

参考

とにかくつかってみた

電源投入ですぐに動きます。
USBマイクロケーブルを繋いで給電し起動します。

 

物体追従が機能選択ボタンで選択して、追従する物体を学習ボタンで決定するだけで実行出来てしまいました。

簡単すぎる。。学習については物体の向きや角度を変えることで更に学習され追従性度が増すとのことです。
黄色い四角で認識されているときは学習も同時に行っているようです。

顔認識

色認識

金魚の色を選択して金魚を認識することもできました。
本当に簡単!

 
 

おわりに

AIカメラ HuskyLensを提供いただき、
電源入れるだけで各種機能を簡単に利用することができました。
すごい時代だ。。。

HuskyLensには外部出力用の4ピンコネクタもあるので、
次回はマイコンと組み合わせてなにかしらしてみたいと思います。

Jetson Nano をゲットしました!

Jetson Advent Calendar 2020 |3日目

なんとDFRobot社のプレゼント企画に当選してJetson Nanoをゲットしました!

前々からJetson Nanoは気になっていたのでものすごく嬉しかったです 🙂 。
今年分の幸運を使い切ってしまったかもしれません。。

DFRobotのプレゼント企画は今後もTwitterInstagramで実施されており、色々な商品が放出される予定とのことで皆さんも是非参加してみてください。
@dfrobotcn を付けてリツイートするだけです。ほんとにもらえますよ。
 

 

Jetson Nano 初期設定

 

Jetson Nanoを起動するに際しまして以下を用意しました。

  • OS書き込み用SDカード
    Jetson NanoはラズパイのようにOSをSDカードに書き込んで起動します。

     
  •  5V/3.0A USB Micro-Bコネクタ出力ACアダプター
    ここではUSBコネクタから給電します。2A以上必要とのことでラズパイ3に使用していたものを流用しました。

     
  • WiFi  USBアダプター
    無線でネット接続したかったためにUSBソケットに挿入しました。
    特に何の設定も必要なく繋がりました!

     

セットアップ

セットアップ方法は以下を参考に実施しました。

WebRTC Native Client Momoを堪能

以前ラズパイZEROで試したMomoをJetson Nanoでも試してみました!

やはり高速で、目ではもはや遅延があるのかないのか全く分かりません!

カメラは普通のウェブカメラを使用してます。

設定方法

お掃除ロボット制御

以下のようにJetson Nanoでお掃除ロボットを制御したく

 

ただ家にはルンバがないので以下のおもちゃお掃除ロボットで実験しましたw

ちゃお 2017年4月号付録のお掃除ロボをハック!

Node-RED設定

Node-REDをインストールして、以下を参考にGPIOピンを制御できるようにしました。

 

サーボ制御

おもちゃお掃除ロボット旋回動作はサーボで車軸をシフトさせて実現させてますので
サーボを制御するべくPWM出力させます。以下を参考にいたしました。

使用したサーボモータは以下(安い!!!)

 

初期設定

上記サイトを参考に32ピンからPWM出力できるようにします。
シェルで一発設定できるようにしました。

PWMの周期を20msec, 初期のパルス幅を510usecとしています。

 

Node-RED

exceノードにPWMのパルス幅を指定するコマンドを書き込んでサーボを制御しました。

それぞれのノードでパルス幅を510usec (サーボ 0°)と2500usec (サーボ 180°)に設定します。

 

動作

スマホからJetson NanoのNode-REDエディタにアクセスして遠隔でのサーボ制御が実現できました!

モータ制御

モータドライバを介してJetson Nanoでモータを制御しました。

 

Node-RED

GPIO36、38のロジック出力を制御してモータの停止、前進、後進を制御します。

 

動作

無念。。。

おわりに

非常にいいものをいただき本当にうれしいです。

次は機械学習や認識系を試したいです。

ところでこれなんて読むの?→Jetson

電子ペーパーと Blynk でリモートメモ帳

先日DFRobot様より提供いただいた電子ペーパーモジュールで Blynkでユビキタス(いまでも使われているのこの言葉?)に書き込めるメモ帳をこしらえてみました。動作は一番下に動画リンクしていますー

構成

電子ペーパーモジュールをFirebeetle ESP32に載せてスマホアプリBlynkでテキストを書き込んで電子ペーパーに表示させます。

部品

国内ですと以下で手に入ります。

FireBeetle ESP32 IOTマイクロコントローラ
価格:2841円(税込、送料別) (2018/11/10時点)

楽天で購入

Blynk設定

スマホとFireBeetle ESP32 IoTマイコンボードはスマホアプリのBlynkを用いてWiFi通信させます。Blynkアプリのバージョンは2.27.1。

 

新規プロジェクトを作成します。HARDWRE MODELはESP32 Dev Boardを選択。CONNECTION TYPEはWiFiを選択。AUTH TOKENはArduinoコード生成時に使用します(メールで送信されます)。
 

Text Inputウィジェットを4つ配置します。それぞれ出力をヴァーチャルピンV1〜V4にしました。
 

電子ペーパーモジュール書き込み内容をBlynkアプリのText Inputウィジェットへ読み込む際のReadボタンも配置します(ヴァーチャルピンV0)。
 

上図のようにText Inputウィジェットを4つ、Read用ボタンを1つ配置しています。

Arduino IDEコード

FireBeetle ESP32 IoTマイコンのArduino用ファームウェアはFireBeetle-ESP32 Mainboardのバージョン0.0.7を使用します。

電子モジュール用ライブラリとして以下を使用します。字表示は中国語と英語のみサポート(2018年12月)。

詳細は以下のブログも参照ください。

DFRobot FireBeetle ESP32 IoTマイコンの設定方法

更にBlynk用ライブラリも使用します。バージョンは0.5.4。
 https://github.com/blynkkk/blynk-library

[スケッチの例] -> [Blynk] -> [Boards_WiFi]-> [ESP32_WiFi]を参考にコード生成しました。

 

動作

Text Inputウィジェットに文字入力するたびに電子ペーパーモジュールに内容が表示されています。またReadボタンタップで書き込んだ内容がText Inputウィジェットに読み込まれます。

買い物リストとか付箋に書いといたりするんだけど、いざ買い物のときに付箋家に忘れたりスマホのメモだと家族と共有しにくいので、こんな感じでリモートで読み書きできるメモディスプレイは便利ですね。電子ペーパだと低消費電力ですし。

micro:Maqueen 発話でラジコン! ー Alexa + Node-RED + micro:bit ー

ものすごく便利なNode-REDモジュールを見つけてしまいました。

Node-RED Alexa Home Skill Bridge というもので、仮想のAlexaデバイスを作成して発話応答をNode-REDへ返してくれます。まさにブリッジとなってAmazon Echoへの発話とNode-REDの各種パレットをつないでくれます。

これなんでもできるようになるんじゃ。。。可能性ひろがるぅ 😳 

ここではAmazon Echoでコントロールするラジコンカーを作ってみました。

構成

Amazon Echoへの発話応答をNode-RED Alexa Home Skill Bridgeを介して ラズパイZero W上のNode-REDに返して、BLEでmicro:bitに信号を送ります。micro:bitは拡張ミニロボットカーMaqueenに載せて信号を受けて動かします。

部品

  • Amazon Echo Dot

     
  • Raspberry Pi Zero W

     
  • micro:bit

     
  • micro: Maqueen

Maqueen詳細については以下参照ください。

micro:Maqueen を使ってみた

Node-RED Alexa Home Skill Bridgeの設定

Node-RED Alexa Home Skill Bridge用のアカウントを作成してロボットカーを制御するための仮想のAlexaデバイスを作成します。

アカウント登録

以下にアクセスして、Resisterをクリックします。
 https://alexa-node-red.bm.hardill.me.uk/

ユーザ名とメアド、パスワードを登録します。

デバイス登録

登録後、Devicesタグを選択してAdd Deviceをクリックします。

 
ロボットカーのモータを回して前進、後進させるためのAlexa用デバイス”回転”を作成しました。

Name: デバイス名 ” 回転” 入力
Description: デバイスの簡単な説明記載
Actions: デバイスの動作種類を選択。ここではOnとOffを選択。
     Onで前進、 Offで後進させます。

同様にロボットカーを左右に向かせる”ターン”と、停止させる”ストップ”という2つのデバイスを追加で作成しました。

Alexaスキル  Node-RED有効化

スマホのAlexaアプリでNode-REDスキルを有効にしてAlexaサービスとNode-RED Alexa Home Skill Bridgeを紐づけます。

 
スキルを有効にするとNode-RED Alexa Home Skill Bridgeのアカウント入力画面に切り替わるので、登録したユーザ名とパスワードを入力します。

 
問題なければデバイス検出画面に移行します。

 
端末の検出をクリックで作成したデバイスが見つかります。

定型アクションを編集

作成したデバイスの起動するための発話をカスタマイズするために、 Alexaスマホアプリで定型アクションを編集します。

以下のように設定しました。

「アレクサ、前に進め」:デバイス “回転” On
「アレクサ、バックして」:デバイス “回転” Off
「アレクサ、右向け右」:デバイス “ターン” On
「アレクサ、左向け左」:デバイス “ターン” Off
「アレクサ、止まれ」:デバイス “ストップ” On

参考

 

Node-RED設定

Node-REDにAlexa Home Skill Bridge用のノードをインストールして、発話を受けてBLEでmicro:bitに文字列を送信できるようにします。ここではRaspberry Pi Zero WのNode-REDを使用しました。

我が家ではRaspberry Pi Zero Wを自宅内サーバとして使っていて、コンシェルジュのティラノくんが宿題やったか?とか朝だよーとか言ってくれるのです。

AquesTalk と Node-RED と ラズパイで おしゃべりティラノくん作製

ノードのインストール

node-red-contrib-alexa-home-skillをインストールします。

設定でパレットのインストールでnode-red-contrib-alexa-home-skillを検索して”install”クリックでノードが追加されます。

更にBLEを使用するために以下も同様にインストールします。
 node-red-contrib-generic-ble

Node-REDフロー

Alexa-homeノード

作成した仮想Alexaデバイス”回転”、”ターン”、”ストップ”の3つを配置します。

ノードを配置してまずはNode-RED Alexa Home Skill Bridgeで登録したユーザ名とパスワードを入力します。

 
デバイスを選択します。ここでは”回転”を選択。

同様に”ターン”とストップ”用のノードも配置します。
 

true/false分岐 ファンクションノード

“回転”と”ターン”デバイスは発話によってtrueとfalseを返すので、ファンクションノードで分岐させます。

 

BLE送信用文字列 ファンクションノード

“回転”と”ターン”のOn/Offと”ストップ”のOnの発話応用に対応するBLE送信用の文字列を生成するファンクションノードを配置します。

前進(”回転”デバイス On)では文字列 “1:”を送信しています。
micro:bit BLEの書き込み用UUIDと16進数文字列を指定します。

それぞれ以下の文字列を送信します。
 前進(”回転”デバイス On): “1:”
 後進(”回転”デバイス Off): “2:”
 右向(”ターン”デバイス On): “3:”
 左向(”ターン”デバイス Off): “4:”
 ストップ(”ストップ”デバイス On): “5:”
 

Generic BLE 出力ノード

Generic BLE outノードを配置して、鉛筆マークをクリックします。

 
Select from scan resultにチェックを入れ、BBC micro:bit を選択します。

 

MakeCode

Node-REDからの文字列をBLE介してmicro:bitで受けて、ミニロボットカーを制御します。

ここではMakeCodeでブロックコーディングしてmicro:bitに書き込みます。

 https://makecode.microbit.org/

機能拡張

設定アイコン -> 拡張機能をクリックでMaqueen用とbluetooth用のブロックを追加します。

 

Maqueenブロック追加

以下のライブラリリンクを入力して検索をクリック

maqueenをクリックでMaqueenのブロックが追加されます。

 

bluetoothブロック追加

拡張機能でbluetoothを選択。無線ブロックと共存ができないので、無線ブロック削除メッセージが出ます。削除しちゃってください。

 
bluetooth用ブロックが追加されます。

 

micro:bitのBLEペアリング設定を変更します。設定アイコン -> プロジェクトの設定をクリックで一番上の”No Paring Required”を選択します。これでペアリング無しで通信が可能となります。

 

参考

MakeCode ブロック

以下がMaqueen制御用のMakeCodeブロックです。


 

① 初期設定

変数stateを初期化して、BluetoothがNode-RED(Raspberry Pi Zero W)と接続されるとニコニコマークをmicro:bitのLEDマトリクスに表示します。


 

② 文字列受信

Node-REDからの文字列を受信してコロン”:”前の文字を変数stateに代入します。


 

③ 前後進制御

文字列”1:”受信で前進、”2:”受信で後進させます。LEDマトリクス表示もそれぞれ変えます。


 

④ 右向き制御

文字列”3:”受信で右に90°ターンします。LEDマトリクスにはターン方向の矢印を表示させて Maqueen前方についている赤LEDインジケータ右側をウィンカーのように点滅させてます。ターン後、全て停止します。


 

⑤ 左向き制御

文字列”4:”受信で左に90°ターンします。LEDマトリクスにはターン方向の矢印を表示させて Maqueen前方についている赤LEDインジケータ左側をウィンカーのように点滅させてます。ターン後、全て停止します。


 

⑥ モータ停止

文字列”5:”受信でモータ停止し、LEDマトリクスの表示を消します。

 

MakeCode JavaScript

全体のJavaScriptコードを以下に記載します。

 

 

動作まとめ

ゴチャついてきたので、動作を一覧にまとめます。


 

動作

音声でロボットカーを制御できております!

ちょっと初期設定が大変かもだけど、ブロック組み合わせるだけで実にフィジカルなVUIアプリを作成できました!

ゴミ箱とか音声で近くに移動してくれたりとかいいかも 🙄 

とにかくNode-RED Alexa Home Skill Bridge が神がかって便利なので今後もいろいろ活用考えたいです!

micro:bit 拡張ボードで クリスマスオーナメントを作ってみた

DFRobot社の micro:bit Circular RGB LED Expansion Board を使ってクリスマスツリーに飾るオーナメントを作りました。

拡張ボード詳細については以下参照ください。micro:bitを拡張します。

Microsoft MakeCode で ビジュアルプログラミング

スイッチサイエンスでもお取り寄せ購入できるようです。1,428円。

クリスマスオーナメント

早速完成品を御覧ください。

Aボタンを押すと、拡張ボード搭載のブザーからクリスマスソングが流れます。micro:bitのLEDマトリクスには音譜が表示され、NeoPixelは赤と緑に光ります。

Bボタンを押すと、音で反応するモードになります。拡張ボード搭載のマイクを使用しています。音を検知するとNeoPixelが黄色く光り、LEDマトリクスには”Merry Xmas”と表示されます。

MakeCode

コーディングにはMakeCodeを使用しました。

https://makecode.microbit.org/

MakeCodeについては以下でも書いていますのでご参照ください。

Microsoft MakeCode で ビジュアルプログラミング

MakeCode ブロック

以下が作成したクリスマスオーナメントのMakeCodeブロックです。

①初期化

変数の初期化、NeoPixelの入力ピンとセル数と輝度、メロディ再生の際のBPMを指定しています。

Aモード

Aボタンを押すと実行される動作です。
 

② Aボタン検出

micro:bitのAを押すと変数stateを1にします。
 

③NeoPixel点灯設定

変数stateが1のとき(Aボタンが押されたとき)、拡張ボードのNeoPixelを交互に赤/緑の点滅を繰り返します。
 

④LEDマトリクス設定

変数stateが1のとき(Aボタンが押されたとき)、micro:bitのLEDマトリクスに音譜を2種類交互に表示させます。
 

⑤音声再生

変数stateが1のとき(Aボタンが押されたとき)、拡張ボードのブザーからクリスマスソングをリピート再生します。変数stateが1以外になるとループを抜けて音声再生をストップします。

Bモード

Bボタンを押すと実行される動作です。
 

⑥Bボタン検出

micro:bitのBを押すと変数stateを0にしてLEDマトリクス表示をリセットします。
 

⑦音声検出

変数stateが0のとき(Bボタンが押されたとき)、拡張ボードのNeoPixelをリセットしてMIC検知をオンします。

MICで音声を検出(アナログ値で200以上)したら変数stateを2にして、NeoPixelを9個分黄色に点灯します。

変数stateが2のとき(音声検出時)、NeoPixelの9個黄色点灯を回転させます。
 

⑧LEDマトリクス設定

変数stateが2のとき(音声検出時)、micro:bitのLEDマトリクスに文字列 “Merry Xmas”と表示します。

表示が終わると変数stateを0にして、音声検知待ち状態します。

⑨リセット

A, Bボタン同時押しで、NeoPixelとLEDマトリクスをリセットして動作を止めます。

MakeCode JavaScript

全体のJavaScriptコードを以下に記載します。

 

 

動作

クリスマスツリーにかけると非常に可愛いです♪

音声検出モードもバッチリです。

micro:bit Circular RGB LED Expansion Boardはマイク、ブザー搭載なのでmicro:bitの有用性をさらに高めて楽しいものがすぐにつくれちゃいますね!

長女ちゃんもプログラムに興味持ってくれないかしら 🙄

追記

18/12/24 DFRobotのブログで紹介いただきました

micro:Maqueen を使ってみた

DFRobot様より提供いただいたmicro:bitを拡張するロボットカー”Maqueen”を使ってみました。

 

 

micro:bit ロボットプラットホーム “Maqueen”とは

micro:bitを拡張するミニロボットカーです。

 

micro:bitを差し込むソケットやギアドモータを搭載した基板とタイヤ、電池ケース(単4 ✕ 3)、超音波距離計 HC-SR04 が同梱されていました。

組み立て

  • タイヤをモータに差し込む

     
  • 電池ケースに両面テープを貼り付け

     
  • 電池のコネクタを基板に差し込む

     
  • 電池ケースを基板に両面テープで固定。 micro:bitをソケットに差し込む

     

完成!なんかかわいい!前方には超音波距離計を差し込むコネクタもあります。

仕様

  • 前方赤LED、フルカラーLED搭載
  • 赤外線受信センサ搭載
  • ブザー搭載
  • ライントレース用フォトリフレクタ搭載
  • 超音波センサインターフェース搭載

MakeCode用 Maqueenブロック追加

Micro:bitを拡張したロボットカーですのでMakeCodeでブロックコーディングできます。

Maqueenブロック追加方法

  • 以下にアクセスして”新しいプロジェクト”をクリック
     https://makecode.microbit.org/
     
  • 設定アイコン -> 拡張機能をクリック

     
  • 以下のライブラリリンクを入力して検索をクリック

    maqueenをクリックしてインストール

     

  • Maqueenのブロックが追加されます。

これでMakeCodeでMaqueenのコーディングができるようになりました。

 

サンプルコード

以下にMaqueen用のMakeCodeサンプルコードが各種アップされています。

ライントレーサー

ライントレースのサンプルコードを試してみました。基板前方底面の2つのフォトリフレクタで黒いラインをセンシングしてモータを制御するコードです。

紙にマジックで線を書いて走らせてみただけですww

 

もっと大きいコースを書いてみた。サンプルのままだとちょっとスピードが早いのでモータへのPWM出力を255→25に変更して遅く走るようにしてます。

おわりに

いいものいただいたー!見た目もかわいいし! 

MakeCodeによるブロックコーディングにも慣れてきたので、いろいろ試してオリジナルのコードも書いてみたいと思います。その際にはまた報告させていただきます。

 

参考

応用

Alexaを使って発話でmicro:Maqueenを操作してみました♪

AquesTalk と Node-RED と ラズパイで おしゃべりティラノくん作製

電子ペーパー モジュールを使ってみた

DFRobot様より提供いただいた電子ペーパー モジュールを使ってみました。オリジナルの絵を表示したりできたので報告します!

FireBeetle Covers-ePaper Black&White Display Module

解像度250✕122ピクセル、2.13 インチの白黒2色の電子ペーパーモジュールでDFRobot社のFirebeetleシリーズのマイコン(Firebeetle ESP32もしくはFirebeetle ESP8266)に搭載して使用します。マイコンとディスプレイモジュールのインターフェイスはSPIです。

GT30L24A3Wというフォントチップが搭載されており各言語のフォントが使用できますが、後ほど紹介するコードライブラリは現状(2018年11月) 中国語と英語のみサポートしています。

オフィシャルショップは以下

スイッチサイエンスでもお取り寄せ購入できるようです。3,589円。

ここではFirebeetle ESP32マイコンに載っけて使用しました。Firebeetle ESP32については以下参照ください。

DFRobot FireBeetle ESP32 IoTマイコンの設定方法

 

 

Arduinoプログラミング

電子ペーパーモジュールをFirebeetle ESP32に載せてArduinoでコーディングしてディスプレ表示します。

使用ライブラリ

以下の2つのArduinoライブラリを使用します。文字表示は中国語と英語のみサポート(2018年11月)。

サンプルコード

サンプルコードで絵を表示してみます。DFRobot_ePaper Libraryの以下のサンプルを書き込みました。

https://github.com/DFRobot/DFRobot_ePaper/blob/master/examples/DFRobot_Twocolor_IL3895_SPI/PictureDemo/PictureDemo.ino

以下のように2種の画像が交互に表示されるコードです。電源を切っても表示を保持します。まさに紙!印刷してるみたいでおもしろい。


 

文字表示ができない。。。。  (解決済み)

現在調査中ですが、なぜか文字表示ができないんです。。手元のボードに現謂があるのか、コードに問題があるのか。。判明次第ご報告させていただきます!

図形と文字を出す以下のサンプルコードを書き込むと

https://github.com/DFRobot/DFRobot_ePaper/blob/master/examples/DFRobot_Twocolor_IL3895_SPI/FigureDemo/FigureDemo.ino

下の写真のように図形と英語(SPI)と漢字が表示されるはずなのですが、

手元の基板では図形しか表示されないのです。。。文字だけを表示するコードを書き込んでも何も表示されず。。要調査します!

文字表示エラー解決!(追記 2018/11/30)

DFRobotのエンジニアの方に解決方法教えてもらいました!Firebeetle ESP32のファームウェア最新版(バージョン0.0.8)にエラーがあったようです。。。

Arduino IDE の [Board Manager] 内 ”FireBeetle-ESP32 Mainboard”のバージョン”0.0.7″を選択し[Install]をクリック

で解決!漢字と英語が表示できます!


 

ライブラリ改修で解決!(追記 2019/1/27)

Firebeetle ESP32のファームウェアが0.0.9にバージョンアップされており、電子ペーパー モジュール文字表示も問題ないこと確認できました!!

 

 

オリジナル画像を表示させる

以下の250✕122ピクセルの画像を表示させてみます。

画像のバイト配列生成

mage2cppというツールで画像データからバイト配列を生成しました。
 http://javl.github.io/image2cpp/

  • 絵の下処理
    表示の際に正確な向きにするために元画像を回転させて、上下反転します。


     

  • mage2cppを起動して回転反転した画像を選択します。

 

  • Code output format を”Arduino code”にして”Generate code”をクリックで画像のバイト配列を生成します。

Arduinoコード

前出の絵を出すサンプルコードを参考にプログラミングしました。