10323| 3
|
[进阶] 【DFRobot SIM808板卡测试报告】之一LM35室温上送... |
【时间】2016-12-22~26 【硬件】 1、DFRobot SIM808板卡 1块 (来自DF评测) 2、arduino UNO 1块 3、LM温度传感器 1只 4、面包板、杜邦线 若干 【软件】 1、Arduino IDE 1.6.12 2、github下载并安装DFSIM808的库 3、tlink.io 我一直在使用的物联网平台 (1)首先注册一个用户名、密码 (2)建立一个设备,然后添加传感器,如我建立了一个LM35室温传感器,注意记录该设备的设备序列号(十六位字符),这是唯一的标识,系统生成,请保存好,勿轻易示人。 (3)对该传感器,设置规约,我选择了TCP,还有MQTT等(后续写) (4)下面重点谈谈规约设置:(http://www.tlink.io/device/devices/device-index/1317/tcp.htm#) 报文格式可以在tlink.io上定义,我的定义是#RTU,**.**# 协议标签: [H:#RTU] [S:,] [D?] [T:#] 报头:字符#RTU 间隔符:字符, 数据:十进制字符 报尾:字符# 【接线】 1、SIM808与uno叠装 2、LM35接线:面向标识,从左往右:VCC--A4--GND,本例将LM35模拟输出接至模拟口A4 [mw_shl_code=cpp,true]/* ### Connect TCP and send GET request. 1. This example is used to test DFRobot_SIM808 GPS/GPRS/GSM Shield's connect TCP and send GET request. 2. Open the SIM808_TCPConnection example or copy these code to your project 3. Download and dial the function switch to Arduino 4. Open serial helper 5. Waiting for a few minutes, until serial has sent "Connect mbed.org success" 6. Serial will send "Hello world!" create on 2016/09/23, version: 1.0 by jason *****利用gprs,TCP协议向tlink.io发送温度数据 *date: 2016-12-25 利用TCP协议,上传温度数据至tlink.io http://www.tlink.io/ 8647端口 设备:ID:7615 序列号:O****************34//(代换您自己的设备序列号) by 沧海笑1122 */ //*********dfsim808的设置 #include <DFRobot_sim808.h> DFRobot_SIM808 sim808(&Serial); //*************温度传感器部分设置 int potPin = 4; //设置模拟口4为LM35的信号输入端口 float temperature = 0; //设置temperature为浮点变量 long val=0; //设置val为长整数变量 //*********关于连接的管理 unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds const unsigned long postingInterval = 10*2000; // delay between 2 datapoints, 20s int sendnum=1; //发送次数 int sendsum=10;//发送总次数,10次 //Declare pin 12 as a power control pin for DFSIM808 int pinPowerKey = 12; //可以写一个打开SIM808电源的函数,D12 void setup(){ Serial.begin(9600); //******** Initialize sim808 module ************* while(!sim808.init()) { delay(1000); Serial.print("Sim808 init error\r\n"); } delay(3000); //*********** Attempt DHCP ******************* while(!sim808.join(F("cmnet"))) { //登录中移动网络gprs Serial.println("Sim808 join network error"); delay(2000); } //************ Successful DHCP ****************获取IP Serial.print("IP Address is "); Serial.println(sim808.getIPAddress()); } void loop(){ val=analogRead(potPin);//温度传感器LM35接到模拟PIN4上;val变量为从LM35信号口读取到的数值 delay(200); if((millis() - lastConnectionTime > postingInterval)) { //达到发送间隔时间,则发送 temperature = (val*0.0048828125*100);//温度转换,系数基于5V--1024的比例关系,详见极客工坊温度传感器笔记,未标定 sendData(temperature); } } // this method makes a TCP connection to the server: void sendData(float thisData) { // if there's a successful connection: //*********** Establish a TCP connection ************建立TCP连接 if(!sim808.connect(TCP,"t.tlink.io",8647)) { Serial.println("Connect error"); sim808.close();// 释放TCP }else{ Serial.println("Connect www.tlink.io success"); //*********** Send a GET request ***************** delay(2000); String cmd = "#RTU,";//报文头,具体在tlink中定义 char s_temp[5]; dtostrf(thisData,2,2,s_temp);//把温度值转换为两位整数,两位小数的字符串 cmd+= s_temp; cmd+="#";//结束符,具体在tlink中定义 char tcpcmd[12]; cmd.toCharArray(tcpcmd,12); //Copies the string's characters to the supplied buffer. //测试语句,运行时可以去除 Serial.print("TCP CMD------------"); Serial.print(cmd); Serial.print(tcpcmd); Serial.println("waiting to fetch..."); sim808.send(O****************34//(代换您自己的设备序列号), sizeof(O****************34//(代换您自己的设备序列号)-1); //发送设备的ID号,即建 立与该设备的对应,下面的数据即发送至该设备 sim808.send( tcpcmd, sizeof(tcpcmd)-1); //发送第一次温度数据 lastConnectionTime = millis(); delay(2000); //************* Close TCP or UDP connections **********一个短连接结束 sim808.close();// 释放TCP delay(1000); } }[/mw_shl_code] 程序原型来自例题:### Connect TCP and send GET request. 一、程序的基本情况 1、//*********dfsim808的设置 //********温度传感器部分设置 //*********关于连接的管理 //*********setup:登录中移动gprs,获取IP地址 2、在loop中, (1)先读取并且计算室温 (2)TCP建立连接,t.link.io:8647 (3)发送设备SN,具备数据发送条件 (4)组装、发送一个室温报文, (5)发送后,释放TCP连接 二、查看物联网的设备监控 1、打开tlink.io,设备监控---LM35传感器 2、可以看到温度曲线的实时和历时数据 【小结】 df出品的sim808模块,集GPS,GSM,SPRS于一身。我已经测试了GPS,GSM功能,本帖也算是开箱贴,也算是对LM35传感器,通过SIM808 GPRS,以TCP向物联网平台上送数据。也是我欠了TLINK.IO的一个帖子。以前用8266实现过,现在用SIM808,非常方面,运行稳定,是2G网络连接。SIM808对电源有要求,尤其是GSM峰值电流高,所以WIKI中,解释了为什么对外部供电而不是USB供电,且电压有要求。 可以尝试锂电池+升压模块,或者干脆两只3.7V的18650也很好。 后续会写GPS+TCP上送物联网 GPS+GSM,发送位置短信等。 【感谢】 这是参加dfrobot评测sim808通信板的评测报告之一,原发arduino.cn。 感谢dfrobot提供测试机会,与DF有缘,我的第一篇入门测试,就是2012年对DF的语音识别模块的评测,我也一直珍藏。 感谢孝肃兄,棒棒的组织能力。 感谢arduino.cn以及DF sim808评测群的小伙伴们,春节快乐! |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed