編集履歴一覧に戻る
kjsugi77のアイコン画像

kjsugi77 が 2025年01月24日07時30分50秒 に編集

誤記修正(見出しレベルを###→##)

本文の変更

![キャプションを入力できます](https://camo.elchika.com/c508dfc1bfc8c38f68224ec50995259f43e7198c/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f37623632616530632d363134312d343638362d613232342d613336326465636136626266/) # はじめに Spresenseメインボード1枚を搭載した小型でシンプルなロボットの作り方について紹介します。 (開発経緯) 小型のロボットを作りたいという気持ちが湧き上がり、回転サーボモータを使えば実現できるのではないかと思い、開発を始めました。 当初コントローラによる操作を考えましたが、最終的にはロボットの自律化が必要だと感じ、カメラを取り付けることにしました。 なお、部品は全て市販品としたかったのですが、良いアイデアが思いつかず、3Dプリント品が存在します。 また、こだわりで、アドオン基板を設計製作しています。 # 部品表 | 名 称 | 購入先 | 型 番 | 価格 | 使用数量| |:---:|:---:|:---:|:---:|:---:| | メインボード | 秋月電子通商 | CXD5602PWBMAIN1 | 6050円/1個 | 1個 | | カメラボード | 秋月電子通商 | CXD5602PWBCAM2W | 3850円/1個 | 1個 | | 回転サーボモータ | 秋月電子通商 | FS90R | 500円/1個 | 2個 | | 丸ピンソケット(40P) | 秋月電子通商 | 6604S-40 | 150円/1個 | 1個 | | ピンヘッダ (40P) | 秋月電子通商 | PH-1x40SG | 35円/1個 | 1個 | | 単4電池ボックス | 秋月電子通商 | BH-411-4A | 40円/1個 | 2個 | | リチウムイオン電池 | アマゾン | 10440 3.7V 320mAh | 3058円/ 4本 | 2本 | | 外径26mmギア | アマゾン | Othmro 50102A | 1433円/ 50個 | 2個 | | ねじ M2×4㎜ | アマゾン | Uxcell 六角ソケットキャップ | 860円/ 50本 | 2本 | | ねじ M2×50mm | アマゾン | uxcell SUS304 | 2190円/ 60本 | 2本 | | ワッシャM2 | アマゾン | TBDBNR SUS304 | 529円/100個 | 4個 | | ナット M2 | アマゾン | uxcell 炭素鋼 | 689円/100個 | 2個 | | ねじ M2×6㎜ | アマゾン | B30-0206 | 677円/ 39本 | 10本 | | 3Dプリント品 | ★ なし(自作) | なし(自作) 4種類 | 自作PriceLess! | - | | アドオン基板 | ★ 基板メーカ | なし(自作) 1種類 | 約30円/1個 | 1枚 | ※購入先は、あくまで参考としてください。また、価格は変動があります。 - 上記★印 2点の部品は、データを次の場所で公開しています。 https://drive.google.com/drive/folders/1Z4-JthyYZUP1su3JkKWqWyHkxQpko9QY?usp=sharing - アドオン基板の代替手段は、末尾に記載しています。代替の場合は、丸ピンソケット(40P)は不要です。 # 組立作業で使用する工具 ・マイクロプラスドライバ(ベッセル +00×75 9900) ・ボールポイントドライバ(アネックス 対辺1.5mm×100 No.6700) ・ピンバイス[ドリルφ1.8mmとφ2.0mm] ・その他: ニッパー、ハンダごて、ヤスリ等の一般工具 # 準備作業 ## 上表の部品を用意する。 ## 3Dプリント品と電池ケースの穴にドリル通しをする。 ねじ通し穴はφ2.0mmのドリルを使用、ねじ固定はφ1.8mmのドリルを使用する。 ![キャプションを入力できます](https://camo.elchika.com/afc4dcce545850403c960b995efbbd5246667cce/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f65333034386463392d613637332d343262372d383935612d633233316430373664633733/) ### φ2.0mmのドリルを穴に通す。 ![キャプションを入力できます](https://camo.elchika.com/412b2d2af60f3879570b250ff1bdf6a8fe785e32/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f62663636626266652d396530302d343031302d623431642d636263396338363431333836/) ### 以下は、φ1.8mmのドリルを穴に通す。 ![キャプションを入力できます](https://camo.elchika.com/428b1e9ffed98962dfc108623616e12c688eb255/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f30376334353465332d396161372d343634302d383136312d346339353963323466386136/)

-

### 【推奨事項】 ねじM2×50mmの1本の中央をヤスリで削り、ねじ山をなくす。

+

## 【推奨事項】 ねじM2×50mmの1本の中央をヤスリで削り、ねじ山をなくす。

ねじ山が回転サーボモータの配線の被覆を損傷させます。 (収縮チューブを被せることも考えましたが、根本原因のねじ山削除にしました) ![キャプションを入力できます](https://camo.elchika.com/f0a49a5fe4050b1c6065a5be44c4e00d3b021397/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f65623733626161662d303135302d343739652d613065632d633539373761333665343238/)

-

### ギア(タイヤ)の加工

+

## ギア(タイヤ)の加工

小ギアをニッパーでカット除去します。少しずつ切込みを入れてカットしてください。 ![キャプションを入力できます](https://camo.elchika.com/dea6e773848897831827a637d85aa3abd4648604/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f33613832343764352d323636312d343438642d623239312d643836646533353062366463/)

-

### 【挑戦 推奨事項】 回転サーボモータの配線を短くする。

+

## 【挑戦 推奨事項】 回転サーボモータの配線を短くする。

回転サーボモータの配線を短くすることをお勧めします。 挑戦する場合は、方法について記事の最後に記載していますので、ご確認ください。 # 組立作業 ## はんだ付けをする。 ### アドオン基板 と ピンソケット(13ピン×2)・ピンヘッダ(3ピン×2) ![キャプションを入力できます](https://camo.elchika.com/90f215c4585231a46aa5c43ae2ad75ab1e71d4d1/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f33616433363066652d613937632d343964632d613039652d336435623433663065396139/) ### アドオン基板 と 電池ボックス リード線が長すぎるため約6割の長さで切断し被覆を剥いた後、はんだ付けする。 また、断線対策としてバイパス配線も取り付ける。 ![キャプションを入力できます](https://camo.elchika.com/9527b7d5fc54ac22fd051ec695a5b573dd343bbd/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f66333933613963342d666532392d343764392d393064632d336166633737626663386338/) ## ねじ締付M2×50mm (ワッシャとナット使用) :回転サーボモータ、ベース部分の組立 ![キャプションを入力できます](https://camo.elchika.com/a6b4a8a3551f2802423e9c2188f54f14f6d36e2d/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f30386436373137312d633936662d343030302d616364372d653430626164313263623835/) 後端部品(呼び名 しっぽ)が、ロボットの中央にくるように調整する。 ![キャプションを入力できます](https://camo.elchika.com/608dd81c53e926283e544d78168996e3345186a0/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f36663461613866642d376531642d343033632d393033332d323430336239386161353636/) ## ねじ締付 M2×6mm:電池ボックス、カメラボード、メインボードの取付け ### メインボードにカメラボードを差し込む。 ![キャプションを入力できます](https://camo.elchika.com/1d090b8f68a6eef46ddc027541352dad22b30b0a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f62326164363431302d393737622d343162392d626564642d393266323739353532396564/) ### 各種部品をねじM2×6mmを締めて固定する。 ![キャプションを入力できます](https://camo.elchika.com/3015c2ce89e651bb1133d7fb7628fcd59c884fc0/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f32306263373862382d356634642d343065662d623862322d333961376533313166623938/) ![キャプションを入力できます](https://camo.elchika.com/f967dc7900a3ad0fed1c03c1ccb8e6ad8ca45781/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f63363633616139312d396438382d343964662d393434332d393833386364636339616338/) ![キャプションを入力できます](https://camo.elchika.com/6708b375e149fe7f3816a066e9f2091174ff5164/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f32356631323964622d373236332d343566322d623136362d343833633166666231373131/) ## アドオン基板の挿入、回転サーボモータのコネクタ接続 コネクタの向きと接続先に注意してください。 ・向き:写真(配線の色)を見て正しい向きで接続してください。 ・接続先:右側の回転サーボモータは奥側に、左側の回転サーボモータは手前側に接続してください。 ![キャプションを入力できます](https://camo.elchika.com/80dd7d3cd268983c0d991c86d81e88c853dfbd64/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f66653131666165642d393630382d343263642d623333312d346337313961336332316330/) ## ねじ締付 M2×4mm:ギア(タイヤ)の取付け ![キャプションを入力できます](https://camo.elchika.com/4b66e82771a8a8c58e9e81f8b340fb97008b0b9e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f37636362666662362d613964302d343536382d623331342d396363643466626536626665/) # プログラム内容と書き込み  プログラムの内容を次に示します。 Arduino IDEによる書き込み方法は省略します。 ```arduino: #include <Servo.h> #include <Camera.h> Servo servoLeft; Servo servoRight; const int PIN_LEFT = 15; const int PIN_RIGHT = 14; // サーボの設定値 const int CENTER = 90; // 停止位置 const int MIN_SPEED = 10; // 初期速度 const int MAX_SPEED = 100; // 最大速度 const int SPEED_STEP = 10; // 速度の増加量 int currentSpeed = MIN_SPEED; // 現在の速度 // カメラ設定 const int IMG_WIDTH = 160; const int IMG_HEIGHT = 120; // LED検出の閾値 const int BLUE_THRESHOLD = 10; //青色 const int BRIGHTNESS_THRESHOLD = 50; //明るさ const int MIN_PIXELS = 5; //最小ピクセル void setup() { theCamera.begin(); theCamera.setStillPictureImageFormat( IMG_WIDTH, IMG_HEIGHT, CAM_IMAGE_PIX_FMT_RGB565); servoLeft.attach(PIN_LEFT, 500, 2400); servoRight.attach(PIN_RIGHT, 500, 2400); stop(); delay(1000); } void loop() { CamImage img = theCamera.takePicture(); if (img.isAvailable()) { int ledX = findBlueLED(img); if (ledX >= 0) { // LED検出時 int center = IMG_WIDTH / 2; int margin = IMG_WIDTH / 6; if (abs(ledX - center) < margin) { // 中央にある場合は前進速度アップ if (currentSpeed < MAX_SPEED) { currentSpeed = min(currentSpeed + SPEED_STEP, MAX_SPEED); } forward(); } else if (ledX < center) { turnLeft(); } else { turnRight(); } } else { // LED未検出時は停止して速度リセット currentSpeed = MIN_SPEED; stop(); } } delay(100); } int findBlueLED(CamImage &img) { uint16_t *buf = (uint16_t *)img.getImgBuff(); int bluePixels = 0; int sumX = 0; // 画像全体スキャン for (int y = 0; y < (IMG_HEIGHT); y++) { for (int x = 0; x < (IMG_WIDTH); x++) { uint16_t pixel = buf[y * IMG_WIDTH + x]; int blue = pixel & 0x001F; int red = (pixel & 0xF800) >> 11; int green = (pixel & 0x07E0) >> 5; // 明るさを計算 int brightness = (red + (green >> 1) + blue); // 明るさのチェック と 青色判定 if (brightness > BRIGHTNESS_THRESHOLD && // 明るさのチェック blue > BLUE_THRESHOLD && // 青色の基準値 blue > red * 1.5 && // 青色が赤の1.5倍 blue > (green>>1) * 1.5) { // 青色が緑の1.5倍 bluePixels++; sumX += x; } } } return (bluePixels >= MIN_PIXELS) ? (sumX / bluePixels) : -1; } void forward() { servoLeft.write(CENTER + currentSpeed); servoRight.write(CENTER - currentSpeed); } void turnLeft() { servoLeft.write(CENTER - MIN_SPEED); servoRight.write(CENTER - MIN_SPEED); } void turnRight() { servoLeft.write(CENTER + MIN_SPEED); servoRight.write(CENTER + MIN_SPEED); } void stop() { servoLeft.write(CENTER); servoRight.write(CENTER); } ``` # ロボットの操作方法 ## 電池を挿入すると電源がONになります。 ※電源スイッチは良い方法が思いつかず、作りませんでした。 電池の電圧は3.7Vです。 なお、電池1個では動作しませんでした。(電流不足・電圧降下の可能性があります) ![キャプションを入力できます](https://camo.elchika.com/53c85d7c61127444c0ff82150eb6d1f1ed8687bb/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f63343037633362632d613166612d343864382d623637662d636661613230323264346537/) ## カメラの前に青色LEDを点灯させると、ロボットが青色LEDを追いかけます。 残念ながら、ロボットを誘う感じで、青色LED点灯場所を動かす必要があります。 プログラムの改良を試みたのですが、改善には至りませんでした。 改善し続けると記事の投稿ができなくなるため、今回はここで一旦終了としました。 プログラムに詳しい方、ぜひ改良をお願いしたいです(^^♪。 ![キャプションを入力できます](https://camo.elchika.com/c7da906136612253f29f36ff5fcbe48c07c8dfbe/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f64636332333730362d336363652d346635662d396162662d663732333631623936373562/) # その他(補足等) ## ロボットの縦・横サイズは、クレジットカードの範囲内にほぼ収まりました。 ディスイズ クレジットカードサイズ! 特定の年代以上の方には分かると思います。 興味のある方は、「CMビデオカメラ、パスポートサイズ」で検索してみてください。 ![キャプションを入力できます](https://camo.elchika.com/c78220f4db506b5450e843830265488309e3fb45/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f66393931393830362d613262372d343130622d396465342d616131366535383631326635/) ## 3Dプリント品のドリル通しについて 3Dプリンタによっては、不要な作業かもしれません。 私が所有する3Dプリンタは、熱溶解積層方式であり、ドリル通しが必要でした。 ただ、電池ケース穴のドリル通しは必要です。穴の大きさがφ1.6mmのままでは ねじを締めることができませんでした。ドリルでφ1.8mmにする必要があります。 ちなみに、代替手段として、ドリルの代わりに、工具「ボールポイントドライバ」を通す方法があります。M2ねじを締めることができるようになります。 ## ピンソケットについて サードパーティー製 拡張ボードを取り付けできるように選定しましたが、ピンソケット(メス)の形状は丸く、拡張ボードのピン(オス)は四角で、残念ながら差し込むことができませんでした。 当初、「シングルピンソケット (低メス) 1×20 (20P) 型番 2212S-20SG-36」の使用を試みました。こちらは拡張基板が差し込みできます。 しかし、基板の厚み分、ピンの突出し長さが短くなります。また、Spresenseのメインボードのピンソケットに対して、ピンが細いようで、すぐに抜けてしまいました。 ![キャプションを入力できます](https://camo.elchika.com/81b06b4e8ac516e5b78cbd00c6be6fd78117bd26/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f63653031343931622d616537332d343765302d613739392d396338306565623262656565/) ## アドオン基板の代替について このロボットを作ってみたい方のために、委託販売などで入手可能にすることが望ましいと考えていますが、現段階ではその手段が確立されていません。 ただし、基板を入手したいという要望があれば、対応を検討したいと思います。 代替手段として、「SPRESENSE アドオン用ユニバーサル基板 SSCI-039024」を使用する方法があります。 基板上の配線(渡り)は手間がかかるかもしれませんが、ぜひ挑戦してみてください。 ## 【挑戦 推奨事項】 回転サーボモータの配線を短くする。 配線の3分の1の位置で切断し、ねじをゆるめて分解する。 ![キャプションを入力できます](https://camo.elchika.com/bc2c9de9c2903b386f83c43ca59830fa04cdf52b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f37623266393563332d616262382d343464342d623130332d653237386238323366333266/) 配線の被覆を剥き、はんだ付けで取り付けて、再組立をしてねじを締める。 ![キャプションを入力できます](https://camo.elchika.com/add720615cc545b8f3d249cd3fc2c1b6b326600f/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30343235643730302d363961662d343234632d383334332d6362656232333639363738382f66633063326635382d653437622d346261392d396363352d313463643433656438636132/) # 最後に より良いロボット、より良い記事にしようと頑張っていたら、投稿が遅れてしまいました。 今後は、プログラムの改良・発展に取り組みたいと思います。 また、サードパーティー製の拡張ボードが差し込めるようにしたいと考えています。 このロボットは、作りたいという気持ちから製作しましたが、学習用ロボットとして使用して頂けないかなと思っています。 約1万5000円で作ることができるので、その可能性は十分にあると感じています。