virt_flyのブログ -47ページ目

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。

 

SSD1306 搭載の0.96インチOLED モジュール

 

定期処方の薬が、2ヶ月前から別なメーカー製のものに変わっていました。薬剤師が言うに、医薬品の流通が滞っている影響だとのこと。まだコロナの影響が続いているようで驚きました。

 

Raspberry Pi 4やRaspberry Pi Zero、IchigoJamなどのシングルコンピューター他が、品薄や入荷待ちとなっているのは、ステイホームの影響で試してみようと思う人が増えたからだと思っていましたが、こちらもコロナによる半導体生産への影響が反映しているのかもしれませんね。

 

身体に装着して使用するのに、GPIOピンのついていないRaspberry Pi Zero Wが欲しいと思っていたのですが、スイッチサイエンスやケイエスワイでは在庫なしが続き、そのうちに価格の高かった秋月電子のものもいつの間にか在庫がなくなり、中国からの商品は足元を見られてか価格が高騰しています。

 

仕方がないので以前購入してあったRspberry Pi Picoでも使おうかと思っています。そこでPicoの使い方をネットで調べていて、安い有機ELディスプレイOLEDの存在を知りました。

 

これまでは、サイズの小さい液晶では字も小さいばかりか、画素が粗くてぼやけて何が書いてあるのか読めないのに、値段が高くて関心をもつことはありませんでした。が、今回知ったSSD1306 搭載の0.96インチ解像度128x64ドット I2C 接続 のOLED モジュールは、バックライトの必要なLCDとは違って自身が発光して美しく、4ピンで扱いも簡単でIchigoJamならCN5端子にさすだけで使えるとか。価格も手の出しやすい範囲とあって購入しました(VKLSVAN 2個 0.96" iic i2c ホワイトOLEDモジュール128×64 OLED LCDディスプレイArduinoに対応 )。

 

届いたOLEDは思った以上に小さく、これなら安いはず。そりゃ1インチに満たないのですから当然といえば当然。広告の拡大写真にすっかり惑わされていました。

 

さっそく、IchigoJamにOLEDモジュールを装着、ドライバー用のBASIC版プログラム(注参照)数行を打ち込み試してみました。ドライバープログラムを読み込み、あとは一行プログラムを実行するだけ。その内容は、表示させたい文字を一旦ディスプレイに書き出し、次いでドライバーに跳んでその文字をOLEDに転送させるものです。超簡単ですね。

 

これなら、PRINT命令でディスプレイに表示された文字を転送してOLEDに表示させるだけなので、センサーで読み込んだ測定値を表示させることもできそうです。せっかくなので、以前温湿度センサーで使ったBASICプロウラムにOLEDのドライバー部分を書き加え、OLED画面に上手く収まるように少し書き換えて実行してみました。

 

これが正しい方法なのか知りませんが、その実行結果が冒頭の写真です。手前に写っているのがOLED、奥がディスプレイです。上から温度、湿度、WBGTの値を表示させています。

 

注)IchigoJamで頼りにしているのが国野亘氏の「ボクにもわかる電子工作ホームページ bokunimo.net」です。今回も「ボクにもわかるIchigoJam用マイコンボード」中の「I2C有機ELディスプレイOLEDの接続方法」の記事をもとに試しました。詳しいことをお知りになりたい方は、そちらをご覧ください。

 

↑車窓から見えたいくつも並ぶ似た形の雲が

 

前回のブログで名古屋まで行ってきたことにふれました。他県に出かけるのは今年1月以来でした。今回は私鉄を利用し、山間を通ることになったので、車窓から懐かしい昭和の景色や自然を堪能することができて、コロナにより強いられた自粛生活の中で溜まった鬱屈した気分が少しは晴れる旅となりました。

 

冒頭の写真は、その際に列車から撮った雲の写真です。上手でもなく綺麗でもない写真ですが、似たような形をした雲がいくつもならんでいて、こんなことが実際にあるんだと思って撮ったものです。

 

というのも、フライトシミュレーターのFlightGearの世界では、同じ型の雲がいくつも出てきて、いかにも雲の写真を使って描画されたことを感じてしまうことが多々あり、こんなことが現実にあるわけがないと思っていたからです。

 

さすがに、写真のコピーのように寸分違わぬものではありませんが、少しは似た感じに見えませんか。連続して似たような形の雲がつくられることって、あるものなのですね。

 

せっかくなのでもう1枚、この夏に撮った写真を紹介します。

 

しばしば、南洋の写真の中に、海の彼方に底を同じ高さにしてポコポコといくつもの雲が浮かんだ様子のものを見ることがあります。珍しいことに、この夏、そうした感じで空に浮かぶ雲を見かけました。

 

バイクで走行中だったので一瞬で通り過ぎてしまい、雲が見えるバイクが止めれそうな場所を探して、撮ったのが次の写真です。なかなか見るによい場所がなく、多少時間がすぎてしまい、またもともと雲が多かったので、南洋の写真のように一直線にならんでは見えません。なんとなく雲の底が同じ高さに感じ、日本の空でもこんな雲がならぶことがあるんだと勝手に決めつけ、南洋に思いをはせていたのは、コロナでかなり鬱屈した気分だったからでしょうか。

 

