前に
Pythonや複雑なニューラルネットワークの知識がなくてもC言語の知識を用いて開発ができます
https://blog.goo.ne.jp/xmldtp/e/76a8482d2fe745641fce486abe688921
っていうエントリを書いたけど、CでIoTはできても、PythonだけでIoTはできない。
その理由について、一応書いてみる。
■まず、前提として、IoTのシステム構成
IoTのシステムは、以下のように構成される
|
センサー→データ送信部 -- データつうしん --- データ収集部
|
センサーデータを集めて、サーバーやクラウドでデータ収集&処理を行う。
このとき、サーバーやクラウドでは、Pythonを使うことができる。問題ない。
問題は、センサー→データ送信部。
■センサーデータの送り方
センサーデータは単なる電気信号のときもあるし、I2Cのような通信でもらえることもある
・・・が、I2Cは、近距離しか届かないので、サーバーにはそのままでは送れない(距離的に)。
そこで、データ通信を使って、サーバーまたはクラウドにセンサーデータを送ることになる。
(ちなみに、そのデータ通信にインターネットを使うのが、IoT)
もし、センサーデータをラズベリーパイにつなげられれば、
ラズベリーパイからインターネットは使えるので、
センサー→ラズパイ --- インターネット --- サーバー
ラズパイ上でPythonで組めば、オールPythonでできそうに見える。
しかし、このシステムは以下の理由で問題があり、利用箇所がかなり限定される
1.ラズベリーパイには、アナログ入力がない。これでは温度、明るさのような連続量が入力できない
2.ラズベリーパイの消費電力が大きい。つねに電力供給が必要
そこで実際には
センサー→マイコンーUART・I2C・SPI等の通信ートランシーバー -- インターネット -- サーバー
という構成がとられる。
■マイコンとトランシーバー
トランシーバーは、通信したいプロトコルによってことなり、
XBee(ZigBee)、MAX485(RS485)
などがある。これは買ってきて、そのまま使うか、ファームウェアまで提供されるので、そのまま
ファームをインストールして使う。
マイコンは、
センサーデータ(アナログ・デジタル)を受けて、
トランシーバーにUART,I2C.SPIでデータを送る。
この機能はカスタマイズが必要なため、プログラミングが必要。
低電力で行う必要があるため、PICやMSP430などが使われる。
■PythonだけではIoTできない理由
つまり、PICやMSP430のプログラミングが必要
(具体的にはセンサーデータを受け取り、トランシーバー等が受け取れるデータに変換するプログラミングが必要)
なのだが、これらはPythonではできない(Cが必要)
なので、PythonだけではIoTできない。