足を自作
やっぱりもの作ってるとロボット作りたくなるよね。夢よ。男の。
ドクターゲロや則巻千兵衛のようにはいかないだろうけどオレにもできるような気がして作ったよ。
俺なりにロボをティクスしてみたんだ。
目次
できたのが。。。
予算尽きて足しかできなかった。。。#ロボット製作 #Blynk pic.twitter.com/rC60Zww9sC
— HomeMadeGarbage (@H0meMadeGarbage) 2019年5月23日
手持ちの金、モノ、スキルでは足を完成させるのが限界でした。。。
構成
サーボ2個をESP32で制御して足の指の動きを実現しております。ESP32 はWiFi介してスマホアプリBlynkでコントロールします。
ESP32-DevKitCのFritzingデータは以下のサイトのものを使用させていただきました。ありがたい!
https://ht-deko.com/ft1707.html
部品
- BLE、WiFi内蔵マイコンボード ESP32-DevKitC
- サーボモータ SG-90
- LiPoバッテリ 400mAh
- 土台 ユニバーサルプレート
足
中はこんな感じです。
俺なりにロボをティクスした。#ESP32 #Blynk pic.twitter.com/Fx5NqNK6te
— HomeMadeGarbage (@H0meMadeGarbage) 2019年5月23日
厚紙でかっこいいボディを作り上げました。
中はこんな感じ
Blynk設定
スマホとESP32ボードはスマホアプリのBlynkを用いてWiFi通信させます。前進/後進ボタンで足を動かします。Blynkアプリのバージョンは2.27.5。
新規プロジェクトを作成します。HARDWRE MODELはESP32 Dev Boardを選択。CONNECTION TYPEはWiFiを選択。AUTH TOKENはArduinoコード生成時に使用します(メールで送信されます)。
ボタンウィジェットを2つ配置し、前進/後進ボタンにします。
前進ボタンウィジェットのINPUTでヴァーチャルピンV0を選択します。
後進ボタンも同様にヴァーチャルピンV1を選択します。
Arduino IDEコード
以下のBlynkのArduino用ライブラリを使用してプログラムしました。バージョンは0.6.1。
https://github.com/blynkkk/blynk-library
ESP32のArduino環境セットアップなどについては以下参照ください。ライブラリはesp32core version1.0.0を使用。
ESP32用のサーボモータライブラリESP32Servoも使用しました。
https://github.com/madhephaestus/ESP32Servo
Blynkのボタンプッシュを検出してサーボを前進もしくは後進動作させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
#include <ESP32Servo.h> #define BLYNK_PRINT Serial #include <WiFi.h> #include <WiFiClient.h> #include <BlynkSimpleEsp32.h> // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "BlynkアプリのYourAuthTokenを入力"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = "WiFiのSSID"; char pass[] = "パスワード"; Servo myservo1, myservo2; int button1 = 0, button2 = 0; int servoPin1 = 14, servoPin2 = 12; //前進ボタン検出 BLYNK_WRITE(V0) { button1 = param.asInt(); } //後進ボタン検出 BLYNK_WRITE(V1) { button2 = param.asInt(); } void setup() { Serial.begin(115200); myservo1.setPeriodHertz(50); // standard 50 hz servo myservo2.setPeriodHertz(50); myservo1.attach(servoPin1, 1000, 2000); myservo2.attach(servoPin2, 1000, 2000); Blynk.begin(auth, ssid, pass); } void loop() { Blynk.run(); //前進動作 if(button1){ myservo2.write(120); delay(200); myservo1.write(180); delay(200); for (int i = 1; i <= 30; i++) { myservo1.write(180 - i * 3); myservo2.write(120 + i * 2); delay(10); } } //後進動作 if(button2){ myservo2.write(180); delay(200); myservo1.write(90); delay(200); for (int i = 1; i <= 30; i++) { myservo1.write(90 + i * 2); myservo2.write(180 - i * 2); delay(10); } delay(100); myservo1.write(180); delay(100); } } |
動作
床が滑ると進まない。。。
おわりに
まさに小さな1歩。どれほど時間を要するかも検討もつかない。
でもいつか血のかよった骨のある超合金ロボにまで仕立てたい。
完成予想図
めっちゃ面白いですね。
参考になりそうなテーマが多いし、
子供もモノづくりなどに興味を持ちそうですね。
ありがとうございます!
子供たちにもいろいろ作れるようになってもらいたいです。