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

InfoPath & SQL Server !

Posts Tagged ‘アルドゥイーノ

ESP8266 Wi-Fi SoC を搭載した nodeMCU には大きさ、形が異なるいくつかのタイプがある。一見同じもののように見える 2つのタイプを比べてみる。

leave a comment »

いわゆる nodeMCU と呼ばれるマイコンボードは、オンボードに ESP8266 の Wi-Fi モジュールを搭載しており、IoTデバイスとして安価で使いやすいものだ。IoT ではマイコンボードをネットワークにつなぐことに大きな意味があるのだが、他の多くの安価なマイコンボードではネットワーク関連のデバイスはオプションパーツ扱いになっていることが多い。パーツがオプションであるということは、自由度がある代わりに本体とパーツ、間のインタフェースと、トラブルシュートに要する項目が増える問題がある。その点、オンボードでネットワークモジュールを搭載しているマイコンボードでは、それらを考慮する必要がないので開発が楽だ。しかも nodeMCU は極めて安価である。

nodeMCU は日本の Amazon でも買うことができるが、大きさや形が異なるいくつかのタイプがある。このうち、よく似ていて一見すると同じもののように見える 2つのタイプを比べよう。

P1490289_edit_mid_640_480

こうして横に並べて比べると違いがわかるが、ネットで注文するときなどは、よく見ないと違いがわからない。まず全体の大きさが違うのだが、これらを別々のページで見たときには、大きさではわかりにくいだろう。そこで比べるには、搭載している部品の配置に注目するといい。わかりやすいのは USB コネクタの近くにある、おそらく USB シリアルインタフェースチップだと思われる黒い IC チップだ。写真の右側、「LoLin」と呼ばれる nodeMCU では横長のチップが搭載されているが、左側の「Amica」と呼ばれる nodeMCU では正方形の小さめのチップが搭載されている。あと違いが目に付くのは、左の「Amica」のきれいに整列したチップ抵抗だと思われる部品、あるいはチップコンデンサと思われるオレンジ色の大きめの部品あたりだろう。

P1490291_mid_640_480

裏から見れば違いはよくわかる。写真の右側には、おそらく雲をイメージしてデザインしたシンボルマークと「NODEMCU Amica」の名前がある。右側は「LoLin」と書かれている。

さて、この 2タイプの nodeMCU だが、プロトタイピングにおいて大きさの違いが使い勝手に影響するところは、一般的な長潟のブレッドボードを使うときに、大きい方の「LoLin」ではピンの穴を全部覆ってしまい、信号を取り出せなくなるところだ。これに対して小さい方の「Amica」では、かろうじて 1ラインは信号を取り出せるように残っている。

P1490294_edit_640_480

もし「LoLin」を長潟のブレッドボードで使いたいなら、2枚ならべて使うことになるだろう。

P1490295_edit_640_480

P1490291_mid_640_480

広告

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

leave a comment »

P1460655_mid_640_480

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

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

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

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

「ラボワーク LW13 - Arduino UNO と Netduino 3 で リレーを駆動して DC モーターを制御する」の報告

leave a comment »

今回のラボワークでは、マイコンボード用のリレーユニットを使い、DCモーターを制御した。マイコンボードは Netduino 3  と Arduino UNO R3 のクローンを使い、リレーユニットは4回路と8回路のものを使った。

P1460386_mid_640_480

DC モーターは電圧 3 ~ 6V の模型用の安価なものを用い、端子にはあらかじめ短いリード線を半田付けしておく。リード線の端には錫メッキ線を半田付けし、熱収縮チューブで多いブレッドボードに挿し込むことができるように加工しておいた。

P1460390_mid_640_480

リレーユニットはマイコンボードなどで使うことを想定した、4回路と 8回路のものを使った。どちらも同じように利用できた。リレーユニットの駆動電流はそれほど多くなく、マイコンボードの I/O 端子の出力で十分駆動できた。前回、NPN エピタキシャル・ダーリントン・トランジスタ TIP120 を使った駆動実験をしたが、安定した駆動には 6V 程度の動作電圧が必要だったが、リレーユニットを使う方が簡単でよい結果となった。

P1460398_mid_640_480

「ラボワーク 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 申し込み」
メールの本文にご氏名、所属をお書きください。

アドミンティーチャーズのラボワーク LW04 「W5100 イーサネットシールドを使ったWebサービスのプログラミング」の報告

leave a comment »

今年2月から毎月第一土曜日と決めて神戸三ノ宮の会議室で行っているマイコンボード勉強会「ラボワーク」。5月は「W5100 イーサネットシールドを使ったWebサービスのプログラミング」をテーマにした。

P1100979_clip_640_480

このイーサネットシールドは Arduino の事実上のデファクトスタンダードなイーサネットシールドで、Wiznet の W5100 チップが使われている。Arduino IDE 開発環境で標準でライブラリが用意されているのでプログラミングもしやすい。

このイーサネットシールドを使って Web サービスを実装するには次のようにする。

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

void setup() {
  Ethernet.begin(mac,ip);
  server.begin();
}

void loop() {
  EthernetClient client = server.available();
}

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

たったこれだけで Web サービスが動く。あとは受け取ったデータを解析し、適切な HTML テキストをクライアントに返すだけだ。

クライアントに対してテキストを送り返すには次の一行でいい。

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

  client.println("This is my web");

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

ただこれを単に void loop() に書くだけでは、ひたすら際限なく同じテキストをクライアントに送り続けることになる。そこでクライアントから接続要求があったときに、テキストを一回だけ送るという処理が必要になる。

たとえば次のスケッチは接続要求のキャラクタを文字列につなぎ、文字列に「GET」があれば HTML のリクエストだと判断し、一回だけテキストを返してサービスを終了する。

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

void loop() {
  EthernetClient client = server.available();
    if(client.connected() == 1){
    c = client.read();
    stc.concat(c);
    if(client.available() == 0){
      Serial.println(stc);
    }
  }
  if(stc.indexOf("GET") != -1 && client.available() == 0){
    client.println("This is my web");
    client.stop();
    stc = "";
  }
}

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

これでクライアントから接続すると「This is my web」の文字がブラウザに表示される。正しい HTML 文ではないが、表示されるはずだ。

クライアントからの要求が POST メソッドだったときは、受け取ったテキストを解析して必要な処理をさせることができる。たとえば HTML 文にチェックボックスとボタンを用意して、8 x8 マトリックス LED をコントロールするようなこともできる。

P1160747_mid_640_480

P1160639_mid_640_480

しかし、メモリの制約だと思われるが、あまり長い HTML テキストを送ることや POST メソッドも長いメッセージを受け取ることができない。そこで、HTML テキストは SD カードに保存しておき逐次読みだして送信することを考えなければいけない。また POST メソッドも不要なテキストを削除して処理する必要がある。

イーサネットシールドになぜ SD カードスロットが付いているのかが疑問だったが、実用的な Web サービスを構築するには長い HTML テキストを処理する必要があるからだ、ということがよくわかった。

Arduino と Web サービスは今後も「ラボワーク」でとりあげることにする。無線ネットワークもやってみたい。わかったことの詳細は、また別途項を改めて報告したい。

今週末は神戸三ノ宮でアドミンティーチャーズのラボワーク。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 通信の中身を明らかにすることもラボワークの目的とする。まさに「ラボ」という言葉にぴったりの時間にするように企画している。