Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
中村 真理 ESP32で始めよう IoT開発ハンズオン
Slide 2
Slide 2 text
中村 真理 Nakamura Shinri 診療放射線技師 Line API Expert 株式会社B&B Lab. 共同ファウンダー 自己紹介 株式会社 B&B Lab. 事業内容:IoTハードウェア及びサービスの開発
Slide 3
Slide 3 text
Nakamura Shinri http://b-and-b-lab.jp 手動ON 自動 ■開発実績 SORACOM Air を活用した自動潅水システムの開発 〇農業ハウス向け自動潅水システム(開発中)
Slide 4
Slide 4 text
爆発的な普及のために 今日の流れ IoTとは何か 使用する機材 今日作成するものの概要 開発環境 通信方法 実際の開発 通信確認 ※用意したqiitaのページと一緒に使用してください https://qiita.com/shinfrom/items/2f350d789a89b7086df3
Slide 5
Slide 5 text
爆発的な普及のために IoTとは IoTとはどのようなものでしょう? IoTと聞いてどのようなものを思い浮かべますか?
Slide 6
Slide 6 text
爆発的な普及のために IoTとは IoTとは? Internet of things モノが直接インターネットに接続
Slide 7
Slide 7 text
爆発的な普及のために IoTを実現する技術背景① スマートホンが普及 センサーが安価に!
Slide 8
Slide 8 text
爆発的な普及のために IoTを実現する技術背景② コンピュータリソースやスケーラビ リティの課題はクラウドの普及に よって解消 クラウドの普及
Slide 9
Slide 9 text
爆発的な普及のために 技術要素は出そろってきた 技術要素はある程度出そろってきた 次の課題 どのような課題に対して、どのような効果を出すことができ るかを考えるほうが重要になってきた つまり 繋いでみて、データが取れただけではダメ!
Slide 10
Slide 10 text
爆発的な普及のために IoTの価値とは イノベーティブな価値を起こすことを目指すのが本質 モノをつなげるだけでなく モノをつなげることだけでなく、モノをつなぐこ とによって得られるデータをもっと利用できる仕 組みや分析方法を構築する必要がある
Slide 11
Slide 11 text
爆発的な普及のために 一般的なIoTのイメージ サーバー モノ(デバイス) センサー ネットワーク クラウド ネットワーク アプリケーション https://www.rohm.co.jp/blog/-/blog/id/7405417
Slide 12
Slide 12 text
爆発的な普及のために IoTの通信方法 https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h29/html/nc133200.html 広域・遠距離 低速 低コスト 省電力 狭域・短距離 高速 高コスト 消費電力大 Wi-Fi LTE LPWA BLE RFID NFC ZigBee 5G
Slide 13
Slide 13 text
爆発的な普及のために 今回作成するもの デバイス側 サーバー側
Slide 14
Slide 14 text
爆発的な普及のために 今回の開発で使用するもの ・マイコン ・プログラム開発環境 ・センサー ・ブレッドボードとジャンパワイヤ
Slide 15
Slide 15 text
爆発的な普及のために マイコンとは 組み込みエンジニアの教科書 より引用 一つのICチップにコンピュータが持つ基 本機能一式を搭載した電子部品のこと マイクロコントローラの略称 CPU:演算を行う メモリ:記憶領域 ペリフェラル:入出力を行う
Slide 16
Slide 16 text
爆発的な普及のために よく使用されるマイコン Arduino Uno ESP32 マイクロビット M5stack
Slide 17
Slide 17 text
ESP32 ・Wi-Fi ・Bluetooth ・SPI ・I2C ・UART ・PWM ・GPIO ・電源電圧:2.2V~3.6V 今回使用するマイコン
Slide 18
Slide 18 text
爆発的な普及のために センサーについて アナログセンサー 測定したデータを電気信号に変換したときに、それを電圧の連続 データ(アナログデータ)で出力する。 ディジタルセンサー 測定したデータを電気信号に変換したときに、それを0と1のディ ジタルデータで出力する
Slide 19
Slide 19 text
爆発的な普及のために センサーの種類 温湿度センサ 超音波センサ CO2センサ 人感センサ 様々な種類のセンサーがある
Slide 20
Slide 20 text
爆発的な普及のために 今回使用するセンサー 土壌水分センサー CdS感光センサー
Slide 21
Slide 21 text
爆発的な普及のために ブレッドボードとジャンパワイヤ ブレッドボード プロトタイプを作成するための基板 ブレッドボードの穴に部品を抜き差しすることではんだ付け不要 で回路を構成できる ジャンパワイヤ ブレッドボードで使用できる線材 両端がブレッドボードにさせるようになっているものや、マイコ ンやセンサが挿せるように穴が開いているものがある
Slide 22
Slide 22 text
爆発的な普及のために ブレッドボード 外側は横方向に、内側は縦方向に配線されている
Slide 23
Slide 23 text
爆発的な普及のために プログラム開発環境① Arduino IDE クロス開発環境 スケッチでプログラム 対応しているマイコンが多い Cライクにプログラミング 開発に必要なものがそろっている
Slide 24
Slide 24 text
爆発的な普及のために プログラム開発環境② ビジュアルプログラミングツール Node-RED 処理をノードでブラックボックスにする ネットワークはデータの流れを示す 難しいことを考えずに 使用できる
Slide 25
Slide 25 text
爆発的な普及のために ハンズオンに入ります 実際に手を動かします
Slide 26
Slide 26 text
爆発的な普及のために 開発環境の構築 ※詳しい手順はこちらにまとめています ・Arduino IDEをインストールする ・ESP32のボード情報をArduino IDEに登録する esp32ボードマネージャ https://github.com/espressif/arduino-esp32
Slide 27
Slide 27 text
爆発的な普及のために LEDについて + LEDとは https://www.slideshare.net/chabudaigaeshi/02-hands-onpptx 発光ダイオードと呼ばれ順方向に電圧を加えると光る半導体素子 カソード:外部回路へ電流が流れだす電極(ー) アノード:外部回路から電流が流れ込む電極(+) -
Slide 28
Slide 28 text
爆発的な普及のために Lチカについて 何も考えずに光らせてみましょう LEDのアノード側をGPIOの12番に接続 します LEDのカソード側に抵抗、GNDと接続 します
Slide 29
Slide 29 text
爆発的な普及のために Lチカのビルドと書き込み 一度だけ実行される関数 ☑ボタンを押してコンパイルを行う →ボタンを押してビルドと書き込みを行う 繰り返し実行される関数 LED点灯 LED消灯 ソースコードの場所
Slide 30
Slide 30 text
爆発的な普及のために センサーを動かす アナログセンサーの読み込み analogRead()関数で読み込みを行う 引数で使用するピン番号を指定します 使用できるピンはADCと接続されているピンのみ
Slide 31
Slide 31 text
爆発的な普及のために CdS感光センサーの仕組み 動作原理 硫化カドミウムを使用した光センサーで、光の強さに応じて電気 抵抗が低下する。 人の目の特性に近いので明るさセンサーに 向いている
Slide 32
Slide 32 text
爆発的な普及のために CdS感光センサーの配線 CdSセンサーの配線例です ※実際に使用するマイコンモジュールとは違いますが この例を参考に配線してください センサーと接続するピン番号は32番になります
Slide 33
Slide 33 text
爆発的な普及のために CdS感光センサーを動かしてみる まずは値を読み取ってみます void setup() { Serial.begin(115200); Serial.println("start"); pinMode(CDS_PIN, INPUT); } void loop() { int Measurevalue; Measurevalue = analogRead(CDS_PIN); Serial.print("Mesure value is : "); Serial.println(Measurevalue); delay(500); } GPIOのモードの変更 値の読み出し
Slide 34
Slide 34 text
爆発的な普及のために 感光センサーでLEDを操作する 明るい 暗い 閾値(スレッショルド) th_light 閾値よりも暗いときはLEDを光らせる if (Measurevalue < th_light ){ //LEDを点灯させる } else { //LEDを消灯させる } スレッショルドを変化させてみてください
Slide 35
Slide 35 text
爆発的な普及のために 水分センサーの仕組み https://wiki.dfrobot.com/Capacitive_Soil_Moisture_Sensor_SKU_SEN0193 動作原理 静電容量方式で土壌水分レベルを測定する 水分量が上がると出力値が下がり 水分量が下がると出力値が上がる 定量的な測定はできない
Slide 36
Slide 36 text
爆発的な普及のために 水分センサーを動かしてみる プログラムは光センサーとほぼ同じです ピン番号を35番にして 自分で作成してみてください 配線 VCCを3.3V GNDをGND 信号線をD35に接続します
Slide 37
Slide 37 text
爆発的な普及のために Wi-Fiを利用した通信 MQTT CoAP HTTP 今回使用するので細かく説明します 1対1の通信用のプロトコル IoT用の簡易版HTTPともいえる リアルタイムなセンサーデータの送受信に向いています 機器同士の通信に向いています HTML文書や画像、音声、動画等のコンテンツの送受信に 用いられるプロトコル
Slide 38
Slide 38 text
爆発的な普及のために MQTTについて MQTT 二者間の非同期通信をサポートするプロトコル。 メッセージの送信側と受信側を空間という点でも時間という点でも切 り離すことができる。 双方向通信ができるのにヘッダーが小さいのが特徴
Slide 39
Slide 39 text
爆発的な普及のために MQTTライブラリのインストール pubsubクライアントライブラリのインストール https://pubsubclient.knolleary.net/
Slide 40
Slide 40 text
爆発的な普及のために ファームウェアをマージさせる start ①set up サーバーとの接続確認 データの作成 ②mqtt送信 このような流れで実装します ソースコードと比較して、どのコード がどの処理なのか考えてみましょう。 ソースコードはこちらです
Slide 41
Slide 41 text
爆発的な普及のために JSONとは Javascriptのオブジェクトを文字列で表すデータフォーマット 異なるプログラミング言語間のデータの受け渡しが楽になる Webアプリでは、サーバーとwebクライアント間でのデータの受け渡 しにJSONがよく用いられる {“key” : value, “key2” : value} ダブルクォーテーションには、オブジェクトのプロパティ名が入る
Slide 42
Slide 42 text
爆発的な普及のために Payloadの中身 {"DeviceID":"01",”moist”:%d,”light”:%d} “ ”はプロパティ名 %dは整数(int)を表す 送受信されるデータの伝送単位(パケット等)のうち、宛先など の制御情報を除いた相手に送り届けようとしている正味のデータ 本体のこと。 payloadとは
Slide 43
Slide 43 text
爆発的な普及のために Payloadの作成の準備 sprintf 書式にのっとって変換した出力を文字列に格納 する関数 int 整数を扱うデータ型 char 文字型を扱うデータ型 変数の集まり 配列
Slide 44
Slide 44 text
爆発的な普及のために Payloadの作成 int light; int moist; char payload[120]; sprintf(payload, "{"light":%d,"moist":%d}", light, moist); payloadの作成例です lightの値とmoistの値をpayloadに詰めています
Slide 45
Slide 45 text
爆発的な普及のために 実用的なpayload なるべくデータを詰め込む データを16進数に変換することでなるべくデータを詰め込む (例) 明るさ16、湿度8、温度24 整数のデータ(4 Byte) 000F00080018 16 8 24
Slide 46
Slide 46 text
爆発的な普及のために enebularについて eneubularは、株式会社ウフルが提供するIoT製品・service作りを包 括的に支援するサービスです https://www.enebular.com/ja/ 一定時間無料で試用することができます アカウント登録は必要ですが
Slide 47
Slide 47 text
爆発的な普及のために Enebularの登録とフローの開き方 Emailを登録する パスワードを登録する ユーザー名を決めて
Slide 48
Slide 48 text
爆発的な普及のために enebularのフローの開き方 プロジェクトの作成をする 新規作成して名前を付ける
Slide 49
Slide 49 text
爆発的な普及のために Node-REDのフローの作成 使いたいノードをドラッグして配置する デプロイする
Slide 50
Slide 50 text
爆発的な普及のために データの送信と受信確認 サーバーのIPアドレスを入力します トピックを入力して deployすると受信準備が整いました
Slide 51
Slide 51 text
爆発的な普及のために データの分割 受信データの取り出し functionノードを利用してデータを取りだします var light = msg.payload.light var moist = msg.payload.moist JSONオブジェクトからプロパティごとに取り出すことができます
Slide 52
Slide 52 text
爆発的な普及のために Node-REDの中でのJSONの作成 var light = 2000 var moist = 1000 msg.payload = { “light” : light, “moist” : moist } (例) functionノードの中で作成する 出力 {“light” : 2000, “moist” : 1000}
Slide 53
Slide 53 text
爆発的な普及のために Kafkaとは https://oss.nttdata.com/kafka/kafka.html kafkaは大規模なストリームデータを扱うことができる オープンソースの分散メッセージングシステム は右図のようにデータが生成 される機器やサーバとデータの処理 サーバなどの間に配置され、 生成さ れたストリームデータを受け取り、 一時的にデータを保存しつつ、都度 または必要なタイミングで処理サー バにデータを受け渡します。 ※NTTデータソリューション紹介ページより
Slide 54
Slide 54 text
爆発的な普及のために Kafkaノードのインストール 右上のハンバーガーメニューから パレットの管理を選択する ノードの追加を選択して Kafkaで検索する 2番目のものを選択します node-red-contrib-kafka-manager
Slide 55
Slide 55 text
爆発的な普及のために Kafkaの送信テスト brokerサーバーとtopicを指定してタイムスタンプを送信してみる
Slide 56
Slide 56 text
爆発的な普及のために データの流れ デバイス側 サーバー側
Slide 57
Slide 57 text
爆発的な普及のために mqtt受信データをKafkaに送信 mqttで受信したデータをJSONに変換してKafkaに送信する
Slide 58
Slide 58 text
爆発的な普及のために 参考情報 IoTとは? 重要な4つの構成要素と活用事例、自作のための知識を紹介 https://www.rohm.co.jp/blog/-/blog/id/7405417 IoTを支える新たな通信技術 https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h2 9/html/nc133200.html ESP32ボードマネージャー https://github.com/espressif/arduino-esp32 某社arduino勉強会ハンズオン https://www.slideshare.net/chabudaigaeshi/02-hands-onpptx Enebular公式ドキュメント https://docs.enebular.com/ja/?_ga=2.68803665.1133606832.1651 417791-389674778.1649496197 組み込みエンジニアの教科書 渡辺登、牧野進二著 2019年4月26日 初版発行 株式会社 シーアンドアール研究所 ISBN 978-4-86354-275-4 IoT開発スタートブック 下島健彦著 2019年8月24日 初版発行 株式会社技術評論社 ISBN 978-4-297-10736-9 c3055 Arduinoで学ぶ組み込みシステム入門 猪俣俊光著 2018年3月30日 第一版発行 森光出版株式会社 ISBN 978-4-627-81831-6 ESP32&Arduino電子工作プログラミング入門 藤本壱著 2020年4月20日初版発行 株式会社技術評論社 ISBN 978-4-297-11205-9 c3055
Slide 59
Slide 59 text
中村 真理 Nakamura Shinri 診療放射線技師 Line API Expert 株式会社B&B Lab. 共同ファウンダー Appendix follow me 株式会社 B&B Lab. 事業内容:IoTハードウェア及びサービスの開発 https://www.facebook.com/nakamura.shinri/ @shinfrom1981