arduino uno r3 + SIM900 + USB打火机 实现电话触发点火
需求来源
1.儿子过完年6岁,喜欢玩烟花,但是胆子小,于是我就负责点火,从年前26到大年初八,每天晚上要给儿子点鞭炮啊点鞭炮。
2.这边过年要打关门炮跟开门炮,大年初一凌晨还要起来帮老妈点鞭炮,说实在的那个整串的小鞭炮也炸的太快了,每次没跑几步就开响,哥也心脏不好啊。
设计:
根据需求,我们需要个远程点火的打火机,上taobao上逛了一圈,找到了usb打火机,续电器,外加一张SIM900 arduino扩展板,回来简单的一连,就了了了。
代码:
#include <SoftwareSerial.h>
#include <String.h> SoftwareSerial GPRS(, );
String currentLine = ""; // string to hold the text from server
String triggerNo="";
String mobile = "";
boolean readingNo=false;
long lastTriggerTime=;
boolean fireing=false;
int led=;
void setup()
{
GPRS.begin(); // the GPRS baud rate
Serial.begin(); // the GPRS baud rate
pinMode(, OUTPUT);
pinMode(led,OUTPUT);
digitalWrite(led,LOW);
delay();
powerUpOrDown();
}
void loop()
{
if(fireing){
if( millis() - lastTriggerTime >= * ){
Serial.println("stop fire!");
digitalWrite(led,LOW);
fireing=false;
}else{
return;
}
} while(GPRS.available()){
char inChar=GPRS.read();
currentLine +=inChar; if(inChar=='\n')currentLine=""; if(currentLine.endsWith( "+CLIP: \"")){
readingNo=true;
mobile="";
} if(readingNo){ if(inChar !=','){
if(inChar !='"')mobile+=inChar;
}else{
readingNo=false;
Serial.println(mobile);
if(mobile==triggerNo){
lastTriggerTime=millis();
Serial.println("fire!!");
fireing=true; currentLine="";
mobile="";
delay();
digitalWrite(led,HIGH);
delay(); GPRS.println("ATH");
while(GPRS.available()){
GPRS.read();
} } }
}
}
} void powerUpOrDown()
{ digitalWrite(,LOW);
delay();
digitalWrite(,HIGH);
delay();
digitalWrite(,LOW);
delay();
}
效果图(分待机状态跟触发状态):


