SlideShare a Scribd company logo
心拍センサでIoT
完全に理解した
エンジニア達の「完全に理解した」LT資料
発表 あかみの as 五穀米さらだ
発表日 2023年02月23日
自己紹介
• 技術系 as あかみの
@minotw996
• バーチャル as →
@vgare2023
当初はセンサーやカメラのGUIを作るはずが、最近はモーター制御したり基板作るハメに
好きな言語はTypeScript
苦手な言語はC++ (←IoT系にとっては致命的)
雀士1: 76-平常 雀士2 : 88-平常
雀士3: 68-平常 ワシ : 70-平常
こんな感じで配信時の心拍数を表示したい
今回やりたかったこと
今回やりたかったこと
雀士1: 76-平常 雀士2 : 88-平常
雀士3: 68-平常 ワシ : 200-異常
友人対戦配信で使ったら、余計な心理戦が生まれておもしろそう
必要なハード
マイコン
ESP32-DevKitC
ESP-WROOM-32開発ボード
1,600円 @秋月
その他ケーブルや配線類
1,000円未満
約5,000円なので
技術書1.5冊前後の価格で作れちゃいます!
(人件費含まず)
センサ
GROVE-心拍センサ
2,145円@スイッチサイエンス
必要なもの
マイコン
ESP32
心拍数センサー
GROVE-心拍センサ
サーバー
Firebase
Realtime Database
今回は自分の心拍数をDBに書き込んで、ブラウザ上で確認するところまで実施
必要なもの
マイコン
ESP32
心拍数センサー
GROVE-心拍センサ
サーバー
Firebase
Realtime Database
今回は自分の心拍数をDBに書き込んで、ブラウザ上で確認するところまで実施
約5,000円なので
技術書1.5冊前後の価格で作れちゃいます!
(2回目)
アプリケーションの構成
今回は
①心拍データの取得と計算+DB更新 @ESP32+Firebase
②ブラウザ上でリアルタイム更新の確認まで実施 @React+Firebase
write
リアルタイム
通信
Wi-Fi
心拍信号
心拍の取得とDB更新@ESP32
電源用の2本と、心拍検知時に信号を送るシンプルなセンサでした
Q.ハードは配線が難しそう
A.今回は秒で終わります
黒-GND
赤-3.3V
黃-番号が振られたピンならOK
(今回は34を使用)
心拍の取得とDB更新@ESP32
専用のIDEのセットアップは割愛
VScodeの拡張でPlatformIOからもコンパイル可能
Q.Arduino言語とはなんぞや
A.C++をベースにした言語
Arduinoという専用マイコンもあるので
たまに検索がまぎらわしい
IDE経由でライブラリをインストールすると
サンプルコードもそのまま使えることが多い
ので、電子工作入門でよく使われる
心拍の取得とDB更新@ESP32
Firebaseとの連携には
Firebase ESP32 Client
を使用
Githubの
ドキュメントもサンプルコードも
分かりやすかった。
心拍の取得とDB更新@ESP32
組み込み系は
1. 立ち上げ時に1回だけ行う処理
2. 電源が切れるまで繰り返し行う処理
で構成される
今回は1で
①センサからの信号を読むINPUTピン定義
②Wi-Fi接続
③Firebaseへの認証
④心拍信号キャッチ時の割込み関数の設定
(上記関数内で)心拍BPM計算、20個移動平均計算、
受信フラグの処理
立ち上げ時の実行部分@setup()
作った関数の中身は割愛
①
②
③
④
心拍の取得とDB更新@ESP32
なお、心拍キャッチ時にDBに書き込みに行けば無駄がないと思い
そんなコードを書いたら、ESP32さんがパニックを起こしました
心拍の取得とDB更新@ESP32
なお、心拍キャッチ時にDBに書き込みに行けば無駄がないと思い
そんなコードを書いたら、ESP32さんがパニックを起こしました
心拍の取得とDB更新@ESP32
繰り返し実行するloop()内で
変数のoldCountとcountの比較で
フラグチェックをして、
フラグ変更が確認できたら
計算済み心拍データをFirebaseに書き込み
とした。
【ハマりポイント】
前述の割込み関数の中でFirebaseに書き込みまで実行しようとすると強制リセットが起こる
【原因】
割込み関数は優先度が高く、ネットワーク通信は優先度が低いため、適切な切り分けが必要
【対策】
setup()でフラグを持たせ、loop()でチェックして書き込み、と優先度の矛盾と競合を解消
【解決方法】設定されている優先度を理解して、切り分ける
で、FirebaseとReactの連携は
皆さんのほうが詳しいと思うので割愛します
全37行のクソシンプルUIがこちら
②ブラウザ上でリアルタイム更新の確認
結果:無事に合成できた
まとめ
心拍センサでIoT 完全に理解した!
+
遊び心で技術を使うのは楽しい!

