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

InfoPath & SQL Server !

Archive for the ‘Netduino’ Category

アドミンティーチャーズの「ラボワーク LW11 - Arduino UNO と Netduino 3 でモーターシールドを使い DC モーターを制御する」

leave a comment »

ラボワーク LW10 - Arduino UNO と Netduino 3 でモーターシールドを使う

leave a comment »

今年の2月から毎月第一土曜日と決めて神戸三宮の会議室を借りて「ラボワーク」と題したマイコンボードの勉強会をしている。11月は第10回目になる。

ラボワーク LW10 - Arduino UNO と Netduino 3 でモーターシールドを使う
https://adminteachers.wordpress.com/2016/10/26/%e3%83%a9%e3%83%9c%e3%83%af%e3%83%bc%e3%82%af-lw10-%ef%bc%8d-arduino-uno-%e3%81%a8-netduino-3-%e3%81%a7%e3%83%a2%e3%83%bc%e3%82%bf%e3%83%bc%e3%82%b7%e3%83%bc%e3%83%ab%e3%83%89%e3%82%92%e4%bd%bf/

4月から毎回テーマを決めてやっている。使っているマイコンボードは Arduino UNO 系のものと Netduino だ。これらのマイコンボードを使うためにドライバを導入したり IDE を設定したりといった準備からはじめて、各種センサやシールドを使ってきた。シールドとは Arduino UNO に取り付ける拡張ボードのことで、様々なシールドが各社から発咳されており、Netduino はこれらのシールドと I/O ピンコンパチブルなので使うことができる。

センサを使い、L チカ、LED チューブなどの制御プログラムを試してきたが、今回からしばらく「動く」ものを試す。まずは「サーボモーター」と「DC モーター」をモーターシールドを使って動かしてみる。「サーボモーター」は実際はモーターシールドを使わずにマイコンボードに直結してもいいのだが、モーターシールドを使った方が接続がわかりやすいだろう。DC モーターを使うにはマイコンボードからの電源供給ではなく別電源が必要になるが、その回路はモーターシールドがしてくれる。

アドミンティーチャーズのラボワークは、会の性質上「情報教育に関心のある方」としているが、必ずしも学校関係者に限定しているわけではないので、興味のある方はぜひ来てほしい。またノートパソコンの Arduino 開発環境は、当日ラボワークで設定することもできるし、ノートパソコンがなくても実習を楽しめる。マイコンボードやパーツは人数分用意している。このように、ラボワークはゆるやかな体験、交流の場なので、気軽に手ぶらで来てもらってかまわない。

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

p1410332_mid_640_480

p1410348_mid_640_480

p1410333_mid_640_480

p1410338_mid_640_480

なんと壊れやすい、と思ったサーボモーター SG90 は壊れたわけではなかった。

with one comment

Netduino と Arduino でサーボモーター SG90 を試している。ところが買った SG90 が次から次へと動かなくなった。それはこうだ。PWM でコントロールするコードを書いて動かそうとするのだが、サーボモーターには回転角の可動範囲がある。どの程度が可動範囲かがわからずに、コードで可動範囲を超える角度にコントロールしたとき、SG90 はぎーぎーと音を出してなんとか与えられた値の角度に回転しようとする。そして元に戻らなくなる。動かなくなる。

こうなってしまった SG90 は、次から正しい可動範囲の値を出力しても、ぎーぎーと苦しそうな音を出すだけで動かなくなる。俺はこの状態を「壊れてしまった」と思い込み、サーボモーターはなんと壊れやすい部品なのかと思っていた。サーボモーターはギアでトルクが大きくなっているので、軸を回そうとしても簡単には動かない。ところが試しに少し強く軸を回してみると、動かせることがわかった。無理に力を入れるとギアが壊れるらしいので、慎重に回す。すると SG90 の軸が可動範囲に戻ったようで、再び正しく動作するようになった。

サーボモーターを始めたとき、いろいろコードを試していて、このような状態になることは多いと思われる。このとき、サーボモーターのコントロールが効かなくなったとしても壊れたと思い込んではいけない。単価が安いため消耗品という認識があると、壊れたら買いなおせばいいと思いがちである。危うく俺も捨ててしまうところだったが、壊れたと思った SG90 は指で回してすべて復活した。

P1400428_mid_640_480

Written by Yoshio Matsumoto

2016年9月19日 at 4:36 PM

「ラボワーク LW05 – Netduino 3 と 38 種類のセンサキット体験」の報告

leave a comment »

今年2月から兵庫県神戸市の三ノ宮駅近くの会議室を借りてやっているマイコンボードの勉強会「ラボワーク」は今月で5回目となった。今回から本格的に Netduino を使うことにした。Netduino は Arduino UNO とI/Oピンコンパチブルのマイコンボードで、Microsoft の .NET Micro Fremework が動いており Visual Studio を使って C# をプログラミング言語として開発することができる。安価で手軽に使いやすい Arduino と C# の充実したライブラリを利用できるパワフルな Netduino の両方を取り上げることで、マイコンボードの活用の幅も広がると考えている。

