ラベル OLED の投稿を表示しています。 すべての投稿を表示
ラベル OLED の投稿を表示しています。 すべての投稿を表示

2018年5月18日金曜日

C基板用アクリル板


秋月のユニバーサル基板はサイズごとに名前がついてシリーズ化されてます。

そのうち、C基板はサイズが手頃なので、よく使います。少し前に基板にフィットするサイズのアクリル板が発売されていたので、使ってみました。

バラックなのに、いい感じに見えますw



これは空気質(TVOC:総揮発性有機化合物)とCO2濃度センサーのCCS811と0.96インチOLEDをESP32 Dev Kitで制御しているものです。友達に頼まれて作りました。

CO2、締め切って眠り、起床一番での数値は4000ppmを越えていました。あまり風がないせいか換気してもせいぜい1000ppm程度。屋外に出ても同程度でした。その後風向きが変わって大気レベルに近い450ppmまで下がりました。

前にも書きましたけど…換気は大事っすね…。

あと、当たり前ですがガス排気筒の近くは恐ろしい値になりますw

2018年5月9日水曜日

空気質+CO2センサー CCS811

空気質センサーとOLEDをESP32に接続し、Ambientで可視化しました。

Strawberry LinuxさんのCCS811モジュールとAdafruitさんのライブラリで何事もなく動作します。Adafruitさん、今度買うからね(AdaとSparkfunさんには購入ノルマを設定して時々お布施しています)。

ただ、ハマりポイントがいくつか。
  1. 電源、I2Cの他にReset(VDDへ)とWake(GNDへ)も接続しよう
  2. 基板裏のアドレス選択ジャンパをハンダ付けしよう(0 : 0x5A)
  3. I2CはGPIO21(SDA)とGPIO22(SCL)
これでサンプルコードは動きます。

さらに、OLEDに値を表示するようにしてみました。OLEDライブラリもCCS811ライブラリも初期化でWire.begin()呼んだりするので、初期化の順番が違うとCCS811がヘソを曲げます。この複数のライブラリが勝手にWire.begin呼び出す問題、なんとかならんですかね。どうせWireはオブジェクト一個なので、ライブラリを使うユーザが自主的に初期化すべし、の方がありがたいのですが…初心者保護でしょうがないのかなぁ…。

で、とりあえずCCS811から読んだ値をOLEDに表示できるようになった…と思ったら、途中で動作が不安定に。CCS811から値が返らなくなり、電源を切るかCCS811のRESET端子を一度GNDに落とさないと動いてくれません。I2Cの処理が干渉しているようで、それぞれの通信後にdelayを入れたら安定して動作するようになりました。あるある。

ついでにAmbientにデータを上げるようにしました。Ambientホント楽。

化学物質過敏症で困っている方に貸し出してしまったので写真はありません。いやー、歩きながらディスプレイ見ていると、時々すっごい値が出てきますね。ちょっと窓を閉めているとあっという間に1000ppmに達します。近くに手を置いただけで600ppmになったり。人間がどれだけ二酸化炭素を噴出しているかがわかります。

TVOCの最高値はとある喫煙室で、6000ppbを記録しました。おおおおお。

ってことで、ソースです。


2016年12月22日木曜日

Arduinoで実用品:ポンプ駆動装置・1 【ハード編】


■概要■

ご依頼をいただいて、24Vギヤードモータ付きチューブポンプ駆動装置をArduino nanoで作っています。

Arduino nanoを選んだのは、今回スイッチと表示機とモータードライバを駆動するのでGPIOがたくさん必要、WiFi不要、安価、5V仕様…など。

チューブポンプはツカサ電工のPT-FP1-550-KA,24V。定格24V600mAで1分間の吐出量550mlです。

モータードライバはモータードライバー TB6643KQ、今回逆転は必要ないのですが、一応汎用性を考えて選びました。保護回路などを考えるとバラのMOSFETで作るより安いですし。

