ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Archive for the ‘ブレッドボード’ Category

小学校でマイコンボードの体験会をする。いわゆるLチカの発展形。

leave a comment »

P1460655_mid_640_480

明日は小学校で子供たちにマイコンボードの体験コーナーをする。短い時間で低学年から高学年までの子供たちに楽しさを伝えるために工夫をする。いわゆる「Lチカ」をベースに。

たとえば小学校の高学年、5年生と6年生対象なら、パソコンを使って簡単なプログラミングをすることができるかもしれない。それにしてもある程度のまとまった時間が必要だし、パソコンなど機材を準備しなければならない。

10分程度の短い時間で、小学校1年生から6年生までの幅広い子供たちにマイコンボードや電子工作の楽しさを伝えるにはどうすればいいか。そこにはいろんな工夫の余地がある。

子供たちの輝く瞳を見たい。だから教育は面白い。

今週末は神戸三ノ宮でアドミンティーチャーズのラボワーク。ArduinoでWebサービスをプログラミング。

leave a comment »

今週末は連休の後半だが、5月7日(土)に神戸三ノ宮でアドミンティーチャーズのラボワーク第4会をやる。今回のテーマは「Webサービス」だ。使うのは WIZnet の TCP/IP ハードウェア処理チップ W5100 を使った Arduino UNO 用の定番イーサネットシールドだ。

アドミンティーチャーズ「ラボワーク LW04 – W5100イーサネットシールドを使ったWebサービスのプログラミング」
https://adminteachers.wordpress.com/2016/04/18/%e3%83%a9%e3%83%9c%e3%83%af%e3%83%bc%e3%82%af-lw04-w5100%e3%82%a4%e3%83%bc%e3%82%b5%e3%83%8d%e3%83%83%e3%83%88%e3%82%b7%e3%83%bc%e3%83%ab%e3%83%89%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9fweb/

p1140109_clip_640_480

Arduino には、このイーサネットシールドを使って TCP/IP 通信をするライブラリが提供されている。このライブラリを利用すると簡単に TCP/IP 通信をするプログラムを作ることができる。Web サービスのサンプルコードも提供されており、簡単に Web サーバーを作ることができる。

Web サーバーを作るだけでなく、プログラム上で TCP/IP 通信のデータを見ると、Web サービスでどんなデータがやりとりされているかがわかる。すると単に決まった固定の HTML テキストを返すだけでなく、I/O ポートから受け取ったデータを返すことや、POST メソッドで受け取ったデータをどう処理すればいいかが理論的に理解できる。

このように今回の実習では、単に実用的な Web サービスを作るだけでなく、HTTP 通信の中身を明らかにすることもラボワークの目的とする。まさに「ラボ」という言葉にぴったりの時間にするように企画している。

神戸三ノ宮で開催したアドミンティーチャーズの「ラボワーク LW03 – マルチファンクションシールドを使ったシフトレジスタとダイナミック点灯のプログラミング」

leave a comment »

「ラボワーク」と題してこの 2月から兵庫県神戸市中央区、JR三ノ宮駅近くの会議室を借りて勉強会をやっている。今回は 3回目で、実験用のマルチファンクションシールドを使ったプログラミンを体験した。

マルチファンクションシールドは Arduino UNO 用に作られた実験用シールドで、昔の言い方では「ドーターボード」と呼ばれる一種の拡張ボードだ。Arduino UNO のI/Oピンにあわせて作られているが、必要なピンだけジャンパケーブルでつなげば他のマイコンボードでも使える。

P1140072_mid_640_480

このマルチファンクションボードには 4つの 7セグメント LED チューブ、3つのボタン、4つの LED、ブザー、ポテンショメーター(ボリューム)がついている。これらの部品をマイコンボードでテストしようと思えばブレッドボードで回路を組んでもいいのだが、このように基盤に取り付けられていると簡単に実験できる。ラボワークではマルチファンクションシールドと Arduino UNO、Digispark などを人数分用意した。

