電波より盗聴されにくいのかな?
はじめに
- M5StickCPlus2を買ってから、パーツ欲がとまらず、Laserモノも購入した。
送信機(laser.tx)、受信機(laser.rx) - 購入したからには当然動かすしかない。
実際の動作状況
・M5StickCPlus2からM5AtomS3にレーザーを飛ばしている。
・macのシリアルモニタで「sdf」を入力して、M5AtomS3に表示させた。
コード(ArduinoIDE)
- M5StickCPlus2
#include <M5Unified.h>
void setup() {
auto cfg = M5.config();
M5.begin(cfg);
//レーザー通信をSerial2で行う
Serial2.begin(9600, SERIAL_8N1, 33, 32); //cp2用pin
M5.Lcd.setTextSize(2);
M5.Lcd.setTextColor(YELLOW); //タイトル色
M5.Lcd.println("LASER TX"); //タイトル表示
M5.Lcd.setTextColor(CYAN); //送信色
}
void loop() {
//PCから文字列を受信し、レーザーでatomS3に送信する
if (Serial.available()) {
String str = Serial.readStringUntil('\n');
M5.Lcd.println(str);
Serial2.println(str);
}
//ボタンAを押すとabcdeを送信
if (M5.BtnA.wasPressed()) {
String str = "abcde";
M5.Lcd.println(str);
Serial2.println(str);
}
M5.update();
}
- M5AtomS3
#include <M5Unified.h>
void setup() {
auto cfg = M5.config();
M5.begin(cfg);
//レーザー通信をSerial2で行う
Serial2.begin(9600, SERIAL_8N1, 1, 2); //atomS3用pin
M5.Lcd.setTextSize(2);
M5.Lcd.setTextColor(YELLOW); //タイトル色
M5.Lcd.println("LASER RX"); //タイトル表示
M5.Lcd.setTextColor(GREEN); //受信色
}
//受信のみするループ
void loop() {
if (Serial2.available()) {
String str = Serial2.readStringUntil('\n');
M5.Lcd.print("_");//文頭にアンダーバーを付けた
M5.Lcd.println(str);
}
}
コードの解説
- Serial2にpin番号を設定して通信するだけ。以上。
おわりに
- あっさり動いた。M5Stackの商品は、簡単に動くのが良い。
- 今回一番苦労したのは、動作状況の撮影だったかもしれない。いい感じの位置を決めるのが難しかった。
- そのうち、実用距離がどれくらいなのか実験して報告したい。