表示器には電子工作業界標準(笑)のOLED 0.96を使います。

入力は、スタートボタン、内照付きストップボタン、フットスイッチ、設定用ロータリーエンコーダ。

ケースはアクリル板で作ります。このためにDraftSightという2D CADを習得して図面引きました。最初CADの操作感がわからず、いくつか穴の開いた長方形のアクリル板を描くのに2時間ぐらいかかりましたが、チュートリアルを終えた今、もうサクサクです(当社比)。Illustratorより性に合っている感じ。その後またIllustator派に鞍替えしましたw

当初アクリル板を仕入れてファブスペースみたかのレーザーカッターでカットしようと思っていたのですが…45分の使用料2160円+施設使用料1080円の合計3240円。ちょっと1枚カットしてくるだけだとちょっと痛いなぁ…と思ってElecrowさんのアクリル板加工サービスの見積を取ってみたら、送料を含めても未加工アクリル板を日本で買うよりも安かったので、お願いしてみようと思ってます。試作は近所で手軽に、完成品は海外で。おおメーカーっぽい(笑)。

■回路■



ACアダプタから24vを供給してモータードライバ経由でモーター、Arduinoは三端子DC/DCで9Vに落としてVinに供給します。モータードライバは1個でいいのですが、基板上がガラ空きだったので、2個付けられるようにしました。前述の各種スイッチの端子などもそれぞれコネクタ出し。それでもまだ大量にGPIOが余っているので、一応PADとして引き出しておきました。

なおEagle Libraryとしてインターネット上で見つけたArduino nanoを使ったのですが、ピン番号が間違っていたので書き直し。いやー、公開されているライブラリを信じるな、ってのはJava業務アプリなんかだと当たり前の話なんですが、部品でも同じっすね。

 Arduino nanoをソケットで実装する形にしています。お客様が遠いのでソフトをアップデートする必要があるときには、プログラムを書き込んだnanoをお送りして差し替えていただく想定です。

廉価版(prototype)だけど、きれいな仕上がり@Elecrow

なお、基板はご希望があれば送料込みサポートなし1枚1,000円でお分けします。 info@kurahashi-ya.com までメールください。

■ケース(仮)■

アクリル板で作りますが、アクリルは高いのでプロトタイプをMDFで作りました。

レーザーカッターでMDFを切断してスイッチなどを取り付けてみたら、こんな感じです。CADは無料のDraftSight Mac版を使いR2010形式で保存したものをIllustratorで整えて、Univarsalの30W炭酸ガスレーザーカッターを動かしました。

不器用でアルミシャーシをまっすぐ切断できなかったワタクシとしてはネジ穴などがビシっと合うのは嬉しいですw

仮組みというか乗っけただけですw

切断面が黒いのはレーザーカッターによるもの。MDFは木材の繊維を樹脂で固めたものなので、切断面は溶けた(燃えた?)樹脂で固まっていて触っても手に汚れがつくことはありません。布で強くこするとうっすら汚れが付く程度で、アルコールティッシュなどで拭き取っておけば大丈夫です。

しかしツマミが昭和なデザインだなorz ポンプ位置は少し手前にして全体の高さを低くし、ボタンももうちょっと右かな…。

というわけで、次回ソフト編に続きます。その後、ケース編で完結の予定です。

年内にはちょっと無理かな…。無理でした(2017-02-26)

2016年5月27日金曜日

Arduino空気質センサー+OLED



3年ぐらい前に作ったArduinoニオイセンサーの記事が未だにアクセスが多い。ありがたいことです。

でも、あっちの記事で使っているTGS2450は、いろいろタイミング制御やら電圧制限やらが厳しくて、気楽に使えません。

ので、先日ESP-WROOM-02でも使った空気質センサーを使って、作りなおしてみました。

