ラズパイ(36) センサーで測定した値をメールで送る

Gatamixです。
センサーを使っての一つの目標だったデータの送信を行ってみました。
使ったセンサーはいつものLPS25Hです。
処理の流れは以下です。
①データの取得(温度、気圧)
②CSVに記録
③プログラムで自動でグラフ作成
④メールでCSVファイルとPNGファイルを送信する
記録:添付ファイルのヘッダーを追加するところでスペルミスをしました。
メールの添付ファイルがファイル名が表示されないという結果があらわれて、
ミスをしてもメールは送信されたので原因が究明に時間がかかりました。
*MIMEについてMultipurpose Internet Mail Extensionsの略である。
電子書式で色々なフォーマットを取り扱うための規格。
ここが間違えると上手く表示されない。


以下コード(長いですが参考までに記載します。)

written by gatamix

ラズパイ(32) センサーで測定したデータをグラフに自動描画する

Gatamixです。
Raspberry piの調子がイマイチですが、LPS25Hを使って以下のことをやってみました。
①データの取得(温度、気圧)
②CSVに記録
③プログラムで自動でグラフ作成
スケールを自動にするとオフセットでグラフが表示されるのでオフセットをなしに設定しました。
以下プログラム。
Raspberry pi でascii コードのエラーで℃が表示できなかったのを解決しました。
(python 2.7だからか?Mac python 3.6では表示できた。)
温度の単位をTex 形式で表示できるので、
変更。deg. → $^\circ$C

written by gatamix

ラズパイ(27) センサー(LPS25H)で測定したデータをcsvファイルに保存する

Gatamixです。
最近の記事で、CSVの取り扱いをやってきました。
今回は、センサー(LPS25H)で測定したデータをCSVに保存します。
簡単に説明すると、
 ①センサーの初期設定
 ②データの読み込み
 ③CSVの書き込み
 ④インターバル
 ⑤、②〜④を繰り返す
 ⑥データ名の変更
となります。
これまでの記事の内容でできました。
プログラムです。

written by gatamix

ラズパイ(24) LPS25H 番外編 ビット演算と2の補数について

少し補足します。
スマホだと横にしないと上手く表示されないかもしれません。
・bitの結合について
前のプログラムで
Data[0] = (buff[2] << 16 | buff[1] << 8 | buff[0])
と気圧のデータを処理している場所があると思います。
例えば
buff[2] = 0x0f(16進数) = 00001111(2進数)
buff[1] = 0x4e(16進数) = 01001110(2進数)
buff[0] = 0x33(16進数) = 00110011(2進数)
とする場合
上位のbitの場合buff[2]を16bit 左にシフトしているので
00001111 00000000 00000000(2進)
となります。
これらを論理和で計算する場合は、以下となります。

 

 

 

・負の値の補正
前のプログラムの
if Data[1] & 0x8000:
Data[1] = -((Data[1] – 1) ^ 0xffff)
の部分の補足です。
マイナスの場合に2の補数でデータが格納されているので
そのままだと正の値で計算されてしまうので
絶対値にして、マイナス符号をつけて、格納します。
2の補数は反転して( 排他的論理和(xor)をffff(16進)と行うことで反転します。)
それに1を足すことで作ります。

2補数の作成例

 

 

 

このプログラムの場合は2の補数を戻すので、
1を引いて、反転する(xor ffff(16進数))ことで求めます。
参考リンク

関連
Raspberry Pi(23)MEMSセンサー LPS25Hで温度と気圧の取得

written by gatamix