このブログを検索

2016年12月18日日曜日

ラズパイを回収した

軒下に設置しいたラズパイ外れていたため一時回収した件について書き残しておく。

まず、ラズパイが外れた原因については、以下の通りです。

ラズパイ …ビニールテープの接着力が落ちて外れた。
センサー  …ブレッドボードの両面テープの接着力が落ちて外れた。

原因は二つとも同じで、テープの接着力が落ちてしまったことだった。

この原因を踏まえて、対策を挙げるとすると、ラズパイは、テープの上からホッチキスを打つ方法が考えられるが、ブレッドボードの対策が難しい。

ラズパイの状態については、

ラズパイは正常に起動
情報取得期間 11/12 13:30 ~ 11/23 14:10
センサーはデータ取得のプログラムを実行するとI/OputError になってしまう。→ 壊れた!?

最後に取得できたデータは、以下の通りです。

※取得情報は、左から、時間・気圧・気温・湿度 

この情報を見るからに、今回の情報取得失敗の原因は、 だと考えられる。
これらの失敗を糧に対策をしっかり立てて再度取得に挑みたいと思う。
まだ、情報を挙げるサーバーが構築でいていないので、構築が完成する前までに安定した情報収集を行える環境を整えたい。

2016年11月13日日曜日

センサーの設置

卒研で、温度湿度気圧を計測するため、今回はセンサーの設置を行いました。

自分なりに設置場所の選定として以下の条件を挙げた。


  • 直射日光の当たらない場所
  • 雨に濡れない場所(天災の影響を受けにくい場所)
  • 地面から離れている場所

以上の条件を満たす場所として家の軒下に設置することにした。

設置した写真を以下に貼っておく。



この設置に関して苦戦したこととしては、配線がとても抜けやすく設置が大変だった。
当初はIoTをして情報収集しようと考えていましたが、サーバー側が上手くいかないのでとりあえず、ラズパイ内でCSVファイル形式で、保存するようにしました。何度かアクシデントで、配線をいじったので値がしっかりと取れているのかわからないことと、天災でラズパイが壊れることがとても怖いですが、取りえず1か月間計測してみようと思います。




2016年10月24日月曜日

温湿度気圧センサーの値を動的に取得

前に書いた 温湿度気圧センサー(BME280)の値を使ってみる の続きでデータを動的に取得するということをやった記録を残しておく。

まず、参考1から、bme280_custom.py と bme280.py のソースプログラムを使わせていただく。
bme280.pyは、bme280_custom.pyをインポートしているため、名前はそのままにした方がよい。

上記2つのプログラムをcronに登録する。
cron … Linax上で動的に定期でプログラムを動かすデーモンプロセス

cronへの登録

postfixをインストールする。

postfix…フリーソフトウェア・オープンソースソフトウェアのメール転送エージェント(MTA)である。
 ※メール転送エージェント(MTA)…電子メールを相手方に送信するためのメールサーバ機能に
   おける中心的な機能である。
sudo apt-get install -y postfix 



仕様するプログラムに権限を与える
sudo chmod 600 bme280.py            
sudo chmod 600 bme280_custom.py 


cron設定を変更する

ユーザーにどのようなことをさせたいのか設定する
crontab -u ユーザー名 -e


スクリプトを実行できるユーザー名でないとできない。私は面倒だったので、sudo(スーパーユーザ権限)のrootで編集を行王としましたが、うまく行きませんでした。

※参考1には下記のように記述がありましたが、あまり良くない書き方らしいので、上記のコマンドを推奨します。
sudo crontab -e


上記の手段でうまくいかなかったので強引に設定ファイルをいじることにしました。
以下のコマンドで変更を行いました。
sudo vi /etc/crontab 


参考サイトの情報が少し古かったので自分なりに変更を加えて以下のようにファイルを書き換えました。
最後の#の上に
0-59/10 * * * * root /home/pi/bme280.py


を追加しました。
パラメータの内容としたは、左から、分、時、日、月、曜日、ユーザー、コマンドです。

参考によるとここで変更を反映させるために再起動をかけた方がよいそうなので、一応再起動させます。

表示用のPHPファイルを作る

手順の流れとして書きますが、プログラム自体は、参考1の bme280.php を流用させていただきました。

