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

InfoPath & SQL Server !

Archive for the ‘TCP/IP’ Category

Orange Pi Zero を買った

leave a comment »

先日買った Orange Pi One が気に入ったので、次に Orange Pi Zero を買ってみた。

P1470922_mid_640_480

パッケージは Orange Pi One のときのものと同じ。パッケージを開けると、Orange Pi One と同じように、Orange Pi Zero 本体と簡潔な一枚のプリントが入っている。

P1470776_mid_640_480

P1470926_mid_640_480

実に小さな筐体にぎっしりと機能が集積されているという感じだ。機能美を感じる。スペックは次の通り。

CPU H2 Quad-core Cortex-A7 H.265/HEVC 1080P
GPU Mali400MP2 GPU @600MHz Supports OpenGL ES 2.0
Memory (SDRAM) 256MB/512MB DDR3 SDRAM(Share with GPU)(256MB version is Standard version)
Onboard Storage TF card (Max. 64GB)/ NOR Flash(2MB Default not posted)
Onboard Network 10/100M Ethernet RJ45 POE is default off
Onboard WIFI XR819, IEEE 802.11 b/g/n
Audio Input MIC
Video Outputs Supports external board via 13pins
Power Source USB OTG can supply power
USB 2.0 Ports Only One USB 2.0 HOST, one USB 2.0 OTG
Buttons Power Button
Low-level peripherals 26 Pins Header, compatible with Raspberry Pi B+ ,13 Pins Header
LED Power led & Status led
Supported OS Android, Lubuntu, Debian, Raspbian
Product size 48 mm × 46mm
Weight 26g

オンボードにイーサネットのコネクタがあり、かつ、Wi-Fi モジュールも装備している。だが HDMI コネクタはなく、画面出力をするには拡張ボードが必要だ。電源は micro USB コネクタから給電できる。このスペックからすると、ネットワーク接続に最適化された軽量の IoT モジュール、という位置づけになるだろう。

Orange Pi は中国の Shenzhen Xunlong Software CO., Limited の製品だ。

Written by Yoshio Matsumoto

2017年4月8日 at 9:47 PM

2016年10月1日のアドミンティーチャーズのラボワークでは、ESP8266 WiFi モジュールを搭載した Arduino WeMos D1 を 2台使い、一方を WiFi アクセスポイント、もう一方を WiFi クライアントとして接続し、Web サービスでデータ通信をする。

leave a comment »

アドミンティーチャーズのラボワークでは、8月と9月にESP8266 WiFi モジュールを搭載した Arduino WeMos D1 を使って通信を試した。WeMos D1 は安価で手に入れやすいマイコンボードで、実習教材にも適していると思われる。しかしまとまった解説やサンプルスケッチがなかなか見当たらない。多く見られるのは WiFi クライアントにしてアクセスポイントに接続し、Web サービスを実装するというものだが、WiFi クライアントにすることや Web クライアントを実装する事例は少ない。試行錯誤が必要だったが、うまく通信できるようになった。

今回の「ラボワーク」では 2台の WeMos D1 を使う。一方の WeMod D1 を WiFi アクセスポイントの設定にし、Web サービスを実装する。Web サービスでは、アナログ I/O ポート A0 に接続したボリュームの電圧を Web ページに表示するようにしておく。もう一方の WeMos D1 は WiFi クライアントの設定をし、起動したら WiFi アクセスポイントにした WeMos D1 に接続するようにし、Web クライアントを実装して Web ページを取得し、HTML テキストからボリュームの値を取り出して Multifunction Shield の 7セグメント LED に表示する。

マイコンボードが互いに WiFi 接続できれば応用範囲が広がるだろう。また Web サービスや Web クライアントを実装することで、Web サービスの仕組みも理解できる。

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

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

P1400528_mid_640_480

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

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 給電スイッチングハブを持ち歩き、あちこちでネットワークプログラミングをすることを楽しみにする。

Xbox360 のシステムリンクプレイが可能なゲーム – FORZA MOTORSPORT 2 はシステムリンクプレイに対応している

leave a comment »

