軒下に設置しいたラズパイ外れていたため一時回収した件について書き残しておく。
まず、ラズパイが外れた原因については、以下の通りです。
ラズパイ …ビニールテープの接着力が落ちて外れた。
センサー …ブレッドボードの両面テープの接着力が落ちて外れた。
原因は二つとも同じで、テープの接着力が落ちてしまったことだった。
この原因を踏まえて、対策を挙げるとすると、ラズパイは、テープの上からホッチキスを打つ方法が考えられるが、ブレッドボードの対策が難しい。
ラズパイの状態については、
ラズパイは正常に起動
情報取得期間 11/12 13:30 ~ 11/23 14:10
センサーはデータ取得のプログラムを実行するとI/OputError になってしまう。→ 壊れた!?
最後に取得できたデータは、以下の通りです。
※取得情報は、左から、時間・気圧・気温・湿度
この情報を見るからに、今回の情報取得失敗の原因は、風 だと考えられる。
これらの失敗を糧に対策をしっかり立てて再度取得に挑みたいと思う。
まだ、情報を挙げるサーバーが構築でいていないので、構築が完成する前までに安定した情報収集を行える環境を整えたい。
カシワモチ、ラズパイを食す
このブログはRaspberry Piで電子工作をする中で学んだことを書き込んだサイトです。 なので、多少読み辛いとは思いますが、少しでもアクセスしてくださった方々の役に立てるように書いていきたいと思います。
このブログを検索
2016年12月18日日曜日
2016年11月13日日曜日
センサーの設置
卒研で、温度湿度気圧を計測するため、今回はセンサーの設置を行いました。
自分なりに設置場所の選定として以下の条件を挙げた。
以上の条件を満たす場所として家の軒下に設置することにした。
設置した写真を以下に貼っておく。
この設置に関して苦戦したこととしては、配線がとても抜けやすく設置が大変だった。
当初はIoTをして情報収集しようと考えていましたが、サーバー側が上手くいかないのでとりあえず、ラズパイ内でCSVファイル形式で、保存するようにしました。何度かアクシデントで、配線をいじったので値がしっかりと取れているのかわからないことと、天災でラズパイが壊れることがとても怖いですが、取りえず1か月間計測してみようと思います。
自分なりに設置場所の選定として以下の条件を挙げた。
- 直射日光の当たらない場所
- 雨に濡れない場所(天災の影響を受けにくい場所)
- 地面から離れている場所
以上の条件を満たす場所として家の軒下に設置することにした。
設置した写真を以下に貼っておく。
この設置に関して苦戦したこととしては、配線がとても抜けやすく設置が大変だった。
当初はIoTをして情報収集しようと考えていましたが、サーバー側が上手くいかないのでとりあえず、ラズパイ内でCSVファイル形式で、保存するようにしました。何度かアクシデントで、配線をいじったので値がしっかりと取れているのかわからないことと、天災でラズパイが壊れることがとても怖いですが、取りえず1か月間計測してみようと思います。
2016年10月24日月曜日
温湿度気圧センサーの値を動的に取得
前に書いた 温湿度気圧センサー(BME280)の値を使ってみる の続きでデータを動的に取得するということをやった記録を残しておく。
まず、参考1から、bme280_custom.py と bme280.py のソースプログラムを使わせていただく。
bme280.pyは、bme280_custom.pyをインポートしているため、名前はそのままにした方がよい。
上記2つのプログラムをcronに登録する。
cron … Linax上で動的に定期でプログラムを動かすデーモンプロセス
※メール転送エージェント(MTA)…電子メールを相手方に送信するためのメールサーバ機能に
おける中心的な機能である。
スクリプトを実行できるユーザー名でないとできない。私は面倒だったので、sudo(スーパーユーザ権限)のrootで編集を行王としましたが、うまく行きませんでした。
※参考1には下記のように記述がありましたが、あまり良くない書き方らしいので、上記のコマンドを推奨します。
上記の手段でうまくいかなかったので強引に設定ファイルをいじることにしました。
以下のコマンドで変更を行いました。
参考サイトの情報が少し古かったので自分なりに変更を加えて以下のようにファイルを書き換えました。
最後の#の上に
を追加しました。
パラメータの内容としたは、左から、分、時、日、月、曜日、ユーザー、コマンドです。
参考によるとここで変更を反映させるために再起動をかけた方がよいそうなので、一応再起動させます。
ラズパイで上phpファイルを実行するためにはapache2 と php5 のインストールが必要です。
インストールのコマンドは以下の通りです。
pi@のままだとlockファイルが開けないのでrootでログインしてから実行しました。
bme280.phpを /var/www/htmlの中へ置く。
ドロップアンドドロップだとファイル操作エラーになってしまうので、コマンドでファイル移動を行いたいと思います。コマンドは以下の通りです。sudoがないと「許可がありません。」とエラーが出るので、sudoで無理矢理移動しました。ちなみに、bme280.phpはDesktopに置いときました。
webURLに http://localhost/bme280.php と入力しローカルサーバーで取得情報を確認できる。
はずですが、画面が真っ白になってしまった。 http://localhost/ と入力し、apache2が動いているか確認したところ、動いていた。他に考えられることは、php5が動いているか?とプログラムのエラーだと考えられます。取りあえず、phpのhellowarldを試してみた。
hello.php
Hello World と表示されたのでphp5は動いていた。
pythonのエラーチェックを行いたいと思う。参考6では、以下のコマンドでチェックを行っていました。
エラーがないと何もおこらない。
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から、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の文を見返し以下の項目を確認してみた
今回はここまで
再確認したところ /pi/bme280-data に動的に値をとることに成功していた。
参考
2016年10月19日水曜日
温湿度気圧センサーの値を使ってみる
温湿度気圧センサー(BME280)の値取得について書き残しておく。
pythonのエラー修正に時間をかけすぎたので、今日はここまでにします。
今回私は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の修正した箇所
の2(赤字)を削除したところ下記のような結果が帰ってきた。
#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)も半田付けしました。(後者は写真ありません。)
今回の作業で、初めて半田付けというものを行いました。半田付けの個所としては、説明書に沿ってI2Cの接続方法を行いました。具体的には、J3とL字型の奴を半田付けしました。完成したものが下記のものです。
今回、温湿度気圧センサーと照度センサー(TSL2561)も半田付けしました。(後者は写真ありません。)
感想
半田付けの前にYouTubeで半田付けのやり方を勉強してから行ったので、工具の使い方を分かったつもりで行いましたが、鉄が丸い玉になりやすく、あとで吸い取り線で余分な部分をとる作業が難しく苦労しました。終わりらへんになり、作業が慣れ玉にならずに半田付けが出来ました。無駄なく上手に工具を扱えるようになるまで、もう少し、練習が必要だと感じました。
後日分かったこと
- 半田づけは、だまになるとよくない
- 付けた後は裏面をニッパーできるとよい
2016年10月14日金曜日
I2Cを有効化
先輩の卒研論文を参照したところ、I2C を用いた通信が必要だということがわっかたので、やってみたいと思う。
I2Cとは、一段上の通信を実現する際に使われるシリアルバスのことで、組み込みシステムなどに用いられるもの。
方法
2. 起動後
3. 8 Advanced Options を選択 ※8 ではない場合がある。
4. A7 I2C を選択
5. 質問に対して Yes を選択
6. Finish を選択したら、再起動する。
7. 起動後
モージュールリストを実行
sumbsのインストール
参考
OBの卒業論文
apt-get upgradeとdist-upgradeの違い
lsmod - Linuxカーネルのモジュールリストを表示 - Linuxコマンド
Raspberry Piを最新の状態に更新する+容量アップ
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. 起動後
モージュールリストを実行
lsmodi2c_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を起動
3. jfbtermの起動
日本語ソフトを入れると今後、うまく動かなくなるとアドバイスをいただいてから、日本語ソフトを入れずに、Localisation、Timezone、Keyboodを設定した状態で、再起動をかけると四角い文字化けが出てきてしまいました。
解決方法としては、jfbterm(日本語を表示させるためのソフト)をインストールして実行することでした。
方法
1. Terminalを起動
2. jfbtermのインストール
sudo aptitude -y install jfbterm
jfbterm
登録:
投稿 (Atom)