\ 限定の返礼品あり! /
夏休みの自由研究に!レゴとArduinoでかんたん電子工作「トレジャーボックス」を作ってみよう
こんにちは、せでぃあ(@cediablog)です。
夏休みの自由研究におすすめな電子工作「トレジャーボックス」を紹介します。
Arduinoという電子工作初心者向けのマイコンを使用して動作をさせる電子工作です。
電子工作と聞くとプログラミング言語から勉強しないと始められない、初心者にはハードルが高いというイメージを持っている方もいらっしゃると思います。
ご安心ください!
今回の「トレジャーボックス」は文字列を使わないビジュアルプログラミングを使ったプログラムを使って動作させており、文字コードプログラミングが苦手の方や未経験者も簡単にプログラム作成が可能です。
工作に必要な機器や配線手順も分かりやすく解説します。
だれでも簡単に電子工作を始められる!初心者向け超入門本を出版させていただきました。
- トレジャーボックスの作り方
- Arduinoとの配線方法
- mBlockを使ったビジュアルプログラミング方法
せでぃあはこんな人物です
✅プライム企業に勤める電気・機械設計エンジニア
✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作
✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞
✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中
✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中
電子工作「トレジャーボックス」の動作説明
製作する電子工作「トレジャーボックス」の動作を紹介します。
- メンブレンスイッチ(キーパッド)でパスワードを1文字ずつ入力する。
- 入力した文字はLCDディスプレイの下段に表示される。
- 「*」を押すと入力値がクリアされ、入力のやり直しが可能。
- 「#」を押すとパスワード判定され、入力値が「135A」であればBOXが開く。
- 電子工作「トレジャーボックス」で使うもの
- 電子工作「トレジャーボックス」の動作内容
- mBlockプログラミングの解説
まずは動画を見て、今回作製するトレジャーボックスの動作内容を確認してください。
LCDディスプレイへの文字入力や、サーボモータによるBOXが開く動作を見て楽しめる電子工作となっています。
また、mBlockを使ったビジュアルプログラミング内容や動作確認方法についても解説しています。
体験型の電子工作は、作ったあとの動作確認遊びも楽しいですよ!
夏休みの自由研究工作テーマの選び方を紹介しています。
トレジャーボックスの作り方
トレジャーボックスを作るための手順を説明します。
必要なものを準備
工作を作るために必要なものは以下の通りです。
・工作を作るための材料
・プログラミングするためのパソコン
組み立て
レゴと電子パーツを使って、トレジャーボックスを組み立てます。
電気配線
電子パーツとジャンパーワイヤの差し込みによる配線作業を行います。
mBlockのセットアップ
パソコンにビジュアルプログラミングツール「mBlock」のインストールを行います。
プログラミング
mBlockを使ってプログラムを作成します。
プログラム内容については、後述するプログラミング例を参考にしてください。
動作確認
プログラムが完成したらArduinoにプログラムを転送し、動作確認と調整を行います。
- メンブレンスイッチ入力した値がLCDディスプレイに表示されるか?
- 「*」キーを押したら、ディスプレイに表示された入力値はクリアされるか?
- 「#」キーを押したとき入力値が「135A」のときだけボックスが開くか?
まずは工作完成までの流れを理解してください。
STEP1:必要なものを準備
- パソコン
- LEGOブロック
- GeekServo 9G Servo-Gray
- ELEGOO ArduinoUNO R3最終版スターターキット
- Arduino用アクリルケース
- I2Cモジュール
トレジャーボックスの電子工作を作るために必要な材料になります。
パソコン
ビジュアルプログラミングツール「mBlock」をインストールして、プログラムを作成・転送するために使用します。
OSはWindows、Macどちらでもソフトウェアのインストールは可能です。
レゴブロック
トレジャーボックスはレゴブロックと、後述するレゴブロック互換のサーボモータを使って作ります。
- クラシックブロック:ふた開閉機構部以外で使用
- テクニックブロック:ふた開閉機構部(ギア駆動まわり)
クラシックブロック
私はこれまで購入してきたレゴブロックパーツを適当に組み合わせて作りました。
使用するブロックの色はもちろん自由です。
ご自身の手持ちのブロックを使って作ってみて、不足があれば購入するくらいで良いと思います。
ボックスの底板と天板(ふた)には8×8プレート(型式:41539-194)を使用しており、必要あらばプレートだけ単品購入して準備してください。
▼LEGOブロックのバラ購入が可能な専門店「ブリッカーズ楽天市場店」
今回のレゴブロック組み立て写真とまったく一緒にする必要はありません。
透明パーツを含めたパーツセットを購入しておくと、別記事で紹介している信号機工作にも使えてお得です!
テクニックブロック
今回使用したテクニックパーツと型式
- ダブルベベルギア12歯:32270
- ベベルギア12歯:6589
- ブッシュ1/2:4265C
- 6M十字軸47mm:3706
- 1×2-穴1:3700
- 1×2軸穴:32064
上記パーツがお手元にない場合は、テクニックブロックの単品購入が可能な下記サイトで購入するのが便利です。
▼LEGOブロックのバラ購入が可能な専門店「ブリッカーズ楽天市場店」
商品検索欄にパーツ型式を入力すれば欲しいブロックがすぐ見つかりますよ!
GeekServo 9G Servo-Gray
レゴブロックと互換性のあるサーボモータ(商品コード:KBOT-SERVO-GRAY)です。
回転角270°のサーボモーターで、指定した角度に回転して維持することができます。
今回トレジャーボックスの開閉動作を行うために使用しており、スイッチサイエンスにて購入が可能です。
ELEGOO ArduinoUNO R3最終版スターターキット
ELEGOO社の最終版スーパースターターキットを使うことで、工作に必要な電子パーツが一通り揃います。
1つずつ単品購入することも可能ですが、キットで購入した方が断然コスパが高いです。
- Arduino本体(互換品)
- USBケーブル
- ブレッドボード
- 電源モジュール
- メンブレンスイッチ(キーパッド)
- LCD1602モジュール
- ジャンパー線(オスーオス)×13本
- ジャンパー線(オスーメス)×4本
- DC9V電池、スナップケーブル【必要に応じて】
キットに含まれる「9V電池+スナップケーブル」を使うことで、パソコンとUSBケーブルで接続していなくてもArduinoに給電することができます。
最終キットに含まれるパーツを紹介していますので、購入時の参考にしてください。
Arduino用アクリルケース
Arduino本体の裏側は基板がむき出しになっており、埃による短絡故障のリスクがあります。
本体を平置き設置するためにも、購入することをおすすめします。
I2Cモジュール
I2C通信を使ってLCDを制御するために必要なモジュールです。
電源線2本と通信線2本の合計4本の配線だけで、LCDを制御することが可能になります。
I2C(アイスクエアドシー)通信は、省配線を実現するためのシリアル通信方式です。
I2Cモジュールはキットに含まれないため、別途購入が必要です。
STEP2:トレジャーボックスの組み立て
レゴブロックを組み立てて、トレジャーボックスを作ります。
トレジャーボックスは箱部分の「固定部」とふた部分の「可動部」で構成されています。
固定部
固定部は大きく分けて、底面と外壁で成り立っています。
底面には「8×8プレート(型式:41539-194)」を使いました。
ふたを開閉させるサーボモータ周り以外はどんなブロックの組み合わせでも良いので、底面プレートの外周列を積み上げていきます。
可動部
ふたを開閉動作させる部分を組み立てます。
まずはじめに、サーボモータを回転軸が上向きになるようにして底板に差し込みます。
GeekServoサーボモータはLEGOブロックと互換性があるので、底面ブロックと結合できます。
サーボモータの配線取り出し部がボックスの外側になるようにしてください。
サーボモータが組み付けできたら、上記写真を参考にして他のレゴテクニックパーツを組み立てていきます。
テクニックパーツブロック以外の部分は、自由にブロックを組み合わせて組み立ててください。
サーボモータの軸が回転することにより、ベベルギヤを介して「1×2軸穴ブロック」が回転します。
このブロックの上に「かさ上げブロック(どんなブロックでもOK)」を間に挟んで「8×8プレート(型式:41539-194)」を取り付けます。
開閉動作確認するときに、ふたが他のブロックに引っかからずに開閉できればOKです。
ふたの開閉軸側の辺に干渉を回避するためのスキマを作るのがコツです。
ふたの開閉軸側以外の3辺はふたが閉まったときに、固定側とぴったりくっつく外壁の高さにします。
開閉軸側の辺のみ、ふたと外壁の間に0.5ブロックほどのスキマがある状態になります。
STEP3-1:電気配線~動作確認に必要なもの
電気配線~動作確認までに必要となる機器を準備していきます。
最終版スターターキットに含まれるパーツには【キット】と表示してありますので、キットのケースから取り出して準備しておいてください。
- トレジャーボックス
- パソコン
- Arduino本体(互換機)【キット】
- USBケーブル【キット】
- ブレッドボード【キット】
- メンブレンスイッチ【キット】
- LCD1602モジュール【キット】
- I2Cモジュール
- ジャンパー線(オスーメス)×4本【キット】
- ジャンパー線(オスーオス)×13本【キット】
- DC9V電池、スナップケーブル【キット】(USBケーブル経由で電源供給する場合は不要)
トレジャーボックス
STEP1で組み立てたトレジャーボックスです。
サーボモーターからコネクタ付リード線が出ているので、ジャンパー線のオス側を挿入して配線します。
▼手持ちにないLEGOブロックをバラで購入するならブリッカーズが便利です!
パソコン
プログラムを作成するために必要です。
プログラム制御の演算はArduino側で行うため、パソコンのSPECは一般的なモデルで十分対応可能です。
パソコンのOSはWindows、Macどちらでも対応可能です。
Arduino本体【キット】
基本的なエディション「Arduino Uno」の互換機である、ELEGOO社のUNO R3を使用しています。
Arduino本体裏面のショート対策に、別売りのクリアケースの購入をおすすめしています。
各ソケットの役割など、Arduino本体の機能について以下の記事にて詳しく説明しています。
USBケーブル【キット】
パソコンとArduinoを接続してプログラムデータのやり取りをするために必要です。
ブレッドボード【キット】
たくさんの穴が開いていて、部品の端子を穴に差し込むだけで電気的に接続が可能な板です。
説明図は30列のショート版ですが、最終版スターターキットに含まれる63列タイプでも機能は同じです。
メンブレンスイッチ(キーパッド)【キット】
キーパッドは、8本の電線が行と列ごとに配線されている電子機器です。
Arduinoの入出力ソケットに接続することで、押されたキーを認識することができます。
LCD1602モジュール【キット】
液晶ディスプレイ「LCD(Liquid Crystal Display)」モジュールになります。
数字や文字などを表示させることが可能です。
I2Cモジュール
I2Cを使ってLCDを制御するために必要なモジュールです。
電源線2本と通信線2本の合計4本の配線だけで、LCDを制御することが可能になります。
キットに含まれないパーツですので、ご注意ください。
ジャンパー線(オスーメス)【キット】
オス-メスジャンパー線を4本使用します。
I2CシリアルインターフェースボードとArduino本体を接続させるために使用します。
ジャンパー線(オスーオス)【キット】
ジャンパー線を13本使用します。
Arduino本体からメンブレンスイッチやサーボモータなどに接続するために使用します。
DC9V電池、スナップケーブル【キット】
9V電池とDCジャックがついたスナップケーブルです。
USBケーブルを使わずに、電池からArduinoに電源を供給することができます。
ArduinoへUSBケーブル経由で電源供給する場合は不要のパーツとなります。
STEP3-2:電気配線
メンブレンスイッチは配線説明図の通り「2~9番ソケット」へ右から順に接続します。
- LCD1602モジュールをブレッドボードに差し込む
- I2Cモジュールをブレッドボードに差し込む
- オスーオスジャンパー線をブレッドボードとArduinoソケットに差し込む
- オスーオスジャンパー線をArduinoとメンブレンスイッチソケットに差し込む
- オスーオスジャンパー線をサーボモーターからのリードコネクタに差し込む
- オスーメスジャンパー線を使ってI2Cモジュールのピンに接続する
機器が故障するおそれがあるので、接続するプラスマイナス極性には十分注意して配線してください。
配線するのに特別な工具は必要ありません。
ジャンパー線を使ってArduinoのソケットやブレッドボード穴やコネクタピン・ソケットに差し込むだけでOKです。
機器故障させないためにも、USBケーブルを抜いた「通電OFF」状態にて配線を行ってください。
配線説明図を見ながら落ち着いて配線作業を行ってください。
Arduino給電方法について
今回は、プログラムデータ送信用のUSBケーブルを通じて、PCからArduino本体へ電源供給しています。
USBケーブル経由での電源供給ができない場所で動作させたい場合は、スナップケーブルを使ってArduinoのDCジャックに差し込むことで、DC9V電池からの電源供給を行うことが可能となります。
STEP4:mBlockのセットアップ
お手持ちのパソコンに、Arduinoブロックプログラミングソフトェア「mBlock」をインストールします。
mBlockのインストール方法については、こちらの記事にて詳しく説明しています。
STEP5:プログラミング
ここからは、mBlockを使ったプログラムの作り方を解説します。
- デバイスにArduino Uno R3を追加する
- 接続モードを「アップロードモードON」にする
- mBlockプログラムを作成する
- プログラムをArduino本体に転送する
プログラム作成手順①~④の基本操作方法については、こちらの記事を参照してください。
動画を参考にプログラミングしてみてください
拡張ブロックを追加する
mBlockにはArduinoを制御するためにあらかじめ準備されているブロック以外にも、ダウンロードして使用することが可能な拡張ブロックが存在します。
今回は3種類の拡張ブロックの使用が必要になりますので、手順とブロック機能の解説を行います。
今回使用する拡張ブロック
- string変数ブロック
- I2Cを使ったLCD制御ブロック
- keypadブロック
string変数ブロック
mBlockの標準機能で変数を作成すると強制的に「float型変数=浮動小数点型変数」になります。
今回メンブレンスイッチ(キーパッド)からの入力は文字列として入力させたいので、文字列型変数が必要です。
拡張ブロックを使用することで、文字列型変数を作成することが出来るようになります。
mBlockを開いて、拡張ボタンをクリックします。
検索窓に「strings」と入力します。
「Strings」と書かれた拡張ブロックを「+追加」ボタンをクリックします。
string変数ブロックが追加されます。
I2Cを使ったLCD制御ブロックの追加方法
LCDを制御(LCD画面クリア、カーソル位置を指定、LCDへの文字列表示など)するために必要な、専用ブロックを追加する必要があります。
mBlockを開いて、拡張ボタンをクリックします。
検索窓に「i2c」と入力します。
I2Cを使ったLCD制御用の拡張ブロックを追加します。
I2Cを使ったLCD制御ブロックが追加されます。
keypadブロックの追加方法
メンブレンスイッチの押されたキーを文字・記号としてプログラム内で変換するために、専用ブロックを追加します。
mBlockを開いて、拡張ボタンをクリックします。
検索窓に「keypad」と入力します。
表示された追加ブロックリストの中から「Keypad Eklentisi」という専用ブロックを追加します。
メンブレンスイッチのキーを文字・記号に変換できる専用keypadブロックが追加されます。
mBlockを使ったプログラム内容
今回は「アップロードモード オン」でのプログラム作成例を紹介しています。
プログラム開始条件には「Arduino Unoが起動したとき」を使用します。
以下がmBlockによる動作プログラムになります。
mBlockのArduino専用ブロックについては、こちらの記事にて詳しく説明しています。
STEP6:動作確認
- メンブレンスイッチ入力した値がLCDディスプレイに表示されるか?
- 「*」キーを押したら、ディスプレイに表示された入力値はクリアされるか?
- 「#」キーを押したとき入力値が「135A」のときだけボックスが開くか?
上記項目について確認していきましょう。
メンブレンスイッチ入力した値がLCDディスプレイに表示されるか?
メンブレンスイッチ(キーパッド)のボタン(0~9、A~D)を押して、LCDディスプレイの下段に左から押した順に表示されるか確認してください。
「1⇒2⇒3⇒4」と順番に押した場合は、「1234」と表示されるはずです。
押してもLCDディスプレイに表示されないボタンがある場合は、メンブレンスイッチとArduinoを接続する8本の線のどれかがArduinoソケットから抜けている可能性があります。
そういった場合は配線をチェックしてください。
停止動作後さらに押しボタンを押すと、再び高速回転動作からの繰り返し動作になります
「*」キーを押したら、ディスプレイに表示された入力値はクリアされるか?
LCDディスプレイ上段にも表示していますが、「*」キーは入力値のクリアキーとして機能させています。
「*」キーを押したら、LCDディスプレイ下段に入力した文字列がクリアされて「未表示状態」になることを確認してください。
もし下段の文字列がクリアされない場合は、プログラムに間違いがないかチェックしてください。
「#」キーを押したとき入力値が「135A」のときだけボックスが開くか?
「#」キーは入力値の確定キーとして機能させています。
「#」キーが押されると入力された文字列が、正解パスワード「135A」であるかどうかプログラム側で照合します。
照合結果が「同じ=正解」の場合は、LCDディスプレイ下段に「SUCCESS!」と表示され、トレジャーボックスのふたが自動的に開きます。
「違う=不正解」の場合は、LCDディスプレイ下段に「FAILED!」と表示され、トレジャーボックスのふたは開きません。
これらの動作がうまくいかない場合は、プログラム側に間違いがないかチェックしてください。
電子工作「トレジャーボックス」のまとめ
- サーボモータの位置決め機能により、ふたの開閉角度制御が可能
- 使用する多くのパーツがELEGOO最終版スターターキットで手配可能
- ビジュアルプログラミングツールmBlockを使えばプログラミングが簡単にできる
文字コードが不要のビジュアルプログラミングを使うことで、命令語を理解していなくても機能ブロックを組み合わせるだけでプログラムを作成することができます。
ビジュアルプログラミングは文字コードプログラミングにありがちな「英文字スペル間違い」の心配もありませんし、小学生にも安心して使っていただけるプログラミングツールです。
「BOXのふたが開いてから10秒後に自動でふたが閉まるようにする」など、あなた自信で動作をアレンジしてみると一層楽しめる電子工作にパワーアップできると思います。
慣れてきたらオリジナル動作を加えて、世界に一つしかない電子工作を作ってみてくださいね!
コメント