/*Note: this code is a demo for how to using gprs shield to send sms message, dial a voice call and
send a http request to the website, upload data to pachube.com by TCP connection, The microcontrollers Digital Pin 7 and hence allow unhindered
communication with GPRS Shield using SoftSerial Library.
IDE: Arduino 1.0 or later
Replace the following items in the code:
1.Phone number, don't forget add the country code
2.Replace the Access Point Name
3. Replace the Pachube API Key with your personal ones assigned
to your account at cosm.com
*/ #include <SoftwareSerial.h>
#include <String.h> SoftwareSerial mySerial(, ); void setup()
{
mySerial.begin(); // the GPRS baud rate
Serial.begin(); // the GPRS baud rate
delay();
} void loop()
{
//after start up the program, you can using terminal to connect the serial of gprs shield,
//if you input 't' in the terminal, the program will execute SendTextMessage(), it will show how to send a sms message,
//if input 'd' in the terminal, it will execute DialVoiceCall(), etc. if (Serial.available())
switch(Serial.read())
{
case 't':
SendTextMessage();
break;
case 'd':
DialVoiceCall();
break;
case 'h':
SubmitHttpRequest();
break;
case 's':
Send2Pachube();
break;
}
if (mySerial.available())
Serial.write(mySerial.read());
} ///SendTextMessage()
///this function is to send a sms message
void SendTextMessage()
{
mySerial.print("AT+CMGF=1\r"); //Because we want to send the SMS in text mode
delay();
mySerial.println("AT + CMGS = \"+8613616761237\"");//send sms message, be careful need to add a country code before the cellphone number
delay();
mySerial.println("A test message!");//the content of the message
delay();
mySerial.println((char));//the ASCII code of the ctrl+z is 26
delay();
mySerial.println();
} ///DialVoiceCall
///this function is to dial a voice call
void DialVoiceCall()
{
mySerial.println("ATD+8613616761237;");//dial the number
delay();
mySerial.println();
} ///SubmitHttpRequest()
///this function is submit a http request
///attention:the time of delay is very important, it must be set enough
void SubmitHttpRequest()
{
mySerial.println("AT+CSQ");
delay(); ShowSerialData();// this code is to show the data from gprs shield, in order to easily see the process of how the gprs shield submit a http request, and the following is for this purpose too. mySerial.println("AT+CGATT?");
delay(); ShowSerialData(); mySerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");//setting the SAPBR, the connection type is using gprs
delay(); ShowSerialData(); mySerial.println("AT+SAPBR=3,1,\"APN\",\"CMNET\"");//setting the APN, the second need you fill in your local apn server
delay(); ShowSerialData(); mySerial.println("AT+SAPBR=1,1");//setting the SAPBR, for detail you can refer to the AT command mamual
delay(); ShowSerialData(); mySerial.println("AT+HTTPINIT"); //init the HTTP request delay();
ShowSerialData(); mySerial.println("AT+HTTPPARA=\"URL\",\"http://122.226.151.4:6543/DHT11data.ashx?c=20.1&h=45.5\"");// setting the httppara, the second parameter is the website you want to access
delay(); ShowSerialData(); mySerial.println("AT+HTTPACTION=0");//submit the request
delay();//the delay is very important, the delay time is base on the return from the website, if the return datas are very large, the time required longer.
//while(!mySerial.available()); ShowSerialData(); mySerial.println("AT+HTTPREAD");// read the data from the website you access
delay(); ShowSerialData(); mySerial.println("");
delay();
} ///send2Pachube()///
///this function is to send the sensor data to the pachube, you can see the new value in the pachube after execute this function///
void Send2Pachube()
{
mySerial.println("AT+CGATT?");
delay(); ShowSerialData(); mySerial.println("AT+CSTT=\"CMNET\"");//start task and setting the APN,
delay(); ShowSerialData(); mySerial.println("AT+CIICR");//bring up wireless connection
delay(); ShowSerialData(); mySerial.println("AT+CIFSR");//get local IP adress
delay(); ShowSerialData(); mySerial.println("AT+CIPSPRT=0");
delay(); ShowSerialData(); mySerial.println("AT+CIPSTART=\"tcp\",\"api.cosm.com\",\"8081\"");//start up the connection
delay(); ShowSerialData(); mySerial.println("AT+CIPSEND");//begin send data to remote server
delay();
ShowSerialData();
String humidity = "";//these 4 line code are imitate the real sensor data, because the demo did't add other sensor, so using 4 string variable to replace.
String moisture = "";//you can replace these four variable to the real sensor data in your project
String temperature = "";//
String barometer = "60.56";//
mySerial.print("{\"method\": \"put\",\"resource\": \"/feeds/42742/\",\"params\"");//here is the feed you apply from pachube
delay();
ShowSerialData();
mySerial.print(": {},\"headers\": {\"X-PachubeApiKey\":");//in here, you should replace your pachubeapikey
delay();
ShowSerialData();
mySerial.print(" \"_cXwr5LE8qW4a296O-cDwOUvfddFer5pGmaRigPsiO0");//pachubeapikey
delay();
ShowSerialData();
mySerial.print("jEB9OjK-W6vej56j9ItaSlIac-hgbQjxExuveD95yc8BttXc");//pachubeapikey
delay();
ShowSerialData();
mySerial.print("Z7_seZqLVjeCOmNbEXUva45t6FL8AxOcuNSsQS\"},\"body\":");
delay();
ShowSerialData();
mySerial.print(" {\"version\": \"1.0.0\",\"datastreams\": ");
delay();
ShowSerialData();
mySerial.println("[{\"id\": \"01\",\"current_value\": \"" + barometer + "\"},");
delay();
ShowSerialData();
mySerial.println("{\"id\": \"02\",\"current_value\": \"" + humidity + "\"},");
delay();
ShowSerialData();
mySerial.println("{\"id\": \"03\",\"current_value\": \"" + moisture + "\"},");
delay();
ShowSerialData();
mySerial.println("{\"id\": \"04\",\"current_value\": \"" + temperature + "\"}]},\"token\": \"lee\"}"); delay();
ShowSerialData(); mySerial.println((char));//sending
delay();//waitting for reply, important! the time is base on the condition of internet
mySerial.println(); ShowSerialData(); mySerial.println("AT+CIPCLOSE");//close the connection
delay();
ShowSerialData();
} void ShowSerialData()
{
while(mySerial.available()!=)
Serial.write(mySerial.read());
}
#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(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()
{
pinMode(, OUTPUT);
digitalWrite(,LOW);
delay();
digitalWrite(,HIGH);
delay();
digitalWrite(,LOW);
delay();
}

