R3.8.30 新サーボモーターバギー

 最近マイクロビットに戻ってみたら、やっぱり面白いマイコンなので、360°サーボモーターバギーを作り直してみた。できるだけ簡単に。以前の大きなホイールもいいんだけど、ミニ4駆のホイールに大きなホイールの中心だけを切り取って組み合わせてみました。上手く入った!

 さて、プログラムブロックを配置できるかが問題だ。暑いので、それはやる気が失せています(^^;)

 一番右がコントローラ。十字の5キーです。


H31.4.1 サーボモーターバギー3

 今日一日かかってこの新しいバギーのコントロールプログラムを考えて作ってみた。最初は、スマホでコントロールしようとやってみた。半年もたつと、ほとんど忘れている。なかなかスマホとマイクロビットがブルートゥースで連携しない。きっとやり方が悪いのだ。

 そこで、無線で連携した。これは簡単につながった。
 ところで、Servo:Liteのサーボモーターとマイクロビットのピンとは次のような関係があると、説明書には記載されている。

 P0  ZIP LED  OUTPUT 
 P1  RIGHT SERVO  OUTPUT 
 P2  LEFT SERVO  OUTPUT 

 従って、Servo:Liteの拡張機能を使わずに、標準の高度なブロックにある入出力端子のサーボ出力ブロックが使える。ブロックの端子にP1やP2を指定し、角度として、0度・180度の指定で最速になるし(当然、回転方向は0度と180度で逆)、90度を指定すると停止する。だから、サーボモーターのキャリブレーションを90度指定の時に回転しないようにトリマーで調整しておくのだ。最初これをやっていなかったので、妙な動きになった。時々やっておくことがいいのだった。

 時間をあけて、夜になってスマホで再挑戦! してみた。時間はたっぷりあるのだ。今日から毎日が日曜日だからね。

 前回も詳細な記録取ったとは思うけれど??? また記録しておこうと思ったら、前回の記録が正解だった。読んでみればよかった。

 接続が一旦できればマイクロビットに新しいプログラムを入れない限りそのまま使える。ただ、下の左図でPIZUT(マイクロビット個々の名前で違う)がつながっていないと思うので、その黒い部分をタップして右図のように白くつなげてやる必要がある。

 さらに操作するアプリ上でもペアリングしたマイクロビットをConnectedしてやる必要がある。BBCmicro:bit(BONDED)の部分をタッチするのだ。もしかすると、この操作をする前に、マイクロビットのリセットボタンを押しておく必要があるかも知れないので心に留めておこう。

ここで見ることができる。プログラムは下の通り。よく分からないので単純にしてみた。


H31.3.31 サーボモーターバギー2

 サーボモーターバギーをコンパクトにしてみた。スイッチエデュケーションさんのようなバギーだ。私が持っているのはmicro:bit用 Servo:Liteなので、これをもとに組み立てた。

 このServo:Liteは、左右にサーボモーターとのコネクタがある。さらに悪いことには、左右の中央に位置している。サーボモーターと干渉するので、横向きになってしまっている。

 2輪なので倒れる。スイッチエデュケーションさんのバギーはM字型のサポートがあって、倒れないようにしている。小さな補助輪を付けようと思っているが、簡単のためにプラスチック板を切ってサポーターとした。サーボモーターは少々強力な両面テープを使っている。

 長すぎるサーボモーターのケーブルは短くしている。

 ということで、ここここで数秒の動画を見ることができる。2番目の動きはめちゃくちゃですね。

 いずれ、スマホでの操縦を充実させて、数台でサッカーをするかな。孫たちに教えて。あと何年かかるかな?


H30.11.14 サーボモーターバギー スマホで操作

 いったんブルートースでスマホとマイクロビットをつなげると、スマホ側とマイクロビット側両方にそれぞれペアリング情報が登録される。マイクロビットの電源を落としても、リセットボタンを押しても、スマホのアプリ側でブルートース検索により出てきたマイクロビットを選ぶとつなぐことができる。ただし、マイクロビットに新しいプログラムをインストールしてしまうと、前のプログラムとともにペアリング情報も消えてしまうので、スマホの情報を削除して(これ大事)再度ペアリングをしなければならない。

 また、micro:bitというアプリは、android版とiOS版とでは若干違うので、ネットにアップされている説明を参考にするときは注意が必要だ。

ペアリング手順(android版)

1.マイクロビットはペアリングモードにする
 (1) A+Bボタンを押しながらリセットボタンを押す
 (2) 最初にリセットボタンを放す
 (3) 5×5のブロックが表示されている状態にする

 JellyProでは、縦置きだとマス目全体が見えないので、ぐるぐる回して横置きになるようにして入力する 面倒です

2.スマホ側のmicro:bitというアプリで新しいペアリング相手を探す

 上の画面で PAIR A NEW の黄色部分をタッチ。JellyProの画面では下まで見えない。