P1160929_mid_640_480

今回は 38 種類のセンサーキットを試した。センサーキットを試すには、アナログポートで入力した値を取得して何かの形で表示しなければならない。そこで 4本の LED チューブを備えたマルチファンクションシールドを利用した。マルチファンクションシールドはラボワークの第3回で使ったことがあり、シフトレジスタを介して LED チューブをコントロールするようにできている。そこでアナログポート A5 からの入力値をダイレクトに数値で表示するサンプルスケッチを用意し、ボリュームをつないで確認した後に様々なセンサを取り付けて試した。

P1160933_clip_640_480

P1160936_mid_640_480

このセンサーキットには、キースイッチ、ロータリーエンコーダスイッチ、タッチセンサ、距離センサ、サウンドセンサ、人感センサ、レーザーセンサ、磁気センサ、磁気リードセンサ、磁気ホールセンサ、温度センサ、赤外線センサ、傾きセンサ、衝撃センサ、水銀センサ、心拍センサ、炎センサ、リードセンサ、光ブロークンモジュール、ジョイスティックモジュール、フォトレジスタ、バイブレーション、ブザー、フルカラーLED、点滅LED、5Vリレーモジュール、などが入っている。似た機能のセンサやアクチュエータが複数あり、どんなセンサなのか想像しがたいものもある。実際に使っても反応がわからないものもあった。またフルカラー LED のようにセンサではないものもあったが、それらは今回テストしなかった。

P1160932_mid_640_480

P1160937_mid_640_480

P1160939_mid_640_480

P1160944_mid_640_480

今回のラボワークでは、様々なセンサを体験しながら、それらをどう使うかという利用シーンについてもディスカッションができた。またアクチュエータについても試したいという希望もあった。次回以降、またこれらの結果をふまえてラボワークの企画を作っていく。興味のある方はアドミンティーチャーズのサイトから電子メールで申し込みをしてください。

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

アドミンティーチャーズの「ラボワーク」、第5回は「Netduino 3 と 38 種類のセンサキット体験」をする。

leave a comment »

今年2月から毎月第一土曜日と決めて神戸三ノ宮の会議室を借りてやっているアドミンティーチャーズの「ラボワーク」。第5回は「Netduino 3 と 38 種類のセンサキット体験」をする。

38 種類のセンサは、キースイッチ、ロータリーエンコーダスイッチ、タッチセンサ、距離センサ、サウンドセンサ、人感センサ、レーザーセンサ、磁気センサ、磁気リードセンサ、磁気ホールセンサ、温度センサ、赤外線センサ、傾きセンサ、衝撃センサ、水銀センサ、心拍センサ、炎センサ、リードセンサ、光ブロークンモジュール、ジョイスティックモジュール、フォトレジスタ、バイブレーション、ブザー、フルカラーLED、点滅LED、5Vリレーモジュール、などだ。似た機能のセンサやアクチュエータが複数あり、どんなセンサなのか想像しがたいものもある。今回はセンサキットを買っただけで使っていない。ぶっつけ本番の、まさに「ラボワーク」だ。

P1160745_mid_640_480

また今回から再び Netduino を取り上げる。Arduino と Netduino の両方でプログラミングをする。Netduino はモデルチェンジをしており、Netduino 2 から Netduino 3 となっている。Netduino 3 では I/O ポートが独立したコネクタでボードの片端にまとめられているのでセンサなどを接続しやすい。

P1160846_mid_640_480

P1160848_mid_640_480

第5回ラボワーク「Netduino 3と 38 種類のセンサキット体験」の詳細は、アドミンティーチャーズの Web サイトで。

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

アドミンティーチャーズ「ラボワーク LW05 – Netduino 3 と 38 種類のセンサキット体験」
https://adminteachers.wordpress.com/2016/06/03/%e3%83%a9%e3%83%9c%e3%83%af%e3%83%bc%e3%82%af-lw05-netduino-3-%e3%81%a8-38-%e7%a8%ae%e9%a1%9e%e3%81%ae%e3%82%bb%e3%83%b3%e3%82%b5%e3%82%ad%e3%83%83%e3%83%88%e4%bd%93%e9%a8%93/

<概要>

日時:2016年6月4日(土)19:00~20:00
場所:神戸市青少年会館 サークル4号室(6階)
        (前回の勤労会館と同じ建物です)

神戸市中央区雲井通5丁目1番2号
最寄駅は三宮(JR、阪神、阪急、神戸市営地下鉄)徒歩2分から5分
神戸市勤労会館へのアクセス

対象:高等学校の情報教員、または情報教育に関心のある方
定員:15名
申し込み:電子メール

宛先 ad-teachers@outlook.com
件名 「2016年6月4日 ラボワーク LW05 申し込み」
メールの本文にご氏名、所属をお書きください。

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時間ほどの体験コーナーを終えて家に帰ってくると、気が緩んで疲労と睡魔に襲われて夕方まで昼寝をしてしまった。小学校の先生はたいへんだ、ということも実感した。