P1130534_mid_640_480

Arduino UNO でマルチファンクションシールドを使うには、そのまま上に載せればいい。

P1130543_mid_640_480

Arduino UNO を使う場合は上に載せるだけだが、Digispark で使う場合は次のように 5本のジャンパワイヤーで接続する。3本はデータ送信用、2本は電源供給用だ。

P1140074_mid_640_480

P1130536_mid_640_480

Digispark は前回のラボワークではオンボードの LED をコントロールしただけだったので加工の必要がなかったが、今回のようにジャンパワイヤーで I/O を接続するには I/O ピンをはんだ付けしなければならない。I/O ピンがついていない Digispark のためにはんだごてを用意した。

P1130538_mid_640_480

プログラミングは各自のコンピュータで Arduino IDE を使って行った。プリントを用意してサンプルコードを簡単なものから実用的なものまで用意して体験した。

P1130546_mid_640_480

マルチファンクションシールドには 4つの 7セグメント LEDチューブが載っている。この LEDチューブはシフトレジスタ 74HC595を介して接続されている。74HC595は汎用シフトレジスタで、3本のコントロール信号でシリアル信号を8ビットのパラレル信号に変換することができる。マルチファンクションシールドにはこの 74HC595が 2つ搭載されており、ひとつは 7セグメントの形を決め、もうひとつは出力する LEDを決める。

シフトレジスタの使い方とダイナミック点灯の概念を理解するサンプルコードを用意し、LEDチューブの形と点灯させるチューブの選択、ビットパターンの関係を表にしてイメージできるようにプリントを用意した。

P1130548_mid_640_480

P1130542_mid_640_480

「ラボワーク」は毎月第一土曜日の夜やっている。次回は 5月7日(土)の夜、19:00から。詳細は「アドミンティーチャーズ」の Webで。

3月5日(土)、神戸三ノ宮で行った「ラボワーク LW02 – Digispark 切手大の小さい Arduino を使う」

leave a comment »

アドミンティーチャーズ「『ラボワーク LW02 – Digispark 切手大の小さい Arduino を使う』の報告」
https://adminteachers.wordpress.com/2016/03/28/%e3%80%8c%e3%83%a9%e3%83%9c%e3%83%af%e3%83%bc%e3%82%af-lw02-digispark-%e5%88%87%e6%89%8b%e5%a4%a7%e3%81%ae%e5%b0%8f%e3%81%95%e3%81%84-arduino-%e3%82%92%e4%bd%bf%e3%81%86%e3%80%8d%e3%81%ae-2/

今回の「ラボワーク」では、参加のみなさんがご自分のパソコンをお持ちになったので、実際に環境を整えたりスケッチを書いたりという実践的な実習ができた。とてもよかった。今回の「ラボワーク」では、次のようなことをした。

・切手大の Arduino の亜種といえる Digispark を使ってみる。
・Arduino IDE で Digispark を開発するための環境を整える。
・Digispark と PC 間のインタフェースについて知る。
・Arduino IDE を使って簡単な「Lチカ」プログラミングをして Digispark を動かす。

Digispark は USB インタフェースの形状が異なるものを 2種類用意した。ひとつはむき出しの USB コネクタがボード上に形成されているもので、もうひとつはボードにマイクロ USB コネクタが付いているも。むき出し USB コネクタのものはケーブル不要で直接パソコンに挿すことができるので便利だ。どちらの Digispark も中身は同じ。

Digispark は Arduino IDE で開発することができるが、Digispark 用のボードマネージャーを適用する必要がある。ここで現在、Digispark 開発用に提供されているボードマネージャーが、Arduino IDE のバージョンによっては動かないという現象がある。Windows 用の Arduino IDE では、1.6.5 では正しく適用されることがわかっているので、異なるバージョンの Arduino IDE を使っている方には 1.6.5 をインストールしなおしていただき、その後 Digispark 用のボードマネージャーを適用していただいた。

