NEW!Mosquitto で MQTT 双方向通信 (4)IoT デバイス ハードウエア

MQTT Mosquitto ブラウザ Web ソケット WebSocket IoTデバイス 監視・制御 SSL/TLS

背景

MQTT プロトコルは IoT 機器の監視・制御に最適な通信方式です。 Mosquitto や EMQX社 から無料で利用できる MQTT Broker が提供されていて手軽に利用できます。 しかし予期せぬサーバーの停止により IoT 機器の監視・制御に不都合をきたしたり、相乗りサーバーのためどうしてもセキュリティに対する不安も残ります。

これらの課題を解決するために VPS サーバーにセキュリティ対策も行った MQTT Broker をインストールして IoT システムを構成しました。 特に Web ブラウザと MQTT Broker 間の MQTT over WebSockets with TLS に多くの試行錯誤をともなったので整理して記録を残します。

ゴール

図 1 Web ブラウザ IoT デバイス 間 MQTT 通信

・VPS サーバーに MQTT Broker インストール
・TLS(SSL) によるセキュリティ対応
・IoT デバイス (C++) と MQTT Broker 間は MQTT over TLS (mqtts://) 通信
・Web ブラウザ (HTML, Java Script, CSS) と MQTT Broker 間 MQTT over WebSockets with TLS (wss://) 通信

本章ではブレッドボードを使って IoT デバイスのハードウエアを組み立てます。

前提条件

・Mosquitto (バージョン 2.0.11) インストール済み
・VPSサーバー Linux OS Debian (バージョン 6.1.153-1) 
・IoT デバイス ESP32-DevKitC
・開発プラットフォーム Visual Studio Code (バージョン:1.105.0)
・拡張機能 PlatformIO IDE for VSCode (バージョン 3.3.4)
・開発言語 Linux , C++, HTML, Java Script, CSS
・通信プロトコル MQTT over TLS (mqtts://), MQTT over WebSockets with TLS (wss://)
・Windows 11 (バージョン Pro 24H2)

マイクロ コントローラ

・ESP32-DevKitC-32E
Wi-Fi モジュールも実装されていて使い勝手のいい Espressif 社の ESP32-DevKitC-32E ( ESP32 開発ボード )を使用します。

ESP32 開発ボードについて購入先の秋月電子通商で検索すると、『ESP-WROOM-32が実装されている評価/開発用ボードです。シリアル⇔USB変換チップ、リセットスイッチ、ブートモードスイッチを搭載しています。PCに接続するだけで、ESP32の評価/開発ができます。』 『Espressif Systems社の無線通信モジュール、ESP32-WROOM-32E の評価基板です。ほとんどのI/Oを引き出してあります。手軽に実験や評価が行えます。』と説明があります。

ESP32-DevKitC-32E ESP32-WROOM-32E の特長
 ・デュアルコア 32bit Xtensa LX6マイクロプロセッサ
 ・40MHzクリスタル発振器を内蔵して最大240MHz動作が可能
 ・2.4GHz Wi-Fi 802.11b/g/n
 ・Bluetooth V4.2 BR/EDR and Bluetooth LE
 ・オンボードアンテナ
 ・4MB SPI FLASH
 ・26本のGPIO

USB ケーブルで PC とこのモジュールを接続するだけでプログラム開発ができるオールインワンの優れものです。

今回は、このモジュールに LED など少しの外付け部品を追加するだけ IoT デバイスのハードウエアが出来上がります。

IoT デバイス回路

図 1 IoT デバイス回路図

図 1 に IoT デバイス回路図を示します。 
電源は USB ケーブルから供給しています。 外部電源を使用する場合は EXT_5V 端子と GND 端子間に2A 以上の電流を供給できる 5 V 電源を接続します。

Web ブラウザ側から ON ボタンをクリックすると赤色 LED が点灯します。 OFF ボタンをクリックすると緑色 LED が点灯します。

IO19 端子を VDD33 から GND へ接続を変更すると LOW_ 信号を publish します。 GND から VDD33 へ接続変更すると HIGH信号を publish します。


表 1 IoT デバイス部品表

部品番号部品名機能説明
U1ESP32-DevkitCMCUマイクロコントローラ
LED1発光ダイオード赤色 5mmΦ
R1抵抗100Ω電流制限用
LED2発光ダイオード緑色 5mmΦ
R2抵抗100Ω電流制限用

LED1、LED2 は赤色、緑色であればどのような型名でも構いません。
R1、R2 は LED1、LED2 の電流制限用です。 LED に必要な供給電流から抵抗値を決定します。

図 2 IoT デバイス 写真

リンク

Mosquitto で MQTT 双方向通信 
(1)Mosquitto を VPS にインストール
(2)Web ブラウザと IoT 間 動作エミュレート
(3)Web ブラウザ ソフトウエアコード
(4)IoT デバイスハードウエア
(5)IoT デバイス ソフトウエアコード
(6)システム全体動作確認

(YI)

コメント

error: Content is protected !!
タイトルとURLをコピーしました