2.1 Arduino シリアル通信(1)
2017/08/27
PR
Arduinoで通信する方法
Arduinoで通信するには
Arduinoの開発環境作成はこちらを先に行ってください → Arduino開発環境作成
ArduinoでIOTの仕掛けを作る場合、Arduinoから計測結果をPCやServerにデータを送ったり、仕事の指令を受け取る必要が出てきます。
今回はマイコンとPC間でのデータのやり取りを勉強しましょう。
では、Arduinoでのデータ受け渡しはどのようなものがあるのでしょうか?
Arduinoの開発環境にはシリアルモニタがあり、ここでデータのやりとりをモニタリングできるのです。
その他にも通信方法がいくつか有るので1つずつ紹介していきます。
- シリアル通信・・・Arduinoで実装
RS232C 仕様の古さからレガシーインターフェースと呼ばれる、USB変換してUSBで動作します
通信速度9600 14400 28800 ,COMポート - I2C(Wire)通信・・・Inter integrated Circuit
2本線 VCC、GND、A4、A5
機器を複数繋げる、機器にアドレスを割り当てて電文送信 - SPI通信・・・Serial Peripheral Interface シリアルベリフェラルインターフェース
4本線 D13,12,11,10 SCK MOSI MISO SS1・・・・
SDカード、SPI接続のセンサー
機械ふえるとSS1、SS2とSSがふえる - イーサネット接続・・・イーサネットシールドが必要 mac,ip,gatway,sunet
- WIFI・・・シールド必要、Arduinoに組み込まれているサードパーティ製あり
- BEE通信・・・無線モジュール 室内30m 屋外100m
- Bluetooth・・・シールド必要、androidと通信
1.serial1.ino・・・シリアルモニタから文字を受け取る
シリアルモニタから文字を受け取りARDUINOから文字をかえす
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
void setup(){ // シリアルポートを9600 bps[ビット/秒]で初期化 Serial.begin(9600); // 開始メッセージ Serial.write("START"); Serial.write("\n"); } void loop(){ int input; // シリアルポートより1文字読み込む input = Serial.read(); if(input != -1 ){ // 受け取った文字を送信 Serial.write(input); Serial.write("\n"); } } |
※1
123と入力して送信すると
1
2
3
となります。これはreadが1文字ずつ読み込まれる為です。
※2
int inputとなっている
Serial.print(input);
にすると123で
49
50
51
となって帰ってくる。1のascコード=49が帰ってくるのです。
おっと、123と入力したらやっぱり123と返ってきてほしいですよね。
ポイント
Serial.begin(9600)
ボーレト9600bpsで通信開始。9600 14400 28800ぐらいまで。
Serial.read
受信シリアルデータを読み込みます。read()はStreamユーティリティー・クラスから継承します。
Serial.write
バイナリデータをシリアルポートに書き込みます。数値の数字を表す文字を送信するには、代わりにprint()関数を使用します。
Serial.print
データをASCIIテキストとしてシリアルポートに出力します。文字と文字列はそのまま送信されます。