🌊

IoTプロジェクトで定義しておきたい内容と実現するためのメモ

2021/08/26に公開

本記事の目的

  • IoTなどのデバイス通信させたいとき、色々な方向から解決を考える際の参考になってほしい

デバイスの種類

  • スマートフォン
    • 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