小学生の自由研究に!レゴとArduinoで作るアイデア電子工作「信号機」
親子でプログラミングを使った電子工作にチャレンジしてみたいです
プログラミング初心者におすすめのテーマを紹介するよ
私が数年前に子供(当時小6)と作った、アイデア工作「信GO機(信号機)」を紹介します。
レゴブロックとArduinoによる信号機のプログラミング点灯回路を合わせた、オリジナル作品です。
本記事を読めば、誰でもこの作品を作ることができることを目指して書きました。
プログラムはコピペで対応できる内容となっています。
プログラミング初心者の方も安心してチャレンジしてみてください。
文字入力不要のビジュアルプログラミング「Scrattino3(スクラッチーノ3)」プログラム例も本記事で紹介します。
- プログラミングを用いた電子工作にチャレンジしたい人
- 小学生の子供と一緒に夏休みの自由研究に取り組みたい人
- Arduinoを用いたプログラミングを勉強したい人
せでぃあはこんな人物です
✅プライム企業に勤める電気・機械設計エンジニア
✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作
✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞
✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中
✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中
この工作はArduinoスターターキットを使って作成しています。
ロボット教室は意味がある!わが子が高専生になるまでのストーリーを公開しています。
信GO機ってどんな装置
私が作成した装置紹介動画をご覧ください。
- 身近な制御機器である信号機を題材にした工作です
- 交差点の信号機で、車用が2つ・歩行者用が1つ設置されています
- 歩行者用押しボタンを押すと、早く青信号に変わります
だれでも知っている信号機はテーマに最適だね
Arduinoとは
Arduino(アルドゥイーノ)とは初心者から扱うことができるマイコンです。
ラズベリーパイ(ラズパイ)と並んで、工作初心者に人気のマイコンです。
できることの例として、プログラムでのLED点灯や、モーターなどの電子部品の動作をさせることができます。
工作の作り方
基本的にはレゴブロックの組み立てになります。
特別な工具は必要ありません。
基本的にジャンパーワイヤの差し込みだけで配線が可能です。
歩行者用押しボタンのみ、はんだ付けを行います。
専用開発ソフトウェア「Arduino IDE」を使います。
私が作成したプログラムをコピペして使ってください。
信号機の動作になっているか確認してください。
記載のプログラムは動作確認済ですので、ご安心ください。
プログラミングを用いた電子工作の完成です!
この後の詳細記事を読めば、だれでも信GO機を作ることができるよ
STEP1:工具と材料の準備
必要な工具
- 精密ドライバー
Arduino本体クリアケース組み立てに使用 - はんだごて
歩行者用押しボタンとワイヤの接続に使用 - はんだ
- インシュロック
配線をまとめることができます。
必要な材料
- LEGOブロック
- ELEGOO UNO R3スターター互換キット
- アクリルケース
- デュポンワイヤー(メス-オス)
LEGOブロック
これまで購入してきたLEGOパーツを組み合わせているため、肝になるパーツのみ紹介します。
LEDの頭を穴に差し込んで、クリアパーツで穴を塞ぎます。
※LEDむき出しでもよければ、クリアパーツ手配はマストではありません。
ELEGOO UNO R3スターター互換キット
これからArduinoを始める方におすすめの初心者キットです。
Arduino本体裏面のショート対策におすすめです。
アクリルケース
Arduino本体の裏側は基板がむき出しになっており、埃による短絡故障のリスクがあります。
本体を平置き設置するためにも、購入することをおすすめします。
デュポンワイヤー(メス-オス)
信号機とブレッドボードを接続するために必要です。
スターターキットにもデュポンワイヤーが5本同梱されています。
必要数16本に対して不足するため、購入が必要です。
STEP2:組み立て
写真を参考にして、LEGOブロックを組み立てます。
押しボタンやLEDへの配線は後で行うため、ここではブロック設置のみでOKです。
信号機と押しボタンの配置はマストですが、他のオブジェクトの設置は任意です。
STEP3:電気配線
続いて電気配線を行っていきます。
順番に説明しますので、説明に従って作業してください。
抵抗を配置する
ブレッドボード(穴のたくさん開いた白い板)に抵抗を配置していきます。
- 220Ω×8個
- 1kΩ×1個
キット付属の抵抗は抵抗貼り付けシールに抵抗値の記載があるため、色による抵抗値識別ができなくても問題ありません。
上図のように抵抗をブレッドボードの穴に挿入してください。
抵抗に極性はないため、どちらのピンを差し込んでもOKです。
アルドゥイーノとブレッドボードを接続する
ジャンパーワイヤー(オスーオス)を使って、穴にピンを差し込んで接続します。
LED点灯色に合わせたワイヤー色を選定すると、配線間違えリスクを減らすことができます。
歩行者用押しボタンに配線する
ブレッドボードとの配線
歩行者用押しボタンとブレッドボードはジャンパーワイヤー(オスーオス)を2本使用します。
押しボタン部との接続部分については、下記参照の上作業してください。
押しボタン部の配線説明
押しボタンの端子とワイヤーオス端子をはんだ付けします。
押しボタンの端子は4つありますが、外側に飛び出している面2点と接続してください。
2側面ありますが、どの面の2点と接続しても機能は同じで問題ありません。
LEDに配線する
LEDとは
電流を流すと発行する電子部品で「発光ダイオード」のことを言います。
LEDには極性(+-の区別)がありますが、上記説明写真のように目視で識別する方法があります。
極性の接続を間違えると、LEDは点灯しませんので注意してください。
各LEDへの配線説明
上記説明図を参照し、配線を行ってください。
各LEDとブレッドボードはデュポンワイヤー(メス-オス)を使用します。
デュポンワイヤーはワイヤー同士が接着されていますが、簡単に削けますので必要な本数ずつに分けてください。
LED側がメスで、ブレッドボード側がオスになります。
- ブレッドボード~自動車信号機1:6本
- ブレッドボード~歩行者信号機1:6本
- ブレッドボード~自動車信号機2:4本
STEP4:プログラミング
プログラミングソフトのインストール方法
Arduinoを動作させるためには、専用開発環境「Arduino IDE」が必要です。
このソフトウェアは無償で提供されています。
Arduinoの開発言語は「C言語」に似た形態であり、プログラムのことを「スケッチ」と呼びます。
Windows版のダウンロードを例に、説明します。
これでセットアップは完了です。
お疲れ様でした。
プログラムを作成
開発ソフトウェア「Arduino IDE」を使って、プログラミングを行います。
以下のプログラムをコピペしてください。
/* 作品名:「信GO機」 */
/* 作成者:せでぃあ https://cediablog.com */
/* プログラムによる信号機制御 */
int walker_btn = 2 ; //歩行者用押しボタンのIO割り当て
int led_G1A = 6 ; //自動車信号機1の緑IO割り当て
int led_Y1A = 7 ; //自動車信号機1の黄IO割り当て
int led_R1A = 8 ; //自動車信号機1の赤IO割り当て
int led_R1B = 9 ; //歩行者信号機1の赤IO割り当て
int led_G1B = 10; //歩行者信号機1の緑IO割り当て
int led_G2A = 11; //自動車信号機2の緑IO割り当て
int led_Y2A = 12; //自動車信号機2の黄IO割り当て
int led_R2A = 13; //自動車信号機2の赤IO割り当て
int i = 0; //繰り返し変数
void setup() {
// put your setup code here, to run once: プログラム起動時1回だけ処理される回路
// 入出力の割り当て
pinMode(walker_btn, INPUT); //2番ピンは入力として使用
pinMode(led_G1A, OUTPUT); //6番ピンは出力として使用
pinMode(led_Y1A, OUTPUT); //7番ピンは出力として使用
pinMode(led_R1A, OUTPUT); //8番ピンは出力として使用
pinMode(led_R1B, OUTPUT); //9番ピンは出力として使用
pinMode(led_G1B, OUTPUT); //10番ピンは出力として使用
pinMode(led_G2A, OUTPUT); //11番ピンは出力として使用
pinMode(led_Y2A, OUTPUT); //12番ピンは出力として使用
pinMode(led_R2A, OUTPUT); //13番ピンは出力として使用
//出力の初期化処理
digitalWrite(led_G1A, LOW);
digitalWrite(led_Y1A, LOW);
digitalWrite(led_R1A, LOW);
digitalWrite(led_R1B, LOW);
digitalWrite(led_G1B, LOW);
digitalWrite(led_G2A, LOW);
digitalWrite(led_Y2A, LOW);
digitalWrite(led_R2A, LOW);
}
void loop() {
// put your main code here, to run repeatedly: プログラム起動後ループ処理される回路
//信号点灯モードの切り替わりシーケンス
/* モード1・・・信号機1が緑点灯 */
digitalWrite(led_G1A, HIGH); //信号機1:緑点灯
digitalWrite(led_R1A, LOW);
digitalWrite(led_R1B, LOW);
digitalWrite(led_G1B, HIGH); //歩行者:緑点灯
digitalWrite(led_R2A, HIGH); //信号機2:赤点灯
delay(10000); //10秒ウェイト
/* モード2・・・信号機1の歩行者信号が緑点滅 */
//歩行者信号の緑点滅回路(0.25秒間隔)
for (i = 0 ; i <= 10 ; i++) {
digitalWrite(led_G1B, LOW);
delay(250);
digitalWrite(led_G1B, HIGH);
delay(250);
}
/* モード3・・・信号機1の歩行者信号が赤点灯 */
digitalWrite(led_R1B, HIGH); //歩行者:赤点灯
digitalWrite(led_G1B, LOW);
delay(1500); //1.5秒ウェイト
/* モード4・・・信号機1が黄点灯 */
digitalWrite(led_G1A, LOW);
digitalWrite(led_Y1A, HIGH); //信号機1:黄点灯
delay(2500); //2.5秒ウェイト
/* モード5・・・信号機1が赤点灯 */
digitalWrite(led_Y1A, LOW);
digitalWrite(led_R1A, HIGH); //信号機1:赤点灯
delay(2500); //2.5秒ウェイト
/* モード6・・・信号機2が緑点灯 */
digitalWrite(led_G2A, HIGH); //信号機2:緑点灯
digitalWrite(led_R2A, LOW);
//割り込み受付ウェイト回路(0.1秒間隔で9秒ウェイト)
for (i = 0 ; i <= 90 ; i++) {
if (digitalRead(walker_btn) != HIGH){
delay(100);
} else {break;
}
}
delay(1000); //1秒ウェイト
/* モード7・・・信号機2が黄点灯 */
digitalWrite(led_G2A, LOW);
digitalWrite(led_Y2A, HIGH); //信号機2:黄点灯
delay(2500); //2.5秒ウェイト
/* モード8・・信号機2が赤点灯 */
digitalWrite(led_Y2A, LOW);
digitalWrite(led_R2A, HIGH); //信号機2:赤点灯
delay(2500); //2.5秒ウェイト
}
検証
プログラムのコピペが完了したら、検証作業を行います。
左上の「✓」ボタンを押して、検証を実行してください。
検証が正常に完了すると、以下の画面になります。
Arduino本体にプログラムを転送
上記説明写真の②USBポートとパソコンをケーブルで接続します。
Arduino IDE画面右上の「⇒」(マイコンボードに書き込む)ボタンを押して、プログラムを書き込みます。
書き込みが完了すると、そのままプログラムが実行されます。
USBケーブルはArduinoへの給電にも使用するため、プログラム転送が完了してもケーブル接続したままにしてください。
Scrattino3(スクラッチーノ3)を用いたスクラッチプログラミング
Scrattino3(スクラッチーノ3)を使ってプログラミングしたい方は、上記の通りブロック配置することでArduino IDEプログラムと同一の信号機動作をさせることができます。
STEP5:動作確認
信号機の動作を確認
まずは各信号機のランプ点灯が、信号機の点灯になっているか確認します。
- LEDへの配線は極性を間違えていないか?
- 配線が抜けかけていたり、抜けていないか?
- ブレッドボード電源線「+」「-」への配線間違いはないか?
歩行者用押しボタン動作を確認
歩行者用信号機が赤のときに、押しボタンを押してください。
ボタンを押した直後に、反対側の信号が黄色点灯に変われば動作確認OKです。
- 押しボタンへの配線は間違えていないか?
- 押しボタンへのはんだ付け端子に間違いはないか?
- 配線が抜けかけていたり、抜けていないか?
- ブレッドボード電源線「+」「-」への配線間違いはないか?
うまくいかないときは、落ち着いて対応することが大切だよ
STEP6:完成!
完成おめでとうございます!
インシュロックで配線を縛ってまとめたり、車や草木を配置して見栄えを良くしてもいいですね。
まとめ
このように、Arduinoは電子工作初心者におすすめのマイコンです。
電子工作キットには、様々な電子機器が同梱されています。
勉強も兼ねて、新しい機器の動作プログラムについてもチャレンジしてみてください。
最後まで読んでいただき、ありがとうございました。
モーターを使った電子工作「扇風機」にチャレンジしたい方はこちらの記事もおすすめです!
小学生におすすめしたい!プログラミング教室については、こちらの記事で紹介しています。
スクラッチプログラミングを学習するのにおすすめな勉強本をレビューしています。
コメント