2019年7月13日土曜日

ThingSpeakに情報を送信するArduinoのライブラリを作ってみた


背景

ThingSpeakとは、受け取った値を保存してグラフなどで閲覧できるサービスです。
このThingSpeakには公式のArduinoのライブラリがあるのですが、個人的に冗長で使いにくく感じたので、自分が欲しい機能に絞ってライブラリを作ってみました。

https://github.com/asukiaaa/ThingSpeak_asukiaaa/

この記事では、ライブラリの紹介を兼ねて使い方を大まかに説明します。

使ったもの

これらを使いました。
  • WiFiが使える環境
    WiFiのSSIDとパスワードをArduinoに書き込むプログラムに埋め込みます。
  • Arduino IDEが使えるPC
    Arduinoにプログラムを書き込むソフトウェアです。
    Arduino IDEをPCにインストールしてください。
  • ESP32開発ボード
    ESP32というWiFiとBluetoothが使えるマイコンを搭載した開発ボードです。
    秋月電子などで変えます。
    Arduino IDEでesp32を開発するために、ArduinoIDEにesp32-arduinoをインストールしてください。
  • ThingSpeakのチャンネルのWriteApiKey
    ThingSpeakに会員登録してチャンネルを作り、WriteApiKeyを取得してください。
    Arduinoに書き込むプログラムに埋め込みます。

Arduino IDEにライブラリ(ThingSpeak_asukiaaa)をインストール

Arduino IDEのライブラリマネージャを通してインストールできます。

スケッチ -> ライブラリをインクルード -> ライブラリを管理 でライブラリマネージャが開きます。


検索フィルタにThingSpeakと入力すると候補が出てくるので、ThingSpeak_asukiaaaをインストールしてください。
(「インストール」ボタンは、ライブラリの行を選択すると表示されます。)


サンプルプロジェクトで情報を送信

ライブラリをインストールできたら、サンプルプロジェクトを書き換えて値をThingSpeakに送信してみましょう。

examples/WriteFields/WriteFields.ino

ファイル -> スケッチ例 -> ThingSpeak_asukiaaa -> WriteData を選び、サンプルプロジェクトを開きます。


WIFI_SSIDとWIFI_PASSの****を、ESP32で情報を送信したいWiFi環境のIDとパスワードに置き換えてください。
WRITE_API_KEYを、データを送信したいThingSpeakのチャンネルのWriteApiKeyに置き換えてください。


この状態で書き込み先のボードをESP32に設定し、ESP32のポートを選択し、書き込み(IDEの「ファイル」の下にある→(右矢印)ボタンを選択)を実行すれば、ESP32がテストデータを送信する状態になります。

ThingSpeakのチャンネルを見て、値が送信されていることを確認してください。

値の送信方法はサンプルプロジェクトのloop内の書き方を参考にしてください。
記事で使い方を紹介してもライブラリ更新によって古くなる可能性があるため、ここでは言及しません。



チャンネルに値を送信できないときは?

シリアルポートでESP32のログを確認すると、送信できない原因の特定に役立つと思います。
(シリアルポートはIDE右上の虫眼鏡マークを選択すると開けます。)

WiFiに接続できない場合
送信できなかったという旨のログが表示されます。
WiFiの設定情報やWiFiが繋がる状況なのか確認してみてください。


ThingSpeakの設定が間違っている場合
送信は出来るものの、送信結果として200以外のエラーが帰ってきます。
WriteApiKeyが正しいか確認してみてください。


まとめ

ESP32からライブラリを利用してWiFi経由でThingSpeakに情報を送信できました。

ThingSpeak_asukiaaa 良かったら使ってみてくださいな。

変更履歴

2023.03.08
サンプルコードへのリンクを追加しました。

0 件のコメント :