電子工作

2017年08月26日

キッズクラスではこの夏休みを利用してセンサーやプログラミングを駆使して電子部品のガラクタを手の平マイコン(Arduino Uno)と接続しオリジナルロボットを製作しました。
自由研究を始めるにあたり、子供たちと「世の中の社会問題をロボットの力で改善できないか?」をテーマーに何を作るかを話し合いました。
まずは身近なところで困ったことはないかと話していたら、自転車に乗っていて車にひかれそうになったとの話が・・・
北朝鮮のミサイルや原発も問題かもしれませんが、毎年20万件以上の負傷者を出している交通事故は今日にも襲い掛かる怖い問題です。
日常生活で日々接する自動車や自転車は、ミサイルよりも怖い脅威と言えるでしょう。

●センサーを使ってコンピューター制御で衝突を回避することで交通事故を減らせないか
〜平成27年中の交通事故死者数の特徴〜
全国で毎年4千名以上の命が奪われ、1日平均の死者数は11.3人で、2時間8分に1人が交通事故で死亡しています。
死者数の多い都道府県は、愛知県の213人、大阪府の196人、千葉県の180人と愛知県が歴代トップを維持し続けて恥ずかしい結果となっています。

sisyasuu



中学3年の緑区T君の作品です。
超音波で障害物を自動で感知しバックするロボットです。
自由研究ですから、教材はありません。
中国から取り寄せたセンサーの数々ですが商品説明書はなくネットで調べても情報がありません。
唯一の手がかりの中国語サイトを翻訳しながらじっくり研究しましたが悪戦苦闘・・・
苦労した分、配線図もプログラムコードもすべてT君の頭にあります。
ONE_8932

T君が選んだのは超音波を発射するセンサーです。
まずは音速からネットで調べてみます。
音は1秒間に約340m進むそうです。
雷がピカッと光ってから3秒後にゴロゴロ!っと聞こえたら約1km先に落ちたという計算になります。
この原理を使って左のスピーカーから短い音波を発射し、物体に当たって跳ね返ってきた音波を右のマイクで拾って時間を計測します。
当然ですが当たって跳ね返ってきますから時間は往復の時間になりますので、プログラミング上で片道の時間に計算しなおします。
片道の時間と音速をかければ障害物までの距離が求められます。
今回は3cm〜30cmまで近づくと自動的に止まったりバックしたりとイロイロ実験してみました。
ONE_8299

こちらが動作させるプログラムです。
Arduino言語と呼ばれ、C言語をベースに電子部品を制御できるように改良されたもので、ネットにも情報が多く、作ったプログラムで電子工作で動かしてすぐ試せるので子供たちの学習に最適です。
プログラムを組むにはスクラッチなどのブロックを組み合わせるだけでプログラミングが出来上がる簡単なものもありますが、当校ではすべてアルファベットを手入力しソースコードと呼ばれるプログラミング言語による入力をさせています。
ソースコードによるプログラミングは仕様がコロコロ変わり早い段階で覚えても無駄になるとの理由から小学校教育でプログラミングの概念のみでプログラム言語の打ち込みは行わないそうですが、現実は教えられる先生がいないのが実情ではないでしょうか。
プログラミング言語は楽器と同じで習得には長い年月が必要で、一朝一夕には身につくようなものではありませんから、子供の時からソースコードを使った言語に触れておかなければ将来苦しむことになるでしょう。
自動演奏ボタンをポチポチ押しているだけのインスタントプログラムでは何年やっても楽器は弾けるようになりませんし、楽譜も読めない訳ですからビジネスとしての作曲もできるようになりません。
例え意味が分からなくても、ひたすらプログラムのソースコードを打ち込んでいるうちに、文法の違う他の言語も理解できるようになっていきます。
T君は独学でJAVA言語の本を買ってきて勉強したそうですが何が何だか分からないうちに挫折したと落ち込んでいましたが、Arduino言語をやってみて断片的な記憶が次々によみがえり、何も教えていないのにロボット制御のプログラムを一人で完成させています。


HCSR04





コチラは小学6年のK君の研究です。
明るさによって障害物を検知しモーターの回転を制御します。
ONE_8310

