激光模块莫尔斯电码通信——双 Arduino 收发实验
组件与材料
| 组件 | 数量 |
|---|---|
| Arduino UNO | 2 |
| 面包板 | 2 |
| 激光发射模块 | 1 |
| 光敏电阻 (LDR) | 1 |
| 10kΩ 电阻 | 1 |
| 杜邦线 | 若干 |
项目简介
利用激光发射端将字符编码为莫尔斯电码(点/划)调制光信号,接收端通过光敏电阻检测光强变化,用极简的“计数点划时长”算法还原字符,并在串口监视器显示。适合理解光通信与编码基础。
发射端(Transmitter)
接线
- 激光模块 VCC → D13,GND → GND
编码算法
- 预设字符串
stringToMorseCode - 点长 200ms,划长 = 3×点长,元素间隔 = 点长,字符间隔 = 3×点长,词间隔 = 7×点长
switch-case映射 a-z 为点划序列,调用MorseDot()/MorseDash()控制激光亮灭
接收端(Receiver)
接线
- LDR 一端接 5V,另端接 A0 并接 10kΩ 下拉电阻到 GND
- LDR 需用黑色纸筒遮光,防环境光干扰
解码算法(核心创新)
- 阈值 1000:光照 >1000 判为“1”(激光亮),否则“0”
- 进入检测循环(14 次采样,每次 200ms),统计“1”计数
a与“0”计数f - 每个字符对应唯一的
(a, f)对,如a: (4,10)、b: (6,8)、e: (1,13)等 - 匹配成功即通过串口打印字符
局限:仅演示部分字符,可扩展映射表覆盖全字母数字。
核心代码
发射端
int led13 = 13, dotLen = 200, dashLen = 600, elemPause = 200, Spaces = 600, wordPause = 1400;
char stringToMorseCode[] = "arduino morse code";
void MorseDot() { digitalWrite(led13, HIGH); delay(dotLen); }
void MorseDash() { digitalWrite(led13, HIGH); delay(dashLen); }
void LightsOff(int t) { digitalWrite(led13, LOW); delay(t); }
void GetChar(char c) {
switch(c) {
case 'a': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
case 'b': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
// ... 其余字母映射省略 ...
default: LightsOff(Spaces);
}
}
void loop() {
for (int i=0; i
接收端
int sensorPin = A0, sensorValue = 0, a = 0, f = 0;
void setup() { Serial.begin(9600); }
void loop() {
sensorValue = analogRead(sensorPin);
if (sensorValue > 1000) {
for (int i=0; i<=13; i++) {
sensorValue = analogRead(sensorPin);
if (sensorValue > 1000) a++; else f++;
delay(200);
}
if (a==4 && f==10) Serial.print("a");
else if (a==6 && f==8) Serial.print("b");
else if (a==8 && f==6) Serial.print("c");
else if (a==1 && f==13) Serial.print("e");
else if (a==2 && f==12) Serial.print("i");
else if (a==10 && f==4) Serial.print("j");
else if (a==7 && f==7) Serial.print("g");
else if (a==9 && f==5) Serial.print("o");
else if (a==3 && f==11) Serial.print("s");
a = f = 0;
}
delay(200);
}
原理图与外观
文中提供发射/接收电路原理图、面包板实物接线图、遮光罩制作照片。
制造工艺