Digispark は他の Arduino と異なり、パソコンとのインタフェースは USB – シリアル変換ではない。パソコンからは Digispark はキーボードやマウスと同様の HID (Human Interface Device) として動作する。したがって固有のデバイスドライバを導入する必要がなく、標準の HID ドライバが適用されればいい。スケッチを導入するには、まず Arduino IDE で「マイコンボードに書き込む」ボタンを押してから USB に Digispark を挿す。Digispark は通電後、数十秒間はプログラム転送モードになり、その間にスケッチが導入される。スケッチの導入が終われば自動的にリセットし、プログラムが動き始める。

Digispark にはオンボードで LED が 1個ついているので、スケッチでオンボードの LED を点滅させるスケッチを作って確かめた。点滅速度を変更したり、PWM でフェードイン、フェードアウトの光らせ方を体験したりした。

次回は 4月2日(土)。テーマはプログラミングとし、シフトレジスタでコントロールする LED チューブの点灯と、ダイナミック点灯のプログラミングを考えている。前回同様 12 名の定員の小さな会議室を予約しているので、希望の方は早めに申し込んでください。数日中にアドミンティーチャーズのサイトで告知します。

アドミンティーチャーズ Web
https://adminteachers.wordpress.com/

P1120096_mid_640_480

アドミンティーチャーズの第二回ラボワークは切手大の小さい Arduino「Digispark」を使った実験をします。

leave a comment »

3月5日(土)、兵庫県神戸市中央区、三ノ宮駅前の神戸市勤労会館でアドミンティーチャーズのラボワークの第二回目を実施します。今回のテーマは Digispark という「切手大の小さい Arduino」です。Digispark にもいくつかの異なるモデルがありますが、今回は最も一般的な 2種類のモデルを用意します。

アドミンティーチャーズ Web「ラボワーク LW02 – Digispark 切手大の小さい Arduino を使う」

ひとつはむき出しの USB コネクタがあるもので、直接パソコンの USB ジャックに挿して使います。

P1110931_clip_640_480

もうひとつはマイクロ USB コネクタがついているもので、USB ケーブルでコンピュータにつなぎます。

P1110930_clip_640_480

会場の都合で定員が 12 名です。お早めにお申し込みください。

アドミンティーチャーズ Web「ラボワーク LW02 – Digispark 切手大の小さい Arduino を使う」
https://adminteachers.wordpress.com/2016/02/27/%e3%83%a9%e3%83%9c%e3%83%af%e3%83%bc%e3%82%af-lw02-digispark-%e5%88%87%e6%89%8b%e5%a4%a7%e3%81%ae%e5%b0%8f%e3%81%95%e3%81%84-arduino-%e3%82%92%e4%bd%bf%e3%81%86/

100 円均一ショップで買った乾電池チェッカーで Netduino 2 と Arduino UNO の PWM パルス幅変調アナログ出力をチェックする

leave a comment »

100 円均一ショップには電子工作で使えそうなものがたくさんある。電子パーツとして買うとそれなりに値段がするものが手軽に手に入る。100 円均一ショップで売っていたアナログメーター式の乾電池チェッカーを使って Netduino 2 と Arduino UNO の PWM パルス幅変調アナログ出力をチェックする実験をしてみた。

Netduino 2 や Arduino UNO のアナログ出力は PWM パルス幅変調 Pulse Width Modulation であり、実際に出力電圧が変化しているのではない。5V の電圧を出力するにあたってパルスを使い、パルス幅の 5V と 0V の比を変化させることで平均電圧、という表現は正確ではないかもしれないが、疑似的に電圧を変化させるのと同等の効果を得ているのだ。ちなみに Arduino Due には D/A 変換回路が組み込まれており、本物のアナログ出力を行うことができるようだ。

P1110829_clip_640_480

まず本体を分解する。ニッパーとペンチで角から。分解すると内部はアナログメーターと 4 本の抵抗で構成されていることがわかる。はんだごてではんだを溶かしてばらばらにする。