使用するのは明るさで性質が変化するCDSセル。
実際に電流を流してみて明るさにより抵抗値がどれぐらい変化するのか計測してみます。
実験結果では明るい時と暗い時では電流の流れが100倍以上変わることがわかりました。
この性質を利用して障害物が前に居ないか検出してみます。
CDSセル自体はアナログで明るさを検知しますが、デジタルのプログラムで制御できるよう明るさを1024段階で読取ります。
これをモーターに接続し、明るい時は高速回転、暗くなるにしたがって回転速度を下げ、一定値を下回ると停止するプログラムを組んでみました。
どの時点で停止させるかは可変抵抗で物理的に制御できますが、今回は他のセンサーからの値で制御できるようにプログラミング上で調整できるようにしました。
ONE_8316

先日、キリンビールや味の素が食品生産に熟練の職人さんではなく人工知能(AI)を導入すると発表がありました。
繊細な香りや微生物の育成をセンサー技術を駆使して若手でも短期間で開発ができるのが狙いですが、毎度変わらぬ味は消費者としてちょっぴり寂しい気もします。
今回はセンサー技術を駆使して少しでも安全な車を作ろうと奮闘しましたが、いくらセンサー技術が進歩し制御の性能が向上しても、それに依存するドライバーの注意力は緩む一方で交通事故は減らせません。
制御すべきは衝突安全防止装置が付いた車の方ではなく、ハンドルを握る運転者の方です。
イライラと自制心を失ったドライバー、スマホやテレビに気を取られ注意力散漫になっているドライバー、酒に酔ったり眠気に襲われ真っ直ぐ走ることのできないドライバーの心拍数や血圧をセンサーやプログラミングを駆使して把握し自動車をコントロールできないかが今後の研究テーマとなりました。




oneclickpc1 at 10:31コメント(0) 

2017年07月30日

7月30日、日曜日は群馬県から生徒のNさんにお越しいただき、手の平サイズのマイコンArduino Unoとドローンの改造レッスン行いました。
学生たちは夏休みに入りましたが、夏の自由研究の楽しみは子供たちだけのモノではありません〜
Nさんのご要望では、手持ちのドローンの飛行高度をフラッシュライトを使って知りたいとのことで、当初はRaspberry Pi 3を習いたいとのリクエストでしたが、フライトする現地にモニターやキーボードを持ち込んでの作業は大変だと判断し、単体で利用できるArduinoを使ってプログラムを組むことを提案させていただきました。
今回が初めてのArduinoを使ったプログラミングと電子工作の授業になりますが、事前にArduino入門キットをご購入いただき、それを持ち込んでの授業となりました。
この中には必要なモノが一通り揃っていますので入門者にピッタリです♪





ドローンに搭載する電源は、.疋蹇璽鷆酘依僉´∪御用マイコンArduino+気圧センサー フラッシュ用 と3つ必要ですが、重量を考えると全部は載せられません。
まずは、ドローン駆動用電源1つで全部が動くように電源回路を自作することにしました。
ONE_7093


万が一上空でショートしたら大変なことになります!
そこで、接続した個所は熱収縮チューブでしっかりと絶縁します。
ONE_7094


続いて、気圧センサーのハンダ付けです。
Nさんがネットで見つけてお持ちいただいた気圧センサーは中華製のBMP180というもので、0.02hPa(17cm)単位で高度が測れることになっていますが、いかんせん中国製の電子部品は不良品が多く果たして正常に動作するか分かりません・・・
そして、この手の部品には説明書が付いてきませんので使い方どころか配線の仕方も分かりません。
中国からの送料込みで2〜300円の商品ですから文句は言えませんね〜(^_^;)
レッスン時間に限りがある中、心を落ち着け冷静になりながら頭をフル回転させプログラムを考えます。


万が一、お持ちいただいた気圧センサーが動かなかった時用にBMP280も用意しましたが今回は出番がありませんでした。
コチラは高度+温度も測定できます。



ONE_7097


ドローン駆動用のバッテリーから制御用のArduinoに電源を分岐し動作テスト!
LEDを点滅させるプログラムを走らせてみますが良好です♪
ONE_7098

続けて車載用のフラッシュにも電源を分岐しリレーを使ってフラッシュを光らせてみます!
ONE_7109

