|
前言
经常看到路边各种 LED 公告牌,想着在家里挂一个做留言板不错,给老爸老妈提示几点到家吃饭,想吃啥菜好像很不错。
这不 Luna 姐姐送的 sim 模块好像用得上,找到一个 VFD 屏显示看着蛮好看,就是只能显示英文……是不是要老爸老妈先学学英语再说
正文
也没啥要说的,连接模块,然后这个屏是串口屏,用的 RS232 接口,找到 232 芯片定位到 TTL 串口输入,就可以直接用 Arduino 对话啦。
注意:用 UNO 会由于空间/内存太小导致不能正常工作,这也是折腾到这么晚的原因……换 2560 就正常了!
接线图:
工作照:
视频:
代码
完整下载:
showMsg.zip
(2.11 KB, 下载次数: 0)
展示片段:
[kenrobot_code]// ----------------------------------------------------------------------------
// showMsg.ino
//
// Created 2017-02-20
// By seesea <seesea2517#gmail#com>
//
// VFD 留言板 Demo
// ----------------------------------------------------------------------------
#include <DFRobot_sim808.h>
#include "WD202.h"
#define SIM808_POWER_PIN 12
#define LED 13
#define SMS_BUF_LENGTH 100
#define DATATIME_LENGTH 21
#define PHONE_NUM_LENGTH 11
SoftwareSerial softSerial(10, 11);
WD202 vfd;
DFRobot_SIM808 sim808(&Serial);
char smsBuf[SMS_BUF_LENGTH + 1];
char phoneNumBuf[PHONE_NUM_LENGTH + 1];
char datetime[DATATIME_LENGTH + 1];
char msgBuf[SMS_BUF_LENGTH + PHONE_NUM_LENGTH + 1 + 7]; // 加 7 是需要额外添加 "From: " 及 "\n" 字符
void simPowerUp(uint8_t pin)
{
digitalWrite(pin, LOW);
delay(100);
digitalWrite(pin, HIGH);
delay(1500);
digitalWrite(pin, LOW);
}
void initSim808()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
pinMode(SIM808_POWER_PIN, OUTPUT);
if (!sim808.checkPowerUp())
simPowerUp(SIM808_POWER_PIN);
while(!sim808.init())
{
Serial.println("Sim808 init error");
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
}
Serial.println("Sim808 init success");
digitalWrite(LED, HIGH);
}
bool checkAndGetNewSMSPeriodically(unsigned int checkInterval = 1000)
{
static unsigned long lastTick = 0;
int smsIndex;
if (millis() - lastTick < checkInterval)
return false;
lastTick = millis();
smsIndex = sim808.isSMSunread();
if (smsIndex <= 0)
return false;
if (!sim808.readSMS(smsIndex, smsBuf, SMS_BUF_LENGTH, phoneNumBuf, datetime))
return false;
return true;
}
void setup()
{
Serial.begin(9600);
softSerial.begin(9600);
initSim808();
vfd.init(&softSerial);
vfd.clear();
vfd.setOverwritelMode();
}
void loop()
{
if (checkAndGetNewSMSPeriodically())
{
// 保护隐私
phoneNumBuf[3] = '*';
phoneNumBuf[4] = '*';
phoneNumBuf[5] = '*';
phoneNumBuf[6] = '*';
sprintf(msgBuf, "From: %s\n%s", phoneNumBuf, smsBuf);
vfd.setMsg(msgBuf);
}
vfd.showMsg();
}
[/kenrobot_code]
|
|