背景
以前ThingsBoard(ログ取りサーバー)とESP32を利用して、指定したファームウェアへの更新を試しました。4GモジュールであるSIM7600JCとThingsBoardの組み合わせを調べたところ、ThingsBoardのライブラリで4G通信可能と分かりました。
動かしたプログラムと情報を記事に残します。
使ったもの
- ESP32にプログラムを書き込めるPC
この記事ではPlatformIO + VSCodeの環境を利用しました。 - ドメインを紐付けて動かしているThingsboardサーバー
4G通信で接続するためドメインで呼び出せる状態のThingsBoardが必要です。 - ESP32 + SIM7600JC-H + SIM差込口
今回は下記部品の組み合わせで回路を組みました。- SIM7600JC-H
SIM7600にはいくつか種類がありますが日本で使うならJCが必要です。
Gを試しましたが自分が試した範囲では動かせませんでした。 - SIM7600JC-Hの信号線を引出しつつSIMに接続し、電源を供給する自作基板基板
- ESP32S3開発ボード
- ブレッドボード
- 導線(はんだ付け)
Simcom-bluetooth nano simカードスロット,wifi ESP32-WROVER-B,開発ボード - SIM7600JC-H
- soracomのSIM
ESP32とSIM7600を接続
SIM7600はuart端子を備えているので、それをESP32のSerial1に接続します。PCIE端子の17がRX、19がTXです。
参考: ESP32とSIM7600を繋ぐ基板の回路図: SIM7600-Modem.pdf
無印ESP32はSerial1が使いづらいのでSerial2のRX:17とTX:18に繋いで動かすのが良いです。
ESP32S3のSerail1はRX:15とTX16です。
ということで、PCIEから出てくるUARTをESP32S3のUART(RXをTX、TXをRXに繋ぐ)とGNDを接続して回路を準備しました。
ThingsBoard SDKのSIM900とOTAのサンプルコードを統合してプログラム作成
SIM900というSIM7600と同じ系統のICを扱うサンプルコード 0004-arduino-sim900_send_telemetry.ino と OTAのサンプルコード 0011-esp8266_esp32_subscribe_OTA_MQTT.ino を統合して4G通信でOTAするプログラムを作成します。統合して作成したプログラムは長めなので下記のgithubのページで共有します。
https://github.com/asukiaaa/practice-esp32-ota-with-sim7600/blob/main/src/main.cpp
要所を解説します。
#include "secret.hpp"上記のプログラムは公開したくない設定値をsrc/secret.hppで定義して使っています。
利用する際はsecrets.example.hppをコピーしてsecrets.hpp作成し送信対象のThingsBoardのホスト名とデバイストークンを記述してください。
#define TINY_GSM_MODEM_SIM7600SIM900のサンプルコードにはSIM7600の有効化方法が記載されていませんが、その中で使っているライブラリTinyGSMのサンプルコードでSIM7600の設定を有効化するマクロの記述があるので、それを有効にします。
ThingsBoard tb(client, MAX_MESSAGE_SIZE);TinyGSMがESP32のClientクラスを継承しているため、ThingsBoardのコンストラクタとして渡せます。
WiFiを使う場合は、この第一引数のclientをWiFiClientのインスタンスにします。
動作確認
以前試した指定したファームウェアへの更新処理のように、SIM7600を使うプログラムをThingsBoardにアップロードしてデバイスプロファイルで切り替えてOTAさせます。プログラムを更新できたら成功です。
おわり
SIM7600とESP32とThingsBoradを組み合わせて4G通信でOTAできました。ThingsBoardの通信モジュールを利用するサンプルがtelemetryの送信処理だけだったのでOTAを使うと何か不具合が起きるのかと思っていましたが、すんなり実現できて良かったです。
なお、今回は手元にあったSIM7600を利用しましたが、通信速度を抑えたLET-M通信のSIM7080という製品も同様に使えるようなので(参考: TimerCAMとCAT-Mで画像をLINEに送信する)、LTE-Mの通信速度で十分なら安くて小さいそちらを使うのも一手です。
ESP32S3とSIM7080が一体になった基板も売られていて試しやすいです。
参考
SIM7600とESP32を繋ぐ装置の回路図です。SIM7600-Modem.pdf
ESP32でSIM7600が使える可能性が高いと知った記事です。
ESP32をLTEに接続する
参考にしたThingsBoard SDKのサンプルプログラムです。
0004-arduino-sim900_send_telemetry.ino
0011-esp8266_esp32_subscribe_OTA_MQTT.ino
以前WiFi環境内で取り組んだThingsBoardを利用したESP32のOTAの紹介記事です。
thingsboardでOTAを利用してESP32のプログラムを更新
今回作成したプログラムを含むPlatformIOのプロジェクトです。
https://github.com/asukiaaa/practice-esp32-ota-with-sim7600
0 件のコメント :
コメントを投稿