You can read this blog in any language using google translate as follows:

Goto http://translate.google.com/
Paste URL in the box and select "Japanese for From Language" and "To Language". Then click "Translate".

English translated pages are here:
http://bit.ly/xPuXoy

你可以閱讀這個博客,在任何使用“Google”的語言翻譯

本ブログのアクセス統計: 60万アクセスを達成しました。ご訪問ありがとうございました。

60万アクセスまでの経過

2009年12月に始めた本blog。2011年7月ごろに10万アクセスを達成し、2011年12月13日には15万アクセスを達成。
その後、私も更新しておらず、アクセスは少し減りましたが、3月1日には18万アクセス。2012/4/18に20万アクセス、2012/8/21に25万アクセス、2013/1/18に30万アクセス、2013/12/17に40万アクセスを達成しました。しばらく見ていなかったら、2015/5/1に50万2584アクセスになっていました。またまた、しばらく更新しないうちに、2017/6/11に60万7197アクセスになっていました。2018/7/7 .. おお七夕 .. には63万0656アクセスになっていました。久しぶりに更新しました。
ラベル IoT の投稿を表示しています。 すべての投稿を表示
ラベル IoT の投稿を表示しています。 すべての投稿を表示

2017年6月12日月曜日

RaspberryPIを使って、コンセントを制御する。


久々に投稿します。かなりネタが溜まっているので、順次投稿し、本稿も随時加筆します。
RaspberryPI 2 modelB v1.1 を使って、電灯制御を作っている。

完成した基板とRaspberryPi (ずっと、ブレッドボード版を使っていたが..)

完成した基板
完成した基板とRaspberryPI

基板裏面とRaspberryPI
基板裏面とRaspberryPI

注意)
 SMKN(互換品)の430MHzの送受信カードセットは、5V CMOS信号でないと正常動作しない。最初に作ったブレッドボード版ではたまたま動作していたが、上記写真のはんだ付け版では、動作しなかった。そこで、トランジスタを2段使ってRaspberry Piの3.3V TTL出力を5V CMOS信号に変換する回路を挿入した。1段だと論理反転するので、2段にして論理反転を防ぎ、Raspberry Pi側のプログラムがそのまま使えるようにしている。


図. はんだ付け版 430MHz無線電灯制御ボードの回路図



補足)
 リモコン信号を受信して、LEDを点滅したり止めたりするDaemon もおまけで走らせている。

