分12電源管理ネットワークと並んでIoTデバイスの共通課題は電源です。IoTデバイスを制御するマイコンやセンサなどの多くは1.8Vから5V程度の電圧で動作します。IoTデバイスを設置する場所で100Vの商用電源が使えれば,ACアダプタで必要な電圧を作り,IoTデバイスを安定して動作させることができます。山中や水田の真ん中など近くに商用電源がない場所や,家庭やオフィスのように商用電源があっても美観上の観点でデバイスをワイヤレスにしたい場合は,IoTデバイスをバッテリーあるいは太陽電池のような発電デバイスと蓄電池の組み合わせで動作させる必要があります。IoTデバイスをバッテリーや発電デバイスで動作させる場合,IoTデバイス自体を低消費電力にすることはもちろんですが,IoTデバイスの動作特性に合わせた省電力化が必要です。IoTデバイスは,周期的にデータを測定してクラウドサービスに送信し,送信が終わると次の測定まで待機するという動作をするものが多くあります。何かの変化があるまではずっと待機し,変化があるとIoTデバイスが動き出して,データを測定したり,変化に対応するものもあります。いずれの場合も,待機中の消費電力を通常よりも下げることで,バッテリーの消耗を抑えることができます。IoTデバイスの制御マイコンとしては,マイコン自体の消費電力が低く,さらに待機中の消費電力を下げられる機能が必要とされます。前節で整理したIoTデバイスの制御マイコンに求められる要件を踏まえて,ESP32(写真1)の構造と特徴を見ていきましょう。3B+と比較したのが表2です。3B+はボードの仕様なので,きちんと対応した比較にはなっていませんが,ESP32がこれだけの機能をマイコンモジュールに搭載していることが分かります。主なマイコンの仕様ESP32はSRAM520kB,フラッシュメモリ4MBと比較的大きく,センサなどの周辺デバイスとのインターフェースも充実しています。Wi-FiとBluetoothの通信モジュールを内蔵しているのがESP32の特徴です。sleep時には10〜150マイクロAと低消費電力です。UNOはメモリも小さく,通信モジュールもありません。Wi-FiやBluetooth通信は,ボードを追加すれば可能ですが,追加するボードに合わせたライブラリーを選ぶ必要があるなど,プログラミングには注意が必要です。3B+はメモリも1GBと大きく,Wi-FiとBluetoothの通信モジュールや映像入出力インターフェースを持つなど,非常に強力なボードコンピュータですが,消費電流がアイドル時で459mA,最大で1.13Aと大きく,バッテリーで駆動するのは無理があります。このようにESP32はデバイス制御や通信機能などの豊富な機能を持ちながら,消費電力が低く,IoTデバイス制御に適したマイコンと言えます。ESP32の内部構造と省電力機能ESP32の内部は図2のような機能ブロックで構成されています。ESP32の機能ブロック中央にあるCPU,ROM,RAMがプログラムを実行するマイコンの処理本体です。その上にあるのがWi-FiとBluetoothの処理モジュールで,その右側にWi-FiとBluetoothで共通に使う無線モジュールがあります。CPUモジュールの右側はRSAなどの暗号化をおこなうモジュール,左側にはSPI,I2Cなどを扱う周辺I/Oモジュールがあります。Co-processor⁠)⁠,リカバリメモリなどが含まれるモジュールで,マイコンの消費電力を管理するモジュールです。ESP32はこの機能ブロック単位で機能をオフにすることができ,それによってマイコンの消費電力をコントロールできます。sleepモードでは,ESP32の消費電力が10〜150マイクロA程度まで下げられます。sleepモードに移行させることにより,マイコンの消費電力を大きく下げることができます。最後に,ESP32を使って周期的に温度と湿度を測定し,クラウドサービスに送信する具体的な事例を見てみましょう。sleepモードに移行させ,待機中の消費電力をさげるようにします。温湿度センサデバイスのハードウェアESP32を使った温湿度センサデバイスは写真2のようなものです。ESP32を使った温湿度センサデバイス(⁠「⁠IoT開発スタートブック」より)温度,湿度センサはSi7021というデジタル温湿度センサを使いました。回路図は図3のようになります。温湿度センサデバイスの回路図デバイスは単3乾電池3本で駆動します。電池電圧を抵抗で分圧してESP32のADコンバータ(SENSOR_VNピン)に加え,温度,湿度と合わせて測定するようにしました。温湿度センサデバイスのソフトウェア温湿度センサデバイスのプログラムは次のようになります。loop(){}プログラムの大まかな流れは,次のようになります。sleepモードに移行します。指定した時間が経過すると,ESP32がリセットされ,プログラムの最初から実行が繰り返されます。Wi-Fiに接続して温度,湿度を測定し,データをクラウドサービスに送信するまでは5秒程度です。仮に測定周期を5分(300秒)とすると,周期の98%の時間は待機しています。sleepに移行させることで,IoTデバイスの消費電力を大きく下げています。このように,ESP32はWi-FiとBluetoothの通信モジュールが搭載されていて,インターネットに簡単に接続ができ,消費電力も低く,さらに待機中の消費電力を下げる機構も組み込まれていて,まさにIoTに適したマイコンです。ESP32を使った電子工作のさらなる実例やプログラムの詳細な解説が知りたいという方におすすめなのが『IoT開発スタートブック』です。『⁠IoT開発スタートブック』では温度,湿度を測定するだけの簡単なセンサデバイスから始めて,センサデータをクラウドサービスに送信する,デバイスを省電力化する,と順を追って機能強化し,解説をしています。興味を持たれた方は『IoT開発スタートブック』も合わせてご覧ください。ESP32著者プロフィール下島健彦(しもじまたけひこ)NECで組込みシステム向けリアルタイムOSの開発,米スタンフォード大学計算機科学科への留学を経て,インターネットプロバイダ事業BIGLOBEの立ち上げからメディア事業を担当。2015年ごろから個人でIoTデーター可視化サービス「Ambient(https://ambidata.io)」を開発,運営。M5Stackユーザーグループ主催。趣味はお茶とツール・ド・フランス観戦。─ESP32でクラウドにつなげる電子工作をはじめよう!いまや普及期に入りつつあるIoT,興味のある方も多いのではないでしょうか。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。