1545501 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

高校化学の教材;分子と結晶模型の「ベンゼン屋」

高校化学の教材;分子と結晶模型の「ベンゼン屋」

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

プロフィール

cyn1953

cyn1953

キーワードサーチ

▼キーワード検索

カテゴリ

フリーページ

サイド自由欄

楽天プロフィールをフォローしていただくと
ブログの更新がすぐわかります

[問い合わせ] benzeneya☆yahoo.co.jp
☆→@

分子と人間 (SAライブラリー) [ ピーター・W.アトキンス ]
身近な分子たち 空気・植物・食物のもと

紙書籍版もあります




結晶模型表面はアクリル板をカットして作ります

日記/記事の投稿

バックナンバー

カレンダー

コメント新着

通りすがり@ Re:ラズベリーパイpicoでCO2測定(4)フリスクサイズのCO2モニター(05/07) シンプルなプログラムで、過去の計測結果…
cyn1953@ Re:明けましておめでとうございます…2022年記事ランキング(01/01) あけましておめでとうございます。 いつも…
湯口 秀敏@ Re:明けましておめでとうございます…2022年記事ランキング(01/01) 素晴らしい、継続は力なり、ですね。
2021.05.07
XML
カテゴリ:コンピューター

CO2モニターができました。

11x3.5x1.2cmのケースに収めました。
ケースは2mmのアクリル板をレーザーカットして作りました。

①ハードウエア
 ラズパイpicoとの配線は以下のようにしました。

ここで、
MHZ-19CのRXにPICOのUART-TX、
MHZ-19CのTXにPICOのUART-RX、をつなぎます。
実は逆につないで、動作せず。しばらく悩んだ。

②ラズパイPICOのコーディング
 MicroPythonで組んであります。
ラズパイPICOを初期化して(やり方はYouTubeやWEBで検索してください)
USB経由でWindowsのThonnyからコーディングします。
PICO内の不揮発メモリーに2つのコードを保存します。

必要なものは、
ssd1306.py:OLED用ドライバーです。
main.py:CO2センサーからデータを取り、表示するコードです。

ssd1306.pyはThonnyの”ツール”→”Manage packges...”から検索してダウンロードします。

右上、[Serch on PyPi]をクリックすると

"micropyton-ssd1306"があたりますので、[インストール]を押して
RaspberryPICOに保存します。

main.pyは以下です。
###############################################################
# SSD1306 OLED Display I2C Tests with the Raspberry Pi Pico
# 2021/5/7 by BenzennYa
# ssd1306 package from
# https://github.com/raspberrypi/pico-micropython-examples/tree/master/i2c/1306oled
# Raspberry Pi PicoでCO2濃度を測定する by Qiita@SamAkada
# https://qiita.com/SamAkada/items/f9bbd8f777d8aa7fc6d9
################################################################
#
from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
import utime
#
pix_res_x  = 128 # SSD1306 horizontal resolution
pix_res_y = 64   # SSD1306 vertical resolution
i2c_dev = I2C(1,scl=Pin(15),sda=Pin(14),freq=400000)  # start I2C on I2C1 (GPIO 26/27)
i2c_addr = [hex(ii) for ii in i2c_dev.scan()] # get I2C address in hex format
oled = SSD1306_I2C(pix_res_x, pix_res_y, i2c_dev) # oled controller
#----画面表示---
oled.fill(0) #OLEDの表示を消す
oled.text("CO2:      ppm",20,0) #数値表示用の固定文
oled.line(0,10,0,64,1) #グラフ軸
oled.text("1K",2,40,1)
oled.text("2K",2,15,1)
oled.show()
#
gx=0 # グラフx軸初期化
mhz19c=machine.UART(1,baudrate=9600) # UART
#----CO2数値とグラフの表示---
while True:
    for gx in range(98):
        data=bytearray([0xff, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79])
        mhz19c.write(data)
        mhz19c.readinto(data,len(data))
        co2=data[2]*256+data[3]
        print(str(co2)+'ppm')
        oled.text(str(co2),60,1)
        oled.show()
        utime.sleep(1)           # 時間をおいて
        # CO2数値を消去
        for v in range(8): 
            oled.line(60,v,100,v,0)
            oled.show()
        #
        if co2 > 2200:
            co2 = 2200
        oled.line(gx+20,64,gx+20,64-int(co2/50),1) # 棒グラフを書く
        oled.line(gx+21,64,gx+21,15,0)   # 一つ先の棒グラフを消す
        oled.show() #oled show
        
        #横軸97picselで先頭に戻す
    if gx == 97:
        oled.line(20,64,20,15,0)     #先頭の棒グラフを消す   
        gx=0
#-----------

それぞれ、コメントを入れてありますので参考にしてください。

なお、
 utime.sleep(1)           # 時間をおいて
で、1秒間隔で測定表示していますが、
10秒~60秒;utime.sleep(10)やutime.sleep(60)
くらいが実用的だと思います。

③その他
 電源(USBを差し込む)を入れるとmain.pyは自動的に動きます。
 MHZ-19Cは、補正をかけることができるのですが、
動作しなくなったら怖いので、そのまま使っています。
換気の良い室内で470ppmですので、目安としてはいいと思います。
 また、
電源投入時はおかしなデータが出力されます。
1分ほど待つと、確からしいデータが出てきますのでしばらく待つといいでしょう。

以上です。





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2021.05.07 22:51:48
コメント(2) | コメントを書く



© Rakuten Group, Inc.