P1110830_mid_640_480

P1110831_clip_640_480

念のため元の回路とテスターで測った抵抗の実測値をメモしておく。

P1110832_mid_640_480

このアナログメーターで、5V の出力値を MAX で表示できるようにすればいい。そこでいくらの抵抗をつなげばよいかをボリュームで調節して決める。ボリュームの値は 800 オームから 1k オームにすればよいことがわかった。

P1110833_mid_640_480

手元に適当な値の抵抗がなかったので、510 オームの抵抗を 2本直列につなぎ、1.02 kオームにして使うことにした。回路はとりあえず空中配線で。

P1110834_mid_640_480

Netduino 2 で PWM によるアナログ出力をするには、C# では次のようなコードになる。パルス幅を連続的に変化し、フェードイン、フェードアウトの効果を得る出力だ。

———————————————————————————

using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

namespace Netduino_Analog_Out_Blink
{
    public class Program
    {
        public static void Main()
        {
            PWM myPWM = new PWM(SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D9,100,0,false);
            double myAdd = 0.001;

            myPWM.Start();

            while(true)
            {
                myPWM.DutyCycle = myPWM.DutyCycle + myAdd;
                Thread.Sleep(2);

                if(myPWM.DutyCycle > 0.999)
                {
                    myAdd = myAdd * (-1);
                }
                if(myPWM.DutyCycle < 0.001)
                {
                    myAdd = myAdd * (-1);
                }
            }
        }
    }
}

———————————————————————————

これを電池チェッカーのメーターで受け取ると、メーターの針がゆっくりと右へ左へ振れることがわかる。

P1110837_mid_640_480

Arduino UNO で PWM によるアナログ出力をするには、次のようなスケッチになる。

———————————————————————————

int bri = 0;
int myAdd = 5;

void setup()
{
  pinMode(9, OUTPUT);
}

void loop()
{
  analogWrite(9, bri);

  bri = bri + myAdd;

  if (bri == 0 || bri == 255)
  {
    myAdd = myAdd * (-1);
  }
  delay(40);
}

———————————————————————————

P1110835_mid_640_480

小学校のカーニバルで「マイコンボードで Lチカ体験コーナー」をする – ブース型の体験コーナーで得たこと

leave a comment »

小学校のカーニバル。子供たちが様々な店を企画してみんなを楽しませる、つまり小学校版の文化祭のようなイベントだ。そこで PTA として「マイコンボードで Lチカ体験」というコーナーを出した。部屋は理科室。実験台に Arduino や Netduino のマイコンボードや部品を並べ、子供たちに体験をしてもらうブース型のコーナーだ。

昨年「青少年のための科学の祭典」で同様の出店をした経験から、このようなスタイルで小学生に体験させるにはどのような工夫が必要なのかということが少しわかった気がする。会議用の長机程度のスペースを使い、椅子をならべて数人を集めてマイコンボードの体験を 10分程度でする、終われば次のグループがどんどんやってきて入れ替わるというスタイルだ。

1.その場でプログラミングは無理

できればその場でプログラミングをし、あるいはコードを書くことはしなくても、できたコードを見せてビルドし配置する、ということを体験させたい。しかしブース型の入れ替え制スタイルで、小学生に対しては無理だ。相手が中学生で、パソコンもマイコンボードの数だけあり、同時に少人数、時間もせめて 20分あればできるかもしれない。したがってその場でプログラミングすることはあきらめ、あらかじめマイコンボードにプログラムを入れておくしかない。したがってイベントの目標は「プログラミングを理解する」のではなく「プログラムによってマイコンボードが動作することを理解する」ことにする。それをどういう形で体験し理解させるかを工夫する。

2.いろいろ用意せず体験は 1種類だけにする