こちらは、気圧センサーBMP180が正常に動作するかのテスト。
Arduinoごと気圧センサーと一緒にビニール袋に入れて。上からギューっと手で押え気圧を上げると赤いLEDランプが光ります。
気圧センサーは何とか動いているようです。
ONE_7113

左上:ドローン用バッテリー
左:気圧センサー
中央:Arduino
中央下:フラッシュ用制御ユニット
右上:リレー
右下:フラッシュランプ
ONE_7114

続いて感度テスト。
教室の海抜は約0mになっているので、プログラムを海抜5mでフラッシュが光るように調整しArduinoへ書き込み。
ドローン以外の一式をカゴに入れ裏山の安泰寺へ・・・
う〜ん、山に登る前にフラッシュが光ってしまう(^_^;)
教室に戻って、10mにプログラムを修正。
再び、安泰寺の山へ・・・
う〜ん、今度は頂上についてもフラッシュが光らない(^_^;)
少しでも高度を上げるため、かごを持ち上げると「ピカっ!ピカっ!」成功です!!
どうやら安泰寺の正門は海抜10mちょうどみたいです♪
念の為、イオン新瑞橋店に移動してテストしてみます。
カゴを持ったまま、1階から2階へエスカレーターで上がると途中で「ピカっ!ピカっ!」と反応します。
下りと登りで何度かテストしてみましたが、同じ位置でフラッシュが光るので気圧センサーの精度は問題なさそうですね〜
その時は必死でしたが、後になって冷静に考えると、こんな部品を持って近所をウロウロするのはどう見ても怪しいですね〜(^_^;)
ONE_7117

こちらがお持ちいただいた1台目のドローン。
時間が無く飛行テストはできませんでしたが、後日飛行動画をお見せいただけるとのことで楽しみです♪
ONE_7119

こちらが2台目のドローンで自動追尾型のカメラを搭載!
ドローンが上下左右に動いてもカメラは一定の角度で保ち続けます♪
最近はドラマやバラエティー番組でもドローンを使った空撮が増えてきましたね〜
ONE_7128

プロペラを装着し試運転♪
カメラのシャッタースピードをスローにしプロペラの回転を撮影してみました♪
ONE_7142

こちらが、ドローンを持ち運ぶバックで、大型のドローンがスッポリ収まります。
左下が予備バッテリーですが1個1万8000円と高価です。
1つのバッテリーで25分ほど飛行できます。
ONE_7145




oneclickpc1 at 21:46コメント(0) 

2017年07月08日

当校へ通う小6K君、中3T君、高3S君など子供たちも、夏休みまであとわずかとなりましたが、一足早く自由研究でオリジナルロボット作りとプログラミングにチャレンジしてもらいました♪
課題の第一歩はパソコンで作ったプログラムで戦車を前進させること。
前に動くことなど当たり前のように思えますが、プログラムで出力できる電気信号は微弱でモーターを動かすことなどできません。
皆でネットで検索し、微弱な電気信号でモーターを動かす方法を探しましたが、良くわかるページが見つかりません。
そこで、見つけたそれらしい部品をいくつかAmazonで注文し取り寄せ動作を検証するところから始めました。

戦車のキャタピラはタミヤの「楽しい工作シリーズNo.108 タンク工作キット」を使っていますが、それ以外はホームセンターやネットショップで寄せ集めた部材を使い、思い思いの方法でくみ上げています。
櫓(やぐら)の組み方もそれぞれで、上の天板にマイコン(Arduino Uno)やリレーなどを配置し自動で走行するプログラムを組みました。

こちらが試作途中の戦車ですが、プログラミングにより前進、停止、後退ができるようになった他、周囲の明るさを感知し前進したり、明るさで走行スピードを変えることができるようになりました。
ONE_6843

左の赤い部品が明るさを感知する部品で、右の黄色いマイコン(Arduino)に信号を送ります。
マイコンで判断され、一定の明るさになったら中央の青いリレーを使ってモーターに電気を送り動作させます。
ONE_6846

こちらがマイコンのArduino。
アナログ入力端子で明るさセンサーからの数値を読み取り、動作判断した結果でモーターを動作させるリレーに信号を送ります。
ONE_6847

