2017年7月18日より「Raspberry Pi Zero W」の販売を開始

2017年7月18日より「Raspberry Pi Zero W」の販売を開始

株式会社 ケイエスワイから3月に発売された以降、しばらく次の入荷がないと思っていたら技適を取得できていなかったらしい。(実は3月時点では販売できていなかった?)
発売開始されたことに気づいたのが1週間後でもう完売。。。。いつになったら手にできるのやら。

DHT11の温度センサー上限を超えてしまった。。。

日中の晴れた日は、どうやら温度が60℃を超えてしまうようだ。
らずぱい温度計20170504.png
DHT22であれば、80度まで計測できるうえ、分解能が0.1なのでより精度の高いセンサー情報を収集できる。
DHT11と同じく3ピンなので、置き換えだけでうまくいきそうな予感。。。。
送料の方が高くつきそうなので、お店に行って買ってくるとしよう。

Rasberry Pi 2で定期的に温湿度センサーの情報を送信する

/etc/crontabと/etc/cron.d設定ファイルの書き方を参考にプログラムの実行をスケジュール化する。
/etc/cron.d/send_temp
と登録し、下記を保存する。
#8~17時を除いた6~23時に毎時0時に送信する
0 6-7,18-23 * * * pi /home/pi/iot_source/send_temp.py 12> /home/pi/debug.txt
#土日は8~17時も毎時0時に送信する
0 8-17 * * 0,6 pi /home/pi/iot_source/send_temp.py 12> /home/pi/debug.txt
#5分ごとにセンサデータを収集する
*/5 * * * * pi /home/pi/iot_source/get_temp.py 12> /dev/null

Rasberry Pi 2で温湿度センサーの情報をZabbixサーバに送信する

