Arduino初心者がおもちゃを作るまで
デジタルアートが好きなので、IoT機器の組み立て勉強もできるだろうと思いArduinoに触れ始めました。
この記事ではArduinoの準備から作ったもの、躓いたポイントを紹介します。
Arduino入門
普段ソフト面のエンジニアリングばかりでハード的な知識はあまり無い人間です。電子回路図も雰囲気で読んでるし、抵抗の計算とか便利なソフトあるでしょ!?と他力本願な状態の自分がArduinoをいじり始めました。
準備
始めるに当たって機器が必須です。
自分が用意したのはある程度パーツが揃っているキットを購入しました。
(以下、Amazonのリンクになります)
Arduino機器
- UNIROI 30種セット arduino用キット 初心者 uno r3ボード+LEDセット+ブレッドボード UA002
- (使ったもの:Arduino Uno本体、LED、ジャンパーピン)
- OSOYOO(オソヨー) Arduino RFIDセキュリティシステムDIYスターターキット RFID実験研究キット
- (使ったもの:人感センサー、サーボモーター)
- HiLetgo® 3個セット HC-SR501人体赤外線感応モジュール
- (買っただけで使いませんでした…)
参考書
始めるにあたって事前情報としてこの書籍を購入してます。
ツール
参考書に必須アイテムとして載っていたので念のため電圧テスターを購入。
- Miniデジタル・マルチメータ C-Timvasion LCDディスプレイ
- (買ってまだ使ってません…)
Arduinoアカウント
Arduinoのアカウントを作成してArduinoのプログラムを作成するツールを入手。
Arduino - Home
プログラミング環境
- Windows10
- Arduino Web Editor
- Arduino Create Agent プラグインのDL/インストール
- Mac OS 10.15
- Arduino IDE(1.8.10~) DL/インストール
- Arduino Create Agent プラグインのDL/インストール
ArduinoではWebでオンラインエディターがあるため、最初のうちはIDEのダウンロードはしませんでした。
始めにWindows 10でArduinoをいじって、組み上げたものを調整する時にMacでいじるようにしました。
Arduinoの台
センサーやサーボモーターを固定しないと正確な動作確認ができないのでLEGOを買いました。
- LEGO クラシック 黄色のアイデアボックス スペシャル
- 全パーツの半分ちょっとくらいを使いました。広めの地盤がついてるのでコレに
とりあえずArduinoをいじりたいという人には必要ないかもしれません。100円ショップでワイヤーネットを買ってビニタイで固定するでも良いかと。
作った物
「人感センサーで明かりを付けたい」と漠然と考えていたので、当初はArduino+人感センサー+LEDでライトを作ることを考えてました。
Arduinoをいじっていくうちにやりたいことが増えたので、最終的にArduino+人感センサー+LED+サーボモーター+LEGOでおもちゃを作りました。
参考サイト
- PWMを使ってLEDの明るさと出力を制御する
- 【Arduino】Arduino Nano(互換機)で人感センサ付けてLEDを光らせる - かっこいいブログ名つけたい
- Arduino電子工作の基本④ LEDの明るさを調節する
- マイクロサーボ SG-90 を Arduino で制御する
外観
写真の通り
Image may be NSFW.
Clik here to view.
写真右上にLEDライトを仕込んでます。
ドアの中のなめこさんをサーボモーターで動かしてます。
中央のコアみたいなドーム状のが人感センサーです。
Arduino本体とブレッドボード接続
各パーツは次の通りに接続しています。
ポイント
- LEGO組み立ての邪魔にならない配線(片側にピンの差込を寄せてます)
Image may be NSFW.
Clik here to view.
LEGO
LEGO組み立ては、細く作り方説明できないのでざっくりと紹介します。
ポイント
- Arduino本体とブレッドボードを固定
- サーボモーターの可動域確保
- 人感センサーの固定
- LEDを剥き出しにしない工夫
Image may be NSFW.
Clik here to view.
プログラム
// Servo - Version: Latest#include<Servo.h>#define LED_PIN 3
#define PIR_PIN 8
#define SERVO_PIN 9
constboolIS_DEBUG=false;constintINITIAL_ANGLE=86;constintACTIVE_ANGLE=176;boolis_reacts=false;boolis_active=false;intcount=0;intcycle=15;Servoservo;voidsetup(){pinMode(LED_PIN,OUTPUT);pinMode(PIR_PIN,INPUT_PULLUP);servo.attach(SERVO_PIN);servo.write(INITIAL_ANGLE);Serial.begin(9600);// 初期化時は点灯状態is_active=true;// 初回サイクルを短めに設定count=cycle-5;Serial.println("initialized UNO");}voidloop(){// 1秒間隔delay(1000);count++;if(IS_DEBUG){Strings_active=String(is_active);Strings_reacts=String(is_reacts);Serial.println("info[so,ten]:"+s_reacts+", "+s_active);s_active=s_reacts="";}// 1サイクル区切りでチェックif(count==cycle){count=0;if(is_active&&!is_reacts){// Light offis_active=false;analogWrite(LED_PIN,0);// Servo Resetservo.write(INITIAL_ANGLE);Serial.println("off");}is_reacts=false;}if(count<cycle){// 消灯時にセンサーの反応があったらif(!is_active&&is_reacts){// 点灯analogWrite(LED_PIN,250);is_active=true;servo.write(ACTIVE_ANGLE);// 再カウントcount=0;Serial.println("on");}}// センサに反応があった場合if(digitalRead(PIR_PIN)==HIGH){is_reacts=true;}}
動作
Image may be NSFW.
Clik here to view.
人が近づくと玄関に明かりが灯り家主が覗いてきます。カヮィィ…
15秒間隔で人がいるかいないかを判定し、いなければ消灯して家の中に戻ります。
残念ながらまだドアの開閉はできません。
つまづいた事(2019年11月時点
Windows10でArduinoの制御を作成している時は問題なかったのですが、Macで調整を始めた時につまづきました。
WebEditorでArduinoに書き込みしようとするとエラーとなります。
Start command:
fork/exec /Users/xxxx/.arduino-create/arduino/avrdude/6.3.0-arduino14/bin/avrdude:
bad CPU type in executable
Mac 10.15(Catalina)でのシリアルポートへのアクセス方法が違うようで、IDEのVer.1.8.10ではこれに対応されているようです。
OnlineEditorの方がまだ対応仕切れていない?ようで、MacではIDEから書き込むようにしました。
(いずれ直ると思いますが。
作成後感
Arduinoの組み立てとプログラミングにそれぞれ3時間ほど使い、LEGOの組み立てに5〜6時間かかりました。
入門レベルの工作なので、これからArduinoに触れようと思っている方の一助になれば。
今回は人感センサーとサーボモーターを使いましたが、これを基にグレードアップさせつつ、LED電飾やIoT機器作成の足掛かりにしていこうと思います。
作ったおもちゃで遊んだ記録も残してます。技術的なことから離れるため続きはブログに書きました。
デジタルアートに憧れて(Arduino始めました)