CO2センサーMH-Z19Bのキャリブレーション

 

今では、業務であっても緊急事態宣言や蔓延防止が発令された地域へ行くことは、相談の上という厳しい制限があるなか、名古屋まで行ってきました。

ワクチン接種は済ませているとはいえ、すでに半年まえのことで、かなり抗体も減っているはず。交通機関の利用は新型コロナの感染が恐ろしいので、自作の二酸化炭素濃度測定器を持ち込みました。

 

以前も神奈川まで出かけた際に、新幹線内で二酸化炭素濃度を測ったとこのブログに書いたことがありました。その時は、各停の「ひかり」の乗客が増えてきて急遽停車駅の少ない「ひかり」に乗り換えをしたものです。この記憶から、今回は私鉄の特急を利用することにしました。

 

行きはまあ良かったのですが、帰りは偶然この鉄道会社の新型の特急に乗り合わせることになり、びっくり。なんとCO2濃度が大幅に1000ppmを上回っているのです。

往路で乗車した同じ鉄道会社の従来型の特急では、750ppmを超えることはありませんでした。自作の二酸化炭素濃度測定器のことですから、測定値が確かなものかは断定できませんので、具体的な数値は控えますが、復路の新型特急ではどんなに控えめに見ても換気を要する1000ppmはくだらないように思われます。乗客も行きよりは多かったかもしれませんが、新型車両の換気能力に不安を覚えたものでした。

 

列車の換気についての国の基準は、客1人1時間当たり13立方メートル、当該鉄道会社のサイトでも、4〜10分で車内の空気を入れ替えと書かれています。

なお、往路では1列2席、左右2列ある指定席は、乗客が座った座席の前後、横の列の座席は空けるように席を埋めていっているように思われましたが、混んでくれば別なのかもしれません。復路では横の列の座席もペアで埋まっていました。

 

測定器の精度については、同じ会社のセンサーでも個体により違いがないとはいえませんし、仮にCO2センサーが粗悪品であっても比較するものがないので何ともいえません。ましてやセンサーを使って自作したものですから。とはいっても、Raspberry Pi ZeroにCO2センサーMH-Z19Bを付けただけ。

 

CO2センサーは、キャリブレーションを正しく実施しておくことが必要ですが、そこに問題があったとも考えられません。CO2センサーは時々外気にさらし、ゼロポイントを基準となる外気の濃度400ppmとして補正してやる必要があります。これがゼロポイントキャリブレーションです。したがって、特殊な条件下でもない限り、二酸化炭素濃度が400ppmを下回る場所はどこにもないはずですから、キャリブレーションに問題があったにしても、測定値が実際より低くでることはあっても高くなることは考えにくいことです(注1参照)。

 

今回も、事前にキャリブレーションを実施していました。ちなみに、CO2センサーMH-Z19Bのゼロポイントキャリブレーションの方法は3つです(注2参照)。
 

今回は、実際には1時間ほどセンサーを外気にさらした後、Raspberry Pi ZeroのOSのターミナルからコマンドを入力し、実行しました。

 

何かセンサーに異常があるなど他の要因が影響して測定値が高くでていたのならよいのですが、新型特急を降りて乗り換えた在来線の中や屋外では500ppm台まで測定値が下がっていましたから、あながちセンサーに間違いはなかったのかも。

 

 

注1)キャリブレーションにより、測定値が実際より低くでることはあっても高くなることは考えにくい

あやまって600ppmのときにゼロポイントとしてしまったら、実際が1000ppmでも800ppmしかないことになります。ずっと空気の悪い室内にセンサーが置かれ、24時間中に一番低かった値をゼロポイントとみなす自動キャリブレーションが実行された場合ならありうる話です。こんなことがあれば困りますが、今回のように高過ぎが問題のときにはあてはまりません。

逆はありえるのでしょうか? 外気も植物の呼吸の影響を受け変動しないわけではありませんが、ほぼ外気は400ppm(温暖化のいわれる今日では420ppm)なので、通常はこれ以下となることは考えられません。考えられるのは先同様に例えば600ppmのときに誤ってゼロポイントとされた場合は、実際には500ppmでも300ppmというありえない値が出ることもあるでしょう。これとても測定値の低過ぎが問題となっても、高過ぎとは関係がありませんし、後に自動キャリブレーションによって是正されます。

 

注2)ゼロポイントキャリブレーションの3つの方法

1)手動…20分以上400ppm下で動作したことを確認、すなわち20分以上外気にさらした後、センサーのHDピンをGNDに7秒以上接触。

2)コマンドライン…20分以上400ppm下で動作したことを確認の上、下記をコマンドラインから入力、実行。

 $ sudo python3 -m mh_z19 --zero_point_calibration

3)ABC法…電源ON後、24時間ごとにゼロポイントキャリブレーションを自動実行させる。

ONにする場合

 $ sudo python3 -m mh_z19 --abc_on

OFFにする場合

 $ sudo python3 -m mh_z19 --abc_off