ハードウエアについて
第1回:システムの概要と部品構成
今回の連載では、いま注目のWi-SUNを利用してIoT機器の製作を紹介していきます。連載の第2回となる今回は、IoT機器「気象ステーション」のハードウェアの構成を見ていきたいと思います。
目次
- 回路構成
- SPRESENSEとWi-SUN Add-onボード
- SparkFun社のWeather Meter KitとWeather Shield
- サブコントローラArduino Pro mini
- 5V/3.3V系レベル変換
- 自然通風シェルタ・センサ部
- 電源部
- ユニバーサル基板と防水ウオルボックスへの実装
1. 回路構成
Wi-SUNを活用した気象ステーションの製作の連載第2回はハードウェアについて解説します。システム本体の回路図を以下に示します。
各主要部分ごとに解説していきます。
2. SPRESENSEとWi-SUN Add-onボード
全体の制御とWi-SUNの通信を担うのがSPRESENSEとWi-SUN Add-onボードです。
SPRESENSEメインボードを拡張ボードにセットし、メインボード上のスロットにWi-SUN Add-onボードを載せます。次に拡張ボード上の2箇所のジャンパーをセットします。JP1はインターフェースの電圧設定で、今回は5Vで使用します。JP10はUART2のシリアルインターフェースをWi-SUN Add-onボードで使用するための設定です。Wi-SUNの通信データのやり取りは、このUART2を使用しておこなわれます。
I2CのSDA/SCLやGPIOポートへのアクセスは、拡張ボード上のArduino互換ピンソケットに個別にケーブルを接続しておこないます。電源はメインボード又は拡張ボードのUSBポートから供給します。
3. SparkFun社のWeather Meter KitとWeather Shield
「風速、風向、雨量」の測定を担うSparkFun社のWeather Meter Kitには、これとセットで使用できるArduino互換のWeather Shieldがあり、これをそのまま利用しています。基板上にはWeather Meter Kitのケーブル(RJ-11コネクタ)を直接接続できるように、ソケットをハンダ付けできるパターンがありますが、この部品が国内在庫になかったのでRJ-11と互換性のある秋月電子の「6極6芯モジュラージャックDIP化キット」をケーブルで接続して使用しています(このキットで使用されているモジュラージャックはWeather Shield用のものとピンのピッチが異なるので基板に直接載せることはできません)。
ケーブルの配線ですが、このDIP化キットの基板上のピン番号を上図に示した信号のピン番号に合わせて接続しています。もちろんWeather Shield専用のモジュラージャックが入手できればこういった加工は必要ありません。
Weather ShieldはArduino互換のピン配置になっており、SPRESENSE拡張ボードに直接載せることができるのですが、今回使用するWi-SUN Add-onボードと干渉するので別々に設置しています。このWeather Shield上にArduino互換のユニバーサル・ボードを載せて、他の部品等を配置しています(後述)。
あと、本システムはWeather Shield上の大気圧センサー「MPL3115A2」とバッテリ電圧を測定するための抵抗分圧回路を使用しています。他にも温度・湿度センサや照度センサが搭載されていますが、今回それらは使用していません。Weather Shieldの回路図は以下のリンクからダウンロードいただけます。
https://cdn.sparkfun.com/assets/1/1/4/d/6/Weather_Shield_V12.pdf
4. サブコントローラArduino Pro mini
Weather Shieldから「風速、風向、雨量」の測定信号が出力されますが、それらはサブのコントローラのArduino Pro miniに接続してデータ収集をおこないます。これらの測定項目は、イベント発生・割り込み処理を基本としたもので、データを取りこぼしなく収集するためにはコントローラは常に稼働状態である必要があります。一方、気温や湿度、大気圧などの項目は、一定周期ごとに測定をおこないます。その際、測定やデータ通信を行わない時間にコントローラをスリープモードにして、大幅に消費電力を減らす手法が利用できます。
本システムでは、メインのコントローラであるSPRESENSEにこのスリープモードを利用する方法を使い、割り込み系の常時稼働するサブコントローラには、Arduino互換で消費電力の少ないArduino Pro miniの8MHz 3.3V版を選択しました。Arduino Pro miniには16MHz 5Vバージョンも存在し、そちらを使用すれば次に説明するロジックレベルの変換も不要になるのですが、消費電力が大きく異なっています。8MHz 3.3V版はおよそ4mAで常時動作可能ですが、16MHz 5V版は4倍の16mAになります。そのため、あえて8MHz 3.3V版を使用し、システム全体の消費電力を抑えています。ソフトウェアを含めた省電力手法については次回の記事で解説します。
Arduino Pro miniは、ブレッドボード配線パターンタイプのユニバーサル基板に実装して8ピンのケーブルで他の基板に接続しています。
5. 5V/3.3V系レベル変換
サブコントローラにArduino Pro miniの8MHz 3.3V版を使用したため、本体の5V系のロジックと接続するにはレベル変換が必要になります。今回は以下の2種類のレベル変換を使用しています。
①5V/3.3V ロジックレベル変換:4ビット双方向ロジックレベル変換モジュールBSS138
②5V/3.3V アナログレベル変換:NJM2732Dオペアンプ
①のロジックレベルは、SPRESENSEと通信をおこなうシリアルポート(RxI D0,TxO D1)とWeather Shieldの風速、雨量(D2,D3)を5Vから3.3Vに変換します。使用しているのは秋月電子から発売されている「4ビット双方向ロジックレベル変換モジュールBSS138」です。NチャネルMOSFETを使用してレベル変換しています。
②のアナログレベル変換ですが、風向きを検出する風向計の電圧出力を5Vフルスケールから3.3Vに変換します。風向計とWeather Shield、レベル変換部の回路を以下に示します。
左の円形のブロックが風向計の内部回路です。ローターが回転すると方角に対応したスイッチが閉じます。それに付けられた抵抗がONになり方角によって異なる抵抗値を示します。各角度の抵抗値は下の表のようになり、全部で16段階の値が割り当てられています。
中央部のWeather Shieldでは、5Vのラインから「4.7kΩ―1kΩ―風向計の抵抗―1kΩ―GND」と接続されています。[WDIR]の出力ポートは、4.7kΩと(1kΩ+風向計の抵抗+1kΩ)で合成された抵抗値で分圧された電圧が出力されます。この出力電圧は0から5Vの間で変化するので、これをArduino Pro mini 8MHz 3.3V版・アナログ入力範囲の0から3.3Vに変換します。一番簡単なのは5Vを例えば10KΩと20kΩの抵抗で分圧する方法です。しかし、単純に抵抗だけで出力を分圧すると、風向計部の合成抵抗が変化してしまいます。そのため一度ハイ・インピーダンスの入力部を持つオペアンプのボルテージフォロワを入れ、その出力を10KΩと20kΩの抵抗で分圧しています。ハイ・インピーダンスで受ければ、風向計部の合成抵抗値には影響を与えません。使用しているオペアンプ:NJM2732Dは、レールtoレールと呼ばれるタイプで、電源電圧(5V)あたりまでいっぱいに出力振幅を振ることができます。これによって確実に5V/3.3Vのアナログレベル変換が行われます。
6. 自然通風シェルタ・センサ部
気温・湿度と照度の測定センサは自然通風シェルタに設置して、SPRESENSEとI2C接続でデータを取得します。自然通風シェルタに収納した各センサの設置方法を以下に示します。
SPRESENSEの入った本体部とは長さ1m程度の4芯ケーブルで接続しています。このケーブルの各信号は「ユニバーサル基板 ブレッドボード配線パターンタイプ56.5×32mm」に一度集約してセンサーに接続しています。AM2301B温湿度センサは、上部に取り付け穴の付いたプラスチックケースに収容されており、これをシェルター内部にワイヤーで吊り下げています。BH1750照度センサは光が透過するように透明なプラスチックケースに収め、水が入らないように防水テープでシールして、両面テープでシェルタの上部に貼り付けています。
7. 電源部
電源部の回路図を以下に示します。
本機はバッテリ動作を基本としており、6V出力の密閉型鉛蓄電池を主電源に使用しています。容量は最も小型で低価格な4.5Ahのものを選びました。これに対応した太陽電池パネルを使用し、充電コントローラを組み込んでいます。太陽電池パネルは「6V鉛蓄電池の充電に最適」と推奨されているSY-M3W(3W出力)で、6V鉛蓄電池用の太陽電池充電コントローラCMP03(3A6V)を組み合わせています。この3点は全て秋月電子で調達できます。
このバッテリの6V出力から、システムの電源となる5VをLDO(Low Drop Outレギュレータ)で生成しています。
LDOの選択には2つ注意点があります。まず1点目はできるだけドロップアウト電圧が低いことです。鉛蓄電池は5.6V程度まで電圧が低下する可能性があるので、その際も安定した5V出力を得られる低いドロップアウト電圧のものを選択します。
2点目はレギュレータ自身の消費電流が少ないことです。これが大きいとレギュレータだけでバッテリを消費してしまいます。
以上の2点を考慮して選択したのはNJU7223F50(5V 500mA)です。ドロップアウト電圧は0.4Vで消費電流も最大60μAと非常に低くなっています。LDOの出力電流値ですがシステムの起動時やスリープモードからの復帰時に120mA程度ピークで流れる場合があるので、余裕を見て500mAタイプを使用しています。あと瞬時電流のレギュレーションを良くするため、少し大きめの1000μFのコンデンサをLDOの出力に入れています。
8. ユニバーサル基板と防水ウオルボックスへの実装
以上ご説明した各部の部品は「Arduino用ユニバーサルプロトシールド基板」に実装しています。
この基板はArduinoのスロットと互換性があり、本機ではWeather Shieldとピンソケットで接合しています。SPRESENSEとArduino Pro miniには、6Pと8Pのピンヘッダを経由してケーブルで繋いでいます。各ピンの信号名は図中の表記をご参照ください。
バッテリとセンサの接続は、2.54mmピッチで基板上に実装できる「ユーロブロック」というタイプの脱着コネクタでおこなっています。
SPRESENSEへの電源接続はUSBポート経由になるので、秋月電子の「USBコネクタDIP化キット」を使用して基板上にUSBコネクタを実装しています。回路はシンプルですので、結線は耐熱被覆ワイヤを使用して手配線でおこなっています。
以上の各ブロックを屋外に設置するために、防水性が考慮された「ウオルボックス」に収容しています(下図)。
ウオルボックス内部には樹脂製の基台が設けられており、ねじ止めが簡単にできるようになっています。各基板はこの基台にタッピングビスとスペーサーを使って固定しています。
ボックスの下部にはケーブルを通す穴が開けられるようになっています。中央部の一番大きな穴を利用して外部へのケーブルを通しています。
今回使用した部品の一覧は、以下のURLからダウンロードいただけます。
次回はSPRESENSE、Arduino Pro miniの制御ソフトウェアと、自宅のラズパイのPythonによるデータ受信プログラムについて解説します。また、システム全体の省電力手法と実測結果についても説明する予定です。
【ご参考】
SONY SPRESENSE特設ページ
https://www.sony-semicon.co.jp/products/smart-sensing/spresense/?msclkid=8ea7ab8ec47511eca31852cdf498a0e0
ROHM SPRESENSE特設ページ
https://www.rohm.co.jp/support/spresense-add-on-board?msclkid=14a2fe8fc47711ecaadc5d5d322dcffa
今回の連載の流れ
第1回:システムの概要と部品構成
第2回:ハードウエアについて(今回)
第3回:ソフトウェアと省電力手法
第4回:クラウド連携と自宅内サーバーへのデータ保存・グラフ表示
第5回:Wi-SUNの伝搬距離評価とシステム全体のまとめ