Rasberry Pi 2で収集した情報をZabbixサーバに送信するためには大きくは2つの方法がある。
・Zabbixエージェントをインストールしてデータを送信(サーバから見ると収集)する方法(パッシブチェックとアクティブチェックというデータの収集のトリガーが異なる2つの方式がある。詳しくはこちら
・zabbix_senderコマンドを利用してデータをサーバに送信する方法
前者の方式は、エージェントを利用するので、サービスを常に起動しておかなければならないということと、ポートを待ち受けしないといけないことから、IoTディバイスとして節電して長く使いたい要求と、セキュリティを担保したい(エージェントの脆弱性によって問題が起こり得るか、DoS攻撃の対象になりうる)ことから後者を採用することにした。
ただ、zabbix_senderはRasberry Pi2を動かしているRaspianOSではちょっと導入が面倒。
Zabbix Server側の設定はこちらを参考にしてみるとよい。
これから始めるZabbix Sender(2) Raspberry Pi の温度データを送るには?
作成したソースはこんな感じ
配列に一度格納してまとめて1回のコマンドで実行することで通信回数を減らしてみた。
#!/usr/bin/env python
import RPi.GPIO as GPIO
import dht11
import time
import subprocess
from datetime import datetime
now=time.time()
Zabbix_Server=”(ZabbixサーバのIPアドレス)”
Host_Name=”(Zabbixサーバに登録したホスト名)”
#Zabbixサーバに下記アイテムを2つ登録している必要がある
Temp_KeyName=”sender_temperature”
Humi_KeyName=”sender_humidity”
#define GPIO 14 as DHT11 data pin
Temp_sensor=14
try:
GPIO.setmode(GPIO.BCM)
instance = dht11.DHT11(pin = Temp_sensor)
while not ‘result’ in locals() or result.humidity==0:
result = instance.read()
if result.is_valid():
print(“Tem:”+str(result.temperature)+” C Hum:”+str(result.humidity)+”%”)
send_data = []
send_data.append(Host_Name + ” ” + Temp_KeyName + ” ” + str(int(now)) + ” ” + str(result.temperature))
send_data.append(Host_Name + ” ” + Humi_KeyName + ” ” + str(int(now)) + ” ” + str(result.humidity))
check = subprocess.check_call(‘echo “‘ + “\n”.join(send_data) + ‘” | zabbix_sender -z ‘ + Zabbix_Server + ” -T -i -“, shell=True)
except KeyboardInterrupt:
pass
finally:
print check

Rasberry Pi 2で温湿度センサーの情報を収集する

Raspberry Pi2に、
まずは温湿度センサー(DHT11センサー)を取り付ける。
DHT11センサーの結線方法は、こちらを参考にするとよい。
LEDが点灯したらとりあえず、5VとGNDピンが正常に結線されていることが分かるので、DATAピンが正しく結線されていることを確認する。
こちら↓
蓋なし.jpg
を参考にしても良いと思います。

#!/usr/bin/env python
import RPi.GPIO as GPIO
import dht11
#define GPIO 14 as DHT11 data pin
Temp_sensor=14
try:
GPIO.setmode(GPIO.BCM)
instance = dht11.DHT11(pin = Temp_sensor)
while not ‘result’ in locals() or result.humidity==0:
result = instance.read()
if result.is_valid():
print(“Tem:”+str(result.temperature)+” C Hum:”+str(result.humidity)+”%”)
else:
print(“error”)
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()

これをget_temp.py として、

python get_temp.py

と実行して、

Tem:20 C Hum:40%

などと表示されれば温湿度が取得できていることが分かる。

Rasberry Pi 2で温湿度センサーの情報をZabbixで収集する

こんなケースに入れて、
蓋なし.jpg
穴をあけた蓋を付けて、
蓋つき.jpg
温室に取り付けると
取り付け.jpg
こんな感じで温室の温湿度が取得できる。
らずぱい温湿度センサー.png
これをやる為の方法を今後掲載していくことにする。
実現するために必要な材料
Raspberry Pi2
・無線LANアダプタ(余っていた WLI-UC-G を使用)
・温湿度センサー(DHT11センサー を使用。誤差が大きいので、気休め程度。気になる場合にはもう少し精度のよいものがよいかも?)
・リチウムイオンバッテリー(Anker PowerCore 10000)
・電子レンジであっためられるタッパー
・Zabbixサーバ(Cloudnで実現)
実現した結果として
・Raspberry Pi2はバッテリーからでも起動できる
・意外に電源を食うので、省電力対策は欠かせない
 →無線LAN通信を極力減らす必要がある。
今後したいこと
・電源のシャットダウン方法を確立する か バックアップをとる。
・Raspberry Pi2ではなく、Raspberry Pi Zero Wでやりたい。(さらに省電力にしたい)

無線中継器を設置してみた

最近、周りで高出力?の無線LANのアクセスポイントが増えたせいか、親機のWZR-HP-G301NHの電波が2階まで届きづらくなった。
WEX-733Dを検討していたが、パソコン工房でジャンク品として500円でたたき売りされていたMZK-W300NH2があったので、異なるメーカでブリッジモードで接続できるかどうか試してみた。
結論としてはうまくいかなかった。
どうもアクセスポイントとしてもかなり評判が悪いようで、異なるメーカでの中継設定をしたサイトにはたどり着けなかった。
MZK-WNHのAPブリッジ(WDS)設定

MZK-W300NH2 でAPブリッジ
などあり、あまり評判がよくない。
PLANEX MZK-W300NH2 で WDSに至っては、EDIMAXのBR6424n V2へのファームウエア更新の方法までのっていた。
うまくいかなかったので、ガラクタ覚悟でファームウエア更新もやってみたがうまくいかなかった。
すこし高い授業料だったが、ブリッジモードで接続する場合には、同一メーカで構成することが無難であることがよく分かった。。。

OSOYOO Raspberry Pi Starter Kitを使い倒してIoTしたつもりになる その1

今日は、OSOYOO Raspberry Pi Starter Kitに入っている人体感知センサーモジュール(HC-SR501)の話。
チュートリアルはこちらなのだが、うまく動かない。
gcc -Wall -o blink blink.c -l wiringPi./blink
で/usr/bin/ld: -lwiringPi./blink が見つかりません と出て実行できない。
また、ドキュメント内もURLが変更になっていて、
wget http://osoyoo.com/blink.c → wget http://osoyoo.com/driver/blink.c が正しいようだ。
そこで、下記の説明を参考にpythonスクリプトで動作させることができた。
http://qiita.com/Fendo181/items/469469d143d3568fc692
LEDをGPIO21 ポートに接続。
テーマは人体感知センサーでLチカに変更。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
INTAVAL = 3
SLEEPTIME = 3
SENSOR_PIN = 18
LED_PIN = 21
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)
GPIO.setup(LED_PIN,GPIO.OUT)
st = time.time()-INTAVAL
try:
while True:
print GPIO.input(SENSOR_PIN)
if(GPIO.input(SENSOR_PIN) == GPIO.HIGH) and (st + INTAVAL < time.time()): st = time.time() print("人を感知しました") GPIO.output(LED_PIN,True) else: GPIO.output(LED_PIN,False) time.sleep(SLEEPTIME) except KeyboardInterrupt: pass finally: GPIO.cleanup()