なお、上の写真でグラフが急上昇しているのは、地味なので消臭スプレーを噴射してみたところです。人間の感じるいい匂いと空気質が必ずしも一致しない、という図です。でも、私が「ハー」ってやると確実に上昇します。ちなみに冬の早朝、部屋の空気を入れ替えた状態が一番低い値を示していました。

■使用部品■

Arduino nano(他のArduinoや互換機でも問題ないはず), 空気質センサー, OLED 0.96インチです。なお、安いところで買うと詳しい説明書いてないのですが、ピンの配列や対応する電源電圧などが異なる場合がありますので、十分ご注意ください。

なお、配線のためにミニブレッドボードとメス-オスのジャンプワイヤを使いました。

■配線■

Arduino nano/unoAirQuality Sensor0.96インチ OLED
A0AO(Analog out)
5VVCC
GNDGNDGND
A4SDA
A5SCK(SCL)
3v3VDD


■プログラム■

ESP-WROOM-02の記事では別のライブラリを使っていますが、ここではAdafruitさんのライブラリを使ってみました。大きなフォントが今ひとつなんですが、グラフィックスの命令が豊富なのでこのあとグラフ化も簡単でした。

コードのほとんどはOLEDへの表示です。

AirQualityセンサーからの値はアナログ値なのでanalogReadで読みます。読んだ値は64桁のバッファに格納して、これを用いてグラフを描画しています。

