设为首页收藏本站

[应用教程] 【DFRobot SIM808板卡测试报告】之一LM35室温上送...

沧海笑 发表于 2017-2-3 23:40:58 | 显示全部楼层 [复制链接]
2 1264
【时间】2016-12-22~26
【硬件】
1、DFRobot SIM808板卡   1块  (来自DF评测)
2arduino UNO          1
3LM温度传感器       1
4、面包板、杜邦线      若干
pic3.png
【软件】
1Arduino IDE 1.6.12
2github下载并安装DFSIM808的库
3tlink.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
间隔符:字符,
数据:十进制字符
报尾:字符#
QQ图片20161227225443.png
【接线】
1SIM808uno叠装
2LM35接线:面向标识,从左往右:VCC--A4--GND,本例将LM35模拟输出接至模拟口A4
pic2.png
[C++] 纯文本查看 复制代码
/*
### 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 [url=http://www.tlink.io/]http://www.tlink.io/[/url]  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 [url=http://www.tlink.io]www.tlink.io[/url] 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);
   }
  }


程序原型来自例题:### Connect TCP and send GET request.
一、程序的基本情况
1//*********dfsim808的设置
//********温度传感器部分设置
//*********关于连接的管理
//*********setup:登录中移动gprs,获取IP地址
2、在loop中,
1)先读取并且计算室温
2TCP建立连接,t.link.io:8647
3)发送设备SN,具备数据发送条件
4)组装、发送一个室温报文,
5)发送后,释放TCP连接
二、查看物联网的设备监控
1、打开tlink.io,设备监控---LM35传感器
2、可以看到温度曲线的实时和历时数据
pic1.png
【小结】
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评测群的小伙伴们,春节快乐!

QQ图片20161227225312.png
QQ图片20161227225354.png
发表于 2017-2-4 11:49:33 | 显示全部楼层
很用心的测评,赞~
回复 支持 反对

使用道具 举报

发表于 2017-2-7 10:52:02 | 显示全部楼层
膜拜一下

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则 允许回帖同步到新浪微博  

推荐阅读

精华导读




公司简介| 联系我们| 小黑屋| 加入我们| 微博| 优酷| 英文网站| DF创客社区 ( 沪ICP备09038501号-4  
友情链接| 硬创邦| 花生壳社区| 模友之吧| 电子发烧友社区| 创客星球| 云汉电子社区| 电子工程网| 与非网| Arduino中文社区| 南极熊3D打印网| OneNET|

上海智位机器人有限公司  沪ICP备09038501号-4   

Powered by Discuz! X3.1

Licensed Comsenz Inc.

返回顶部 返回列表