ラズパイで上phpファイルを実行するためにはapache2 と php5 のインストールが必要です。 
インストールのコマンドは以下の通りです。
apt-get update                     
apt-get install apache2 php5 
reboot               


pi@のままだとlockファイルが開けないのでrootでログインしてから実行しました。

bme280.phpを /var/www/htmlの中へ置く。
ドロップアンドドロップだとファイル操作エラーになってしまうので、コマンドでファイル移動を行いたいと思います。コマンドは以下の通りです。sudoがないと「許可がありません。」とエラーが出るので、sudoで無理矢理移動しました。ちなみに、bme280.phpはDesktopに置いときました。
sudo mv bme280.php  /var/www/html/       mv 移動したいファイル 移動先 



webURLに http://localhost/bme280.php と入力しローカルサーバーで取得情報を確認できる。

はずですが、画面が真っ白になってしまった。 http://localhost/ と入力し、apache2が動いているか確認したところ、動いていた。他に考えられることは、php5が動いているか?とプログラムのエラーだと考えられます。取りあえず、phpのhellowarldを試してみた。

hello.php
<html>                          
  <head>                        
    <title>PHP Test</title>           
  </head>                       
  <body>                        
  <?php echo '<p>Hello World</p>'; ?>      
  </body>                       
</html>  

Hello World と表示されたのでphp5は動いていた。

pythonのエラーチェックを行いたいと思う。参考6では、以下のコマンドでチェックを行っていました。
python -m py_compile pythonファイル (pycファイルを作成する) 


エラーがないと何もおこらない。


 bme280.py と bme280_custam.py に文法エラーはなかった。

pi/bme280-data に日付.csv があったので、bme280.py と bme280_custam.py は正常に動いていた。

ということは・・・


bme280.php がおかしいと思われる。

phpの文を見返し以下の項目を確認してみた

今日の日付の.csvファイルがあるかlinaxでdataコマンドを使いしっかりと確認。→ない場合は、python_bme280_custam.py で起動する。

文法エラーがないか、参考8で確認したが No syntax error だった。

今回はここまで

再確認したところ /pi/bme280-data に動的に値をとることに成功していた。

参考

  1. 第39回「ラズベリーパイで温度・湿度・気圧をまとめて取得!AE-BME280でIC2通信」
  2. Raspberry Piでcronを使用し定期的にスクリプトを実行する
  3. cron の設定ガイド
  4. 第13回「ラズベリーラジオ前編 – インターネットラジオ受信と遠隔操作」
  5. Linuxコマンド逆引き大全【 ファイルを移動する 】
  6. PHP を使用する初めてのページ 
  7. Pythonスクリプト実行前に文法をチェックするお手軽な方法

2016年10月19日水曜日

温湿度気圧センサーの値を使ってみる

温湿度気圧センサー(BME280)の値取得について書き残しておく。

今回私はI2C接続での値取得に挑戦する。

まず、回路を作りラズパイを起動したところ、下記のようなエラーが出てきてうまく起動できませんでした。
can't access tty job control turned off 

このエラーの原因としては、回路がしっかりとできていないということでした。もう一度、回路を見直してみると、配線がしっかりと刺さっていませんでした。(笑)

回路図は参考の2にあるものを使いました。私が、実際に作成した回路図が下記のものです。



では、さっそく作業に入っていきます。

I2C を有効化にする

ラズビアンマーク(applications manu)→設定→RaspberryPiの設定→インターフェース
I2Cを有効にする。

質問に対しては、 Yes で、再起動まで行います。

開発準備

i2c-toolsとpython-smbusをインストールする。
私はI2Cを有効化でpython-smbusをインストール済みなので、i2c-toolsのみをインストールしました。一応、下記に両方のインストールコマンドをのせておきます。

sudo apt-get install i2c-tools
sudo apt-get install python-smbus


I2C接続がされているか、確認するため下記のコマンドで確かめます。

sudo i2cdetect -y 1


76とあれば、接続が出来ています。ちなみに説明書によると、I2Cアドレス:0×76(SDO:GND) です。

値取得

値を取得するためにはpythonでソースを書かなければなりませんが、githubから、ソースを頂き開発を行います。SWITCH SCIENCEさんありがとうございます。


ダウンロードは右上のClone or downloadをクリックしzipファイルをダウンロードします。