More Related Content

What's hot

What's the bus-off attack?
What's the bus-off attack?What's the bus-off attack?
What's the bus-off attack?Himitu Eightnote
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化y-uti
 
20120711 WUM Redmineの使い道_公開版
20120711 WUM Redmineの使い道_公開版20120711 WUM Redmineの使い道_公開版
20120711 WUM Redmineの使い道_公開版Yu Nakata
 
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Satoshi Kubo
 
EthernetやCPUなどの話
EthernetやCPUなどの話EthernetやCPUなどの話
EthernetやCPUなどの話Takanori Sejima
 
RTXで遊ぶ
RTXで遊ぶRTXで遊ぶ
RTXで遊ぶnvsofts
 
徳島生まれのオープンソース ソフトウェアシラサギのCMS導入事例、機能紹介
徳島生まれのオープンソースソフトウェアシラサギのCMS導入事例、機能紹介徳島生まれのオープンソースソフトウェアシラサギのCMS導入事例、機能紹介
徳島生まれのオープンソース ソフトウェアシラサギのCMS導入事例、機能紹介okusakazuya
 
距離とクラスタリング
距離とクラスタリング距離とクラスタリング
距離とクラスタリング大貴 末廣
 
ある工場のRedmine +(Plus)
ある工場のRedmine +(Plus)ある工場のRedmine +(Plus)
ある工場のRedmine +(Plus)Kohei Nakamura
 
Raspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試すRaspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試すKenichiro MATOHARA
 
i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発
i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発
i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発Daiki Maekawa
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1cohama
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門uchan_nos
 
Redmine 4.2 新機能評価ガイド
Redmine 4.2 新機能評価ガイドRedmine 4.2 新機能評価ガイド
Redmine 4.2 新機能評価ガイドGo Maeda
 
180215 Ponanzaにおける強化学習、ディープラーニングとその先
180215 Ponanzaにおける強化学習、ディープラーニングとその先180215 Ponanzaにおける強化学習、ディープラーニングとその先
180215 Ponanzaにおける強化学習、ディープラーニングとその先HEROZ-JAPAN
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpsonickun
 

What's hot (20)

What's the bus-off attack?
What's the bus-off attack?What's the bus-off attack?
What's the bus-off attack?
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化
 
20120711 WUM Redmineの使い道_公開版
20120711 WUM Redmineの使い道_公開版20120711 WUM Redmineの使い道_公開版
20120711 WUM Redmineの使い道_公開版
 
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
 
EthernetやCPUなどの話
EthernetやCPUなどの話EthernetやCPUなどの話
EthernetやCPUなどの話
 
RTXで遊ぶ
RTXで遊ぶRTXで遊ぶ
RTXで遊ぶ
 
SSH力をつけよう
SSH力をつけようSSH力をつけよう
SSH力をつけよう
 
Bezmugurkaulnieki 1
Bezmugurkaulnieki 1Bezmugurkaulnieki 1
Bezmugurkaulnieki 1
 
徳島生まれのオープンソース ソフトウェアシラサギのCMS導入事例、機能紹介
徳島生まれのオープンソースソフトウェアシラサギのCMS導入事例、機能紹介徳島生まれのオープンソースソフトウェアシラサギのCMS導入事例、機能紹介
徳島生まれのオープンソース ソフトウェアシラサギのCMS導入事例、機能紹介
 
距離とクラスタリング
距離とクラスタリング距離とクラスタリング
距離とクラスタリング
 
ある工場のRedmine +(Plus)
ある工場のRedmine +(Plus)ある工場のRedmine +(Plus)
ある工場のRedmine +(Plus)
 
Raspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試すRaspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試す
 
i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発
i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発
i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門
 
Redmine 4.2 新機能評価ガイド
Redmine 4.2 新機能評価ガイドRedmine 4.2 新機能評価ガイド
Redmine 4.2 新機能評価ガイド
 
180215 Ponanzaにおける強化学習、ディープラーニングとその先
180215 Ponanzaにおける強化学習、ディープラーニングとその先180215 Ponanzaにおける強化学習、ディープラーニングとその先
180215 Ponanzaにおける強化学習、ディープラーニングとその先
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 

Recently uploaded

ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介miyp
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料Toru Miyahara
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Toru Miyahara
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubK Kinzal
 
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上mizukami4
 
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例Kurata Takeshi
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題についてMasatsugu Matsushita
 
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料Toru Miyahara
 

Recently uploaded (8)

ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
 
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
 
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
 
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
 

心拍数IoT完全に理解した.pptx