🌊
IoTプロジェクトで定義しておきたい内容と実現するためのメモ
本記事の目的
- IoTなどのデバイス通信させたいとき、色々な方向から解決を考える際の参考になってほしい
- 例えば、通信する時Wi-Fiは必須!ではなく、テレビから出る音に反応して光るものだったりが考えつけるような手助けになったらいいな
デバイスの種類
- スマートフォン
- Webアプリ
- ネイティブアプリ
- PC
- Mac
- Windows
- Linax
- マイコンやワンボードコンピュータ
- Arduino
- M5Stack
- RaspberryPi
- 製品のコントローラー
- ニンテンドーSwitchのジョイコン
- PSコントローラー
- Oculusコントローラー
- ラジコン
- 電波発信する製品
- BLEビーコン
- MAMORIO等
- 非電源系
- 懐中電灯に赤外線LEDを仕込む
- 赤外線反射テープ
- QRコード、特定のマーカー
- 学習させたもの
- 体、体の一部
環境
やはり現在主流となっているインターネットにつなげるために、Wi-Fiルーターの電波が届くのかどうか、ルーター設置ができるのかどうかが大きな要因になっていると思われる
- 長距離
- 主にインターネット越し
- 一定の地域内
- Wi-Fiが届くのか
- 建物内 20m以内くらい
- Wi-Fiルーターがある
- サーバー、中継機がある
- デバイス同士しかない M2M
- 部屋内 5m以内くらい
- デバイス間に障害物がない
- Wi-Fiルーターがある
- サーバー、中継機がある
- デバイス同士しかない M2M
- 近距離
- 接触している
- 混線具合
同期タイミング
タイミングによっては普段は長距離だが、近距離通信のものでも可能ということもありうる
- 常に 1毎秒以内くらい
- たまに
- ある一定のトリガーで
- ユーザーの操作によって
- 近づいたら
通信するデータの内容
- よくあるデバイスの姿勢データなどかオリジナルデータか
- 文字データ
- プレーンな文字
- カンマ区切り、改行コード区切り
- JSON
- 画像データ、動画、ストリーム映像
- バイナリ
- Base64で文字列のように扱う
以上までがだいたいやりたいことベースの話になるかなと
以下からはじゃあどう実現しようかというものになるかなと
さまざまな通信方法
以下の階層は、用語の定義の階層とは違います
- インターネット、TCP/IP
- Bluetooth
- XBee
- NFC
- USBケーブルなどの有線
- シリアル通信
- 音響通信
- 映像による通信
- 赤外線リモコンなどの光
- QRコード、バーコード
- 画像処理
- その他利用可能な周波数帯
インターネットの利用方法
- LANケーブル
- Wi-Fi
- 電話回線
- SORACOM
- sakura.io
- サブギガヘルツ帯での通信
- LoRa
インターネットを利用した通信方式
- HTTP
- GETやPOST
- MQTT
- Socket
- シンプルなTCP、UDP通信
- OSC
- MJPEG
サービスや製品
インターネットにつながる前提
通信を受け取るサーバー環境が作れるものだったり、すぐに情報を共有できるもの(利用したことないものもある)
- tramontana
- AWS IoT Core
- Firebase
- RealtimeDatabase
- FireStore
- Functions
- GCP
- pub/sub
- Goole Apps Script
- Youtube
- GoogleDrive
- IFTTT
- LINE
- LINE Notify
- LINE MessagingAPI
- IBM Cloud
- Netlify Functions
- Heroku
- CloudMQTT
- Beebotte
Discussion