月別アーカイブ: 2021年5月

Aliで買った1.3インチのOLEDの動作確認

alieで買ったOLEDの動作確認のメモ。

買ったのもはこちら。商品のレビューが星一個だったけどストアの全般的な評価は悪くない。

秋月で売っているこれの一回り大きいものだと思う。(持っていないので多分)

かったとこにデータ乗っていないけどたぶん同じ物あつかっているとこ(こことか)みると3v-5vでSH1106ドライバで動くとのこと。

接続はしたな感じ

LED-Arduinoで

  • VDD-5V(または3.3VでもOK)
  • GND-GND
  • SCK-SCL
  • SDA-SDA

ライブラリはこいつを使ってExampleのsh1106_128x64_i2c.inoで動作。

既存のCO2センサー(EPEA-CO2-NDIR-04)の画面を変えたバージョンを作りつつちょっと触ってみる。(といってもtextでればよいのでさらっと)

M5Stack+MHZ19B/Cキット組み立て方法

わかりにくい場合、画像等を追加します。購入モールのメッセージ、twitter等でご連絡ください。(本ブログは数週間に1度程度しかチェックしていません)

半田付け

半田付けは「MHZ19用基板にMHZ19及びピンヘッダーを付けつ手順」と「LEDと抵抗をつける手順」の2ステップです。

MHZ19用基板

ピンヘッダーを10+5個分基盤につけます。上面側にピンも来るようにつけてください。水平が狂うとM5Stackに差し込んだ時の接触が悪くなります。(ある程度は付属のワッシャ等で調整可能)

LED

抵抗をLEDの足につけます。アノード/カソード好みで大丈夫です。長さはケースにおさまる程度に修正してください。付け終わったらビニテ等でそれぞれ接触しないように絶縁してください。

LEDはAliexpresで購入したこれを使っています。

組み立て

M5Stack

底面(アクリルの板)、ナット、M5StackのM3ボルト取り付け穴の順になるように取り付けます。ボルト/底面/ナットを手で大体しめた後にM5Stackの背面取りつけ穴に合わせてドライバーでしめるとやりやすいです。

MHZ19

ワッシャ、底面(アクリルの板)、ナット(及び必要であれば高さ調整ワッシャ)、基板、ナットの順に取り付けます。使用するのは短めのプラスチックボルトです。

ナットを少しゆるめてピンヘッダーをスライドさせてM5Stackに差し込みます。差し込んだ後に改めて締め直してください。

LED

M5Stack上面の22番にアノード、Gにカソードを差し込みます。

ケースカバー

それぞれ上からはめてボルトとナットで固定します。

M5Stack+MHZ19Bで通信機能詰め込みCO2センサー

キットの組み立て方はこちらから(MHZ19Cも同一手順)

M5StackとCO2センサーモジュールMHZ19Bを使って通信機能を詰め込んだCO2センサーを作成した。一応1000ppm警告のLEDも付いている。使える通信(と表示)は以下。

  • もとから付いている画面
  • シリアルでのPC等へのUSB経由出力
  • Wifi経由の出力(サーバになる、2.4G回線のみ)
  • bluetooth出力

画面とシリアル出力は常に起動。Wifiとbluetoothは起動時に選択した場合のみ。

画面はこんな感じ。

シリアル出力はこんな感じ。teraterm等で確認するのが楽かも。転送速度は9600。Windows用のCO2閲覧ソフトでも(これに限らずJSONできたら)みられる用にする予定。

[yoshitake@localhost ~]$ stty -F /dev/ttyUSB0 raw 9600
[yoshitake@localhost ~]$ sudo  cat /dev/ttyUSB0
{"CO2":402}
{"CO2":401}