3.スマホ側で、マイクロビットに表示されている5×5のブロックを配置通りに入力してOKボタンを押す

 (1) この状態ではまだペアリングはできていない

 (2) 上の画像では、PIZUTの画面が黒くなっていて、右のコネクタが繋がっていないので、まだつながっていないことが分かる

4.その画像をタッチするとペアリングが開始する

5.画像の状態になっているとペアリングが達成される

 PIZUTが白い画面になって右のコネクタが繋がっているでしょ

6.マイクロビットを操作する別のアプリを起動する

7.マイクロビットのリセットボタンだけを押す(これを省いても大丈夫みたい)
 A・Bボタンを押さない

8.操作アプリでペアリングしたマイクロビットを探す

9.表示されたマイクロビットをタップして、操作アプリとマイクロビットをつないでやる

 8と9で2種類のアプリを使っています。

 表示されるコントローラは下の通り。使いやすい方をどうぞ。

 時につながらないことがあるので、2度3度試してみる必要がある  一度つながったマイクロビットは、電源を落としてもスマホに記憶されているのでピンを入れるペアリングの必要はない。新しいプログラムをマイクロビットに入れた時には、マイクロビット側でペアリング情報が消えてしまうので、再度ピン入力からペアリングを実行しなければならない ※マイクロビットにインストールしたプログラムに、ブルートースとつながった時にはOK!とでも「つながった」ことを表示するようにしておかないと、自分が迷うことになる

※マイクロビットのRAMは16kbらしい。拡張機能をやたら取り入れると、エラーメッセージのようなものがでるし、ブルートースは無線と入れ替わりだし、簡単なプログラムにまとめる必要があるということだろうね。

覚書: 基本のプロジェクト以外に、ネットワークからダウンロードした拡張プロジェクトを利用して作成したプログラムを再度利用しようとして画面に呼び戻すときには、ネットワークにつないでおくことが必要だ。


H30.10.31 MOVE miniさらに改造してみた

 相変わらずATP3011がタイミングよく喋ってくれないのだけれど、その他の部分で改造に努めた。BME280という3Vで動作する温度・湿度・気圧のセンサーがあるので、これを積んでみた。拡張のブロックは前に記事にしたようにあるので、それを使わせてもらう。センサーは電流を流すと発熱して実際の気温よりも高くなってしまうようで、これを今回は単純にマイナス2度として使った。正確にやろうとするととんでもなく面倒くさい補正式になるので止めた。当然、気圧や湿度も実際とは違うデータで出てくるのだが、これも面倒なので単純な減算で使おうと考えている。

 といっても、得られたデータを文字列で送るとしても、これをATP3011に喋ってもらうことはできていない。javascriptエディタでいろいろ工夫しているのだけれど、文字変数をATP3011は受け付けてくれない。最初だけの部分で配列変数に入れた文字列は、配列変数の何番目に入っている文字列を下のように指定すると喋ってくれるのだが。改行コードがいるのかな?

 そこで、25LEDで表示しようと思ったけれど、小数点表示ができない。小数点表示はできるが、小数第1位といった指定ができないので、9や0が延々続いてしまうので、四捨五入で整数値のまんまだ。

 128×64ドットのLCDディスプレィを注文しているので、これを使うボードも作りたいぞ。やることは当分尽きないようだ。

 そうそう、こんな感じになった。ちょっと精悍になった?! ホイールのお陰で。


H30.10.21 MOVE mini改造してみた

 MOVE miniは良くできた製品で恰好もいいのだが、しばらく使っていると困ることが起きた。停止状態にしたいのに微妙に回転してしまうのだ。キャリブレーションするために、モーター裏のトリマーを回す必要があるが、製品を組み立てた状態では2台のモーター背面同士が合わさっているのだ。一旦全部を分解しなくてはならない。
 さらに、電池が消耗して交換するときにも全部の分解だ。ランニングメンテナンスがやりにくい。

 そこで、この外形を諦めた。モーター同士を15mmほど離すことと乾電池へのアクセスを簡単にしてみた。設計図はアバウトだったので、ほぼその都度穴をあけたり位置をずらしたりしたが、MOVE miniの秀逸なバランスに、改造を始めてから気が付いた。フローリングでも滑らずに動くのは、そのバランスの良さだった。改造では、タミヤのボールキャスターを使ったが、製品ではプラスチックの両板がその役割をしていた。

 何度も位置をずらして作り直したので、土日2日間もかかってしまったが、一応完成した。市販のアンプキットが到着していたので、それを使ったところ大きな声で喋ってくれるようになったが、相変わらず気まぐれで、鳴ったり鳴らなかったり。

(1)(2)(3)(4)(5)

