改造Scratch環境でプログラミング - ロボット作成も
今年の年始に購入した以下の書籍、手付かずで放置していました。 Scratch1 相当の環境をクローンして、独自拡張のブロックを作成し、Visual Programming でデバイスを動作させよう、という特集のようです。
基板のプレゼントもあり、GETしていたままだったので今年のうちにと、重い腰を上げて組み立ててみました。先に組み上がった様子を載せると
こんな感じです。記事に沿って作業した様子を書いてみます。
まずはVisual ProgramingでLチカを体験
スイッチサイエンスのESP32の開発ボードを使いました。USB-Cで繋がるのでお手軽です。
作者の方が用意した、TuKuRutch 3.07から、
- シリアルモニタのファームウェア書き込みブロック
- GPIOによるLチカのコードのブロック
を並べてそれぞれタップします。
本題の前に部品調達
本編では、設定ファイルからWindows上でコードを生成して独自ブロックを作成するのですが、Macしかないので 諦めてロボットの組み立てから行います。サポートページから部品表2と回路図を入手します。
秋月電子から
電池ボックス, アルミ電解コンデンサ100uF x 2, 積層セラミックコンデンサー 0.1μF, ダイオード, 面実装のLED x 43, ピンヘッダ, ピンヘッダ(L字). LED, 4.7Ωと1kの抵抗, ブザー, スライドスイッチ, ピンソケット, L字ピンソケット, モータードライバーモジュール, カメラモジュール
持っているESPの開発基板とはピンの配置が違うことに気がつきました。嵌るのも面倒なのでこちらを購入。
スイッチサイエンスから
GROVE - ユニバーサル4ピンコネクタ, ロボットキット
表面実装の部品のハンダ付け
1608のサイズの0.1uFのコンデンサとLEDの表面実装の部品のハンダ付けを行います。
前回の記事でも紹介した表面実装部品のはんだづけ(SMDクランプをつかってみる) | ぼくのマイコン開発のメモで紹介されていた
を試してみました。使い方のマニュアルです。基板に前述のパーツをつけて動作させると以下のように動作しました。表面実装部品もなんとか付けられました。LEDをチェーンしてつなぐのですが、向きに注意すれば配線が基板に隠れているので簡単です。
OV2640使用200万画素カメラB0011の動作確認
LEDとモーターは難なく動作したのですがカメラが動作しません。基板側に問題があるのか、 パーツが何か傷んでいるのか。。ひとまずパーツ単体で動作確認をしてみることに。以下の記事を参考にさせて頂きました。
Arduinoの環境で
をベースに少々書き換えます。選択できたスケッチだと記述が入っていないのかったのですが、config.fb_location = CAMERA_FB_IN_DRAM
がないと
カメラの初期化が通りませんでした 4。
シリアルのコンソールで表示されているIPをブラウザで開くと
という訳でパーツ自体は問題なさそうです。気を取り直して再度組み直すと動作しました。謎。
丸ラベルシールをライントレース
サンプルアプリを使いました。画面上で色をピックアップするとその色の領域を追いかける仕組みです。 丸ラベルシールが検出されない場合に、後進して再度シールを発見するような処理を追加してみました。
デモ
実行時のブラウザ画面は以下のようになります。リアルタイムにロボットカー上のカメラの映像がストリーミングされます。
子供と床に敷いた透明のマットにシールを貼りながら何とか止まらずに旋回してくれるようになりました。
子供の様子と感想
「車を作る」というのは想像以上に刺激的なようです。また無線で動かせるとアプリケーションの幅が広がるので、作者の方のUSBで接続して、WIFIに着替えて使う設計が大変素晴らしいです。
Scratchのような環境でお手軽にプログラミングが体験できるようになると次のステップとしては、本格的に非Visual Programming に移行するか、 色々なアイデアや体験をしながら楽しむかですね。子供とやりたくて以下の本を購入したのですが、学校のタブレットにプレインストールされているキャッチーな環境の方がウケがよいので、Scratch入門は未だ先になりそうです。
-
Scratchは スライドパズル | あそぶ | toio Do | toio(トイオ) を作るときに勉強済み。↩
-
少し手に入らない部品やオプション(?)のものもあり、揃えるのに少し苦労します。↩
-
NXPのI2CのLEDドライバの入手が難しいかもしれません。↩
-
他にもUSBケーブルが原因と思われるI2Cの失敗等にもハマりました https://github.com/m5stack/M5Stack/issues/109↩