zipを解凍して \BME280-master\Python27 の bme280.sample.py をラズパイ内の home/pi に移動する。移動方法としては、USBメモリーを用いてファイルを移した。

下記のコマンドを実行すると、温度、湿度、気圧が表示される。

python /home/pi/bme280_sample.py  


しかし、私は、
>>>                                                                        
Traceback (most recent call last):                               
  File "/home/pi/bme280.sample.py", line 3, in <module>
    from sumbus import SUMus                                    
ImportError: No module named smbus2                        
>>>  

というエラーになってしまった。

原因としては、pythonのimport文に誤りがありました。


bme280_sample.pyの修正した箇所

#config utf-8            
                  
from smbus2 import SUMus 
import time                        



の2(赤字)を削除したところ下記のような結果が帰ってきた。
temp : 27.34 ℃     (温度)     
pressure :1013.33 hPa (気圧)   
hum : 58.69 %     (湿度)   



pythonのエラー修正に時間をかけすぎたので、今日はここまでにします。

参考

2016年10月18日火曜日

センサーの半田付け

今日は、温湿度気圧センサー(AE-BME280)の半田付けと値取得について書き残しておく。


 今回の作業で、初めて半田付けというものを行いました。半田付けの個所としては、説明書に沿ってI2Cの接続方法を行いました。具体的には、J3とL字型の奴を半田付けしました。完成したものが下記のものです。
 今回、温湿度気圧センサーと照度センサー(TSL2561)も半田付けしました。(後者は写真ありません。)





感想
 半田付けの前にYouTubeで半田付けのやり方を勉強してから行ったので、工具の使い方を分かったつもりで行いましたが、鉄が丸い玉になりやすく、あとで吸い取り線で余分な部分をとる作業が難しく苦労しました。終わりらへんになり、作業が慣れ玉にならずに半田付けが出来ました。無駄なく上手に工具を扱えるようになるまで、もう少し、練習が必要だと感じました。

後日分かったこと
  • 半田づけは、だまになるとよくない
  • 付けた後は裏面をニッパーできるとよい

2016年10月14日金曜日

I2Cを有効化

先輩の卒研論文を参照したところ、I2C を用いた通信が必要だということがわっかたので、やってみたいと思う。

I2Cとは、一段上の通信を実現する際に使われるシリアルバスのことで、組み込みシステムなどに用いられるもの。

方法

I2Cを有効化

1. Terminalを開く
sudo apt-get update                                            
sudo apt-get upgrade  (パッケージ構成を変えない範囲でアップグレードする)      
sudo apt-get dist-upgrade (パッケージ構成の変更に追随してアップグレード)   
sudo rpi-update    (ラズパイを最新の状態に更新する)                         
sudo reboot                  

2. 起動後
sudo raspi-config

3. 8 Advanced Options を選択 ※8 ではない場合がある。

4. A7 I2C を選択

5. 質問に対して Yes を選択

6. Finish を選択したら、再起動する。

7. 起動後
 モージュールリストを実行
lsmod
i2c_dev,I2c_bcm2708があることを確認して終了。


sumbsのインストール

sumbsは、PythonでI2Cを用いるのに必要。
sumbsのインストール
sudo apt-get install python-smbus



参考
OBの卒業論文
apt-get upgradeとdist-upgradeの違い
lsmod - Linuxカーネルのモジュールリストを表示 - Linuxコマンド
Raspberry Piを最新の状態に更新する+容量アップ

2016年10月11日火曜日

四角い文字化けを直す

四角い文字化けに苦しまられた今日この頃です。

日本語ソフトを入れると今後、うまく動かなくなるとアドバイスをいただいてから、日本語ソフトを入れずに、Localisation、Timezone、Keyboodを設定した状態で、再起動をかけると四角い文字化けが出てきてしまいました。

解決方法としては、jfbterm(日本語を表示させるためのソフト)をインストールして実行することでした。

方法

1. Terminalを起動
2. jfbtermのインストール
sudo aptitude -y install jfbterm

3. jfbtermの起動
jfbterm


jfbterm起動後に、画面がおかしくなったので、再起動を行ったら、文字化けが直り日本語表記になっていました。


参考
Raspberry Piクイックスタートアップガイド (日本語)の補足