(1)手前にあるのがアンプ。3Vで動作してくれるのを選んだ。Servo:LiteのServo3padsのところから電源を取っている。
(2)スピーカーは電池ボックスのところにベルクロで貼り付けている。
(3)手前にあるのがATP3011。使っているピンは2をMicrobitからの信号INPUT、7・14・15にVcc、8をGND、12からアンプへの出力、の6ピンのみ。7と8の間に0.1μFくらいのコンデンサーが要るのかな? 電源は乾電池左のLedExpansionPadsから取っている。
(4)後ろから見た図では、乾電池がよく見える。取り換えが楽。
(5)下から見た図で、モーター間に間隔がありシャーシに穴が開いているのが分かるここからトリマーを回す。ミニの+ドライバーを作る予定。ボールキャスターを付けたが、車の後ろがいい。FFということです。フローリングでも追従性がいいです。

 未編集の動画をここで見ることができます。

 時間があって、街でいいカウリングが見つかったら、それで覆ってあげようと思います。

 もうちょっとすると3Vで動作するモータードライバが届くので、そうしたら、以前ラズパイZeroで使用していたミニモーターによる車を作ってみようと思います。


H30.10.14 MOVE miniに音声を載せてみた

 バギーであるMOVE miniにATP3011を載せてみた。バギーの上部にはスペースがあるので、そこに収まる大きさの基板にATP3011とLM386Nの増幅回路とスピーカーを組んでみた。この386は4V以上の動作になっていたが、事前実験で3.3Vで動作したので使っている。大した増幅はしてくれないようだ。また、ATP3011はこちらで意図したタイミングでの動作はしてくれない。もっとも、前・後進と右・左折のときに喋るだけなので、間が空く分、可愛らしい...かもしれない(^^;)

 ブロック図は下記の通り。

 上に載せた基板のATO3011とLM386Nの電源は、バギーキットに付いてきたmicro:bit用 Servo:Liteの3つ目のサーボモーター用のコネクタ部分に3本ピンを半田付けし、そこの電源部の下2本ピンから取っている。音声出力は、マイクロビットの19番端子に直接コードを半田付け(右画像のオレンジ入りのコード)して信号をもらうことにした。


H30.10.10 実はArduino unoも入手していた

 microbitを話題にしていたが、実はArduino unoも購入していた。\3,000近くもするのだけれど、互換品が\1,000ちょっとほどで手に入るとのことだったので、ゲットしてしまった。

 純然たるArduinoとして使う目的ではなく、ATP3011をArduinoのマイコンと入れ替えて使うと、Arduinoシリアルモニタで発声できるということを見て購入したのだった。

 最初、早速入れ替えて使ってみたら、全くダメ。元に戻したら、Arduinoもダメ。「?」と思ったら、マイコンの向きが逆でした。最近よくやるタイムリーミス。きちんと差したら、動いた。microbitでやるより便利です。どういった文字列を入れたらどのように発声するかのシミュレーションとして。
 ATP3011が刺さっているのが見えるでしょ。

 で、今日は遠くの部品屋さんに行ってスピーカから出る音声を大きくするための部品を購入してきた。Arduinoは5Vが使えるのでLM386Nを使えてそれなりの大きさを確保できるが、microbitは3.3Vなので、LM386Nは使えない。電圧不足。そこで、358も買ってきておいた。これは、3.3Vでも動作するが今のところパワー不足で、スピーカ直結と変わらない音量だ。工夫がいるな。


H30.10.8 バギーを走らせる

 昨日、注文したバギーが届いたので早速組み立てた。私が下手くそなのか、精度があまりよくないのか、しっかりと組み上がらなかった。サーボモーターと車輪の組み合わせもクニャクニャだ。拡張基板とmicrobitを固定すると、USBケーブルが入る隙間が狭いことはネットで見ていた。確かに狭い。スペーサーをかませるよりは、ケーブルの方を薄く削って入るようにした。完成したところで、昨日は終了。

 今日は、プログラムの方を考えた。ブロックを使ったので難しいことはない。とりあえず、コントローラ用のmicrobitで、ピッチ(前後の傾き)とロール(左右の傾き)を使ってバギー搭載のmicrobitに文字列を送信する。右にロールしたら"right"、左にロールしたら"left"。前にピッチしたら"foward"、後ろにピッチしたら"stop"という具合だ。バギーのmicrobitがその文字を受け取ったら、文字列に従って左右のサーボモーターを回転させればいい。ただ、左右のサーボモーターは向きが逆になっているので前進後退、左右転回にはほんのちょっぴりの配慮がいる。

 どうにか思う通りに動いてくれる。これでデモンストレーションには間に合う。後は、ATP3011を積んで喋りながら動くようにしてみたいな。荷台みたいなスペースがあるので、そこにATP3011基板と小さなアンプ載せて普通に聞こえる音量にして.....