投稿

ラベル(CircuitPython)が付いた投稿を表示しています

バーグラフ式温度計:予算1,500円(2024当時)の計測・制御プログラミング教材

イメージ
2024年4月のある日,卒業生からメッセージが届きました:「先生,1,500円で授業後自宅に持ち帰らせる計測・制御の教材はありませんか?」 PICマイコンを使えば可能性はありますが,工業高校はともかく中学校技術ではそうはいきません.秋月のRP2040ボードと一番安いブレッドボードで1,000円になりますから,残り500円でセンサとアクチュエータその他の部品を揃えなければなりません. この制約条件でたどり着いたのが,10℃〜40℃の温度範囲を2℃ごとに表示するバーグラフ式の温度計でした. 回路図( PDF )と実体配線図( PDF )です. 温度センサにはMicrochipのMCP9701-E/TO,アクチュエータにはOptoSupplyのバーグラフLEDを3種類( 青×5 , 黄緑×4+赤 , 赤×5 )用いました:20〜28℃までの温度範囲を黄緑で表示させます. RP2040をはじめ多くの小型マイコンボードのAD変換は電源電圧基準なので,正確な電圧測定をするためには別途基準電圧源が必要です(ADの入力端子を1個減らすことになりますが・苦笑).本機ではTL431系の RT9H301S (イサハヤ電子)を採用しました.TSMCで沸き立っている九州ですので,九州で作られた電子部品を使うことの教育効果はそれなりに期待できます(長崎県内でしたら長崎県産品ということになります).社会科との連携を考えることができますね. LEDの電流制限抵抗は,全点灯時のRP2040出力電流総和が50mAを超えないように,また各色の明るさがおよそ揃うように決めました. AE-RP2040とバーグラフLEDやセンサ,基準電圧源との結線は,線径0.65mmのビニル被覆 単線 (10色パック)を用いました.LEDとの結線は100mm,温度センサ用は80mm,基準電圧源は60mmに切り,両端の被覆をそれぞれ5mmずつ剥いて使っています.ブレッドボード用として売られている安い端子付きコードはコネクタの圧着部で接触不良を起こしやすく,そのような故障が起きた時にユーザ(生徒や家族)が原因特定と修復ができるかを考慮すると,そのようなトラブルを未然に防止するような構想・計画・設計...

Robo Figure Skating (Part 2)

イメージ
【2024.08.20追記】学校の許諾を得て,最優秀賞を受賞した走行演技動画を追加 長崎県教委主催,本学(アドミッションセンター)共催で実施した「NEXT人材育成事業 アプリ開発講座・コンテスト」のPythonロボット制御コースが昨日(2024/08/07)無事終了しました. 昨日開催したコンテストにはNBC長崎放送の取材があり,ローカルニュースで流れた模様です(Web上のニュース記事は こちら :あ゛,いつまで観られるんだろう?). # 取材を受けたのは主役の高校生たちで,私自身には取材はありませんでした. センサから取得したy軸加速度とz軸角速度(ヨー)だけでロボットの走行を制御するので,生徒さんたちはかなり苦労していたようです.特に加速度については,モータやギヤの振動,路盤(床面)から受ける衝撃が距離積算の大きな誤差要因になっていますので,指定した距離を走行させるのが難しかったと思います. ロボット自体については こちら . 最優秀賞を受賞した生徒さんのロボット走行演技です.上述のとおり加速度センサによる走行距離測定は振動に起因する誤差が非常に大きいので,黄色の枠外に出ても減点はしていません:   皆さんにはフィギュアスケーターが見えたでしょうか?

秋月電子のRP2040マイコンボードでCircuitPython

イメージ
秋月電子通商 はオリジナルのマイコンボードを各種製造販売していますが, Raspberry PiのRP2040を用いたマイコンボード (以下,AE-RP2040)もあります.本家の Raspberry Pi Pico (以下,Pico)はC/C++,MicroPythonまたは CircuitPython でプログラミングできるのですが,AE-RP2040がCircuitPythonで動かせるかどうかは情報があまりなかったので,自分で試してみることにしました. CircuitPythonのPicoのページ から.UF2ファイルをダウンロードします. AE-RP2040のBOOTボタンを押し,そのままの状態でPCと接続します.無事接続できるとPC上に“RPI-RP2”というドライブが出現します.RPI-RP2がPCに認識されたらBOOTボタンから手を離してOKです. ダウンロードした.UF2ファイル(adafruit-circuitpython-raspberry_pi_pico-〇〇-△.□.×.uf2)をRPI-RP2にドラッグ&ドロップします:本記事執筆時点のCircuitPythonは9.0.4 しばらくしてRPI-RP2が消え“CIRCUITPY”というドライブが出現したら,CircuitPythonのインストールは成功です. もしうまくインストールができない場合や,使用中のCIRCUITPYドライブの挙動がおかしくインストールし直しをしたい場合は, こちらのページ にある“flush_nuke.uf2”をダウンロードしてAE-RP2040に書き込み(BOOTボタンを押しながらPCに接続して,RPI-RP2ドライブにDrag&Drop)消去してからCircuitPythonの.uf2ファイルを再インストールします. ThonnyのREPLからboardモジュールのピンを調べてみると次のようになりました: >>> import board >>> dir(board) ['__class__', '__name__', 'A0', 'A1', 'A2', 'A3', 'GP0', 'GP1'...

Robo Figure Skating

イメージ
  県教委主催の高校生を対象としたプログラミング講座を夏休みに担当させていただいていますが,今年の開催に備えてロボットの回路と基板の設計変更をやっています. プログラミングのお題はオリジナル競技の“ Robo Figure Skating ”.上の写真に示す2輪走行ロボットを使い,フィギュアスケートのような3分間の走行演技をしてください,というものです.リンクの広さは3.6m×2.7m,6畳間と同じです.走行だけでなく,NeoPixelを使った光の演技も可能です. ハードウェアは毎年変更になっていて,マイコンボードは昨年からSeeed XIAO RP2040になり,今年は慣性計測装置(IMU)がSTマイクロのLSM6DS3TR-C(加速度+ジャイロ)に変更になります.上の写真は昨年度のバージョンで,XIAO RP2040 + Bosch BNO055(加速度+ジャイロ+磁気)です. 回路図は↑.モータドライバのTB6612はモータ電源とロジック電源が内部で分離されているのですが,SAMD21/51やRP2040はモータが回転し始めるとリセット(おそらくブラウンアウトリセット)がかかってしまうというトラブルに遭遇しましたので,フォトカプラで完全絶縁をしています.micro:bitのときはそういうことはなかったのですが... オプションで超音波距離センサ( 3Vで動作できるタイプのHC-SR04 1 )を接続できるようにしてあり,中学校技術の教科書にあるお掃除ロボットの走行も可能です. 基板パターンはこんな感じです↓ IMUを基板中心に置き,それがRFSロボットの車軸中心上に来るようにしています.またXIAO RP2040は中心軸から少し左に寄せていますが,これはNeoPixelが中心軸に来るようにするためです. 1 データシートによるとGPIO方式での動作時はR4とR5がNCになっていてそれがデフォルトなのだけど,秋月電子の写真ではどちらも何某かの抵抗が接続されている.そんな動作モードはないんだけどなぁ...