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


    需求来源

    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);
    }

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

    #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
  • 相关阅读:
    聊天工具分享bug
    Git命令查看代码提交次数
    短链接生成实例
    .Net MVC用户注册验证码
    js写验证码
    笔记
    jq获取数组中的某个字段拆分成字符串。
    IIS部署后中文Cookie乱码
    C#反射(Reflection)与特性(Attribute)实例
    jmm
  • 原文地址:https://www.cnblogs.com/wdfrog/p/4350940.html
Copyright © 2020-2023  润新知