#include <SoftwareSerial.h>
#include <String.h> SoftwareSerial GPRS(, );
String currentLine = ""; // string to hold the text from server
String triggerNo="";
String mobile = "";
boolean readingNo=false;
long lastTriggerTime=;
boolean fireing=false;
int led=;
long lastReadTime=;
void setup()
{
GPRS.begin(); // the GPRS baud rate
Serial.begin(); // the GPRS baud rate
pinMode(, OUTPUT);
pinMode(led,OUTPUT);
digitalWrite(led,LOW);
delay(); }
void loop()
{
if(fireing){
if( millis() - lastTriggerTime >= * ){
Serial.println("stop fire!");
digitalWrite(led,LOW);
fireing=false;
}else{
return;
}
} while(GPRS.available()){
lastReadTime=millis(); char inChar=GPRS.read();
currentLine +=inChar; if(inChar=='\n')currentLine=""; if(currentLine.endsWith( "+CLIP: \"")){
readingNo=true;
mobile="";
} if(readingNo){ if(inChar !=','){
if(inChar !='"')mobile+=inChar;
}else{
readingNo=false;
Serial.println(mobile);
if(mobile==triggerNo){
lastTriggerTime=millis();
Serial.println("fire!!");
fireing=true; currentLine="";
mobile="";
delay();
digitalWrite(led,HIGH);
delay(); GPRS.println("ATH");
while(GPRS.available()){
GPRS.read();
} } }
}
} if(millis()- lastReadTime >= * )
{
tryPowerUp();
}
}
void tryPowerUp(){
GPRS.println("AT");
delay();
if(GPRS.available())return; powerUpOrDown();
}
void powerUpOrDown()
{ digitalWrite(,LOW);
delay();
digitalWrite(,HIGH);
delay();
digitalWrite(,LOW);
delay();
}
arduino uno r3 + SIM900 + USB打火机 实现电话触发点火的更多相关文章
- Arduino UNO R3
Arduino 常见型号 当然还有 LilyPad,附图: 最常见的自然是UNO,最新版是第三版R3: 国内也有一些改进的板子.我用的是一般的板子,拿到货也只能默默了. 简介 The Uno is a ...
- Arduino uno R3 ISP刷Rootloader for arduino pro mini
找了好久才发现的,好东西.介绍怎么使用uno对mini 刷Rootloader **SOLUTION** Reinstall the Arduino Pro Mini Bootloader using ...
- [Arduino] Arduino Uno R3 中文介绍
Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板.UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出 ...
- Arduino uno r3 使用 ESP8266 UART-WiFi 透传模块
一.所需硬件材料 1.ESP8266:01s某宝上3.5块钱 2.杜邦线:某宝几块钱一组40P,这里只需要三根,用于连接 树莓派与继电器 3.烧录器 二.ESP8266 AT固件烧录 ESP8266主 ...
- 基于arduino UNO R3+ESP8266控制LED灯的开关(无USB转TTL工具实现)
最近由于项目要求,需要开发物联网云平台,而本人对硬件和通信技术一窍不通,故而选择arduino这一简单单片机来实现学习掌握基础的硬件和通信技术. 下面就是本人通过查阅大佬资料做的一个整合版本的通过手机 ...
- Ubuntu16.04 Arduino UNO R3开发板
使用的是国内改过的版本, usb芯片换成了ch341, 晶振不是原版的16MHz而是12MHz, 杜邦线孔布局和原版一致. 设备连接 在Ubuntu16.04下不需要驱动, 能直接认出ch341设备 ...
- 订购一套Arduino UNO r3入门套件
若需要arduino套件经济版请点击以下链接跳转: http://item.taobao.com/item.htm?id=36759198826 这就开始了吗?希望有所收获吧-!
- Arduino入门套件 Arduino UNO R3
限时大抢购:原价5.6元超声波模块HC-SR04,现只需3元,亏本大甩卖,只赚人气,如需购买的客户请直接拍下以下链接3件=3元购买,备注超声波模块即可,每个客户ID每天仅限购一个.http://det ...
- arduino uno r3的数据类型
char 一个字节,存储一个字符值.字符文字用单引号写成:'A' unsigned char 无符号,一个字节 byte 一个字节,无符号数, int 2字节,这产生-32768至32767的范围. ...
随机推荐
- onMouseDown和onPress的差异AS2
為了要做出比Button物件更複雜的互動,我們通常會改用MovieClip來製作按鈕.如此一來,就需要處理event handler.與滑鼠有關的MovieClip event handler包括on ...
- mongodb基础学习1-基本说明及安装
以前看过一些mongodb的视频,但只看到一半没有看完,也没有同步安装软件动手操作,正好最近没事,打算花点时间从头学习一遍,边学习边动手操作,学习的过程在此进行记录. 好了,下面说一下今天的学习内容. ...
- TCP/IP知识总结(TCP/IP协议族读书笔记四)
参考:http://blog.chinaunix.net/uid-26275986-id-4109679.html 继续!TCP的流量控制和拥塞控制. TCP相对UDP可靠的地方在于它的拥塞控制.流量 ...
- ADO接口简介
源地址:http://blog.csdn.net/xiaobai1593/article/details/7449151 参考: 1. 百度文库:http://wenku.baidu.com/view ...
- 利用 setInterval 确定用户的动作是否停止
最近遇到一个问题,对于某一个持续的动作,希望能够知晓用户何时停止这个动作, 比如说 我们通过注册onresize事件,去监听浏览器窗口变化的事件,在这个事件里面,我们可能要执行大量的计算去确定窗口变化 ...
- MySQL 语句的规范
- luoguP3366 [模板] 最小生成树
题目链接:https://www.luogu.org/problemnew/show/P3366 思路: 求最小生成树的模板题,求MST有两种算法——Prim.Kruskal. 两者区别:Prim在稠 ...
- 两数之和-数据结构设计 · Two Sum - Data structure design
[抄题]: 设计b并实现一个 TwoSum 类.他需要支持以下操作:add 和 find.add -把这个数添加到内部的数据结构.find -是否存在任意一对数字之和等于这个值 [思维问题]: 不知道 ...
- Tortoise SVN 使用笔记
最近一个项目,团队使用的是SVN来控制版本,所以顺便学习下SVN的知识.在Windows上,肯定是用图形化客户端Tortoise SVN在加速我们的工作. 首先,在一个准备用在工作目录的文件夹下,点击 ...
- C#中int? 转换为 int 型
用 “ var a= zongfen.Score;”