リトルローバー
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 2 | ||||
| × | 2 | ||||
![]() |
| × | 2 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
> ![]() |
| |||
|
アプリとオンラインサービス
> ![]() |
|
このプロジェクトについて
背景
私の甥(9歳)と姪(7歳)は、私が少し前に作った障害物回避ロボットのビデオを見たとき、完全に狂っていました。
ハードドライブが死ぬ前に、バックアップやDropBox、GitHubなどの利点を発見する前に、そのチュートリアルが来ることはありません。 :)
それで、私は(少し)教育的で楽しいものを思いつくことができるかどうかを確かめることに決めました。私はおもちゃをできる限り単純化し、この小さなローバーを思いついた。
シャーシは元々カニカマが入っていた箱です。サイズは完璧だったことがわかりました。 (クレートフルでそれらをむしゃむしゃ食べてくれたお父さんに感謝します:D)マーガリンコンテナもおそらく適切なサイズでしょう。
免責事項として、ここでは、これらのロボットをどのように構築し、子供たちにほとんどすべての作業を自分で行わせるかについて説明します。決してそうすることはお勧めしません。問題の各子供がさまざまなタスクで信頼できるかどうかを判断するのは、責任ある親/保護者/叔母/叔父/ベビーシッターとしてのあなた次第です。本当に必要というわけではありませんが、ロボットの作業をするとき、子供たちは保護メガネを着用させられました。私たちが使った箱はとても柔らかいプラスチックでできていたので、カーペットナイフを自分自身や自分の手足に向ける危険性について説明した後、甥と姪を自分たちに切り込みました。LED用の穴を開けるために、潜在的な怪我を制限するための小型のコードレス電動ドライバー。
私が待機していた医療キットがまだ使用されていないことを報告できてうれしいです。 :)
しかし、繰り返しになりますが、あなたは大人です!
回路
両方のサーボを自分のやり方で接続することで、回路を少し複雑にしました。
<図>
子供たちのために...私は言い続けますが、「子供たち」には私の妹(35歳)と私の母(65歳)が含まれ、どちらもロボットとクラフトの午後を楽しんでいました実際の子供たち。 :)
<図>

そこで、聴衆のために、ブレッドボードの縮尺を現実の世界と1:1に保つように、A4ページに画像を印刷し、すべてのジャンパー線に正しい色と長さを与えました。
回路が組み立てられたら、プログラムをArduinoにロードするだけです。必要に応じて、コードを少し調整できるように、コードにコメントを含めました。すべてが正しく接続されている場合、サーボが回転を開始し、LEDが点滅します。また、センサーの前に手を置くと、一方のサーボサーボが停止し、もう一方のサーボサーボが一時的に反対方向に回転します。
すべて準備ができました!
アセンブリ
それはあなたを「シャーシ」に連れて行き、それに穴を開ける時です。
前面で、センサーの位置をマークし、「目」の穴を切り取ります。
側面では、ホイールを移動させたい場所を適切に測定し、ボックスの下部の端にある側面に、サーボが収まるのに十分な大きさで、取り付けブラケットが動かないように十分に小さい穴を開けます。終えた。
小さなドリルビットを使用して、LED用に2つの小さな穴を開けます。
ボックスの下部で、後ろに向かって、キャスターホイールをねじ込みます(またはホットグルーします)。
<図>


これで、すべてを箱に入れて、材料を所定の位置に熱接着する準備が整いました。
接着剤が固まったら、ホイールをサーボに取り付けます。
箱を飾ろう! (そしてそれらに写真を投稿してください!それは素晴らしいでしょう!)
<図>
電池を入れて、電池がなくなるまで小さなローバーが部屋の中をランダムに動き回るのを見てください。または、ノイズにうんざりします。または犬はそれを手に入れます! :D
コード
- LittleRover
LittleRover Arduino
これは、4ピン超音波センサーのコードのバージョンです#include/ * 3ピンしかないセンサーがある場合は、6行目をコメント解除して7行目をコメントアウトします* /// intdistanceR =A0; //トリガーピニント距離=6; // pinintpingDelayをトリガーします=10; //超音波センサーのパルスの長さintdistanceR =A0; //エコーpinintled1 =8、led2 =9; // LEDsServo leftPower; Servo rightPower; unsigned long flashTime; unsigned long nextSensorTime; floatobstructionDist =0.0f; void setup(){// Serial.begin(115200); leftPower.attach(3); rightPower.attach(5); leftPower.write(90); rightPower.write(90); pinMode(led1、OUTPUT); pinMode(led2、OUTPUT); delay(1000);} void loop(){LED(); / *これにより、チェックを1秒あたり5回に制限することで、センサーがバッテリーを急速に消耗するのを防ぎます。この数を増やすと、チェックの頻度を減らすことができますが、壁にぶつかる可能性があります... * / if(millis()-nextSensorTime> 200){nextSensorTime =millis(); / *センサーが混乱して何も返さないことがあるため、ここで2つの読み取りを行います... * / float reading1 =TakeReading(); delay(100); float reading2 =TakeReading(); Serial.println(reading1); Serial.println(reading2); //次に、obstructionDistの最大距離を取りますobstructionDist =reading1> =reading2? reading1:reading2; //距離が10cm未満の場合は回転し、そうでない場合は直進します。 if(obstacleDist <10.0f){// Serial.println( "turn");振り向く(); } else {//Serial.println("forward ");前方(); }}} void LED(){if(millis()-flashTime> 1000)flashTime =millis(); if(millis()-flashTime <500){digitalWrite(led1、LOW); digitalWrite(led2、HIGH); } else if(millis()-flashTime> 500){digitalWrite(led1、HIGH); digitalWrite(led2、LOW); }} void forward(){/ *ロボットが後退していることがわかった場合は、135と45を入れ替えます。 * / leftPower.write(135); rightPower.write(45);} void turn(){/ *ロボットを反対方向に回転させたい場合は、下の行92-93のコメントを外し、95-96をコメントアウトします* / //leftPower.write(90); //rightPower.write(135); leftPower.write(45); rightPower.write(90); delay(350);} float TakeReading(){unsigned long echo =0;フロート結果=0.0f; pinMode(distance、OUTPUT); digitalWrite(distance、LOW); delayMicroseconds(2); digitalWrite(distance、HIGH); delayMicroseconds(pingDelay); digitalWrite(distance、LOW); pinMode(distanceR、INPUT); digitalWrite(distanceR、HIGH); echo =pulseIn(distanceR、HIGH、38000);結果=エコー/58.138;結果を返します;}
回路図
littlerover_87IypZOgwm.fzz 製造プロセス