开源第五周 SIM900模块指令调试+数据传输—乐联平台

来源:互联网 发布:南宁广电网络营业厅 编辑:程序博客网 时间:2024/04/28 01:07

     开源第五周

一。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,复制下来,等会会用到。

 

        第二步:添加设备

        通过点击“我的设备”选择编辑已有的默认设备或者选择"添加新设备",如下图,填写相关信息后,点击保存就可以了。

        相关参数解释如下:

标识:设备的标识。系统自动分配,按01,02……这么向下自动排序。
类型:根据设备采取的不同硬件,设备被分为四种类型,Arduino, Art, lw-board和其他类型。说明如下:
Ø Arduino:电子爱好者熟知的一款电子原型平台硬件
Ø Art:RT-Thread公司开发的一款国内开源平台硬件
Ø Lw-board:乐为物联公司自己开发的网络功能模块硬件
其它:其它类型的网络功能硬件
名称:该设备的名称
是否可控:如果该网关下有可反向控制设备,则勾选“是”,然后需要输入API地址。
介绍:设备的简单文字介绍
是否公开:如果公开你的设备,则别的用户能在乐联网公开设备地图上看到你的设备信息(设备名称及设备介绍)。具体可参考本文第七节;
地理位置:在地图上选择你的设备所在的地理位置;    
第三步:添加传感器和控制器
 
 一.添加传感器:

添加设备之后,需要添加设备下面的传感器与控制器。点击“传感器与控制器”,可以添加的设备有两种类型:传感器与控制器。
点击左边的“传感器与控制器”,在“传感器列表”中点击右边的“新建”,在“添加传感器”页签中填写相关信息后,点击"保存"就可以了。

相关参数解释如下:
标识:传感器的缩写,为字母和数字的组合,如“T1”;
类型:可以在下拉菜单选择不同的传感器类型,区别是不同类型的数值单位不一样,如温度是℃,浓度是%等等;
单位:与类型相关联,如果“类型”中选择“其他类型”,则需要这里手动输入单位;
设备:从下列菜单选择该传感器连接的设备;
名称:传感器名称;
数值转换:可以校准你的传感器,最终的保存数值=上传数值*系数+偏移,如果你的传感器没有系数和偏移值,则可以留空,主要应用于仪器仪表类传感器;
图片:可以上传你传感器的照片,公开后在乐联网公开设备地图中可以看到;
是否公开:是否公开你的传感器,只有当设备和设备连接的传感器同时公开,你才可以看到传感器的信息和数据;
正常值范围:设置数据的正常值范围;
超过范围告警:勾选,则测量数值不在正常值范围会自动短信告警,详见第五节;
发送间隔:当前传感器的最小保存时间,发送频率仅作为判断传感器在线的衡量标准,如果服务器在发送频率设置的时间内没有收到数据,则显示该传感器不在线;
介绍:传感器的备注信息;
发送超时报警:传感器超时(超过发送频率设置的时间)不发送数据有短信告警;
 自动发微博:可以绑定新浪微博,自动推送微博

  二.添加控制器:
 
  点击“添加控制器”页签,填写相关信息后,点击保存就可以了

 
相关参数解释如下:
标识:控制器的缩写,为字母和数字的组合,如“C1”;
名称:控制器名称;
设备:选择控制器连接的设备;
类型:可以选择“开关型”和“数值型”,“开关型”以“0”和“1”的方式来控制设备的开关,而“数值型”则会根据不同的数值来调整设备的状态;
最小值:“数值型”控制时的最小数值;
最大值:“数值型”控制时的最大数值;

还有些其他有趣的功能,这里就不一一介绍了,下面进行第四步:上传

打开乐为物联串口上传工具(没有的可以到 http://www.lewei50.com/home/sitecontent/downloads 下载最新版)

API地址不出意外的话是不用改的;

网关号与乐联网后台保持一致


    串口号选择你Arduino的串口(一般默认是正确的、如果不正确请在设备管理器中查看);

    Userkey在乐联网后台可以看到自己的(我的账户-> 设置个人信息)

    接下来开始说自动标识。自动标识可填可不填,填上简单点,不填麻烦点

(1)先来说填上的(简单的)我的设备标识都是以t开头,后面是连续的数字。这样的话就比较简单。

     如果是这样的话,在“自动标识”处填“t”(图上所示)。这样填的话上传数据的格式是:

  数据1,数据2,数据3,数据4,数据5

  每个数据之间用英文逗号分隔

  要注意!最后一个数据用Serial.println()输出,这样软件才能知道本次上传结束。

     接下来点击开始上传就可以将数据传到乐联网上了,

    

     微信查询,关注乐联网app,发送l就可以查看到你上传上去的数据了

0 0