方針)

  1. 他にもRaspberryPI, Raspberry PI3 BやRaspberryPI Zero W等も購入した。
    おいおい拡張したい。
  2. RaspberryPI 3B+ には、Ubuntu mateをいれ、Elecrow RPA05010R HDMI 5-Inch 800x480 TFT LCD Display with Touch Screen Monitor for Raspberry Pi B+/2B/3B をamazon.comで購入して、接続しタッチパネル操作できるようしている(以下写真)。DRAMも多いし、CPUも速い(別途投稿したい)
  3. Raspberry PI 2 modelB v1.1はRaspbian Wheezyで使っている。設定法や上記Ubuntu mateの設定法は別途記事にする。(上記、Ubuntu mateやJessieとかも入れてみたが、やはり、木の実マークのWheezyが良いかも)
  4. 電灯制御に関する記事: https://www.samkear.com/hardware/control-power-outlets-wirelessly-raspberry-pi の通りにやった。

    1. ここではEteckcity という430MHzの無線のリモコンコンセントを使う。
    2. リモコン制御はSMKNという430MHzの送受信カードセットを使う。信号はRS232Cのような、調歩式の振幅変調(1,0)コーディングではなく、パルス幅(FM)コーディングなので、RaspberryPI等のGPIOを使うのが良さそう。
      1. 以下に書いたwiringPIライブラリを使って信号を入出力するバイナリがある。
        1. 送信機で押された無線コードを表示するRFSnifferを起動して、無線コード(10進6桁から7桁)を得る。
        2. codesendというアプリにコードを与えると無線送信する。
      2. このカードも大変安い。5個入りパックの無名ブランドはもっと安い。
    3. 以下にamazon.comでの値段を掲載する。
  5. 上記では、wiringPIというパッケージを使い、GPIO (RaspberryPIシリーズの入出力ポート)を制御している。
    1.  GPIOポートの結線図:: https://projects.drogon.net/raspberry-pi/wiringpi/pins/  
    2.  例題LED点滅: http://wiringpi.com/examples/blink/
  6. 上記の点滅を改造して3色LEDの点滅アプリ (blinkRGB) を作った。root(特権ユーザで実行する必要があるが、以下のようにつかう
    1. 自動点滅: 引数なし。以下のように点滅する。
    2. 所定点滅: (R,G,B) = で所定色を指定。(1,1,1) = 7が白を示す。4が赤、0が黒など。
  7. スイッチで電灯を点滅させたいので、Eteckcity から電線を引き出した。従来、TP-Link Smart Plug w/ Energy Monitoring http://amzn.to/2scgjzr  からスイッチを引き出していたので、このプラグが入るジャックにして、コンセント部分を入れ替えて使えるようにした。


    従来のTP Linkのもの

    引き出した線が繋がる、壁スイッチ

    改造作業。TP LinkもEteckCityも、もともとスイッチがあるので、そこから線を引き出すだけ
    左: 従来のTP Link,  右: EteckCityにつけた壁スイッチへのコネクタ。
  8. RaspberryPIへ外出先からのアクセス
    1. RaspberryPIは、192.168.のローカルLANからしかみえない。
    2. Broadband routerからsshポート(安全のためport番号は規定の22番とは全然違うものにしている)をポートマッピングしている、ゲートウェイのLinuxサーバ ホスト名: Linux02 がある。
    3. Linux02は No-IPのDynamicDNSサービス(有料。そうしないと更新が面倒)を使いホスト名を与えてある。無料だったminiDNSはサービスが打ち切られた。
    4. RaspberryPIのapache2, sshdに対して、Linux02でsshトンネルを掛けて、外部からアクセスしている。sshポートが特殊なうえ、rsaのprivate鍵がないとログインできないので、ハッキングに対する安全性は高いと思う。
  9. 電灯制御のweb pageを改造している。
    1. 設定部分のファイルをJSONにして分離。
      1. 部屋・電灯の名前、受信機がないスイッチ、つながっていない受信機などが分かるアノテーションをいれた
    2. 読み込み部分とtrigger部分を分離
    3. デバッグ用表示を追加: デバッガphpdbgを使おうとphp 5.6をコンパイルしてみた。php 5.6は、phpdbgが使えるまでには至らず。
    4. タイマー設定のJSONを読み込み表示。(末尾に写真をつける)
      1. formのradio buttonでのPOSTにしたが、いちいちhtmlを読み込むのは面倒なのでJavascript化したい。
      2. スイッチの状態で色を変え、また、現在の状態をJSON (or cookie) に保存したい。
      3. 肝心のタイマーのコード(多分PHP)を完成させる。
制御画面)

現状のもの:Allでは全部のリモコンにon/off信号を送る。webからのon/offは動作している。

タイマーは、JSONの設定ファイルの時刻設定を表示。ただし、タイマーの機能をする本体はまだない。タイマーformのラジオボタンもJavascript化する予定。。

リモコンパラメータなどが入った設定JSONファイルを読み込み、表示も自動作成する。
送信ボタンだけで受信機がない行を排除した表示。つかっていないコンセントを表示しない仕様にも簡単に切り替えられる。

上記と違い、送信機にある全部の無線信号を表示させたもの。

記事のものをとりあえず動かした版、手でhtmlを改造してB1,B2,B3を追加。

2014年9月14日日曜日

Intel Edisonボードを使ってみた


San Franciscoの展示場Moscone Westで2014/9/9-9/11に開催されたIntel Developer Forum 2014 の目玉はIoT(Internet of Things)つまり、インターネットに繋がる極めて様々な装置・端末、ないしは、小型の常時稼働型・超低電力デバイス。

IDF会場 2Fロビー: Edisonを使ったIoTデモのブース
この他にも多数
 
スマホとそれに続くtabletでARM陣営の後塵を拝し、いまIntelは2 in 1 PCなどで挽回を図っている。 それらの先には、話題のApple watch  http://www.apple.com/jp/watch/technology/ やGoogle Glassや、もっと小さなセンサーのデバイスがやってくる。ここではARM以外にArduinoなどの選択肢もあり、まだエコシステムの構築競争が始まったところである。Intelはそこを最初から押さえたいのであろう。Intelの2 in 1 PC/Tablet での狙いについては、以下に書いた。

2014年9月15日月曜日: Intel の14nmプロセスの期待と課題 - IDF2014から

余談) 9/9-9/11という911テロを彷彿される開催時期。というよりも、AppleのiPhone6やiWatchの発表も2014/9/9に行われており、年末商戦とかにも向けて展示会が多い時期で人が移動する時期をテロが狙ったと考えた方がよいのだろう.....
IDFのshow caseの中央でも、組み込み評価ボードEdisonを展示していた)
IDF showcase中央のEdisonブース
Edisonブースに技術情報を聞きにいった所、「面白い評価アイディアを持っている人には、無料で配っている」ということらしく、「あそこのブースでATOMのサーバを展示しているのだが...」と話を切り出したところ評価ボードがもらえた。私の横で話をしていた方は、欧州からの大学の先生らしく、「組み込み系の講義の教材にする」と言ってもらっていた。

