开源第五周
一。SIM900模块调试:
SIM900模块返回值是一个得注意的问题。现在说说该怎么去调试SIM900模块的指令吧。而SIM900的必须要使用AT指令,如果用cp2102工具直接连接模块可以直接通过串口输入AT指令给模块,可以直接读取AT指令的模块返回值,你也可以用arduino控制器烧空来接直接发送指令。但是,因为上传数据必须是建立一个节点发送数据,所以arduino控制器一定会烧入程序,所以SIM900模块必须要配合节点来发送数据。
连线Tx-TX, RX---RX, VCC ----VCC, GND -- GND.
因为SIM900的AT指令的返回值在arduino的缓存区间内,所以要用一个程序来读取缓存空间的返回值,在将缓存空间读取的值再进行输出。还得注意,sim900的tx和rx最好使用硬串口连接,可以减少误差,当然还得注意在拷写程序时避免串口占用的问题。可以像这样读取缓存空间的数据。
void read(){
while(Serial.available()>0){
temp +=(char) Serial.read();
}
// Serial.println("String:");
Serial.println(temp);
}
这样子,就可以读到模块返回的指示了,可以很方便的调试发送的程序了。
下面是我一段测试的 GPRS发送数据的程序,测试成功。这个网址可以粘贴自己服务器的网址,或者你做测试的主机的IP。(如果没有公网IP可以参考将本地电脑通过nat映射到公网,来测试数据的发送。)发送数据的方式可以是TCP/UDP或者使用网址透析。
String str1 = "it's test";
String temp = "";
void setup(){
delay(5000);
Serial.begin(115200);
delay(2000);
GPRS_TCP_INIT();
}
void loop(){
GPRS_SEND();
delay(5000);
}
/* 模块联网初始化 */
void GPRS_TCP_INIT(){
Serial.print("AT+CGCLASS=\"B\"\r\n"); //设置移动终端的类别为 B 类
delay(1000);
Serial.print("AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n"); //命令设置 GPRS 接入网关为移动梦网
delay(1000);
Serial.print("AT+CGATT=1\r\n"); //1 命令激活 GPRS 功能
delay(1000);
Serial.print("AT+CIPCSGP=1,\"CMNET\"\r\n");
delay(1000);
clean_buff();
Serial.print("AT+CIPSTART=\"TCP\",\"www.baidu.com\",\"80\"\r\n");
delay(5000);
if(true == Serial.find("OK"))
{
delay(1000);
if(Serial.find("CONNECT OK") == true)
Serial.println("connect ok!"); //初始化成功
else
Serial.print("IP connect fail!");
}
else if( false == Serial.find("OK"))
Serial.println("connect fail");
else
Serial.println("it's error!");
clean_buff();
}
void GPRS_SEND(){
clean_buff();
delay(1000);
Serial.print("AT+CIPSEND\r\n"); //打开网络连接
delay(5000);
if( true == Serial.find(">"))
{
Serial.println(str1);
delay(500);
Serial.write(0x1A);
delay(2000);
read();
delay(200);
Serial.println("send ok!!!");
clean_buff();
}
else
Serial.println("send error");
}
void clean_buff(){
while(Serial.available() > 0)
{
char i = (char)Serial.read();
}
}
/*读取缓存区间的返回值*/
void read(){
while(Serial.available()>0){
temp +=(char) Serial.read();
}
// Serial.println("String:");
Serial.println(temp);
}
这里是测试的样子:
二、数据传输测试:
前面几周我们已经做好了采集终端,并能够将数据初步进行使用了,除了个别的传感器数值精度有些差异,其余数据基本上能够作为正常参考量。所以暂时使用乐联平台软件测试一下数据并做出展示,后期在打算使用无线或者其他方式上传到乐联。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
实验项目:将传感器搜集数据上传到乐联网
实验目的:通过乐为物联串口数据上传工具将终端收集到的环境数据上传到乐联网,并通过微信查询需要的数据
第一步:注册账号
首先在乐联网官网注册一个账号,在注册之后进入用户中心,我的账户,设置个人信息一栏可以看到第二行有一个userkey,复制下来,等会会用到。
第二步:添加设备
通过点击“我的设备”选择编辑已有的默认设备或者选择"添加新设备",如下图,填写相关信息后,点击保存就可以了。
相关参数解释如下:
API地址不出意外的话是不用改的;
网关号与乐联网后台保持一致
串口号选择你Arduino的串口(一般默认是正确的、如果不正确请在设备管理器中查看);
Userkey在乐联网后台可以看到自己的(我的账户-> 设置个人信息)
接下来开始说自动标识。自动标识可填可不填,填上简单点,不填麻烦点
(1)先来说填上的(简单的)我的设备标识都是以t开头,后面是连续的数字。这样的话就比较简单。
如果是这样的话,在“自动标识”处填“t”(图上所示)。这样填的话上传数据的格式是:
数据1,数据2,数据3,数据4,数据5
每个数据之间用英文逗号分隔
要注意!最后一个数据用Serial.println()输出,这样软件才能知道本次上传结束。
接下来点击开始上传就可以将数据传到乐联网上了,
微信查询,关注乐联网app,发送l就可以查看到你上传上去的数据了