ソフト屋としては、「単純バッファで毎回シフトw」「グラフの描画で座標を二重に計算ww」など、ちょっと恥ずかしいのですが、わかりやすさを優先しました(真顔

あと、ドットを描画する命令がわからなかったので、drawLineで同じ座標を指定してます。ドキュメント読めば書いてあると思うんだけどw


2016年3月16日水曜日

ミニブレッドボード満載

今気付いたけど温度と湿度が逆だな。直しました。

ミニブレッドボードはかわいい。場所を取らないし安い。出来る子なんです。というわけで、てんこ盛りにしてみました。

BME280、秋月さんがずっと品切れ状態なので、部品沼に沈んでいたものを使います。同ブレイクアウト基板はBME280の機能すべてを使える形のものが秋月さん、Sparkfun、スイッチサイエンスさんから出てますが、このメーカー不詳の基板はI2Cでの利用だけに特化しているので、場所を取らず配線がラクです。

空気質センサーは電源にUSBシリアルからの電源を直接つなぎ、センサーからのアナログ出力を半固定抵抗で分圧してTOUTに入力しています。

OLEDは例によって0.96インチSSD3306搭載のアレですが、今回は白を使ってみました。なお、ロットによってGNDとVCCの位置が逆だったりしますので、くれぐれもご注意ください。

肝心のESP-WROOM-02は自前のボードです。近日発売なので、その節はよろしくお願いします。 本日発売されました(2016年4月11日、追記)。

<追記 2016-03-18> 空気質センサーは90mAも消費するだけあって、動作させたままだと結構暖かくなります。放射温度計で測ったところ、一番暖かい場所で51度でした(室温24度)。使用する時にはこのことをお忘れなく。

■設計■

123Dとか使えば良いんですが、必要なモジュールがないと面倒だし、今回は回路ってほどのものではないので表計算を使いました(笑)。

あ、背景塗り忘れがある。けど面倒なので直さない

雑ですが、色は「硬いジャンパーワイヤ」の色です。」と「は曲がり角。まず最初に部品同士がぶつからないか実際に挿してみてレイアウトを決めます。それから、最初にGND、次に電源、それから信号線を置いていきます。置いたら長さを数えて、それに合った色を塗っておきます。

なお、配線図でBME280のVccとGndをESP-WROOM-02のIO13, IO12につないでいます。BME280はごくわずかな電流しか消費しないので、ESP-WROOM-02のGPIO出力から電源を取ってしまおうという寸法です。ピンによってはプルアップ済だったりリセット時に異常な電圧が出てくるのですが、IO4/IO5/IO12/IO13であれば問題ありません。ただ、ESPにかぎらずマイコンのGPIOはリセット時にハイインピーダンス状態になるので、起動したらなるべく早くHIGHとLOWを出力するようにします。間違ってもHIGHとLOWを間違えないようにしてください。

ちなみに私のジャンパーワイヤー入れはこんなぐあいに長さと色を表?にして張ってあります。長さより穴数の方が良かったなーと毎回思うので次のバージョンでは併記したいと思います。まぁたまにオレンジ色みたいな赤とか、青か緑か区別できない色のワイヤが混ざってたりして悩むのは改善されませんが。


なお、このパッケージに入って売っているジャンパーワイヤーは短いのがすぐになくなって、長いのだけが残ることで有名ですが、サンハヤトで短いやつだけ売ってます。直角になってなかったり平行でなかったりして閉口しますが、私はたくさん買ってストックしてあります。


■ソフトウェア■

今回先に貼っておきます。今まで使っていたBME280用ライブラリがこのモジュールでは動作しなかったので、例によって彷徨った結果、Sparkfunさんのライブラリが動作しました。I2cモードを選択し、I2Cアドレスは0x76ですのでご注意を。

余談ですが、以前から使っていたライブラリが動かなかった時には「あ、またebay.comにやられたか?」と思いました。Ebayはたまに部品番号はあっていてもタイトルが間違っていることがあります。以前9960を探している時に「RGB Gesture Sensor」って書いていてある9930というチップがヒットしました。やけに安かったのでたくさん買ってみたら単に明るさと近接センサーだけで安物買いのなんとやら。なので今回、もしや高価なBME280(温度湿度気圧)ではなくBME180(温度湿度)なのか?と思ったりしましたが、無事でした。

なお、9930はお風呂時計用デジタル時計で「部屋が明るくなったらLEDの表示をonにするための機能」として健気に働いております。

ebayのご利用は慎重に、くれぐれもat your own riskとpaypalで。

まぁ今回は、ライブラリ変えたら動きました。空気質センサーは半固定抵抗で分圧した値をTOUTに入力したので、アナログ値を読み取ってそのまま表示しています。

表示はOLED、以前と同じくこのライブラリを使っています。

各ライブラリの作者のみなさんに感謝致します。



■配線と動作確認■

設計通りにすべてのジャンパーワイヤーを刺していきます。直角に曲げるときにはラジオペンチやピンセットを使います。

刺し終わったものがこちら。


この状態でもう一度実物とあわせながら配線が間違っていないか確認します。


テスターがあれば、最低限GND-Vcc、Vcc-Vin、Vin-GNDがショートしていないかを確認しておきます。次に、ESP-WROOM-02だけを挿して、USBシリアルとの間の5vとGndだけを接続してみます。この状態で、もう一度テスターでGnd-Vin(5v)、Gnd-3v3の電圧を確認します。USBシリアルからの出力電圧やUSBからの電源電圧はわりといい加減ですが、どちらも誤差5%以内なら問題ないです。


さて、電源に問題がなければ、一度USBシリアルからUSBを抜いて、5v-Vin間の配線を外します。この状態で残りの部品を挿して行きます。

今までもわりと慎重に進めてきましたが、ここで間違うと元も子もないので、配線表と確認しながら実施します。なお、私は過去、そもそもの配線表が間違っていた、という過ちにより何度かチップを殺してしまったことがあります。くれぐれも各段階での確認は怠りなく。


そして、最後に電源を接続してUSBシリアルをUSBと接続、今回上記BME280ライブラリが動かなかった件を除けば、一発で動作しました。まぁ、今まで使ったものを組み合わせただけですからねぇ。

なお、まだGPIOピンが3本(電源に流用したものを含めれば5本)余ってますから、ダストカウンターを接続することもできますし、I2Cにはアドレスがぶつからなければ、まだ5-6個は搭載できます。TxとRxも空いているのでGPSも使えます。

…そんなのを何に使うんだ?という疑問をもってはいけません。

以上、ミニブレッドボードてんこ盛りでした。

■追記■

ダストセンサーPPD42も追加してみました。

…いかん、ミニブレッドボードからはみ出してしまった。



2016年2月8日月曜日

ESP-WROOM-02カスタム基板:ダストカウンター&OLED

出荷前連続稼働テスト(DSM501版)

■発端■

facebook友達のO先生が「PM2.5センサー欲しいけど高い」と書き込んでいて、私が「ポケットマネーで作れますぜ、しかもWiFi対応」とコメントしたところ、受注が決まりました。

話が早いw

■仕様確認■

当初は、倉橋屋謹製Board1をベースにしてユニバーサルボードかブレッドボードで、と考えていましたが、「持ち運ぶので丈夫かつコンパクトに」とのことで基板を起こすことになりました。
  • MCU:ESP-WROOM-02
  • 表示器:電子工作のお友達「0.96インチ OLED」
  • ダストセンサー:神栄テクノロジー製のPPD 42NJ
  • 電源:5vをモバイルバッテリなどから。USBコネクタは使わず変換ケーブル使用
  • 3ミリのネジ穴を4つ
  • センサー / OLEDはボードに乗せない。
  • センサー / OLEDとの接続は逆差し防止の爪付きコネクタ

コネクタの名前がわからなくて、某電子工作コミュニティに質問したら、みなさん教えてくださって、なかには「近くにいるから寄った」と写真まで取ってきてくださった方も。ありがとうございました。いつかコミュニティにお返しができれば良いのですが。

■設計■

Board1 Ver 0.3をベースにがっつりコネクタなどを配置。PPD 42NJについては5v電源・5v出力なので、抵抗で分圧してからESPに入力。

ほとんどauto route



はい、絵画的センス皆無ですorz

■検証■

Board1 Ver.0.0を使い、ブレッドボードでセンサーとディスプレイの動作を確認しました。ここまでだいたい48時間ほど。ホント、話が早いのは良いことです。


■基板発注〜納品■

例によって、最初の設計が出来てから2-3日寝かせます。今回ちょうど週末にかかっているのと他に3種類の基板が同時に設計出来上がったので、いいタイミングでした。

1/18....発注
1/26....深センから発送(EMS)
1/28....到着

DHLよりEMSの方が安くて早い。DHLは日本に着いてからが遅いんですよね。



で、週末の1/30、早朝からリフローです。2枚並行して作ろうと思ったのですが、もし設計にミスがあったら2枚分の部品がパーなので、1枚だけ作りました。なお、自分用にリフローする時は、ESPの端子には横一列にまとめてハンダペーストを置いてしまうのですが、今回は受託品なので丁寧に一個一個ランドに置いていきました。そしてホットプレートでリフローし、スルーホール部品をハンダ付けして完成。

とりあえずLチカを…と思ったのですが、LEDを取り付けたIO13にはダストセンサーをつなぐことになっているので、その替わりにTxラインに Serial.write("tarepanda");と送って、ランプが点灯することを確認しました。以前間違えてLEDと直列に10kΩの抵抗を入れたらホタルイカのようにササヤカな光が点ってそれはそれで味わいがありました。

今回は元の設計通り1kΩにしたのですが、明るいわぁ(笑)。あまりにも明るすぎるので納品版は2.2kΩにしました。それでも明るい。

■サンプルソース■

例によって難しいことはしていません。センサーからP1/P2の2本の信号線からパルスが出ていては、埃を検出した時間が長いほどP1/P2のLow時間が長くなるとのことです。P1は1.0μm、P2は2.5μmの埃を検出します。

よくあるサンプルだとArduinoのplusIn関数を使ってどちらかのパルスがLowな時間を計測し、それを30秒間合算しているという例が多いのですが、それだとP1/P2の両方を図ることができなくなってしまいます(どちらか一方のパルスに専有されてしまうので)。

なので、このサンプルでは、100μ秒ごとにポートを見に行き、LowかHighを判断し、Lowならカウンタを加算する、という単純な方法をとっています。60個の配列を用意し、各秒ごとに各配列の値を加算すれば、過去60秒間の各秒毎のLow時間を集計できますので、あとは全体を集計すれば過去60秒間の合計Lowを求めることができ、過去60秒間の移動平均も出すことができます。

追記(02/009):ソフトウェアについてもう少し詳しく書きました。

あと、ESP-WROOM-02の作例では、set upで接続されるまで待って、それから処理を継続することが多いのですが、それだとWiFiとの接続ができない場所だとデモもできません。なので、とりあえずbeginで接続を試みたあとは、通常のloopの中で接続成功したか否かを見に行き、結果をOLEDに表示するようにしました。つながらなくてもとりあえず計測および表示を続けていて、つながったら1分ごとにThingSpeak.comへ送っています。



■公開情報■

githubにてeagleデータを公開準備中です。ソースとEagleのデータをひとまとめにして公開しようとしているのですが、ついでに自分の作業用ディレクトリも大整理しているところなので時間がかかってます。

■ビルド方法など■

長いことArduino / ESPを使っていると、いつの間にかいろいろなライブラリが充実しているのですが、「これが最初!」ということになると素直に走ってくれません。というわけで、ビルドに必要な方法を挙げて行きます。
  • USBシリアルのドライバをインストール
    • Windowsの場合は、お使いのUSBシリアルのドライバをインストールするだけ
    • MacOS Xの場合、10.8以降、ドライバに認証が必要になったため、ややこしくなってしまいました。
      • 大まかな手順としては、Appleの認証のないkextの使用を許可する、という設定をして、それからライブラリをインストールします。
      • 使用許可はセーフティモードで再起動した後、ターミナルから以下のコマンドを実行し、また再起動し、それからライブラリをインストールします。
      • 使用しているUSBシリアルがFTDIの場合はここからダウンロードします。
      • 最近多くなってきたCH340についてはここの一番下(らしいのですが読めないのでわかりません…)。
      • うまくいかない場合には、ご遠慮なくお問い合わせください。
  • Arduino IDE 1.6.5
    • とりあえず動作確認した環境は1.6.5です。
    • 公式ページからダウンロードしてインストールしてください。
  • OLEDライブラリ
    • 以下のgithubからzipをダウンロードします。
    • Arduino IDEを起動し、スケッチ>Include Library...>Add .ZIP Libraryで先ほどダウンロードしたOLEDライブラリを指定して読み込んでください。
  • Time.h
    • 時間を扱うためのライブラリに含まれます。
    • このページの「Download ZIP」をクリックしてダウンロードしたファイルを上記と同じ手順で読み込みます(スケッチ>Include Libraryうんぬん


■謝辞■

各ライブラリの作者の皆様、

そして、この基板の発注主であり記事として公開することを快く許してくださったO先生、

ありがとうございました。

■お問い合わせ■

ご購入や製品開発についてのご相談はこちらまでお気軽に。

ご参考までに今回のオーダーメイド完成品で1セット2万円以下です(完成品1個+未使用基板8枚、デモ用ソフトと送料)。

また、5台からElecrowにて量産可能です。その場合、今回のものなら外付け部品も全部そろえて10台5万円程度です。

オーダの流れ:
  • メールで「こんな機能が欲しい」とご相談ください。
  • 何度かのやりとりの後、構成案と費用をお知らせします。
  • PayPalにてお支払いください。
    • PayPalはショッピングプロテクションがあり、もし納品されない場合には返金されるので安心です。私もebayで何度かお世話になりました。
  • 試作、基板設計、基板発注、基板完成、実装…など各段階で進捗をお知らせします。
  • 宅配便にて完成品をお送りします。
  • Google+にてユーザサポートを承ります。
    • グループでのサポートは無償です
    • privateサポートについてはご相談ください。

□追記(2018年12月14日)□

経験値上昇の伴い、値上げしました。最低4万円からですm(_ _)m。

あと、お取引にはココナラハンドメイドを使いますので、契約時にクレジットカード等でココナラに対して支払っていただき、納品後に私に対して決済される形になります。

ご相談はこちらまで。お気軽にどぞ。

2016年1月24日日曜日

BME280とOLEDをESP-WROOM-02で使ってみた


■構成■

BME280はボッシュ製の気温湿度気圧センサー。ワンチップでこの3つが計測できてなかなか便利、しかも秋月で600円1080円。SPIかI2Cで接続できますが、今回はI2Cとします。しかし秋月さん、どのぐらいの単位で仕入れているんでしょうね。Mouser.jpとかでこのチップ取り寄せても700円以上するし基板は特殊形状なので普通ならかなり高価になるはずです。考えるだけで恐ろしい。

OLEDは今や電子工作標準品ともいうべき0.96インチサイズのアレ。作例もライブラリも豊富、I2Cと電源/GNDの合計4本だけで動いてしまいフレームバッファ(画像メモリ)も持っているので何かとラク。

できあがったあとで、WiFiついてるのにセンサーと表示器を同居させてどうすんだ?と自分自身に突っ込みました。

■製作■

何かケースに入れて外に設置したいので、今回もユニバーサル基板で組みました。以前、「いつかきっと使う」という想いで買い集めたaitendoのFRISK大の変換基板を適当に折って使います。基板上にモジュールを挿したヘッダソケットを挿して見て、レイアウトに見当を付けます。ハンダ付けが終わったあとでおとなりと干渉して実装できない、なんてのは悲しすぎますので。

それから秋月の資料とOLEDの実物をみながら、簡単に配線メモを書きます。前回のLEDで懲りました。複数の資料をあたりながら裏側での配線を考えるのは私の脳ミソでは無理だ、と。ということで、裏側、配線面で各要素のピンがどうなっているかをメモにしておきます。



上の段からOLED、ESP基板、BME280基板I2Cでの接続(ユニバーサル基板上での位置、I2Cでの接続、BME280基板での名前)と並んでます。下の2つは作業過程のメモで使うのは上の3つです。上から4ピンヘッダソケット、9ピン足長ソケット(10ピンのを切断して使用)、6ピンヘッダソケットを使います。BME280のCSBは3.3v、SDOはGNDに接続しました。SDOはHIGHかLOWかでI2Cのアドレスを切り替えることができますが、GNDに接続するとデフォルトの0x76になり、今回使ったライブラリもそのままで動きます。



VDD、GND、SDA、SCLをそれぞれ接続します。ああ言葉で言うと簡単。朝っぱらから2時間かかったですよ、これ作るのにorz ヘッダソケットで3階建てになっているので、ヤケに高さがあります。

一番上で緑の背中を見せているのはBME280


■ソフトウェア■

BME280はこちらのライブラリを使い、サンプルを参考にさせていただきました(参考というかほぼ手直しが必要ないのですけども)。

OLEDはこちらです。今回、単純な文字表示にしか使わなかったのですが、uiクラスがあってそれを使うと複数画面を指定したアニメーションで入れ替えつつ任意の位置にミリ秒単位で別の画面をオーバーレイできる、という素晴らしい完成度です。また文字表示も素晴らしく、きれいなフォントはサイズが3種類あって右寄せ左寄せなども使えます。残念ながらクラスにラインを引っ張る命令がないので、そのうちDDAか何かで作って貢献したいですが…。

これら素晴らしいライブラリの作者に経緯を表し、感謝申し上げます。

さて、書いたプログラムはごく単純です。setupで各要素を初期化、loopでは1秒ごとに計測して表示を更新し、1分ごとにThingSpeak.comに送っています。

ご質問などはコメント欄にご遠慮なく。