arduino uno r3 + SIM900 + USB打火机 实现电话触发点火

摘要:
//GPRSbaudrateSerial.begin(19200);输出);低);低);fireing=真;GPRS.println(“ATH”);软件序列号h>longlastTriggerTime=0;longlastReadTime=0;延迟(500);=12*1000){Serial.println(“stopfire;

需求来源

1.儿子过完年6岁,喜欢玩烟花,但是胆子小,于是我就负责点火,从年前26到大年初八,每天晚上要给儿子点鞭炮啊点鞭炮。

2.这边过年要打关门炮跟开门炮,大年初一凌晨还要起来帮老妈点鞭炮,说实在的那个整串的小鞭炮也炸的太快了,每次没跑几步就开响,哥也心脏不好啊。

设计:

根据需求,我们需要个远程点火的打火机,上taobao上逛了一圈,找到了usb打火机,续电器,外加一张SIM900 arduino扩展板,回来简单的一连,就了了了。

 代码:

#include <SoftwareSerial.h>
#include <String.h>
 
SoftwareSerial GPRS(7, 8);
String currentLine = ""; // string to hold the text from server
String triggerNo="13616761237";
String mobile = "";  
boolean readingNo=false;
long lastTriggerTime=0;
boolean fireing=false;
int led=4;
void setup()
{
  GPRS.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);    // the GPRS baud rate 
   pinMode(9, OUTPUT); 
  pinMode(led,OUTPUT);
  digitalWrite(led,LOW);
  delay(500);
  powerUpOrDown();
}
void loop()
{
  if(fireing){
    if(  millis() - lastTriggerTime >= 12 * 1000){
     Serial.println("stop fire!"); 
     digitalWrite(led,LOW);
    fireing=false;
    }else{
     return; 
    }
  }
  
  
  while(GPRS.available()){
     char inChar=GPRS.read();
     currentLine +=inChar;
   
     if(inChar=='
')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(1000);
           digitalWrite(led,HIGH);
           delay(4000);
           
           GPRS.println("ATH");
           while(GPRS.available()){
             GPRS.read(); 
           }
           
         }
         
       }
     }
  } 
}

void powerUpOrDown()
{
 
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(2000);
  digitalWrite(9,LOW);
  delay(3000);
}

效果图(分待机状态跟触发状态):

arduino uno r3 + SIM900 + USB打火机 实现电话触发点火第1张

arduino uno r3 + SIM900 + USB打火机 实现电话触发点火第2张

arduino uno r3 + SIM900 + USB打火机 实现电话触发点火第3张arduino uno r3 + SIM900 + USB打火机 实现电话触发点火第4张
#include <SoftwareSerial.h>
#include <String.h>
 
SoftwareSerial GPRS(7, 8);
String currentLine = ""; // string to hold the text from server
String triggerNo="13616761237";
String mobile = "";  
boolean readingNo=false;
long lastTriggerTime=0;
boolean fireing=false;
int led=4;
long lastReadTime=0;
void setup()
{
  GPRS.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);    // the GPRS baud rate 
   pinMode(9, OUTPUT); 
  pinMode(led,OUTPUT);
  digitalWrite(led,LOW);
  delay(500);

}
void loop()
{
  if(fireing){
    if(  millis() - lastTriggerTime >= 12 * 1000){
     Serial.println("stop fire!"); 
     digitalWrite(led,LOW);
    fireing=false;
    }else{
     return; 
    }
  }
  
  
  while(GPRS.available()){
     lastReadTime=millis();
     
     char inChar=GPRS.read();
     currentLine +=inChar;
   
     if(inChar=='
')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(1000);
           digitalWrite(led,HIGH);
           delay(4000);
           
           GPRS.println("ATH");
           while(GPRS.available()){
             GPRS.read(); 
           }
           
         }
         
       }
     }
  }
 
  if(millis()- lastReadTime >= 1000 * 30)
  {
    tryPowerUp();
  } 
}
void tryPowerUp(){
  GPRS.println("AT");
  delay(500);
  if(GPRS.available())return;
  
   powerUpOrDown();
}
void powerUpOrDown()
{
 
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(1000);
  digitalWrite(9,LOW);
  delay(5000);
}
View Code

免责声明:文章转载自《arduino uno r3 + SIM900 + USB打火机 实现电话触发点火》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇常见插值算法--拉格朗日插值、三次卷积插值、三次样条插值、兰克索斯插值Win32汇编--数据结构下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PHP中0、空、null和false的总结

<?php $test=0; if($test==''){ echo '<br />在php中,0即为空'; //被输出 } if($test===''){ echo '<br />在php中,0即为空'; //不被输出 } if($test==NULL){ echo '<br />在php中,0即为空';...

three车辆自由转弯(vue 极品飞车)

//最近没有时间整理代码,就这样吧 <template> <div> <div id="map"></div> </div> </template> <script> // import * as Three from '../../node_modules/three/b...

vue3.0用vue-awesome-swiper

使用新版vue-awesome-swiper出现了一些bug vue-awesome-swiper组件pagination小圆点不显示问题 不会自动播放 swiper没有css 参考如下配置 基本使用方法 1.安装 cnpm install vue-awesome-swiper --save 2.引用 /*全局引入*/ import VueAwes...

C# winform 多线程异步操作线程启动暂停与恢复

/// <summary> /// 线程控制模块 /// </summary> private ManualResetEvent manualResetEvent = new ManualResetEvent(false); /// <su...

C# 指定程序打开指定文件

Process process = new Process(); process.StartInfo.FileName = 指定程序exe文件路径; process.StartInfo.Arguments = 指定文件路径; process.StartInfo....

WP8点击桌面图标快速恢复应用

如何实现在WindowsPhone8 应用程序中 点击了 Windows logo 后 重新在应用程序列表中单击该程序图标 快速启动应用程序 示例代码 下载 1. 在App.cs 文件中修改添加一下代码 #region 电话应用程序初始化 // 避免双重初始化 private bool phoneApplicatio...