IoT技術メモ⑥
学習要領
- メイカームーブメント、プロトタイピング開発
- データフォーマット、CSV,XML,JSON
- GIPO、シリアルポート(UART,I2C,SPI)
- ワイヤレス通信機器を使う上でのポイント
- サーバサイドの主な開発環境と開発言語
IoTにおけるモノづくりの実践
3Dプリンタ・スキャナ等を使った個人宅での制作。
これらの規模は、製造業の一端レベルまで拡大することがあり、メイカームーブメントと呼ばれる。
メイカームーブメントの原動力は、
- 「店にないものを自分で作る」
- 「自らデザインしたものをオンライン共有する」
- 「作ってから売らず、売れるものを作る」
といったものがあり、プロトタイピングはこの考え方にマッチしている。
IoT関連のアイテムは、素材や部品、開発・通信環境の入手価格が低下したので、個人でもプロトタイピングがしやすくなっている。
IoTのプロトタイピングをすることは、メイカームーブメントを実践することである。
ネット上のショップにも、こうしたモノづくりによる製品が流通するようになった。
データフォーマット、CSV,XML,JSON
一番知られており、理解しやすい形式がこのCSVだと思います。
CSVは’Comma-Separated Values’(コンマ・セパレイテッド・バリューズ)の頭文字です。
その名の通りコンマ(”,”)で区切られています。
この方式は複雑ではないので、直感的にデータの中身を把握しやすいです。
また、MicrosoftのExcelやGoogle Spread Sheetと親和性の良いのがこのファイル形式です。
Extensible Markup Language(エクステンシブル・マークアップ・ラングイッジ)と言われ、XML(エックス・エム・エル)と略されます。
XMLはHTMLの記述方法に似ており、タグと呼ばれるもの(例えば\\のようなものです)によってデータを囲み、更にデータを入れて入れ子構造にすることができます。
人が見るのには直感的に理解しづらく複雑ですが、CSVよりも様々なデータを記述することができます。
また、Ajaxと呼ばれる機能が普及したことにより、クライアント側でも処理が容易であるため、XMLでの記述されることは多いです。
JSON(ジェーソン)とはJavaScript Object Notation(ジャバスクリプト・オブジェクト・ノテイション)の頭文字です。
このデータは辞書型と呼ばれる、一対一対応のような記述方式をとっています。
また、XMLよりもデータの記述量が少ないので、読み込みが速いと言われています。
この形式の特徴は、その名前からも分かるようにJavaScriptとの親和性の高さが挙げられます。
JSON は JavaScript のオブジェクトで構成されているため、そのまま JavaScript で記述したプログラムで扱うことができます。
GIPO、シリアルポート(UART,I2C,SPI)
今回シリアル通信の中でも基本的な通信方式である、SPI、I2C、UARTについて説明させていただきました。
それぞれの方式について以下にまとめます。
通信速度(目安) | クロックライン | 通信ライン | 通信方式 | |
---|---|---|---|---|
SPI | ~50Mbps | 有 | データ クロック チップセレクト | x1マスター ⇔ 複数スレーブ |
I2C | ~1Mbps | 有 | データ クロック | 複数マスター ⇔ 複数スレーブ |
UART | ~500kbps | 無 | データ | x1デバイス ⇔ x1デバイス |
それぞれに特徴がありますので、用途に合わせて最適なシリアル通信を選択してみてください。
現在、コンピュータ間、その付属部品間での通信方法には、大きくシリアル通信方式と、パラレル通信方式が一般的となっております。それぞれの通信方式を簡単にご紹介しますと
- シリアル通信:1つのデータ伝送路を使い。1ビットずつデータを送信する方式
図.1 シリアル通信
- パラレル通信:複数の伝送路を使い、1度に複数のデータを送信する方式
図.2 パラレル通信
パラレル通信のほうがシリアル通信よりも一度に多数のデータを送ることができるため、良いように思われがちですが、パラレル通信には複数の伝送線が必要になるため、コストが高くなりやすく、また複数のデータの同期をとる難しさなどがあます。そのため、現在はシリアル通信が主流になります。
この記事ではシリアル通信の中でもよく利用される、SPI、I2C、UARTについて説明します。
この記事ではシリアル通信の中でもよく利用される、SPI、I2C、UARTについて説明します。
SPI通信とはデバイス同士を接続するのによく利用される同期式シリアル通信の一つです。
信号線
SPI通信には以下の4つの信号線を使用して通信を行います。
- SIMO(Slave In Master Out):マスターモード時はデータ出力ピンになり、スレーブモード時はデータ入力ピンになります。
- SOMI(Slave Out Master In):マスターモード時はデータ入力ピンになり、スレーブモード時はデータ出力ピンになります。
- SCLK(Serial Clock):マスターモード時はクロック出力ピンになり、スレーブモード時はクロック入力ピンになります。
- SS(Slave Select):Lowアクティブの信号になり、マスターは複数あるスレーブ機器のなかで、通信したいスレーブ機器のSS端子をLowに制御し通信を行います。スレーブ機器が一つしか接続されていない場合には、スレーブ側のSS端子をLow固定にすることで、配線を省くことが可能です。
接続例
以下のように、スレーブ機器には4線が接続され、マスター機器には、接続するスレーブ機器の数だけSS端子を接続します。
図.3 接続例(SPI)
I2C通信とはデバイス同士を接続するのによく利用される同期式シリアル通信の一つです。一般的に速度はSPI通信に劣りますが、I2C通信は2本の信号線ですべてのデータの送受信を行います。そのため、SPI通信よりも信号線が少なくてすみます。
信号線
I2C通信は以下の2つの信号線を使って通信を行います。
- SDA(データ信号用)
- SCL(クロック信号用):マスター側がSCLをスレーブに出力し通信を行います。
接続例
SCLとSDAのバスに、マスター機器及び、スレーブ機器が接続されます。また、SCL、SDAはプルアップする必要があります。プルアップする抵抗の値は数百から数キロΩを接続することが多いですが、使用するデバイスにより推奨値が用意されている場合があるので、ICの購入先に聞いてしまうのが手っ取り早いです。
図.6 接続例(I2C)
UART通信はこれまでのSPI、I2Cとは異なり、非同期でシリアル通信を行います。そのため、信号線は送信用のデータラインと、受信用のデータラインの2線で通信を行い、クロック用のラインは存在しません。
信号線
UART通信は以下の2つの信号線を使って通信を行います。
- TXD(データ送信に使用)
- RXD(データ受信に使用)
RTS(Request to Send)、CTS(Clear to Send)の信号線を使い、送信リクエストを送りあう方法(フロー制御)もありますが、今回はこの方法については省略します。
接続例
2つのデバイス間で、送信ピンと受信ピンをそれぞれ接続します。SPIやI2Cと異なり、クロックラインが無く、マスター/スレーブのような関係もありません。
図.9 接続例(UART)
CPUとメモリだけでは動かない!マイコン活用に必須の「周辺機能」とは
過去の連載「マイコン入門編」で解説したように、電子機器の制御を行うマイコンは、CPUとメモリ、周辺機能で構成されています(図1)。CPUは命令(プログラム)に従って、演算やデータの読み書き、条件判断などを行います。メモリには、そのプログラムを格納(記憶)します。
周辺機能は、マイコンを便利に使うためのさまざまな機能です。例えば、CPUと外部のセンサやスイッチなどの信号のやり取りをするために、周辺機能である「入出力ポート(I/Oポート)」が必要です。
また、アナログの入力信号をデジタルの値に変換する「A/Dコンバータ」や、逆に、デジタルの値をアナログの出力信号に変換する「D/Aコンバータ」は、マイコンがさまざまな信号を扱うために不可欠な周辺機能です。
デジタル信号の出入り口「GPIO」を理解しよう
「入出力ポート(I/Oポート)」のうち、デジタル信号の出入り口である「GPIO(General Purpose Input/Output)」は、「汎用I/Oポート」とも呼ばれ、入力にも出力にも使える便利なデジタル信号の出入口です。デジタル出力のセンサの値やスイッチのON/OFFをマイコンに伝える入力や、マイコンの演算結果をLEDで表示したり、モータを動かす信号を出力したりする時などに利用します。
GPIOが汎用と呼ばれる大きな理由は、端子を入力用にも出力用にも使えるからです。初期のマイコンでは、端子の役割が入力か出力に固定されていましたが、今では多くのマイコンで入出力を自由に設定可能です。仮にGPIO端子が8本であれば、4本を入力、4本を出力として使うこともできますし、入力は1本で出力は7本といった使い方も可能です。
GPIOでは、CPUと外部装置でデータの受け渡しをするために、プログラムで扱うデジタル値(0または1)と信号(電圧のLOWレベルまたはHIGHレベル)の変換を相互に行います。RX63NマイコンのGPIOの基本となるレジスタ(※1)の役割を理解しましょう(図2)。
ワイヤレス通信機器を使う上でのポイント
サーバサイドの主な開発環境と開発言語
サーバーサイドエンジニアはWebサイトやアプリ構築におけるサーバ側の処理やデータベースのシステム構築を行う職種です。
具体的にはWebサイトやアプリ、データベースを連携させたり、データベースの中にある情報の検索・保存・変更を行うために必要な処理をプログラミング言語を駆使してコーディングしていきます。
具体的な業務内容
新規の構築を1から任されることに加え、ハードウェアのアップグレードに伴い新たなソフトウェアをインストールするなど、既存のシステムに対して大きな変更を出来る権限を持っていることもサーバーサイドエンジニアの特徴として挙げられます。
言語としては、
Java/C/C++
PHP/Python/Perl/Ruby/JavaScript
aaaa
aa