リレーでは後退や速度制御ができないので、代わりに取り付けたモータードライバーです。
中華製で説明書もないため、手探りで実験し動作原理を理解します。
ONE_6848

やぐらを支える足の組み方もそれぞれのアイデアです!
ONE_6849

ONE_6850


























 

oneclickpc1 at 10:46コメント(0) 

2017年06月23日

「週刊鉄腕アトムを作ろう!」10号までの講座で、頭と右腕がサーボモーターで動くようになりました♪



oneclickpc1 at 18:52コメント(0)トラックバック(0) 

2017年03月23日

文部科学省は2020年から小学校での「プログラミング教育の必修化」を検討すると発表しましたが、我が校でも少し先取りし、子供たちと楽しみながらプログラミングを勉強しています。
先日、大須で電子部品を仕入れに行った時の話ですが、たまたま小中学校へ実験部品を収めている業者の方と居合わせ、団塊世代のベテラン教師の集団退職と共に、テスターすらまともに使えない先生が増えていると嘆いておられました。
経済産業省も、2020年までに36.9万人のIT人材が不足すると推計していますが、これは働く労働人口が減少しているのではなく、現場で使える質的な人材不足が顕在化しているということになります。
プログラミング教育には幼児向けに、様々なブロックを組み合わせるだけで回路を組めたり、パズルのようにプログラミングしロボットを動かせる教材が数多く出ていますが、これは料理で言えばインスタント食品でレンジでチンするだけ。最初から動くようにできているセンサーやモーターに手順を送って動作させているだけで、誰でも簡単なラジコンのオモチャと同じです。料理でも食べるのと作るのではまったく違うように、これでは、子供たちもおいしい手料理を作ったと胸を張って言えません。
当校ではできる限り人から与えられたキットを使わず、電気理論を考え電子部品を1から組み、それを動かす1つ1つプログラムを頭で必死に試行錯誤考え、自分の手で1文字1文字打ってコーディング(プログラム言語を用いてコンピュータが処理可能な形式のプログラムを記述すること)することで、モノが動く仕組みを基礎から身体を使って理解するトレーニングを行っています。

プログラミング言語には様々なものがありますが、今回は第2回目の授業です。
先週、Arduino Uno(アルドゥイーノ・ウーノ)と言うマイコン(小型コンピューター)を使って電子回路を動作させるArduino言語を少しだけ学びましたが、今週はいよいよプログラムを使ってLEDを点灯させます。
Arduino言語はC言語やC++言語をベースに作られたものなので初心者にも分かりやすく簡単で、作ったプログラムは電子工作で組んだ回路ですぐ実験できますから手応えもあって大人でも十分楽しめます! 

今回、子供たちに出した課題は先週学んだプログラムの文法を使い「5つのLEDランプを順番に点灯させる」と言うシンプルなものです。
LEDを使って配線を組む前に、Arduinoと電子回路をどうやって配線するのか、CADソフトを使って考えてもらいました 。
ノーヒントで取り組んでもらいましたが、改めて子供たちの感性は様々で、それぞれ個性的豊かな回路が出来上がりました〜(*^_^*)
たかが電球1個つけるのに、プログラムで行うには大変な努力が必要です。
普段、何げなく町のイルミネーションや明かりを見ていますが、街の中すべてがこうしたプログラムによって自動制御され点灯しています。
当たり前に見ている風景もすべて苦労して作ったプログラムの結晶です。改めてエンジニアの皆様に感謝しなければいけませんね〜




中2のT君の考えた回路図と実際の配線です。
抵抗を入れるとLEDの間隔が広がってしまうため中央にブリッジすることでスッキリとまとめました。
T
こちらが回路図を元に組まれた配線です。
よく見ると各LED側のGND(マイナス)につながるジャンパー線がありませんが、LEDを直接ジャンパー線代わりに使うことを急きょ思いついたそうです♪
中2のT君はおっとりしたタイプですが、地道にコツコツと休まず頑張るタイプで、誰も気づかない発見を良くしみんなを驚かせます!
DSC_0101

こちらが中2のT君が考えたプログラムです。
LEDの点灯や消灯時間を1度に設定できるように変数を使っています。
このプログラムには大きな間違いがあるのですが、何が間違っているか実際にLEDを光らせ動作確認することで大きな気づきを得ることができました。
--------------------------------------------------------------------------------------------------------
//引数が空voidの関数で初期設定

