Arduino Nano Everyを使ったロボトレーサ
Arduino Nano Everyで予備実験
Atmega328Pで設計したArduinoロボトレーサと見比べながら、必要な機能をテスト。こんな感じで、ポートを確認しながら、ひとつずつ。
最終的にはこんな感じで、使えそうなポートを調べました。
デジタル入力でスイッチ2個。
D3: start sw
D4: set sw
D5,D6:PWMでサーボ出力を2個分。
D7:Tone関数でブザーによる音声出力
D9,D10: 赤外LED点灯のトランジスタスイッチング
D8,11,12,13:これらが、PEレジスタ下位4ビットなのでモード表示用LEDに使用
A0-A5:ラインとマーカー用センサ入力
A6:ジャイロセンサ用入力
アナログ入力の振り方は、パターンを引きながら考える。
これらのポートが同時に使えそうなことを一応確認。
基板設計
Eagleで回路設計。今はサブスクですが、何年も前に購入したものでまだ使えてます。基板のパターンはこんな感じです。
配線は割とスカスカ。電源ラインを太く引いて、電流が流れるところはなるべくスルーホールを使わない。スルーホールはデジタル信号のみ。
ということで、設計したものを発注。ユニバーサル基板で試作せずに発注したのと、1台作って相談元の相手方と議論できればいいので最低限の5枚で発注。
2週間くらいで届きました。基板の色は黒にしとけばよかった、失敗。
裏返すとさらに失敗あり、シルクが反転してます。パターン出力時のチェック入れ忘れ。まあ、動作には関係ないのでよしです。
部品集め
相談を受けて設計したArduino Nano Everyを使ったロボトレーサキット。部品を集めてやっと製作を始めました。 部品がだいたい揃ったところ。
在庫のピンソケットはピンの数が合いませんでした...
Arduino Nano Everyは片側15ピンで計30ピン。 在庫のピンソケットは16ピン。
まあでも、簡単にカットできます。ニッパーでえいやっと。
そのあとやすりでもかけるときれいになりますが、あんまり気にせずそのまま使います。
とりあえず、今日は部品を揃えたところまで。
製作開始
これからハンダ付けします。1kΩの抵抗をまずハンダ付け。LEDの電流制限と、トランジスタのベース抵抗。 低い部品、熱に強い部品、組み立て順序を考えて後からつける部品の邪魔にならないものからハンダ付けしていきます。
次はフォトトランジスタのエミッタ負荷の10kΩの抵抗のハンダ付け(写真は20kですが後で10kΩに交換しました)。ゆっくり走るロボットなので、ラインの読み取り感度優先で抵抗値は大きめです。大きいとレスポンスが遅くなります。高速走行を目指すならこの抵抗は1kΩ程度が良いですが感度が下がるのでラインに近づけるとかライン照射の赤外LEDの光量アップとか考えないといけません。
100Ωの抵抗をハンダ付け。これは電解コンデンサの充電用途と赤外LEDの電流制限の両方を兼ねています。
次に標示用LEDを4本取り付け、極性があるので、足の長い方が抵抗側になるように。
LEDは少し浮かせてつけた方が良いです。ぴったりつけると熱ストレスで足が引っ張られて故障の原因になります。
次は、トランジスタ2個。2SC1815相当をハンダ付け。赤外LEDのスイッチングに使います。
積層セラミックキャパシタを2か所ハンダ付け。IC1個に1個が基本ですが、電源近くとサーボモータの近くに1個ずつ。マイコンボード上にもコンデンサは乗ってるので保険みたいなものかも。背が低くて抜けやすい部品だったのでいったんセロハンテープで仮止めしてハンダ付け。
次は電解コンデンサを2個。だんだん背が高くなってきます。電解液が入ってるので熱には弱いのでちょっと気にして最後の方でハンダ付け。電源のところと、赤外LED点灯の電流源として使います。
タクトスイッチ2個。黄色がセットスイッチ、青がスタートスイッチです。
リセットスイッチは外付けしてません。ArduinoNanoEveryボード上にリセットボタンがあります。
圧電スピーカを取り付け。足の幅がパターンと違った部品なので浮かせて広げてます。
マイコンボード用のピンソケット取り付け。
まず両端をハンダ付けして...
Arduino Nano Every ボードがちゃんと刺さることを確認。ソケットが斜めになってるとボードが刺さらないので。確認後に裏面の残りの端子をハンダ付け。
3本ピンヘッダをハンダ付け。こんな風に部品を押さえるピンセットがあれば便利です。
押さえた状態で裏から一部ハンダ付け、ピンセットを外して残りをハンダ付け。
3か所ピンヘッダをつけました。サーボモータを2個。もう一つはジャイロセンサをつけるオプション用です。
基板の裏から、フォトセンサを取り付け。設計を少しミスしてピンの間隔が狭くて基板面ぴったりには付きませんでしたが、最初から少し浮かせてライントレースのコース面との調整するつもりだったのでまあOK.
少しずつ浮かせて、6個のフォトセンサを取付完了。
横から見たところ。浮かせてつけても向きがバラバラにならないように。
次は足回り。タイヤとホイールとネジが袋に入っているので…
タイヤをホイールに被せます。
連続回転サーボに差し込んで...
ねじ止め。
次に基板の裏からサーボ固定用のネジを通します。
こんな風に電池ボックスが来る予定なので先に刺しておきます。
電池ボックスと基板の隙間がネジの頭分の高さがあるので、両面テープを二重に貼ってピンを刺して電池ボックスを貼り付け。
表面にはネジだけ出てる状態になります。
電池ボックスのピンを2か所ハンダ付け。
次にサーボモータに両面テープを貼って...
基板に張り付け。貼り付け方向に注意。左右で裏返しになります。
サーボモータ固定用の金具をアルミ板を切り出して別に作りました。アルミ板で押さえてナットで締めます。
ネジの頭側は隠れているので、こんな風にネジをラジオペンチで押さえて、ナット側を回します。
これでサーボは動きません。
次に、適当なクッション材を切って...
滑り材を高さを合わせて張り付けます。
横から見たらこんな風に、基板がほぼ水平になるように調整。車輪が回ると前の滑り材で滑りながら走ることになります。丁度よい高さ大きさのボールキャスターなどがあれば取り付けられるように場所を開けてネジ穴もあけてあります。
サーボモータのケーブル2本をピンヘッダに刺します。
ケーブルは邪魔にならないようにまとめて適当なバンドで結びます。
最後にArduino Nano Everyボードを刺して...
ロボット本体の完成!
部品を探して確認しながら、写真も撮りながら製作して約2時間でした。部品が揃ってて作るだけなら1時間半くらいでできると思います。
Arduino Nano Everyボードの購入はこちらから。
電源投入,マイコン接続前の確認
完成したからと言って、いきなり電池入れるわけではありません。 基板の間違いやハンダ付けのミスがないかを確認。マイコンボードやサーボモータなど外せるものは外して、テスターで導通チェック。特に電源回りでショートしたりしてたら大変です。問題なければ、次は電池を入れて必要な所に電源が供給されてるかの確認。サーボの電源部分と、マイコンのVinの供給部分。
マイコンを刺す前に、テストプログラムを作成。回路とマイコンの動作が合ってないと、マイコンにダメージを与えたり、逆に回路を壊したりする可能性は十分あります。入力端子は入力設定に、出力端子は出力設定に。
そこまでやってから、ボードをロボットに装着して、ケーブルを刺す...ことができませんでした。ケーブルのコネクタと基板の電解コンデンサの干渉を心配して可能な限り離したんですがわずかに干渉してます。
違うケーブルだとOK.
でも、ケーブルによって使えたり使えなかったりするのは後々面倒なので、電解コンデンサは倒して取り付けることにしました。これは想定内で倒すだけの距離は開けて設計してあります。
次はいよいよロボットを動かします。
使用するポートの動作確認
ポートのテストプログラムを入れてロボット本体の機能の動作確認。動くところを動かしてるので、動画で撮影しました。テストプログラムは以下の通り。
プログラムの移植
プログラムの移植を始めました。以前、ATmega328で作ったロボトレーサのプログラムから移植。まずは、セットSWでモード選択をして前進、後退。次にフォトセンサのテスト、以前のものと回路が逆だったようで、反応した場所の逆でLEDに表示されてます。これはソフト的に簡単に修正できるはず。
広告→ ブランド: RT(アールティ) トレーニングトレーサー
ライントレース走行まで
しきい値などの調整してライントレースを始めました。速度と比例係数を調整してもう少し速度を上げた走ったところ。
調整しながら分かったんですが、フォトセンサの受光側の負荷抵抗が20kΩでは大きすぎました。
何もなければほぼ0の値を返しますが、黒い板の上でも400-600くらいの値を返し、ラインの上だと1000出て値が飽和してます。
前のバージョンは10kΩだったのでこの値で差し替えてハンダ付けしなおしました。
競技走行
センサの負荷抵抗6本取り換えて、センサのしきい値を調整して走行。進行方向右側のスタート・ゴールマーカーを読み取って、2回目読み取ったら停止です。
競技走行、ゴールで停止。
競技走行は速度を変えた3通り用意してます。演習用のサンプルで一番高速な競技走行の動画。
競技走行2(高速)、ゴールで停止。
スケッチ
ロボトレーサのスケッチを公開します。※注意
コードの表示にはsyntaxhighlighterでディレクトリごとコピーして呼び出すだけの古いバージョンを使ったのですが、servoライブラリのincludeのところをタグと読み間違えて最後にゴミが出てます。エラーの原因がわかり次第修正します。ご容赦ください。
直リンクはこちら。
右クリックでダウンロード。
基板の設計ファイル
基板の設計ファイルです。手持ちの古いバージョンのEagle Ver6で作りました。
ArduRobotracerNanoEveryR2-eagle.zip
以上で、Arduino Nano Everyを使ったロボトレーサキットの製作のハードとソフトは完成。
後は、マニュアルの修正をぼちぼちとやって次年度の演習や、相談を受けた外部の講習キットとして準備します。ソフトもハードも公開してますので直接的な営利目的以外なら自由にご利用頂いて構いません。
質問等あればご連絡ください。
※注意
最近はサブスクに変わってて更に2026年6月でEagleの販売サポートを終了するそうです。 まだ古い形式のファイルは読み取れると思いますが利用されたい方はお早めに。自分も何とかしないと。
サポート終了の記事
https://www.autodesk.com/products/fusion-360/blog/ja/future-of-autodesk-eagle-fusion-360-electronics/
ESP32 Wifi Bluetooth開発ボード |
Arduino Nano Every |
Raspberry Pi pico |
FPGA XILINX Artix-7 |