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アクセスになっていました。久しぶりに更新しました。
ラベル Raspberry Pi の投稿を表示しています。 すべての投稿を表示
ラベル Raspberry Pi の投稿を表示しています。 すべての投稿を表示

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を追加。

2012年12月5日水曜日

Raspberry Pi

3,000円程度と安いARM11の実験ボード Raspberry Piが人気である。
世界的に需要があり、納期が数ヶ月以上かかるともいわれ、Amazon.comでは、35ドルのボードにプレミアがついて、即納なかわりに60ドルから75ドルの間の値段で売られている。

Amazon.comでプレミアつきで売られているもの http://amzn.to/SIA485


日本語サイト)
wiki pedia: http://ja.wikipedia.org/wiki/Raspberry_Pi
取り扱い店RSコンポーネンツ社のページ: http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi
良くある質問: http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&file=questions

本家サイト(英語):
Raspberry PiのHomepage(英語): http://www.raspberrypi.org
同ページからの良くある質問と回答(FAQ)英語: http://www.raspberrypi.org/faqs

カードの仕様)
  • USBが1つでEthernetがなく$25のmodel Aと、USBが2つでEthenetがつき$35のModel Bと2つがあった。最初はメモリは246MBだったが、最近は、Model Bでメモリが512MBのものが同じく$35で売られている。
  • ほぼクレジットカード大
  • Broadcom BCM2835 700MHz ARM1176JZFS processor with FPU and Videocore 4 GPU
  • GPU provides Open GL ES 2.0, hardware-accelerated OpenVG, and 1080p30 H.264 high-profile decode, GPU is capable of 1Gpixel/s, 1.5Gtexel/s or 24GFLOPs with texture filtering and DMA infrastructure
  • 512MB RAM
  • Additional specs: 10/100 BaseT Ethernet, HDMI, (2) USB 2.0, RCA video, SD card socket, Powered from microUSB socket, 3.5 mm audio out jack, boots from SD card, Size: 85.6 x 56 x 21 mm
  • Model B Revision 2.0 Board-only (no SD card, case, or cables)

各種Linuxが用意されている)
Linuxのダウンロードサイト: http://www.raspberrypi.org/downloads
  1. 普通に使うなら、Raspbian “wheezy” -- 今回は、これを利用、中身はDebian Linux
  2. ハードウェアボートとして、周辺の操作などに使うなら、Arch Linux ARM が良いようである
外付けハードの制御用に使う)
Arch Linux を使って、Raspberry PiのI/Oピンからいろいろ制御するものの紹介が以下にある。日本人としてiOS脱獄アプリ作成で有名な、もやしさんである。
http://hitoriblog.com/?p=9733 ここでは、LCDもキーボードも繋がず、有線LANだけでRaspberry Piを使っている。

究極のモバイルPC化?)
  1. 電源は、スマホ用の緊急用USB充電器を使う
  2. Bluetooth-USBのドングルをさして小さい携帯用スマホキーボードをつなぐ
  3. HDMI入力つきの小さなLCDを繋ぐ。
    1. http://amzn.to/SIM2yu (以下写真1)は、HDMI入力だが2万円と高価で、据え置き向け。ただしタッチパネル機能付き。Raspberry Pi本体よりも大きさも大分大きくて高価だが、タッチパネル付きつきなので、うまくタッチをLinuxに認識させられれば面白い。
    2. USB接続だが、http://amzn.to/SIMqgr (以下写真2) は8,000円と安い。携帯性も若干良さそう。
    3. 秋葉の秋月電気通商(以下URLから通販も可能)にいけば、http://akizukidenshi.com/catalog/c/cglcd/ のようなLCDが各種ある(以下写真3)が、HDMIに繋ぐのは大変そう。秋月の製品には仕様書とサンプル回路図がついていることが多いが。
      Raspberry PiにはIOポートがあるので、そこに直結できるかも知れないが、Linuxのdisplayドライバを書かないとならなくなる。
      だとすれば、WiFiをつけて、スマホからSSHやtelnetでloginして使えば、安いし、手間もかからない。電子工作魂は萎えてしまうが。。
写真1

写真2
写真3


Linuxの書き込み方)
windowsでのSDカード書き込み方法: http://chicklab.blog84.fc2.com/blog-entry-48.html

英語では、Windows/Macを含めていろいろなSDカードの書き込みが、 http://elinux.org/RPi_Easy_SD_Card_Setup に紹介されている。