int TIME = 1000;
int DELAY = 1000;
void setup(){
//内臓のLEDは出力 用
  pinMode(12,OUTPUT);
  pinMode(13,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(11,OUTPUT);
}
//無限に繰り返す動作設定
void loop(){
  digitalWrite(13,HIGH);//LED点灯

  delay(DELAY);
  
  digitalWrite(12,HIGH);//LED点灯
  delay(TIME);                   //1000m秒待つ
  digitalWrite(13,LOW); //LED消灯
  
  delay(DELAY);                   //1000m秒待つ
  
  digitalWrite(11,HIGH);//LED点灯
 delay(TIME);                  //1000m秒待つ
  digitalWrite(12,LOW);
  delay(TIME); 
  digitalWrite(10,HIGH);//LED点灯
                    //1000m秒待つ
  //LED消灯
  delay(DELAY);                   //1000m秒待つ
  digitalWrite(11,LOW);
  delay(DELAY);
  digitalWrite(9,HIGH);//LED点灯
  delay(DELAY);
  
  digitalWrite(10,LOW); //LED消灯

  digitalWrite(11,LOW);
  delay(DELAY); 
 
  digitalWrite(9,HIGH);//LED点灯
  delay(TIME);                   //1000m秒待つ
  digitalWrite(9,LOW); //LED消灯
  delay(DELAY);
  digitalWrite(13,HIGH);                //1000m秒待つ
 }
--------------------------------------------------------------------------------------------------------



高1のM君の考えた回路図と実際の配線です。
中2のT君同様に抵抗を入れるとLEDの間隔が広がってしまうため中央にブリッジすることでスッキリとまとめましたが、さらにLEDの距離を詰めて配線をしています。

M

こちらが高1のM君の実際の配線です。
高1のM君は誰よりも頭の回転が速くって自分の手足もついていかないほど回路を組むのが早いのですが、配線がグニャグニャにまがって部品もバラバラ・・・
行きつ戻りつ先頭を突っ走るタイプです。
写真を見るだけで誰が組んだのか一発で分かります!
ほんと性格が良く分かって面白いですね〜

DSC_0103

こちらが高1のM君が考えたプログラムです。
5つのLEDの点灯や消灯時間をそれぞれ違う変数を使ってバラバラの間隔で光るように設定しています。
--------------------------------------------------------------------------------------------------------
int a =500;
int b =a/2;
int c =b/2;
int d =c/2;
int e =d/2;

void setup(){ 
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
}

void loop(){
  digitalWrite(9,HIGH);
  delay(a);
  digitalWrite(10,HIGH);
  delay(b);
  digitalWrite(11,HIGH);
  delay(c);
  digitalWrite(9,LOW);
  delay(a);
  digitalWrite(12,HIGH);
  delay(b);
  digitalWrite(10,LOW);
  delay(c);
  digitalWrite(13,HIGH);
  delay(a);
  digitalWrite(11,LOW);
  delay(a);
  digitalWrite(9,HIGH);
  delay(b);
  digitalWrite(12,LOW);
  delay(a);
  digitalWrite(10,HIGH);
  delay(c);
  digitalWrite(13,LOW);
  delay(c);
  digitalWrite(11,HIGH);
  delay(b);
  digitalWrite(9,LOW);
  delay(b);
  digitalWrite(12,HIGH);
  delay(d);
  digitalWrite(10,LOW);
  delay(b);
  digitalWrite(13,HIGH);
  delay(a);
  digitalWrite(11,LOW);
  delay(b);
  digitalWrite(9,HIGH);
  delay(c);
  digitalWrite(12,LOW);
  delay(c);
  digitalWrite(10,HIGH);
  delay(c);
  digitalWrite(13,LOW);
  delay(c);
  digitalWrite(11,HIGH);
  delay(c);
  digitalWrite(9,LOW);
  delay(c);
  digitalWrite(12,HIGH);
  delay(c);
}
--------------------------------------------------------------------------------------------------------




高2のS君の考えた回路図と実際の配線です。
抵抗を入れるとLEDの間隔が広がってしまうため中央にブリッジする点は同じですが、Arduino側にジャンパー線が来るようにブレッドボードの下側に配線が集中されておりスッキリとまとめました。
S

高2のS君は地元の工業高校に通っていますが、努力家で資格保持数も学年1位になるなどコツコツタイプ。
中央の抵抗の足の几帳面な折り方を見ると性格が一目瞭然ですね!
決して妥協せず、最後まで突き詰めていくタイプで将来が楽しみです♪
DSC_0102

こちらが高2のS君が考えたプログラムです。
5つのLEDの点灯や消灯時間をそれぞれ違う計算式を使ってバラバラの間隔で光るように設定しています。
--------------------------------------------------------------------------------------------------------
//変数設定
int a = 250;


void setup(){
  //
  pinMode(13,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(3,OUTPUT);
}

void loop(){
  digitalWrite(13,HIGH); 
  delay(a*1.25);
  
  digitalWrite(9,HIGH);
  delay(a*1.25);
  
  digitalWrite(13,LOW);
  delay(a);
  
  digitalWrite(7,HIGH);
  delay(a*1.25);
  
  digitalWrite(9,LOW);
  delay(a);
  
  digitalWrite(5,HIGH);
  delay(a*1.25); 

  digitalWrite(7,LOW);
  delay(a);
  
  digitalWrite(3,HIGH);
  delay(a*1.25);
  
  digitalWrite(5,LOW); //LED点灯
  delay(a);
  
  digitalWrite(3,LOW); //LED 消灯
  delay(a);
}
 -------------------------------------------------------------------------------------------------------- 


 次回のレッスンは新しい文法For(繰り返し)とIf(条件分岐)を使って、ダラダラと長くなってしまったプログラムを短くまとめ、1つ1つのLEDに違った動きを与えます。
どんな風にできあがるのか楽しみですね〜(*^_^*) 


oneclickpc1 at 19:58コメント(0)トラックバック(0) 

2017年03月07日

子供のプログラミング授業用に注文していたマイコンボードが届きました!
マイコンボードのArduino Unoはロボットなどを動かす心臓部になります。
 
イタリア生まれで、スイッチサイエンスが販売するArduino unoは永久保証品です♪
DSC_0056

電子工作が初めての子供たちとトランジスタのスイッチングの仕組みと、リレーを使った制御の実習です。
プログラムはパソコンで作成し、USBプリンターケーブルを使ってArduinoに転送します。
レゴロボットみたいな出来合いのキットじゃなくって、1から全部回路を組み上げプログラムを試行錯誤しながら組んで動作させます。
しかし、リレーのコイルはArduinoの微弱な電流では動いてくれません。
子どもたちみんなで話し合いトランジスターを使ってコイルを動かす方法を編み出しました。
エミッタ?コレクタ?ベース?
分からない用語がどんどん出てきますが、知らないことはどんどんググります。
キットが炊飯器で炊いた米から作るおにぎりだとすれば、電子部品を1から組み上げて作る電子工作は稲から米を育ておにぎりにするような遠い道のりです。
しかし、試行錯誤の末、無事に動いた時の喜びは何にも代えがたい達成感があり感動もひとしおです!
この回路で身の回りの様々なものを動かすことができますので夢が広がりますね〜♪
DSC_0057

Arduino Uno本体で誤配線などで壊してしまっても永久に保証されるので初心者にお勧めです。
パソコンとプリンターケーブルがあればすぐに始められます。

上記、Arduino Uno にUSBケーブルとLEDや抵抗など電子工作用パーツがセットになったキットで初めての方にお勧めです。


コチラは教室でも使っている、Arduino Unoと同等機能を有した互換機でUSBケーブル付きで1000円程度で購入できます。永久保証はありませんが2台目、3台目にどうぞ!

 コチラは教室でも使っている、1000円でおつりがくるKumantech製のArduino Unoと同等機能を有した互換機で、2台目3台目にお勧めです。





はんだ付け不要で電子部品を使って回路が組めるブレッドボードです。

ブレッドボード上の電子部品を接続するジャンパーワイヤーです。






以下、実習で使用する電子工作パーツです。
































oneclickpc1 at 00:51コメント(0) 
Archives
QRコード
QRコード
  • ライブドアブログ