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

2020年8月19日水曜日

縦の温度分布計測:電子工作

 

M5 Atom Matrixを使って、40cm間隔の室温を計ってみました。

やっぱ天井は少し暑いですね……。ちなみに27.0-28.5度が青、30.5-32.0度が赤、その中間はグラデーションです。

LEDには1分ごとの温度変化をグラフにしていますが、そのぐらいだと変わりませんね……Ambientだとこんな感じです。

10:25ぐらいにサーキュレーターを作動させました。てきめん、天井付近の温度が下がり始めて、LEDにも変化が。

いや、君、下がりすぎでしょ?!


こういう楽しさをあなたに ^ ^


■使用部品■

  • M5 Atom Matrix、表示不要ならAtom Liteでも大丈夫です。
  • 抵抗5.1KΩ
  • 温度センサーDS18B20+、結構高いっすね……AliExpressで激安なのは偽物が混ざっているそうなので避けましょう。

■配線■

M5 Atomの裏に出ているコネクタを使います。
  1. AtomのGNDとDS18B20+の1番
  2. Atomの25ピンとDS18B20+の2番
  3. Atomの3V3とDS18B20+の3番
  4. Atomの3V3と25ピンの間に5.1KΩの抵抗(プルアップ)
簡単。これでデジタル12ビット精度の温度計測ができちゃう。マルチポイントも楽勝、とても素晴らしいです。

なお、私はミス配線を減らすために秋月E基板とロングピンソケットを使って下駄を作りました。ATOMの裏のソケットってピンヘッダだとスカスカなんですよね。一方ロングソケットだと長過ぎる。なので、E基板からロングピンソケットが浮く感じになります。作業はこんな感じ。
  1. 6Pのロングピンソケットを2個用意して、カットして4ピンと5ピンにする。
  2. ATOMをうつぶせにおいて、E基板を乗せ、E基板の穴を通してカットしたロングピンソケットを通す。
  3. E基板が斜めにならないように押さえつつ、E基板にロングピンソケットを2箇所ずつはんだ付けする。ゆっくりやりすぎるとATOM側が溶けたりしますので仮止めで良いです。
  4. E基板+ソケットをATOMから抜く。残りのピンをはんだ付けする。仮止めもしっかりはんだ付けする。
  5. 5.1KΩの抵抗を3V3 - 25ピンの間にはんだ付けする。
できあがったものがこちらでございます。


■ソース■

需要あります?
memo : M5AtomMatrix_Ambient_DS18B20.ino

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を記録しました。おおおおお。

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


2015年8月21日金曜日

ArduinoとAPDL9930(9960じゃなくて)

近接撮影。余計なものつながりすぎですね…

ebayは安いです。でも怖いところです。

APDL-9960というセンサーがあります。「SparkFun RGB and Gesture Sensor - APDS-9960」RGBの各明るさとジェスチャーを検出してくれる素子で、モジュールにしたものがSparkfunで$14.95です。デモのビデオを見ると、なかなか良い感じで使えそうです。

もうちょっと安いものはないかと探していたら、似たような型番のものが見つかりました。APDL9930を使ったもので、業者のWebには「CJMCU-9930 Approach and Non-contact RGB & Gesture Sensor Detection Module」と書いてあります。送料無料で一個$3.99と安いので買ってみました。


が。

ブツが届いて、さて使ってみようとチップのメーカーの情報を探してみたら、APDL9930は「Digital Proximity and Ambient Light Sensor」、明るさと近接センサとのこと。

RGBもジェスチャもありません。販売会社にやられましたw しかも4つも買ってしまった私ww もう笑うしかありませんわ…orz

■でも使ってみる■

Arduinoにつないで見ます。よく見かけるSparkfun製の作例ではVLには何もつないがれていないのですが、CJMCU9330では3.3vを接続しないとセンサのためのLEDランプが点灯せず近接センサ機能が動きません。

消費電流は近接センサ動作中の実測で平均1.2-2.0mA程度でした(近づくと電流が多くなります)。これならArduinoの3.3vラインからとっても問題ないですね。

CJMCU-9930Arduino
VL3.3v
GNDGND
VCC3.3v
SCLA5
SDAA4
INT2

次にライブラリですが9960用では動きません。9960用を9930用に改良したものが公開されているので、それを使います。

サンプルとして提供されている「AmbientLightInterrupt」で明るさセンサとしての働き、「ProximityInterrupt」で近接センサとしての動作を確認できます。なお2番ピンはインタラプトとして使えるピンなら何番でも良いように見えるのですが、ソースをみると単にPIN MODEを指定するのに使っているだけで、ライブラリに渡したりしていない様子。

試しにAPDS9930_INTを他の値にして接続を変えて試してみましたが2以外だと動かないですね。ご注意ください。

■ebay■

今回は業者のミスリードなんだか単なるボケなんだからわからないけど、いずれにしても間違っているタイトルに釣られてしまいました。

しかしまぁびっくりする程値段安いですし、中国からの発送なので$3.99のものを一つだけ買っても送料無料だったりします。到着までたまに1ヶ月近くかかることもあるようですが、たいていは1-2週間で届くようです。まぁものすごく簡素な包装でびっくりしますけどもね。そのうち、ハガキにセロテープで貼っただけ、なんてのが届きそうで楽しみにしていますw

さて。

ワタシがやらかしたようにタイトルに飛びつかず、事前にチップの情報など確認した上で利用すれば、安くてなかなか便利じゃないかと思います。はい。