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

InfoPath & SQL Server !

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

USBで給電できる Logitec の超小型スイッチングハブ LAN-SW03PSWE を買った。

leave a comment »

出先でイーサネットを実験できるように、USBで給電できるスイッチングハブを探していた。これが意外にない。たとえば、ホテルのイーサネットを WiFi にするような WiFi ルーターは何種類もあり、USB で給電できるものも多い。しかし有線のイーサネットハブで USB 給電できるものは少ない。俺が探したところでは、これ以外には他に2種類しかない。PLANEX 8ポート 10/100M スイッチングハブ FX-08Mini か BUFFALO 10/100Mbps対応 プラスチック筺体 AC&USB電源 3ポート ブラック スイッチングハブ LSW-TX-3EP/CUB だ。

このロジテックの USB 給電スイッチングハブは 2種類あって、もうひとつは LAN ポートが3つしかない LAN-SW03PSWE だ。どちらにしようか迷った。というのも、出先でイーサネットの実験をするには多くのポートは必要なく、3ポートあれば十分だからだ。しかし 5ポートの LAN-SW05PSWE が実売価格で 1,091円、5ポートの LAN-SW03PSWE が 945円。その差はたったの 146円だ。ほんのペットボトル飲料一本程度の違いしかない。応用場面を考えると 5ポートのものを選ぶのがいいだろう、と思った。

P1140033_mid_640_480

USB 給電できる WiFI ハブがあって USB 給電できるスイッチングハブの種類が少ないのには、どうやら消費電力も問題があるようだ。そこは確かに気になっていて、たとえばこの Logirtec の製品でも、商品電力を考えて、あえて 3ポートのものを選択することも考えた。しかしこのモデルは、使っていないポートの電力供給を制限する機能が入っているらしい。それなら 5ポートを選択しても大丈夫だ。

大きさもとってもコンパクトで、掌にすっぽりと収まる大きさだ。実に小さい。

P1140036_mid_640_480

ちなみに厚さはこんか感じだ。イーサネットの RJ45 コネクタの大きさを考えると、厚みはこれがほぼ限界だと思われる。薄い。

P1140038_mid_640_480

持ち歩くことを考えると少しでも重量が小さいほうがいい。だがこれも、スペック上では 3ポートのスイッチングハブが 29g、5ポートのスイッチングハブが 39gとあった。10gの違いは大きくない。実際のところ、購入した 5ポートのスイッチングハブ LAN-SW05PSWE をキッチンスケールに載せて量ると 38g だった。

P1140041_mid_640_480

さてこれを何に使うのかといえば、マイコンボードのイーサネットを使うプログラミング、Web サービスを実装するようなプログラミングを出先で試したいからだ。ちなみに先日、これを持ち出して近所のホームセンターのフードコートでプログラミングをした。快適だった。

P1140106_mid_640_480

もちろん家でも職場でもプログラミングをするが、ちょっとした空き時間、いつもとは違う空間でプログラミングをするのも楽しい。意外に作業がはかどる。ということで、これからもこの USB 給電スイッチングハブを持ち歩き、あちこちでネットワークプログラミングをすることを楽しみにする。

神戸三ノ宮で開催したアドミンティーチャーズの「ラボワーク 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/

Funduino の Arduino NANO 用インタフェースシールドを使う

leave a comment »

Funduino は Arduino 互換機や関連商品を開発、販売しているメーカーらしい。ドイツの Funduino.de のオフィシャルサイトがある。

http://funduino.de/

funduino.de_Web_mid_640

ちなみにアメリカのドメイン funduino.com は、おそらくドメイン失効でドメインセラーに乗っ取られてしまっている。

http://funduino.com/

funduino.com_Web_DomainSeller_mid_640

Arduino NANO は USB – シリアル変換モジュールを内蔵した Arduino で、コンピュータでスケッチを書き、USB ケーブルで接続してプログラムを送り込むことができるマイコンボードだ。使い方としては Arduino で現在最も流行している Arduino UNO と同じ感覚で使うことができ、Arduino UNO よりずいぶん小型である。この程度の大きさなら、邪魔なピンを外してしまい、そのまま機器に組み込んでもいいだろう。

P1110873_clip_640_480

Fig.1 Arduino NANO 表側

P1110874_clip_640_480

Fig.2 Arduino NANO 裏側

P1110929_clip_640_480

Fig.3 Arduino NANO と平成20年の 500円玉と 10円玉

P1110882_clip_640_480

Fig.4 Funduino の Arduino NANO 用シールド 表側

P1110888_clip_640_480

Fig.5 Funduino の Arduino NANO 用シールド 裏側

Arduino NANO は機器に組み込みことを想定した Arduino だが、I/O ピンが下向きにしか出ていないのでプロトタイピングには不便だ。そこでこの Funduino の Arduino NANO 用シールドを使ってプロトタイピングをしやすくする。このシールドは Arduino NANO の I/O ピン上向きに並べ、それぞれの I/O ピンの横に +VCC 電源と GND グランドを並べている。また AC アダプタジャックがあり、AC 電源を供給して動かすことができる。

Arduino NANO は FunduinoNANO 用シールドの上部ソケットに差し込む。

P1110897_clip_640

Fig.6 Arduino NANO を Funduino Arduino NANO 用シールドに挿す

P1110902_clip_640_480

Fig.7 Arduino NANO を Funduino Arduino NANO 用シールドに挿した

Arduino NANO を Funduino Arduino NANO 用シールドに挿すと、AC アダプターから電源を共有して Arduino NANO を動かすことができる。スケッチを送り込むときは Arduino NANO の USB コネクタを使う。

P1110904_mid_640_480

Fig.8 Funduino の Arduino NANO シールドに AC 電源を供給して Arduino NANO を動かす

P1110903_mid_640_480

Fig.9 Funduino の Arduino NANO シールドに取り付けた Arduino NANO にパソコンからスケッチを入れる

またこのシールドは、Arduino UNO とピン互換の穴があり、ピンを取り付ければ Arduino UNO のシールドを使うこともできそうだ。ただしこのシールドは、上に Arduino NANO が載るため、上から Arduino UNO 用のシールドをかぶせるにはピンの高さが足りないだろう。ピンを二重に載せるか長いピンを手に入れて取り付ける、あるいはシールドを通常とは逆に下に取り付けることなどを考えなければならないだろう。

Arduino NANO でプロトタイピングをするには便利なアイテムだ。

Written by Yoshio Matsumoto

2016年2月27日 at 12:18 PM

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

フォロー

新しい投稿をメールで受信しましょう。

現在1,452人フォロワーがいます。