Xbox 360 のシステムリンクプレイとは、2 台の Xbox 360 本体をケーブルで接続したり、最大 16 台までの本体をネットワークで接続したりできるマルチプレイヤー ゲームの方法だ。Xbox 360 本体は LAN ケーブルで接続し、ピアツーピア型のローカルネットワークになる。インターネットに接続しなくても楽しむことができるのだ。これは Xbox 360 の初期型から使うことができる機能だ。インターネットに接続せずにネットワーク対戦をするので、XBOX LIVE での対戦と区別するためにシステムリンクプレイという用語が使われている。

もちろんゲームがシステムリンクプレイに対応していなければならない。たいていの Xbox 360 ゲームは XBOX LIVE による対戦に対応しているが、リンクプレイに対応しているゲームは少ない。ちなみに手持ちの Xbox 360 ゲームでシステムリンクプレイに対応しているものを探してみた。

1.HALO Combat Evolved Anniversary: システムリンクプレイ 2-16 人

P1100659_mid_640_480

P1100660_clip_640_480

2.HALO 4: システムリンクプレイ 2-16 人

P1100661_mid_640_480

P1100662_clip_640_480

3.Gears of War Judgement: システムリンクプレイ 2-10 人

P1100663_mid_640_480

P1100664_clip_640_480

4.Forza Mortorsport 2: システムリンクプレイ 2-8 人

P1100665_mid_640_480

P1100666_clip_640_480

5.Project Gotham Racing 3: システムリンクプレイ 2-8 人

P1100667_mid_640_480

P1100668_clip_640_480

6.Project Gotham Racing 4 : システムリンクプレイ 2-8 人

P1100669_mid_640_480

P1100670_clip_640_480

俺はワイヤレスレーシングホイールを持っているほどレーシングゲームが好きで、とりわけ Forza Motor Sport は大好きだ。しかし Forza Motor Sport 2 がシステムリンクでマルチプレイができるとは気が付かなかった。ワイヤレスレーシングホイールと Xbox 360 を 2 セット用意して並んでゲームをしたらヒートアップするだろう。ちなみに Forza Motor Sport も 3 、4 、HORIZON はシステムリンクプレイに対応していないようだ。またテストドライブアンリミテッド Test Drive Unlimited、ニード・フォー・スピード・シフト Need for Speed Shift もシステムリンクプレイに対応していない。

神戸SQL Server Users GroupのSQL Serverセミナー(初級1)を実施した

leave a comment »

校務の情報化にはデータベースの知識と技術が必要なことから、SQL Serverを勉強するコミュニティを作った。とりわけ今年度から指導要録のデータベース化が一歩前進することから、各学校の担当者はデータベース化に取り組まざるを得ないはずだ。

神戸SQL Server Users Group
http://kobesqlserverusersgroup.wordpress.com/

昨日、2013年11月9日(土)には神戸SQL Server Users Groupと特定非営利活動法人 情報技術相互支援協会の共催で、SQL Serverセミナー(初級1)を開催した。

このSQL Serverセミナーでは、SQL Serverの初心者がSQL Serverの基礎を学び、データベースを使ったシステムを作り運用することができるようにすることを目標としている。1回のトレーニングを90分とし、初級講座を1、2と分けて企画した。初級1ではSQL Management Studioの使い方、テーブル作成、データベースダイアグラム、ビューとリレーションシップ、データの型、簡単なSQL文、を内容とした。初級2ではストアドプロシージャ、トリガ、ユーザー定義関数、データベースダイアグラム、SQLの応用、を計画している。

初級セミナーは1と2でおおよそ基本を網羅するように考えたが、やはり90分では深まりに欠ける。あらかじめ用意した初級1のプリントをひととおり網羅したが、やりたいと思っていた直積やPIVOTまで説明できなかったし、SQL文もごく基本的なものに留まった。次回は初級1.5的なセミナーとし、フォローアップを考えている。

今後もSQL Serverセミナーは神戸三宮で定期的に開催する予定だ。日程は決まり次第、神戸SQL Server Users Groupのblog http://kobesqlserverusersgroup.wordpress.com/ に公開するので、興味がある人はチェックしてほしい。