360° 連続回転サーボ と ジェスチャーセンサ で 首振りトンボちゃん
360°連続回転サーボとジェスチャーセンサで首振りトンボを作ってみましたので記載致します。
目次
構成
ジェスチャーセンサで指の動きを検知して360度連続回転サーボの回転方向をマイコンで制御します。
部品
- マイコン Arduino UNO
- GROVE ジェスチャーセンサ
- 360°連続回転サーボ
- トンボの体
ネジとか手芸用シールとか詳細は後ほど
トンボ作成
頭部
頭は12mm長のM8ネジで制作しました。サーボで頭部を回転させたとき一定角度で止めるためのつっかい棒を針金を適当な長さに切ってネジにハンダ付けします。
ステンレス用のハンダとフラックスを使用して付けました。
【メール便可】グット ステンレス用フラックスセット BS-4A 4975205320399 [半田ゴテ ヘクスゾール][r13][s1-000] 価格:482円 |
目と口はお母ちゃんの手芸用のキラキラした宝石のようなシールを使わせてもらいました。口はペンで書き込んでます。
頭部と胸(サーボ)の連結部はナットで構成します。サーボに付属されてる羽とナットを瞬間接着剤で付けます。
体
サーボモータをトンボの胸にします。腹として60mm長のM6ネジを接着しました。
先程作成したナットをサーボにネジ止めし、プラ版で作った羽と針金の足を接着します。
頭部つっかえ棒に引っかかるように太い針金をサーボに接着します。この太い針金に細い針金の足をはんだ付け(ステンレス用)しています。左右のつっかい棒によってサーボ回転した際に一定角度で止まり、首をかしげる様な動作を実現します。
頭部をナットにねじ込めばトンボの完成です。サーボを起動して回し入れます。
360°連続回転サーボ
通常サーボモータは90度や180度など回転に制限があるのが普通ですが、連続回転サーボという魅力的な製品があったので購入しました。
このサーボはArduino IDEに最初から入っているServoライブラリで動作しますが、通常のサーボモータと若干動作が異なります。
- 90度入力でサーボ停止
- 0〜89度入力で時計回りに回転。回転スピードは90度から離れるほど早くなる。
- 91〜180度入力で反時計回りに回転。回転スピードは90度から離れるほど早くなる。
Arduinoコード
サーボとジェスチャーセンサをArduino UNOに接続します。
ジェスチャーセンサのライブラリは以下を使用します。
https://github.com/Seeed-Studio/Gesture_PAJ7620
コードサンプル paj7620_9gestures.ino を参考にしました。
ジェスチャーは指の時計回りと反時計回りを認識するようにしました。
Arduinoのデジタル8ピンをGND接続で、サーボが反時計回りにゆっくり回転するようにして、頭部のネジをナットに回し入れることができるようにしています。
Arduinoのデジタル8ピン開放で通常動作となり、ジェスチャーセンサの検知が開始します。指の動きの回転を検知してサーボを応じて動かします。
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 |
#include <Wire.h> #include "paj7620.h" #include <Servo.h> Servo myservo; // create servo object to control a servo void setup() { uint8_t error = 0; Serial.begin(9600); myservo.attach(A0); // attaches the servo on pin 9 to the servo object pinMode(8, INPUT_PULLUP); error = paj7620Init(); // initialize Paj7620 registers if (error) { Serial.print("INIT ERROR,CODE:"); Serial.println(error); }else { Serial.println("INIT OK"); } Serial.println("Please input your gestures:\n"); } void loop() { uint8_t data = 0, data1 = 0, error; if(digitalRead(8) == LOW){ myservo.write(90 + 15); }else{ error = paj7620ReadReg(0x43, 1, &data); // Read Bank_0_Reg_0x43/0x44 for gesture result. if (!error) { switch (data) { case GES_CLOCKWISE_FLAG: Serial.println("Clockwise"); myservo.write(90 - 20); delay(800); break; case GES_COUNT_CLOCKWISE_FLAG: Serial.println("anti-clockwise"); myservo.write(90 + 20); delay(800); break; default: myservo.write(90); break; } } } } |
動作
ジェスチャーセンサでトンボちゃん♪ #Arduino #サーボ #ネジ pic.twitter.com/eR8Roj8MJE
— HomeMadeGarbage (@H0meMadeGarbage) 2018年10月1日
かわいい首振りトンボちゃんができました!
札幌はすっかり肌寒くて赤とんぼが飛びまくってます。。ああ、長い冬が忍び寄ってきている。。。鍋でも食うか。
「360° 連続回転サーボ と ジェスチャーセンサ で 首振りトンボちゃん」への1件のフィードバック