調べてみるとamazonでも99ドル http://amzn.to/1BC0myN で売られる予定(2014/9/16リリースだとのこと.. 一般発売前のレア品だったのか... )。

結局おもちゃが3つに増えた)
組み込み評価ボードたち
  1. 左上) 自作PIC (これは16F1827を使った、binary表示時計) - 2ヶ月ほどまえにハンダ付け。PICのプログラムはこれから...
  2. 左下) MicroView - これはArduino。Crowdfundingのkickstartで昨年末注文したものが、2014年8月中旬に届いた。
  3. 右) Intel Edison (これは22nm ATOM silvermont) - IDFでもらってきたもの。
    今回は3について報告する。1, 2についても後日報告したい。
その他拙blogで既報のLinux/Unix 装置は以下のものがある)

iPhoneの脱獄 - これはBSD Unix
 最近のは、2013年12月24日火曜日 : Evasi0n7によりiOS7.x の完全脱獄に成功

2011年8月27日土曜日: MacOSにBSDコマンドを追加し、まとめてファイルをダウンロード

2011年10月23日日曜日: MacでBSDツールを利用する・大学の電子ブック
2011年9月4日日曜日: Nook Touchの脱獄 -- これはLinuxの上にDarvik VMなどを載せた構造のAndroid
2012年12月5日水曜日: Raspberry Pi
2012年12月9日日曜日: Linuxが走っているSDカード: PQI Air Card

2013年1月5日土曜日: 自宅にLinuxサーバを構築した

Edisonについて)
15.5 cm x8.5cm x 4cm の箱に入っている
箱の中から出てくる2つのボード

Edisonは葉書より一回り小さいベースI/Oボードと、SDカードより若干大きいサイズのCPUカード(メザニンボード) からなる。メザニンボードの上の銀色のEdisonパッケージはSDカードよりも若干小さい。

Edisonは、PCwatch記事 「Intel、SilvermontコアのAtomを搭載した新Edisonを公開」 に紹介がある。これによると、PoP(パッケージオンパッケージ)で、CPU上に、1GBのメモリと4GBのフラッシュメモリのストレージが乗せられており、Linux OSで動作しているとある。

IntelのProduct 情報: Intel® Edison Module によると100MHz動作の32bit組み込みx86 CPU QuarkやBluetoothも乗っているらしい。microSDカードのポートも有る。至れり尽くせり...
だが、RaspberryPIとは違って、HDMIとかVideo出力はない。

https://communities.intel.com/docs/DOC-23161 からdownloadできるpdfのボードマニュアルをみると、スイッチングDCコンがボードに搭載されており、外部電源を選択すれば7-17Vの外部DC入力で動く模様。
また、バッテリー動作も想定されており、Li-Ion電池を接続するポートもあり、バッテリーチャージャ機能も内蔵されている模様。以下、Li-Ionの件は出ていないが、上記リンクのpdfから抜粋したボードのブロック図。

Edisonボードブロック図
Sparkfunのボード)
Arduinoと周辺ボードの会社Sparkfunから、このEdisonCPUカードを含む、IoT開発用の小型のカードキットが売られている。https://www.sparkfun.com/products/13093

ここにある紹介videoを以下に掲載する。


基本機能だけの以下のsetで115ドルらしいが、他にもボードがあり各種IoTデバイスが作れそう。たとえば、Microviewと同じdisplay+sw+ジョイスティックのボードとか、3軸加速度計+3軸ジャイロ+磁気コンパスのチップ入りボードとかがある。

Intel® Edison Starter Pack: $114.95
Intel® Edison Sensor Pack: $69.95
動かしてみた)
箱の裏に、"maker.intel.com"とある。これを入れると、EdisoとGalireoのサイト: Intel Makers: What Will You Make? に行く。

ここのEdison のリンクをクリックすると http://www.intel.com/content/www/us/en/do-it-yourself/edison.html つまり、先に示したリンク Intel® Edison Module  に行く。

Edison Getting Started Guide - Mac を参照しつつ、Macを母艦にしてEdisonを動かしてみた。まず、上記に紹介があるように、ボードを組み立てて、Edison用のArduino SDKをダウンロードする(これはJavaで動いている)。microView用のがver1.5.7で、Edison用のがver1.5.3なので、それぞれArduinoMicroview.app, ArduinoEdison.appと名前を変えて/Applicationsにおいた。(work arewの設定を変えていないので、ファイルを共有しているらしく、Edison用を起動すると、microviewライブラリが無いとエラーになるので今後対応する)
microUSBを接続
まずmicroUSBを接続)microUSB側を使うには、その上にある小さなスイッチをmicroUSB側に倒す必要がある。通常USBを使うと電源アダプタが必要になる模様。

