VFD 短信留言板-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4547|回复: 8

VFD 短信留言板

[复制链接]
发表于 2017-2-21 02:21 | 显示全部楼层 |阅读模式
前言
经常看到路边各种 LED 公告牌,想着在家里挂一个做留言板不错,给老爸老妈提示几点到家吃饭,想吃啥菜好像很不错。
led.jpg
这不 Luna 姐姐送的 sim 模块好像用得上,找到一个 VFD 屏显示看着蛮好看,就是只能显示英文……是不是要老爸老妈先学学英语再说

正文
也没啥要说的,连接模块,然后这个屏是串口屏,用的 RS232 接口,找到 232 芯片定位到 TTL 串口输入,就可以直接用 Arduino 对话啦。
注意:用 UNO 会由于空间/内存太小导致不能正常工作,这也是折腾到这么晚的原因……换 2560 就正常了!

接线图:
connect.jpg
工作照:
small.JPG
视频:


代码
完整下载:
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]


发表于 2017-2-21 08:27 | 显示全部楼层
不错唉,挺有意思的
发表于 2017-2-21 08:56 | 显示全部楼层
不错不错                    
发表于 2017-2-21 12:06 | 显示全部楼层
这个很有趣耶~~提示爸爸妈妈吃饭啊,还可以提示爷爷奶奶吃药、晒太阳、散步之类的~~
 楼主| 发表于 2017-2-21 19:52 来自手机 | 显示全部楼层
Zoologist 发表于 2017-2-21 08:27
不错唉,挺有意思的

谢谢支持
 楼主| 发表于 2017-2-21 19:53 来自手机 | 显示全部楼层
jackten 发表于 2017-2-21 08:56
不错不错

谢谢支持
 楼主| 发表于 2017-2-21 19:53 来自手机 | 显示全部楼层
O_oYYQ 发表于 2017-2-21 09:32
顶一个~~

 楼主| 发表于 2017-2-21 19:54 来自手机 | 显示全部楼层
dfrobot 发表于 2017-2-21 12:06
这个很有趣耶~~提示爸爸妈妈吃饭啊,还可以提示爷爷奶奶吃药、晒太阳、散步之类的~~ ...

呃,是提示给我做好饭
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 01:08 , Processed in 0.089718 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表