電 子 工 作

RaspberryPiを利用したいろいろの工作結果、等を書いてみます。


CO2センサーの利用

                                            2023年7月7日更新

CO2センサーが結構安く入手でき、Raspberry Piに接続して”簡易CO2計”を作ってみた。

当初Raspberry Pi 4Bを使用して製作したが、Raspberry Pi Zero 2Wを入手したので、全体をより小型化するためにZero 2Wで製作しなおしてみた。

1.準備したもの
・CO2センサー基板  SEN-CCS811…Amazonで購入
・小型ディスプレー OLED Display 0.91inch for Arduino ARM…Amazonで購入
・ブレッドボード  P-05155 秋月電子通商…手持ち在庫
・Raspberry Pi Zero 2W…スイッチサイエンスで購入

2.接続
・SEN-CCS811
   VCC—Raspberry Pi-3.3V
   GND—Raspberry Pi-GND
     SDA—Raspberry Pi-SDA GPIO(2)
     SCL—Raspberry Pi-SCL GPIO(3)
     RST—Raspberry Pi-VCC(3.3V)
     WAKE—Raspberry Pi-GND
・OLED Display
     GND—Raspberry Pi-GND
     VCC—Raspberry Pi-3.3V
     SCL—Raspberry Pi-SCL GPIO(3)
     SDA—Raspberry Pi-SDA GPIO(2)

              Raspberry Pi 2W GPIOの詳細

3.動作準備
3-1 Rasoberry Pi
・OS Raspberry Pi OS (bullseye) 導入後、update,upgrade
・I2Cが使え、Pythonで制御できるようにする
 raspi-configを実行。インターフェース・オプション設定で、I2Cを有効にする。
 I2C関連のツール等をインストールする。
  $ sudo apt install i2c-tools

3-2 センサーの接続確認
 $ i2cdetect -y 1
  0x5a または 0x5b が表示される

4.動作プログラムの実装
4-1 動作プログラム…テスト1  動作途中でエラー発生
 下記の記事を参考に、忠実に実行した。

 *参照記事 Itmediaの記事
  部屋の二酸化炭素濃度を測定しよう ラズパイでCO2センサーを作る
  https://www.itmedia.co.jp/news/articles/2109/18/news032.html

 ・CircuitPythonをインストール
 ・I2CとSPIの動作確認
 ・CircuitPythonのライブラリのインストールを確認…blinkatest.pyを実行
 ・CCS811のライブラリのインストール
 ・/boot/config.txtへの追記
 ・測定・表示プログラムの実行…ccs811test.py

 CO2、TVOCの値が表示され始めたが、途中でエラーが発生。表示がストップした。
 以後再度動作コマンドを入力しても、即エラーが発生。
 (私のPythonの理解力が不十分で、プログラムの動作不良個所での挙動が十分に把握できてないことも一因)

 なお本センサーは、使用初期に48時間のエージングが推奨されており、測定開始後安定した値になるまで20分程度必要とされている。
 十分に時間をおいてから、測定・表示プログラムの実行を試みたが、エラーの発生は解消できなかった。

4-2 動作プログラム…テスト2  動作途中でエラー発生
 CCS811の操作プログラムに関する記事を検索した結果、SEN-CCS811に関する記事は上記の他に見つからなかった。
 が、同等機能の基板BME280に関する記事がいくつか見つかった。そのうち下記の記事を参考にして動作テストをしてみた。
 なお、動作準備の条件が4-1とは多少異なるので、新しいSDHCカードにOSをインストールすることから始めた。

 *参照記事
  【Raspberry Pi】空気品質センサCCS811を使って我が家の空気を観測する
  https://temcee.hatenablog.com/entry/air_quality

 ・OS Raspberry Pi OS (bullseye)  導入後、update,upgrade
 ・I2Cが使え、Python3で制御できるようにする
  raspi-configを実行。インターフェース・オプション設定で、I2Cを有効にする。
  I2C関連のツール、Python3での制御のためのモジュール等をインストールする。
   $ sudo apt install i2c-tools
   $ sudo pip install smbus2
 ・Python3系を使うようにする
  デフォルトPythonのバージョン確認
   $ python -V
  Python2系がデフォルトの場合、Python3系に変更する
   $ cd /usr/bin
   $ sudo unlink python
   $ sudo ln -s python3 python
   $ cd ~
  3系に変わったことを確認
   $ python -V
    Python 3.7.3 など3系が表示されれば、OK
  Python3系へのシンボリックの確認
   $ cd /usr/bin
   $ ls -al | grep python
    python -> python3 の表示がされればOK 
 ・センサー基板のI2C接続確認
   $ i2cdetect -y 1
    0x5aを検出
 ・/boot/config.txtへの追記
   dtparam=i2c_baundrate=10000
 ・動作関連プログラムccs811.pyを入手。
 ・動作プログラムatom_log.pyを実行する。
  
 ccs811.pyを呼び込んで実行する部分でエラーが発生したが、 エラーの内容・対処方法など十分にできなかった。

4-3 動作プログラム3  プログラムを一部手直しし、動作OK
 投稿された時期は少し古いが、シンプルなプログラム例が見つかったので、テストしてみた。

 動作条件は、4-2にほぼ同等。

 *参照記事
  Qiita @-nvh の投稿記事
  PythonでI2Cセンサ(CCS811/BME280)を読んでいろいろ表示してみた(Matplotlib、Dash)
 
 ・OS Raspberry Pi OS (bullseye)  導入後、update,upgrade
 ・I2Cが使えるようにする。
  raspi-configを実行。インターフェース・オプション設定で、I2Cを有効にする。
  I2C関連のツール、Python3での制御のためのモジュール等をインストールする。
   $ sudo apt install i2c-tools
   $ sudo pip install smbus2
 ・Python3系を使うようにする
 ・センサー基板のI2C接続確認
   $ i2cdetect -y 1
    0x5aを検出
 ・動作関連プログラムccs811.pyを入手。
 ・動作プログラムexample.pyを実行する。
  
 今回もエラーが発生したが、プログラムを良く読み、下記の作業も行った結果、動作しだした。
 ・ccs811.pyについて…センサーの接続が0x5bになっていた。0x5aに変更
 ・example.pyについて…BME280関係のプログラム行はすべて削除し、 example-1.pyとして実行する
 ・$ sudo pip install smbus2 を再度実行