WifiはM5Stack起動時にAボタン(画面向かって左側)が押されていたら起動。繋がった際に画面にipアドレスが出力されるのでそのアドレスにアクセスするとJSONが返ってくる。192.168.1.15がM5StackのIPだとするとhttp://192.168.1.15/で値がJSONで返却される。呼び出し元のページがあるとIoTなこといろいろできる。なお、Wifiに10秒以上つながらなかったら設定モードに入る。設定はスマホアプリのESPTouchというものを使用。英語だけれどもパスワード入れさえすれば動く。注意点はスマホのWIFIが2.4Gのアクセスポイントに繋がっていないといけない。

bluetoothは起動時にBボタン(画面真ん中)が押されていたら起動。CO2Sensorという名前のデバイスが現れるのでそちらに接続すると数値のみが定期的(いまは6秒)で送られる。AndroidであればSerial Bluetooth Terminalというもので取り敢えず値がとれる。

なお、起動後にAボタンとCボタン(画面向かって右側)を長押しするとキャリブレーション(今の濃度を400とみなして基準値のリセット)を実行する。「日光の当たらない場所(できれば夜間)」で「20分以上きれいな外気」にあててから実行する。補正する為の比較対照が無い状態でも通常±50ppm以内には収まる。

ソースはこちら

ハードはM5StackBasicとこちらのキット

Raspberry Pi Pico + SSD1306 + CircuitPython

表題の組み合わせでハマったのでメモ

環境

  • Raspberry Pi Pico
  • CircuitPython(adafruit-circuitpython-raspberry_pi_pico-en_GB-6.2.0.uf2)
  • SSD1306ドライバーのOLED(128*32)
  • ライブラリ(adafruit-circuitpython-bundle-6.x-mpy-20210430)

動いたライブラリ

adafruit_displayio_ssd1306.mpy他(adafruit_scd_30.mpyはセンサーのライブラリで不要)

~/develop/scd30_pico/lib$ ls
adafruit_bus_device    adafruit_displayio_ssd1306.mpy  adafruit_scd30.mpy
adafruit_display_text  adafruit_framebuf.mpy

コード。

# SPDX-FileCopyrightText: 2020 by Bryan Siepert, written for Adafruit Industries
#
# SPDX-License-Identifier: Unlicense
import time
import board
import busio
import displayio
import terminalio
from adafruit_display_text import label
import adafruit_displayio_ssd1306

import adafruit_scd30

displayio.release_displays()

i2c_oled = busio.I2C(scl=board.GP19, sda=board.GP18)
display_bus = displayio.I2CDisplay(i2c_oled, device_address=0x3C)
display = adafruit_displayio_ssd1306.SSD1306(display_bus, width=128, height=32)

scd = adafruit_scd30.SCD30(i2c_oled)

try:
    while True:
        CO2 = scd.CO2
        print(CO2)
        text_group = displayio.Group(max_size=10)

        # Draw a label
        text = str(CO2)
        text_area = label.Label(terminalio.FONT, text=text, color=0xFFFFFF, x=0, y=4)
        text_group.append(text_area)
        display.show(text_group)

        time.sleep(2)
except Exception as e:
    print(type(e))
    print(e.args)
    print(e)

動かなかったライブラリ

adafruit_ssd1306

事象

初期化すると、PCにUSBとして認識されなくなる

i2c = busio.I2C(board.GP21, board.GP20)
display = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c)

上記で下の感じ

[4936305.202012] usb 2-2: new full-speed USB device number 74 using xhci_hcd
[4936305.202193] usb 2-2: Device not responding to setup address.
[4936305.410209] usb 2-2: Device not responding to setup address.
[4936305.618018] usb 2-2: device not accepting address 74, error -71
[4936305.746021] usb 2-2: new full-speed USB device number 75 using xhci_hcd
[4936305.746221] usb 2-2: Device not responding to setup address.
[4936305.954217] usb 2-2: Device not responding to setup address.
[4936306.162031] usb 2-2: device not accepting address 75, error -71
[4936306.162095] usb usb2-port2: unable to enumerate USB device

バグなのか使い方か不明。まだissueの流れが早すぎて見るの諦めた。