LoginSignup
1
0

レーザー通信してみた話

Last updated at Posted at 2024-03-23

電波より盗聴されにくいのかな?

はじめに

  • M5StickCPlus2を買ってから、パーツ欲がとまらず、Laserモノも購入した。
    送信機(laser.tx)受信機(laser.rx)
  • 購入したからには当然動かすしかない。

実際の動作状況

・M5StickCPlus2からM5AtomS3にレーザーを飛ばしている。
・macのシリアルモニタで「sdf」を入力して、M5AtomS3に表示させた。
GIF_20240323_230957_023.gif

コード(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の商品は、簡単に動くのが良い。
  • 今回一番苦労したのは、動作状況の撮影だったかもしれない。いい感じの位置を決めるのが難しかった。
  • そのうち、実用距離がどれくらいなのか実験して報告したい。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0