example-1.py

5.小型ディスプレーへの表示
 RaspberryPiにssd1306を使用した小型ディスプレーをI2C接続し、文字を表示するプログラムを見つけた。(下記参照記事)

 *参照記事
  SSD1306表示デバイスを使って、文字列や画像を表示する
  https://zenn.dev/kotapro/books/raspberrypi-tips/viewer/250_kiso_ssd1306
 
  ラズパイで測定したCO2とTVOCの値をディスプレーに表示させる
  https://www.itmedia.co.jp/news/articles/2109/18/news018.html


 端末にCO2濃度を表示する上記のexample-1.pyに、文字表示のプログラムを付け加えればいいと考えた。

 ・小型ディスプレーへの文字表示用モジュールのインストール
   $ sudo pip install adafruit-circuitpython-ssd1306
   $ sudo pip install pillow
 ・文字表示プログラムssd1306_text.pyを実行
 ・example-1.pyとssd1306_text.pyを合体したプログラムmeasure.pyを作った。
  当然文字表示コマンドdrawの部分は、CO2濃度の表示になるよう変更した。

 文字(CO2,TVOC,ppm,ppb)は正しく表示するが、co2,tvocの測定値がどうしてもうまく表示できない。
 drawコマンドの書式が正しくないと思われたが、それ以外の要因もありそう。
 試行錯誤の結果、drawの前に下記のように測定値の入手コマンドを書き加えることで、解決できた。
  voc, co2 = ccs811.get()
 フォントの大きさ、表示位置、表示間隔など少し変更した。

measure.py

現在は写真のようにバラックで動かしているが、小さなケースの中に配置し、簡易CO2計にしてみたい。


監視カメラ(IPカメラ)

2016年11月20日

RaspberryPi B+にカメラモジュールを取付け、適当なプラスティックケースに組み込んで監視カメラにしてみました。
苦労したのは、
 仮設置テストでWiFiで繋がっていたのに、設置予定場所では接続が不安定
 (自宅無線LANのAPへの接続が自宅周辺の場所によりかなりバラツキ大)
 自宅外からの接続(画像のストリーミング配信)がうまくいかなかった
 (一時的に成功したが、通信設定などいろいろテスト中にNGになった)
WiFi接続…無線LANアダプターの交換、無線LAN子機をケース内に組み込み、等いろいろ試みたが、最終的には接続安定な個所を何とか探し出した。
ストリーミング配信…サーバーの設定、ネットワーク関連の設定をよく見直し成功

監視カメラ設定詳細1へ  (CPU基板を変えて再製作。下記№2。)


監視カメラ(IPカメラ) 2

2017年 8月 日

製品完成・販売のアナウンスから約5ヶ月、やっと待望のRaspberryPi Zero Wが入手できました。技適合格まで長かったこと。
早速カメラモジュールを接続し、監視カメラの製作に取り掛かりました.。
Rasp Pi Zero Wの小さいこと。これで無線LANもBluetoorhも搭載されているとは!正に今はやりのIoT向けにぴったりのCPU基板でしょう。
Raspberry Pi B+基板を基に動作させせていた経験とカメラモジュールを動作させるドライバーの組み込み方法の記事を見つけて、うまく動作するようになりました。
現在、カーポートの柱に取り付け、動作テスト中です。

監視カメラ設定詳細2へ

監視カメラ映像


センサーライト

2016年11月 日

赤外線センサーによる動体検知基板(キット)を入手して組み立て、接点出力を利用してLEDライト2個を点灯するようにしてみました。
適当なプラスティックケースに部品類を取付けましたが、センサーとLEDライトの取付け角度が悪く、人間の検知とライト点灯方向がうまく調整できなかった。
明るさ検知をCdsで行ったが、その調整幅が狭く、夜間のみ点灯がうまくいかず見た目の不格好さ、屋外での取付の難しさ、等から市販品を購入しました。
カーポートの柱に取り付けています。

*写真は、購入した市販品

センサーライトの設置へ


Voice Kit

2017年12月26日、2018年 7月17日追記

最近”スマートスピーカー”が話題になっている。RaspberryPiにGoogle AssistantAPIを入れてそれに近いことができるというので、マイク・スピーカーをつないで遊んでいた。
Googleから”Google AIY Voice Kit”なるものが売りに出され、”Google Home”と同じようなことができるというし、日本での先行発売もされるというニュースを目にし、早速購入した。
RaspberryPi3Bも必要だということだったが、手持ちの3Bの調子が今一なので、思い切ってもう一台購入した。
結構簡単に組立ができ、いろいろ遊んでいる。Google Home miniのような使い方ができるのかと思っていたが、日本語での対応という点で、ちょっと違っていたのは残念だったが、これはこれでいろいろ楽しめそうだ。

(2018.7.17追記)Google-Assistant-SDKの日本語化が実行されたのを機に、自動起動化も実施。ハンズフリーのGoogle Homeもどき品が出来上がった。

Voice Kitの製作へ


シェアする

  • このエントリーをはてなブックマークに追加

フォローする