計画の段階では「あれもしたいこれもしたい」と思うので、タイプの異なる実習を何種類も用意しようと思う。興味や関心に応じて選んでやってもらおう、と。しかし完全に個別対応ならうまくいくかもしれないが、5~6名の子供に同時に説明し体験させるには、異なる種類のものを同時に説明するのは無理がある。子供たちをきちんとコントロールできないと事故がおこる可能性もある。体験は 1種類だけにし、応用で見せたいものはすぐできるように用意しておき、見せるだけにする。

3.人数は同時に 10人くらいはできる

きちんと準備ができていれば、小学生なら 10人くらいは同時に対応できることがわかった。同じことをやるなら小学生は友達どうしで見比べながら作業ができる。そのためには机は広いほうがいい。昨年の「青少年のための科学の祭典」では会議用の長机を使ったが、今回は小学校の実験室だったので実験台を使わせてもらった。実験台は奥行きが広いのでマイコンボードや部品を並べても作業に余裕があった。できれば奥行きのある机に輪のようになって座ってするのがいい。

4.直観的に操作できるように準備する

いちいち説明書きを見ながら作業をするのは無理だ。そこで口頭で簡単に説明するだけでいいように、体験は直観的にそうさできるように準備する。回路を作るなら一列に並んだピンに順番にコードを挿していく、3接点のセンサーを使うなら、すだれ型の 3本セットのケーブルを使い、末端には 3ピンのコネクタを取り付けておく、電源のプラスは赤、マイナスは青とブレッドボードの色にあわせておく、などだ。こうしておくと「順番につなぐんだよ」「同じ色をつないでね」「同じ形のところにつないでね」と言うだけでいい。

5.ブレッドボードは難しい

ブレッドボードを小学生に理解させるには、このようなブース型の体験コーナーでは無理だ。まずブレッドボードの内部配線を理解しなければ、どのように回路がつながったのかわからない。実際に小学生にブレッドボードを使わせてみると、LED が光る回路を作ることができても、なぜ光ったかが実感できないでいるようだ。ほとんどの子は光ったことは喜んでも、なんとなく納得しがたい顔をして帰っていく。もし LED を直接光らせる体験をさせたいなら、ブレッドボードは使わずリード線とワニ口クリップを使ったほうがよさそうだ。

6.教材は多めに用意する

きちんと教材を用意しておけば 10人程度は同時に対応できる。スペースに余裕があればもう少し同時に多くに人数でできるかもしれない。そこで教材は想定する数より多めに用意しておくのがいい。また次々にグループがやってきたとき、前のグループでやったものの片付けができていないと待たすことになる。そこで片づけなくても 2回くらいは連続でできるように、同時想定人数の2倍の教材を用意できればさらにいい。

7.電源の管理を工夫する

どのような実習にせよ、マイコンボードや電子回路の実験なら電源を必要とする。回路を組み立てて最後は電源を接続するのだが、AC アダプターを使うのか、乾電池を使うのか、モバイルバッテリーを使うのか。電源ケーブルの引き回しをどうするのか。今回は AC アダプター付きの 7ポート USB ハブを使ったが、USB ケーブルが短くしかも堅かったので使いにくかった。モバイルバッテリーは万一回路が短絡したときに危険かもしれない。電源供給ケーブルのとりまわし、短絡しないケーブル末端の処理、などに配慮する必要がある。小学生には乾電池を使うのがわかりやすく、短絡したときの問題を考えると、内部抵抗の大きなマンガン乾電池を使うことが良いと思われる。

こうした実習は、プランを立ててやってみることで経験が得られ改善の工夫をイメージできる。子供たちは思いもよらない姿を見せてくれる。優れた教員は常に子供たちの様子を観察し、細かな違いを見極める目を持っている。そこで気づいたことを次のプランに組み込んでいく。したがってこうした実践は教える側にとっても貴重な経験である。それにしても小学生に何かを教えるということはエネルギーがいる。やっているときは感じなかったが、2時間ほどの体験コーナーを終えて家に帰ってくると、気が緩んで疲労と睡魔に襲われて夕方まで昼寝をしてしまった。小学校の先生はたいへんだ、ということも実感した。