RasberryPi をリモートデスクトップでGUI操作する

Rasbian OSが入ったRasberryPiをリモート制御するには、Teraterm等を利用したSSH接続のほか、
xrdpというパッケージをインストールすることでリモートデスクトップによるRDP接続が可能となる。
$sudo apt-get install xrdp vnc4server
とするだけだ。
xrdpだけでは、接続はできるが、
connecting to 127.0.0.1 5910
error – problem connecting
と怒られて接続ができない。

Rasberry Pi 2でScratch 2.0を動作させる

Rasberry Pi 2で動作させるRaspbian OSではScratch 1.4が利用できるが、今後のことを考えれば、Scratch 2.0を利用できるようにしておいた方がよいと思い、チャレンジしてみた。
先人の皆さんが手順を公開されているサイトがあるものの、手順が変わっていたりして多少苦労した。。。。
自分の持ち物
・HDMI端子接続可能なテレビ(REGZA Z8000)
・ビデオカメラに接続するために以前買っていたHDMIケーブル
・余っていたLANケーブル
・余っていたUSBキーボード
・余っていたUSBマウス
ステップ
1.Rasberry Pi 2 Model Bを買う
http://price.zaiteku.jp/products/detail/B00TBKFAI2
Rasberry Pi 3 Model B
にしなかったのは、消費電力が大きいことと、手持ちのスマホ充電器のアダプタでは電流が足りないので、アダプタを追加で買わなきゃいけないことが理由だった。
2.microSDカードを買う
4GB以上のSDカードの余りがなかったので、高速アクセス可能なSDカードを購入
http://price.zaiteku.jp/products/detail/B01AXTK8WW
3.Raspbian OSをインストールして、日本語入力環境を整える
「Raspberry Pi 2」(ラズベリーパイ)OS「Raspbian」のインストールと初期設定参照
4.解像度を変更する
RaspberryPiのHDMIディスプレイ解像度を調整参考。
注意点としては、hdmi_modeだけ変えてもhdmi_group=2を設定しないと反映されない。
選べる解像度はRaspberry Piのディスプレイの解像度を設定するを参照
REGZA Z800だと、1024×768 60Hzあたりが見やすいと思う??
5.Chromium(ブラウザ)をインストールする
どうやらデフォルトのブラウザでは、Scratch 2.0の動作に必要なFlashがプラグインとしてサポートされておらず、
ChromeOSの元となったブラウザChromiumをインストールする。
手順は下記のとおり
wget https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+build/8883797/+files/chromium-browser_48.0.2564.82-0ubuntu0.15.04.1.1193_armhf.deb
wget https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+build/8883797/+files/chromium-codecs-ffmpeg_48.0.2564.82-0ubuntu0.15.04.1.1193_armhf.deb
wget https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+build/8883797/+files/chromium-codecs-ffmpeg-extra_48.0.2564.82-0ubuntu0.15.04.1.1193_armhf.deb
wget https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+build/8883797/+files/chromium-chromedriver_48.0.2564.82-0ubuntu0.15.04.1.1193_armhf.deb
wget http://launchpadlibrarian.net/234938396/chromium-browser-l10n_48.0.2564.82-0ubuntu0.15.04.1.1193_all.deb
sudo dpkg -i *.deb
参考)手順は、下記URLを基とした。
How to get Chromium on raspberry 3を参考にしてみた。
6.プラグインのインストール
wget http://mirror.archlinuxarm.org/armv7h/alarm/chromium-pepper-flash-12.0.0.77-1-armv7h.pkg.tar.xz
tar Jxvf chromium-pepper-flash-12.0.0.77-1-armv7h.pkg.tar.xz
sudo cp libpepflashplayer.so /usr/lib/chromium-browser/plugins/
でプラグインを組み込む。
参考)手順は、下記URLを基とした。
[小さな機械の相棒]Raspberry Pi 2+Raspbianで何とかFlashを動かしたい