写真上側のmicroUSBは電源供給(ないしは、targetデバイス向けなのかもしれないが..)
下側のmicroUSBが通信用であり、ともにPCに接続する。

シリアルデバイス)
上側のmicroUSBを接続しただけでは/dev/cu.*は何も変わらないが、下側のmicroUSBを接続すると、以下の3つのデバイスができた。
  • /dev/cu.usbmodem1421241
  • /dev/cu.usbmodem1421243
  • /dev/cu.usbserial-A703ZBFN
ArduinoのSDKアプリを起動して設定)
冒頭の Edison Getting Started Guide - Mac にあるように、BoardをEdisonに(もともとそうなっていたが)して、Serial Portをリストの一番最後の /dev/cu.usbserial-A703ZBFN に設定して、uploadをかける。コンパイルは成功するものの、uploadを数度試して失敗する。



Arduino Intel - SDK画面
upload 失敗でtimeout

端末画面からlogin)
uploadしなくてもlinuxが立ち上がっているはずなので、ガイドに従い、terminalからloginを試した。
上記のdevice名を用いて、Macのterminalから以下の様に打つ。($の前はプロンプト)
Satoshi-MacBA:~$ screen /dev/cu.usbserial-A703ZBFN 115200 -L
すると、login画面が表示される。
ガイドにあるようにuser名は、rootでパスワードはそのままreturn (パスワードなし) でloginできた。

最初に電源を入れた後、そのまま引っこ抜いたので、ファイルが壊れていて、fsckが走って、file systemを修復していた。linuxなのでshutdown処理は必須。

WiFiを有効化)
root@edison:~# configure_edison --setup
(#の前はプロンプト)を、やってみるとsetupオプションが変わっていて、インタラクティブには設定できない。エラーメッセージにある、ヘルプを参考に以下のコマンドでwifiを設定。WEP, WPA2-Personal, WPA2-Enterprizeが選択でき、SSIDステルスにも対応している。
root@edison:~# configure_edison -w

WiFiを設定するとsshでつながった。sshして、
  • root@edison:~# uname -a
  • root@edison:~# cat /proc/version
  • root@edison:~# cat /proc/cpuinfo
をやったのが以下画面。結果をまとめると、順に
  • OS名はLinux edison 3.10.17-poky-edison
  • 同じくOS名だが GCC4.8.2でコンパイルされ、SMP(Symetricマルチコア並列処理)が有効化されている
  • プロセッサ情報)
sshでwifi経由でEdisonに接続

最後のprocessor情報をみると2 core のsilivermot 500MHz が乗っていた。bogo mips は998.4 -- BogoMips ではマルチコア分も積算されている模様) つまりSDカード大きさで1000 MIPS。

DRAM 1GB, ストレージ4GB... 私が大学院の頃は巨大で何千万円もしたVAX11 780が1MIPSだったので....隔世の感がある。

shutdown)
root@edison:~# shutdown -h now

を実行。ssh接続は速攻で切れて、Macのscreenコマンドで繋いでいたシリアルコンソールでは、以下の画面がでる。
shutdown時のコンソール画面
CPUは無事haltして、ベース基板のLEDも消える。
が、screenで繋いでいるコンソールのUSBデバイスが「USB接続が不正に切り離されました」とエラーをだすので若干気持ち悪い。

おまけMicroviewとの関係)
MicroviewはSparkfun https://www.sparkfun.com/と言う会社が製造販売している。
Sparkfunのロゴ


Microviewを立ち上げると、上記の会社のロゴにある炎のマークが表示される。
Microviewのサイト: http://learn.microview.io/

IDF showcase中央のEdisonブースでは、この会社が展示していて、この炎のマークがあったのでピンと来た。説明員に「kickstarterで買ったmicroviewが最近やって来たけれど、あれって良いよね」と言ったら、この説明員がmicroview SDKの一部を担当したらしく、彼も嬉しそうで話しが弾んだ。

前述のようにEdisonでも、I/OボードではSparkfunが大量にArduino用に作成している周辺デバイスに対応していると思われ、Arduinoの SDK、I/Oライブラリを使って開発を容易化しているのだろう。IntelもArduino向けI/Oボードの品揃えが豊富なSparkfunと組むの有効だと考えたのだろう。

組み込みとかIoT、いやサーバの部門でも、ソフトやらSDKの共用化は進んでいる。開発が大変だし、使う側での勉強する手間も省ける効能もある。エコシステムとかオープン化といわれる潮流である。

一つ使って環境を知っておけば、IoT業界で話が弾むきっかけになるかもしれない。