Quantcast
Viewing all articles
Browse latest Browse all 8901

Arduinoと初めて戯れる(Arduino入門)

Arduino初心者がおもちゃを作るまで

デジタルアートが好きなので、IoT機器の組み立て勉強もできるだろうと思いArduinoに触れ始めました。
この記事ではArduinoの準備から作ったもの、躓いたポイントを紹介します。

Arduino入門

普段ソフト面のエンジニアリングばかりでハード的な知識はあまり無い人間です。電子回路図も雰囲気で読んでるし、抵抗の計算とか便利なソフトあるでしょ!?と他力本願な状態の自分がArduinoをいじり始めました。

準備

始めるに当たって機器が必須です。
自分が用意したのはある程度パーツが揃っているキットを購入しました。
(以下、Amazonのリンクになります)

Arduino機器

参考書

始めるにあたって事前情報としてこの書籍を購入してます。

ツール

参考書に必須アイテムとして載っていたので念のため電圧テスターを購入。

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を買いました。

とりあえずArduinoをいじりたいという人には必要ないかもしれません。100円ショップでワイヤーネットを買ってビニタイで固定するでも良いかと。

作った物

「人感センサーで明かりを付けたい」と漠然と考えていたので、当初はArduino+人感センサー+LEDでライトを作ることを考えてました。
Arduinoをいじっていくうちにやりたいことが増えたので、最終的にArduino+人感センサー+LED+サーボモーター+LEGOでおもちゃを作りました。

参考サイト

外観

写真の通り

Image may be NSFW.
Clik here to view.
Sensor_house_outview.jpg

写真右上にLEDライトを仕込んでます。
ドアの中のなめこさんをサーボモーターで動かしてます。
中央のコアみたいなドーム状のが人感センサーです。

Arduino本体とブレッドボード接続

各パーツは次の通りに接続しています。
ポイント

  • LEGO組み立ての邪魔にならない配線(片側にピンの差込を寄せてます)

Image may be NSFW.
Clik here to view.
arduino_sensor_LED.jpg

LEGO

LEGO組み立ては、細く作り方説明できないのでざっくりと紹介します。
ポイント

  • Arduino本体とブレッドボードを固定
  • サーボモーターの可動域確保
  • 人感センサーの固定
  • LEDを剥き出しにしない工夫

Image may be NSFW.
Clik here to view.
sensor_led_build_images.jpg

プログラム

// 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.
sensor_led_demo.gif

人が近づくと玄関に明かりが灯り家主が覗いてきます。カヮィィ…
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始めました)


Viewing all articles
Browse latest Browse all 8901

Trending Articles