Raspberry Pi Imager(最近変わった?)

もしかしたら忘れてるだけかもしれませんが、Raspberry PIへのイメージ書き込みツールでsshを有効にしないと、起動してもあらゆるポートが閉じている(nmapで開いてるポートが確認できない)ので何もできません。

一年前はsshという名前の空ファイルをトップディレクトリに入れてましたが。

https://isehara-3lv.sakura.ne.jp/blog/2021/10/06/大昔のraspberry-pi-bに最新イメージを入れてみた/

上のやり方も相変わらず有効かもしれないけど、書き込み設定でできればそちらの方が簡単。

sshを有効にするには、Imagerの設定(右下)をクリックすると画面のような設定画面がポップアップされるので、ここでsshの有効化とユーザー名(デフォルト”pi”)とパスワード(例えば”raspberrypi”)を設定してからイメージを書き込みます。

% nmap 192.168.1.14  
Starting Nmap 7.92 ( https://nmap.org ) at 2022-11-14 20:04 JST
Nmap scan report for 192.168.1.14
Host is up (0.11s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT   STATE SERVICE
22/tcp open  ssh

これで、sshのポートだけは開きました。

ついでながら、rootログオンのためには、

$ sudo passwd root

でrootパスワードを設定します。

 

admin

 

 

co2センサー(MH-Z19)のキャリブレーション

測定値が、風通しの良い場所でも800ppmとか高い値になっていて、場所を変えてもダメだったのキャリブレーションしてみた。

https://github.com/UedaTakeyuki/mh-z19/wiki/CALIBRATION-&-detection-range

Pythonライブラリ関連の情報の中にキャリブレーションツールも用意されているのでそれを使いました。

co2センサーはシリアルでRaspberry PIとつながっているのでroot権限で実行しないといけませんが、

$ sudo python -m mh_z19 –zero_point_calibration

Call Calibration with ZERO point.

で実行できました。多少低すぎの感もありますが、いずれまたズレていくんじゃないか(以下の③によって)と思います。

ソースを見ると、以下で規定されるゼロキャリブレーション方法の②のコマンドによって実行しています。

https://www.winsen-sensor.com/d/files/MH-Z19B.pdf

ゼロキャリブレーションには① ハード的にピンを一時的に短絡、② コマンド送信、③ 自動キャリブレーションの三つの方法があるとなっていますが③の有効/無効化もコマンドで対応できるのでライブラリから指定できるようになっています。

また、コマンドパラメータに-hでヘルプ、何も付けないと辞書型({“co2”: 414} のように)で測定値が返ります。

ゼロキャリブレーション以外にスパンキャリブレーションというのもありますが、これはスケール精度、つまり1000ppmや2000ppmの値の倍率(スケール)精度用ですが、正確な1000ppm環境など作れないから省略。

P.S. 2022/9/18

限りなく外気に触れる場所で測定値の収束時間を見てみました。

 

保存していた部屋(おそらくco2濃度1000ppm近く)から無人の部屋の窓を開けて、窓辺に放置して時間経過と測定値。おそらく最初は部屋のガスが取り込まれて高い値を示していますが、徐々に大気の値に近づいていきます。おおむね20分放置しろとデバイスのマニュアルに書かれてますから、初期値が高かったらその程度の放置時間は必要そうです。

 

admin

 

Ajaxでco2センサーのデータ表示

ほぼ一年前に作ったco2測定データロガー、webでも結果が見れるようにしているのですがリフレッシュを自動でしないので、ブラウザで更新しないといけないから多少不便。リロード指定でもできるけれどもスマートさが無い、実行時間などで実際にはこの程度のページならなんら問題ないにしても。

と言うことでAjax使って自動更新するようにしてみた。

実行は、jqueryを使うのがコード量が少なくて良いだろう。

・全体の構成は、DBから計測値取得のphpファイルは複数箇所から呼び出すから別ファイル(data_read.php)にする。

・Apache document rootは/var/www/html/だから、

$ cp index.php /var/www/html/

のようにユーザエリア内のコード修正後はユーザディレクトリからコピーする。

やったことは以下の二点

① DBから定期的に最新の測定値を読み出して、測定値タグのclassに書き込み

② スタイルシートを同時にjsで変更してやる

の二点です。

 

過去のブログはこの辺り、

https://isehara-3lv.sakura.ne.jp/blog/2021/09/20/co2-センサー(ndirとは、non-dispersive-infrared(非分散型赤外))mh-z19bを/

現状のソースコードは、

https://github.com/chateight/co2_sensor/tree/main/co2_sensor

 

P.S. (2022/8/31)

jsのコードがスマートさに欠ける(特にスタイルシート変更部分)ので修正。

 

admin

ステッピングモーター納期遅延

最近Amazonは中華販売サイト化していて、商品出荷も中国から直接が多いのですが、DJIのドローンもそうだったけれども、これも遅延してます。

そう入っても数日の問題だろうから、来月初めには到着するでしょう。

 

admin

volumioプレイヤに蓋作成

ステータス表示が見えるので半裸状態だったvolumioプレイヤ(ラズパイゼロ+allo dac)に蓋を作成。もともとあったはずだけど気に入らないから捨ててしまっていた模様。このケースもともとラズパイをケースに納めようとすると、sdカードを浮かせてsdカードコネクタ破壊するような寸法(納入時点で 既にsdカードコネクタの半田付け浮いててラズパイ一枚廃棄)で追加工必要だった過去があるし。

現物合わせで、fusion360でcad図面を起こして、3dプリンタで造形。

フロントパネルとの羽目合いもピッタリの感じです。

audioジャックのセンターズレはもともと購入時点から。

 

admin

MySQLのデータをグラフ化(@ラズパイzero)

ヘッドレスなので、イメージファイルに書き出すしか手段はないけど。

matplotlibをインストール

$ python -m pip install matplotlib

numpyとpandasもついでに入れておく。

しかしimport matplotlibできない。エラ〜メッセージの下の方でnumpy関連でエラー吐き出している。

——- メッセージ最初部分——-

>>> import matplotlib

Traceback (most recent call last):

  File “/home/pi/.local/lib/python3.7/site-packages/numpy/core/__init__.py”, line 22, in <module>

〜以下省略

———————————————

ネット検索して、

$ sudo apt-get install libatlas-base-dev

注)Automatically Tuned Linear Algebra Software, generic static : パッケージの役割説明

で解決できるのか? —> 出来た

直近四時間分のデータをグラフ化してみた。コードはco2 sensorの他のコード含めてGitHubに入れてます。

https://github.com/chateight/co2_sensor

グラフは二種類で、① 時間軸 vs 測定値、② 測定値のヒストグラムを作成してます。とりあえずユーザディレクトリにファイル作成してafp://で見れるようにしてみた。スクリプト実行は今はssh経由だから、定期で実行するようにそのうちするつもり。アクセスもブラウザ経由の口を作るんだろう。

<グラフ化サンプル>

大きくディップしている所は再起動してます。

 

admin

wi-fiの追加設定(@raspberry pi)

複数箇所でwi-fiを使う時には、イメージ作成直後にbootに置くwpa_supplicant.conf、あるいはどこかのwi-fiに接続後にsshで/etc/wpa_supplicant/wpa_supplicant.confに、network以降の記述を追加する。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

update_config=1

country=JP

network={

ssid=”ssid”

psk=”password”

key_mgmt=WPA-PSK

}

自宅wi-fiではkey_mgmtは記述不要でした。

network={

    ssid=”<SSID名>”

    psk=”<パスワード>”

}

公共施設wi-fiの設定もnetwor{}部分をベタで追加してうまくつながりましたが、iPhoneのテザリングでは上手くいかない。とりあえず困ることもないのだけれども。

 

admin