自作ユーザ向けセットアップガイド
自作ユーザ向けセットアップガイド
最初にこの手順書はESP32を使用してIOTデバイスを自作して
SWPFプラットフォームに接続するまでの手順を記載しています。
すでにIOTデバイスを自作またはM5STACKなど半完成品をお使いの方は
必要な項目だけ参照して下さい。
このページで進める内容
- ESP32本体を選ぶ
- IDEと書き込み環境を準備する
- 最小スケッチを書き込んで単体動作を確認する
- センサーやカメラを接続する
- オフライン状態でログと周辺機器動作を確認する
- Wi-Fi接続と疎通を確認する
- SWPFへ接続し、MQTT通信を開始する
STEP1:ESP32の選定
まず用途に合うESP32を選びます。カメラ中心ならESP32-CAMやESP32-S3系、センサー中心ならWROOM系やC3系が扱いやすい構成です。
- カメラ利用:ESP32-CAM / ESP32-S3 + カメラモジュール
- センサー利用:ESP32-WROOM / ESP32-C3 / XIAO ESP32
- 試作優先:USB接続しやすい開発ボード型
補足:選定時の確認ポイント
- USB書き込みのしやすさ
- 利用予定のGPIO数
- PSRAMの有無
- カメラ利用時の電源安定性
- 3.3V系センサーとの相性
STEP2:IDE環境のセットアップ
Arduino IDE または PlatformIO を準備し、ESP32ボード定義を追加します。最初はシリアルログが見える状態まで整えれば十分です。
- IDEをインストールする
- ESP32ボードマネージャを追加する
- 対象ボードを選択する
- シリアルポートを確認する
補足:初回セットアップの確認項目
- 書き込み速度は初回は安全側の値を使う
- シリアルモニタは 115200bps を基本に確認する
- USBケーブルは給電専用ではなく通信対応品を使う
STEP3:最小プログラムの作成と書き込み
最初はWi-FiやMQTTまで入れず、LED点灯やシリアル出力などの最小構成で書き込み確認を行います。その後、Wi-Fi接続と設定保存処理を追加します。
- Hello World相当のシリアルログを出す
- ESP32へ書き込む
- 再起動後のログを確認する
- 必要ならNVSやPreferences保存を追加する
補足:書き込みで詰まりやすい点
- BOOTボタンの押下タイミング
- USB電力不足
- ボード設定違い
- シリアルポートの競合
STEP4:センサーやカメラなど周辺デバイスの接続
本体単体で動作したら、次にセンサーやカメラを接続します。最初から全部つなぐのではなく、1つずつ追加してログ確認する流れがおすすめです。
- ピン配置を決める
- 必要なライブラリを追加する
- 1デバイスずつ値取得または撮影確認を行う
- 失敗時は配線・電圧・I2Cアドレスを見直す
補足:確認するとよい観点
- 消費電流と電圧降下
- GPIO競合
- I2Cアドレス重複
- カメラ初期化失敗時のPSRAM有無
STEP5:オフライン環境でのテスト
ネットワーク接続前に、センサー取得・カメラ撮影・内部ログ出力が安定しているか確認します。ここで安定しない場合は通信追加前に修正します。
- センサー値取得の繰り返し確認
- カメラフレーム取得や保存確認
- ヒープや再起動有無を確認
- エラー時のログ出力を整える
補足:最低限見たいログ
- 起動完了ログ
- センサー取得成功 / 失敗
- フレーム取得バイト数
- free heap / reset reason
STEP6:ネット接続テスト
次にWi-Fi接続と外部疎通を確認します。HTTP GETやNTP同期だけでもよいので、まずはインターネットへ出られることを確認してください。
- SSIDとパスワードを設定する
- IPアドレス取得を確認する
- NTP同期またはHTTP疎通を確認する
- TLS利用時は時刻同期後に通信確認する
補足:TLS接続で失敗しやすい点
- 時刻未同期
- CA証明書未設定
- ポート違い
- Wi-Fiはつながるが外に出られない状態
STEP7:SWPF接続
ここでSWPFへ接続します。ワンタイムコードを使って接続完了APIへPOSTし、返却された設定情報を保存してMQTT通信を開始します。
- ウィザードでワンタイムコードを発行する
- ESP32から接続完了APIへPOSTする
- レスポンスの接続情報を保存する
- MQTTへTLS接続し、bootやenv等のTopicへ送信する
設定情報
接続完了API
https://app.swpf.jp/swpf/esp32/wizard/api/complete
MQTT接続情報
- Host:
mqtt.sincerew.online - Port:
8883 - TLS: 有効
- 認証: ユーザー名 / パスワード方式
CA証明書(ca.crt)
GitHub版のコードに埋め込む場合でも、差し替えが必要になったときのために元ファイルを保持しておくことをおすすめします。
接続完了APIへ送るJSON例
{
"pairing_code": "ABC123",
"mac": "AA:BB:CC:DD:EE:FF",
"device_id": "esp32_AABBCCDDEEFF",
"device_name": "esp32-dev-01",
"device_type": "esp32-cam",
"firmware_version": "0.0.1"
}
レスポンスで受け取る主な情報
uidhashed_macbase_topicmqtt_host/mqtt_portmqtt_user/mqtt_passca_certtopics.boot/topics.image/topics.env
補足:実装方針の目安
- 接続完了レスポンスはNVSへ保存
- CA証明書は
setCACert()などで使用 - 初回起動時は boot topic 送信
- 通常運用では env / image / meta などを用途別に送信
当サイトまたはIoTカスタムモジュール、開発支援に関するお問い合わせはこちらのメールフォームからお気軽にお問い合わせください。