お父にゃんの電子工作

お父にゃんの電子工作

暇なおじさんが、電子工作(主にラジオ製作)をして勝手な感想を書く

ここのところ、Webラジオばかり作ってきたので、たまには違う物を作ってみたい。

 

本屋で電子工作の本を立ち読みしてたら、無料のクラウドサーバーにデータをアップしてどこからでも確認できるよ、みたいなのが有ったので、おじさんも試してみることにする。

 

まずは、下準備。

だいぶ前にPico Wで作ったこれ↓をSeeed ESP32C3に移植する。

なんでPico Wのままじゃないのか?というと、Pico Wが大きすぎて扱いにくいから。

 

温度、湿度、CO2濃度、気圧を測定して表示できる。

また、CO2濃度に応じてフルカラーLEDが青 → シアン → 緑 → 黄 → 赤と徐々変化する。


今回の回路図はこちら

で、ブレッドボードに組んで、前のソフトをESP32C3用に移植して動かしてみる

すると、

あれれ?、なんか変。

CO2センサーのSCD40の値がまともに読めてない。


最初はソフトを疑ったのだが、何も見つけられなかった。

むむむ・・・

でも、よく見るとCO2を読むタイミングでOLEDとLEDが少し暗くなっている。

そういえば、ずいぶん前にSCD40はピークで100mAくらい流れる↓というのを思い出した。

 

どうやら、Seeed ESP32C3の内部レギュレーターはそんなに流せないっぽいのである。

と、いうことで周辺モジュール電源は、5Vから3端子レギュレーターで3.3Vを作って供給することにした。同時に330uFコンデンサで安定化も図った。

今度はちゃんと動く

 

ずいぶん時間がかかってしまったが、ようやく下準備が出来た。

--------------------------------------

後で分かったのだが、単に配線の接触が不十分なだけだった。

3端子レギュレータは不要です・・ orz

--------------------------------------

 

次に、いよいよ本題に入るのである。

 

無料のクラウドサービスと接続方法をGeminiに訊いてみた。

すると、お勧めの 無料クラウドサービスを挙げてくれた。

その中でも、特にAmbientがおすすめだという。

1日3,000件まで送信可能で、 シンプルにグラフ化してくれるらしい。

 

さっそく試してみる。

まず、Geminiが示す手順でサーバー側の準備

1.Ambient(ambidata.io) にアクセスし、無料アカウントを作成。
2.  ユーザー登録、ログイン後、「チャネル創出」 をクリックして新しいチャネルを作成。
3. 発行された 「チャネルID」 と 「ライトキー(Write Key)」 をメモします(プログラム側で使用)。

 

しかし、なぜか、Ambientのユーザー登録が出来ない

登録しようとすると「メールアドレスが既に登録されています」になる。それじゃぁ、パスワード忘れたから教えて、と、そのメールアドレスを入れると、そのメールアドレスは登録されていません、になる。

どうなっとんのじゃ?

 

仕方がないので、Ambientはあきらめることにする。

他のお勧めを訊いたら ThingSpeakが有るらしいので、こっちを試してみる。

 

Geminiの指示は以下

-------------------------------------------------------

1. アカウントの作成

①ThingSpeak公式サイト にアクセスし、画面右上または中央の 「Get Started For Free」 または 「Sign Up」 をクリックします。

②MathWorksアカウントの作成画面が表示されるので、メールアドレスや国(Japan)、パスワードを入力してアカウントを作成します。

③ 登録したメールアドレス宛に確認メールが届くので、メール内のリンクをクリックしてアカウントを有効化します。

④ 有効化完了後、ログインします。

 

2. チャンネル(データ保存場所)の作成
ThingSpeakでは、センサーデータを保存する場所を「チャンネル」と呼びます。
   ① ログイン後、上部メニューの 「Channels」 > 「My Channels」 をクリックします。
   ② 「New Channel」 ボタンをクリックします。
   ③ 各項目を以下のように入力します:
        Name: 任意のチャンネル名(例: XIAO_Sensor_Monitor)
        Field 1: Temperature (温度)
        Field 2: Humidity (湿度)
        Field 3: CO2 (CO2濃度)
        Field 4: Pressure (気圧)
        (※必要に応じてFieldにチェックを入れ、名前を設定します)
    ④ページ下部の 「Save Channel」 をクリックして保存します。
 

3. APIキー(書き込み用キー)の確認
 データをマイコンから送信するために必要なキーを確認します。
   ①チャンネルが作成されると、ダッシュボード画面が表示されます。
   ② 上部タブの 「API Keys」 をクリックします。
   ③ 「Write API Key」 (例: XXXXXXXXXXXXXXXX のような英数字)をメモしておきます。

 これがプログラム側で必要になります。
   ④ また、ページの右上付近にある 「Channel ID」 (数字)もメモしておきます。

---------------------------------------------------------

今度はうまく登録できた。

 

登録したChannel IDと、Write API Keyを使ってプログラムに組み込む。

やり方は・・

ThingSpeak.hをインクルード

#include "ThingSpeak.h" // ライブラリマネージャからインストール

setup()内で初期化

  // ThingSpeak の初期化(通信に必須)
  ThingSpeak.begin(client);

60秒に1回データをセットして送信

    ThingSpeak.setField(1, temp);
    ThingSpeak.setField(2, humidity);
    ThingSpeak.setField(3, CO2_data);
    ThingSpeak.setField(4, pressure);
 
    // ThingSpeakへ送信
    int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);

たったこれだけ。

さっそく動かしてみた。

ブラウザでまた、ThingSpeakのページを開き、My Channelsから登録したchannelを開くと、このように、送信したデータをグラフ化して表示してくれる。

 

1分に1回送信だと細かすぎるかも。1日の推移を見たいなら30分に1回程度で十分な気がする。

 

今回のコードはこちら。興味のある方はご自由にどうぞ。

Sensor_IoT_ESP32C3_v0_20p

(WiFi設定と、Channel IDと、Write API Keyはご自身のものに書き換えてください。)

 

ああ、今回も変なところでつまづいて時間がかかってしまった。

でも、まぁ、今回も何とかなって良かった。

 

 

「だいぶ苦労したようだニャ。おいらも起き上がるのに苦労するのニャ」

それって、かなりやばくないですか?