Mac OS-X Mountain Lion (10.8.2)のterminalから書きこんだときの手法を以下に引用する
--- 引用開始 ---
$ df -h で差分を見ると。
/dev/disk2s1                        56Mi   17Mi   39Mi    30%      512       0  100%   /Volumes/Untitled/dev/disk3s1                        15Gi  2.1Mi   15Gi     1%        0       0  100%   /Volumes/Wheezy disk2s1の方は、SDカード内の仮ファイルなのでこれを取り出して、サイズをみてもdisk3s1に書くことが分かる。 
$ sudo diskutil unmount /dev/disk3s1  で、SDカードを取り出す。
$ ls -l ~/Desktop/2012-10-28-wheezy-raspbian.img -rw-r--r--@ 1 xxxx  staff  1,939,865,600 Dec  4 20:58 /Users/matsushi/Desktop/2012-10-28-wheezy-raspbian.img
と、ファイルサイズは1.9GBくらいある。disk3s1(これをblock deviceという)の場合には、rdisk3 (これをraw deviceと呼ぶ) に書けばよい。間違えて違うdiskを指定すると、そのdiskのデータが全滅するので注意が必要。 
$ sudo dd bs=1m if=~/Desktop/2012-10-28-wheezy-raspbian.img of=/dev/rdisk31850+0 records in1850+0 records out1939865600 bytes transferred in 112.574699 secs (17231808 bytes/sec)
というように、2分ぐらいで書けたとでる。が、体感的には5分くらい掛かった感じ。 
あとは、
$sudo diskutil eject /dev/rdisk3でdiskを安全に外せるようにしてから、取り外す。
---- 引用終わり ---
注意点) 
  1. USB Hubの認識には再起動が必要。そのままUSBを抜いて、Hubを差し込むと、認識画面になるが、結局は認識されなかった
  2. キーボードの認識がおかしく、記号の位置がおかしい、「"」を打つと「@」になる。他のキーは英語配列になっている。英語101のキーボードなので、英語101に設定したはずだがおかしい。
  3. USB WiFiも念のため、シャットダウンしてから挿入したが、これは、電源onのままでもよかったかもしれない。SSIDブロードキャストをoffにしているとつながらない。GUIメニューではなく、設定ファイルを変えればつながるかも知れない。
  4. コマンドの起動が非常に遅く、ブラウザ(Midori)に文字を入れるときも、ときどき反応が非常に鈍くなる。慌てずに、反応がなければ待つ。CPUが非力なのと、DRAMが少ないためだと思う。tabletやPCの積もりでいると、ちょっとがっかり。やはり700MHzのARM11にメモリ512MBでは、1080pのディスプレイは荷が重いのだろう。
  5. プログラミング環境はかなり揃っている
    1. スクリプトは、Perl, Python, awk, bashなど
    2. コンパイラは、gcc, g++
  6. ログインすると出るRoot画面にDebian Referenceとしてマニュアルがある。英語で、管理の仕方から、unixの使い方の基本、プログラミングなど詳細に書かれている。
  7. 左下のメニューにある。Accessoryの中のRoot Terminalを開ければ、管理者であるrootになれて、いろいろ設定を変えることが出来る。
  8. HDMIを繋がないで電源をいれると、単独モードで立ち上がるらしく、マウスもキーボードも認識されない。netにつながっていればtelnetやsshで入れるのかもしれないが、そうでないと、強制電源断しかないかもしれない。これをやったら、つぎにroot filesystemがマウントできず、デバッグ画面でキーボード入力も受け付けなくなった。どうしようもないので、電源を強制断して、再度同じ状態。もう一度やったら、無事にrebootした。/ (ルートファイルシステム)をfsck(チェック)しようとしたら、mountされているのでできないとのこと。/boot は別partitionなので、ここに/sbinやら/binからdf, mount, umount, fsckをコピーして、/をumountしようとしてもdevice busyでumountできなかった。多分、リブート時にfsckしているのだろうが、/var/messageをみても、fsckの文字はなかった。ちょっと不安である。
  9. /etc/kbd/remap を編集するとキーボードのマップを変えられるらしいが、ググルとdebianのこの機能はバグっているというような情報もある。
以下動作状況と解説)
ウィンドウのバックグラウンドが、Raspberry Piのシンボルマーク。結構かわいい

HubやWiFiをUSBにホットプラグすると、XのGUI画面から、このような認識画面に切り替わる

今回の環境、プラスチックの箱は高かったが、基盤むき出しは危険なので購入した。ver2はUSBが2 portあるが、一つはUSB型の無線Lan dongleを付けるので、もう一方に4 portのUSB2 Hubをつなぎ、それ経由で、USBマウスとUSB キーボード(101配列)を取り付けた。電源は5V 750mAのものをmicroUSB経由で給電。画面はHDMIでHDTVに接続。GUI画面での解像度は、1360 x 768ピクセル。Linuxは16GBのSDHCカードに書き込み、Root file Systemを16GB一杯に拡大。(この書き換えは立ち上げ時のメニューから自動で行えるが、結構時間がかかる。)

大体、amazon.comではケースが高かった。ただし、ケースもコネクタ向けにちゃんと穴が空いていないものがあり、若干評判が悪いものもある。
USB HubとWiFiドングルと、keyboard


メニューには、いろいろなプログラミングツールが見える。起動するとloginなしでuserに入り、Rootになるwindowも立ち上げられる。

結局、SSIDブロードキャストをonにして、WiFiにつながり、ブラウザ(Midori)から、googleをアクセスしている様子