PicoIot
1. 概要
PicoIotは、Raspberry Pi Pico Wを使用した簡易IoTシステムです。各種センサ(GPIO入力、ADC電圧、BME280環境センサなど)から取得したデータを、Wi-FiやBLEを利用してPCやスマートフォンへ送信・表示することができます。※BME280を接続していなくても使用できます。
2. 成果物
ソースコード、バイナリ、マニュアルは以下のGitHubリポジトリで公開しています。
GitHub - shiomachisoft/PicoIot
開発環境・使用言語
- ファームウェア(FW): C++ / Arduino IDE
- 設定用のPCアプリ: C# / Visual Studio
3. 主な特徴
本システムには「Wi-Fiモード」と「BLEモード」の2つの通信モードがあり、用途に応じて以下の機能を活用できます。
Wi-Fiモード
-
Webブラウザでのデータ表示
PCやスマートフォンのブラウザからアクセスし、データを閲覧できます。表示されるデータは5秒間隔で更新されます。 -
Eメール送信
指定した間隔でのデータの「定期送信」や、センサ値がしきい値を超えた際の「アラート通知」を行います。-
注意
Pico Wのファームウェアにはメール送信サーバーの機能は含まれていません。Eメール送信機能を利用する場合は、外部のSMTPサーバーにメールの送信を依頼する形となります。一般的なプロバイダのSMTPサーバーのほか、GmailのSMTPサーバーなども利用可能です。
-
注意
-
TCPソケット通信
Pico WがTCPサーバーとなり、JSON形式のデータを外部クライアント(Tera Termなど)に5秒間隔で送信します。
BLEモード
- BLE通信でスマホなどにJSON形式のデータを5秒間隔で送信します。
4. 取得・送信可能なセンサデータ
- Pico WのGPIO入力値(GP10〜15)
- Pico WのADC値(ADC0, ADC1, ADC2、および内蔵温度センサ)
- BME280のデータ(温度、湿度、気圧、不快指数、露点温度、絶対湿度、WBGTなど) ※BME280接続時のみ
5. セットアップと使用方法
※各手順や使い方の詳細については、マニュアルをご参照ください。
5.1 ファームウェアの書き込み
- Pico WのBOOTSELボタン(白いボタン)を押しながらPCとUSB接続し、
RPI-RP2ドライブを認識させます。 - ドライブ内にファームウェア(
PicoIot_XXXXXXXX.uf2)をドラッグ&ドロップします。
5.2 PCアプリ(PicoJigApp)による基本設定
- Pico WをPCとUSB接続します。
- Windows PC上で
PicoJigApp.exeを起動し、下記の基本設定を行います。基本設定はFlashメモリに保存されます。- 基本設定: 通信モード(Wi-Fi/BLE)やWi-Fi設定(IPアドレス、サブネットマスク、ゲートウェイ、SSID、パスワード)
5.3 オプション設定(Wi-Fiモード時)
- WebブラウザからPico WのIPアドレス(例:
http://192.168.10.100)にアクセスします。 - ブラウザ画面上の「Settings」ボタンを押すか、URLの末尾に
/configを追加して設定画面に移行します。 - 設定画面より、下記のオプション設定を行います。プション設定もFlashメモリに保存されます。
- オプション設定: EメールのSMTPサーバー情報や送信間隔、アラートのしきい値など
6. FWのソースコードのカスタマイズ
6.1 センサデータのカスタマイズ
Webブラウザでの表示内容やEメールの本文などは、内部で生成されるセンサのJSONデータから動的に作成されています。そのため、ユーザーがFWのソースコード(センサデータを取得してJSONを作成する部分)を変更するだけで、容易に表示・送信するデータをカスタマイズできます。
カスタマイズを行う場合は、src フォルダ内の以下のソースファイルを編集して下さい。なお、FWのソースコードはArduino IDEを使用し、C++で記述されています。
Gpio.hGpio.cppSensor2Json.hSensor2Json.cpp
6.2 アラート処理のカスタマイズ
センサデータがしきい値を超えた際の独自の処理を追加・変更したい場合は、同じく src フォルダ内の Alert.cpp を変更して下さい。
7. 免責事項
本記事の内容や本ソフトウェアの使用により生じた、いかなる損害やトラブルについても、作者は一切の責任を負いません。ご利用は自己責任でお願いいたします。