リモートでバイクのバッテリー監視   (2台のPicoで通信モジュールLoRaを使い電圧を測定)

## 目的

離れた駐輪場に置いたバイクのバッテリー電圧を監視して、バッテリーあがりを回避します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1048586/461bc079-4ba2-b2e9-f3c6-7b1118042a4f.png)

## 現状

入力電圧14Vから10Vの範囲において、0.1Vの誤差範囲で電圧を計測できました。
部屋の中で無線LoRaを使い、2台のPico間で相互に電圧を送受信できました。

それぞれのPicoは単独作動していて、パソコンなどホストマシンは接続していません。
今後、1台のPicoをバイク置き場におき、もう1台は家において試してみる計画です。

https://youtu.be/V9Xi0BPuzes

## 機能

- 無線技術LoRaで通信
- アナログ入力で電圧を計測
- リアルタイム・クロック(RTC)用ハードウェアを使い時刻を取得
- 液晶やePaperに情報を表示
- 1つのソフトを異なる２つのハードウェアで共有 (デジタル入力で切替)

## ハードウェア (２台のPico)

- 1台目(左側)はLCD、2台目(右側)はePaperと異なる表示機器を使っています。
- 1台目はテスト用の電圧変換基板がついています。(写真左下の緑色の基板)
- 2台ともにLoRaの基板、 RTC、LED、スライドスイッチがついています。　

### 部品の一覧
| 品名  | 個数 | 価格(税込) | 補足 |
|-------------|------------|---------:|---------|
| Waveshare RP2040-LCD-0.96 | 1       | 1,903円     | スイッチサイエンス, ラズパイ ピコ互換品 |
| Raspberry Pi Pico | 1       | 748円     | スイッチサイエンス (RPI-PICO) |
| 連結ピンソケット　２×２０（４０Ｐ）　ラズパイ用スタッキングコネクタ| 2 | 150円/個 | 秋月電子通商 【C-10702】　|
| 同期整流式昇降圧型スイッチング電源モジュールキット　| 1 | 1,380円| 秋月電子通商 【K-11212】　入出力２．５Ｖ～１５Ｖ　最大１．５Ａ　|
| ブレッドボード　ＥＩＣ－８０１| 2 | 370円/個| 秋月電子通商 【P-00315】 |
| リアルタイムクロック (2個入り) | 1セット |1195円| アマゾン VKLSVAN 2個 DS3231 AT24C32 RTCモジュール |
| Raspberry Pi Zero用LoRa HAT (*) | 2 | 3,080円/個 | スイッチサイエンス (CLEALINK-DTH-RPZLR-LA)
| その他 | 一式 |200円程度| 赤色LED, 抵抗・コネクタ|

*: Pi Zero用を、Picoで使っています。技適マーク付きで良い製品なのですが、現在スイッチサイエンスで扱っていないようなので、次回は [LoRa通信モジュール（E220-900T22S）用評価ボード](https://www.switch-science.com/products/8672?_pos=35&_sid=142a0e726&_ss=r)を購入しようと思っています。安いし。

### 2台のPicoのIO map

|# | 用途 0.96LCD| 用途 Pico inky | LCDとinkyの差 |
|--|---|---|---|
| 1|   UART0 TX (GP0) - LoRa TX | 左と同じ | |
| 2|   UART0 RX (GP1) - LoRa RX | 左と同じ | |
| 3|   GND            | 左と同じ | |
| 4|   GP2 デバイス認識    | 左と同じ | 0: 0.96LCD, 1: inky |
| 5|   GP3 デバイス認識(予約)| 左と同じ | |
| 6|   (GP4) I2C0 SDA - RTC    | 左と同じ | |
| 7|   (GP5) I2C0 SCL - RTC    | 左と同じ |  |
| 8|   GND            | 左と同じ  | |
| 9|   GP6 (未使用)    | (未使用) | |
|10|   GP7 - LoRa M0  | (未使用) | 差分あり |
|11| __GP8 - LCD DC__  | GP8 - Diag LED    | 差分あり |
|12| __GP9 - LCD CS__   | GP9 - Diag switch | 差分あり |
|13| GND            | 左と同じ | |
|14| __GP10 - LCD CLK__ | GP10 - LoRa AUX | 差分あり |
|15| __GP11 - LCD DIN__ | GP11 - LoRa M0 | 差分あり |
|16| __GP12 - LCD RST__ | __inky switch A__ | 差分あり |
|17|   GP13 - LoRa AUX | __inky switch B__ | 差分あり |
|18|   GND             | 左と同じ | |
|19|   GP14 (未使用)    | __inky switch C__ | 差分あり |
|20|   GP15 - LoRa M1  | 左と同じ | 差分あり |
| | | | |
|21|   GP16 - Diag LED | __inky MISO__ | 差分あり |
|22|   GP17 - Diag switch | __inky CS__ | 差分あり |
|23|   GND             | 左と同じ | |
|24|   GP18 (未使用)    | __inky SCLK__ | 差分あり |
|25|   GP19 (未使用)    | __inky MOSI__ | 差分あり |
|26|   GP20 (未使用)    | __inky D/C__ | 差分あり |
|27|   GP21 (未使用)    | __INKY RST__ | 差分あり |
|28|   GND             | 左と同じ | |
|29|   GP22 (未使用)    | (未使用) | |
|30|   RUN/RESET       | 左と同じ | |
|31|   ADC0 (GP26) - Volt | __inky BUSY__  | 差分あり |
|32|   GP27 (未使用)    | ADC1 (GP27) - Volt | 差分あり |
|33|   GND             | 左と同じ | |
|34|   GP28 (未使用)    | (未使用) | |
|35|   ADC Vref (未使用) | 左と同じ | |
|36|   3V3              | 左と同じ | |
|37|   3V3 EN           | 左と同じ | |
|38|   GND              | 左と同じ | |
|39|   VSYS             | 左と同じ | |
|40|   VBUS             | 左と同じ | |
|                       | | | |
|xx|   __GP25 - LCD BL__ | (未使用) | 差分あり |

太字はハードウェアの制約（Picoへ直接ピンが接続される）のため、移動できないピンを表します。



## おわりに

長期間通信する予定なので、通信にお金のかからないLoRaは魅力的です。コンクリに囲まれた駐輪場まで合計１００ｍぐらい距離があります。しかし、それなりに大きいLoRa用アンテナを付けたところ、通信できました。たまたまかもしれませんが。このへんは、次の投稿にまとめたいと思っています。

動作する機器を作ることを優先しているため、Git管理しているソースコード(Python)は整理中で、まだ公開していません。
「コードを早く投稿しろ！」「どういう通信環境なの？」など、コメントいただけたら幸いです。喜んでコメントを優先して投稿をまとめます。

この記事は、次の記事の続きです。

https://qiita.com/AbeMarkn/items/dc75976e832b8c3851fe