发送:AT+COLP=1,设置被叫号码显示

参考:
http://www.51hei.com/bbs/dpj-30516-1.html
http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0

SIM900 AT来电显示开启,一些代码的更多相关文章

  1. [android] 手机卫士来电显示号码归属地

    继续N天前的项目 开启服务监听手机来电,查询数据库,显示归属地 详细内容可以参考这篇博文:http://www.cnblogs.com/taoshihan/p/5331232.html Address ...

  2. gvim如何显示html属性代码提示? vim 如何显示 javascript属性及方法提示?

    gvim如何显示html属性代码 可以在vim中 显示 html, css, js等的属性/方法 提示: 一是: 在 ~/.vim/after/syntax/ 目录中 安装 css-color.vim ...

  3. C# WinForm中 让控件全屏显示的实现代码

    夏荣全 ( lyout(at)163.com )原文 C#中让控件全屏显示的实现代码(WinForm) 有时候需要让窗口中某一块的内容全屏显示,比如视频播放.地图等等.经过摸索,暂时发现两种可行方法, ...

  4. 关于Hexo,Next主题的‘下一页’、‘上一页’按钮错误显示为html代码 的解决方法

    关于Next主题的'下一页'.'上一页'按钮错误显示为html代码的解决方法 我在建立自己的博客过程中遇到了页面'下一页'和'上一页'按钮显示为html代码<i class="fa f ...

  5. 【OpenCV练习】简单显示图片的代码

    今天依照网上的教程尝试了一下最基本的图片显示. 首先想说一下编译时出现的问题,开始时在编译时会出现无法识别cvReleaseImage的情况,是因为没有在配置中包含相应的core的库文件. 加进去就解 ...

  6. 点击自动显示/隐藏DIV代码。(简单实用)

    注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 很多时候我们需要将DIV的信息默认为隐藏状态,只有当用户点击时才显示DIV中包含的提示文字.这类效果在互联网上应用得很多,但实现的方 ...

  7. 在word中显示漂亮的代码

    在word中粘贴或写代码时,通常得不到想要的格式,可用‘Notepad++’工具实现. 步骤: (1)安装Notepad++软件,把代码粘贴进去,选择菜单栏中的语言,然后选择相应代码语言,如P-> ...

  8. 单色VGA显示verilogHDL通用代码

    今天做VGA,真是拼凑了好久啊.唉,总算完成了. 本来想偷懒移植,最后还是自己写的代码. //2015/12/13 //designer : pengxiaoen //function : vga c ...

  9. vs 2010调用matlab dll显示窗口核心代码

    matlab代码: figure('NumberTitle','off','menubar','none','toolbar','none','name','Topo Image'); x=0:pi/ ...

随机推荐

  1. 机器学习入门-贝叶斯统计语料库的词频.groupby() collections

    1..groupby()[].agg(by={}) 2. collections.de...(lambda:1) 统计的单词是语料库中所有的词, 对Dataframe统计单词词频,同时增加一列数据co ...

  2. Inspector视图中的get/set使用

    using UnityEngine; using System.Collections; public class Test : MonoBehaviour { public int width { ...

  3. C#整合VS2010和NUnit

    软件下载 .Net单元测试工具 NUnit下载:http://www.nunit.org/index.php?p=download,最新的为NUnit-2.6.0.12051.msi,下载安装. VS ...

  4. dom node 查找父级parentNode

    var o = document.querySelectorAll("a[href='baidu.com']"); var p = o[o.length-1];console.lo ...

  5. HTTP Error 500.0 - Internal Server Error错误代码0x80070002

    案例研究:AspNetInitClrHostFailureModule中的“HTTP错误500.0 - 内部服务器错误” 症状 当用户访问在Windows Server 2008 R2计算机上运行的A ...

  6. LuoguP1226 【模板】快速幂||取余运算

    题目链接:https://www.luogu.org/problemnew/show/P1226 第一次学快速幂,将别人对快速幂原理的解释简要概括一下: 计算a^b时,直接乘的话计算次数为b,而快速幂 ...

  7. Python3 filter() 函数

    Python3 filter() 函数  Python3 内置函数 描述 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转 ...

  8. Codeforces Round #533 (Div. 2)

    C: 题意: 有n个整数ai,数列a有两个神奇的性质.1.所有的整数都在[l,r]范围内.2.这n个数的和能被3整除.现在给出l和r,和个数n,问你有多少种方法构造出数列a,方案数mod1e9+7. ...

  9. Java Tomcat下载、安装和环境变量配置

    win10下Tomcat的下载.安装和环境变量的配置 -----made by siwuxie095                             1.首先到Tomcat官网,传送阵:点击开 ...

  10. python之多并发socket

    先看socket多并发的服务端的代码,这里是用多线程实现的多并发socketserver import socketserver # socketserver有四个基本的类,后两个不常用,这4个类处理 ...