久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 9724|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

OneNet平臺(tái)傳感器監(jiān)測(cè)設(shè)計(jì) 51單片機(jī)+GPRS+DHT11 附源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
基于OneNet平臺(tái)的傳感器監(jiān)測(cè)使用說明(以dht11為例)

1. 將電話卡(SIM900A使用的是標(biāo)準(zhǔn)SIM卡,SIM800C使用的是micro-SIM卡,這里的“卡”指的是聯(lián)通、移動(dòng)卡,電信卡不支持)插入GPRS模塊后,上點(diǎn)啟動(dòng),會(huì)出現(xiàn)以下畫面,提示正在初始化連接,確保已退出其它連接

2.連接OneNet平臺(tái),會(huì)出現(xiàn)以下畫面,表明正在連接Onenet平臺(tái)
   
3.如果Onenet連接成功,LCD1602顯示屏上會(huì)顯示“Onenet Is Ready”,但是正常情況下“Onenet Is Ready”字樣會(huì)一閃而過,被后面的“Data Is Ready”很快覆蓋,所以如果長(zhǎng)期卡在”O(jiān)nenet Is Ready”表明傳感器的數(shù)據(jù)讀取出現(xiàn)了問題,請(qǐng)檢查傳感器是否完好。因此正常情況下,我們會(huì)看到以下畫面

4.緊接著我們會(huì)看到上傳的進(jìn)度條顯示,像這樣(我共分為7步來標(biāo)識(shí)上傳進(jìn)度,具體每步所做工作參照代碼)




出現(xiàn)“7 of 7”表明我們的數(shù)據(jù)上傳工作完成,我們將進(jìn)入下一步
5.判斷數(shù)據(jù)上傳是否成功,如果數(shù)據(jù)上傳成功,會(huì)出現(xiàn)“SEND OK”,如果上傳失敗,會(huì)出現(xiàn)“SEND FAIL”。當(dāng)然,上傳結(jié)果的判斷不能保證完全準(zhǔn)確,但是經(jīng)過測(cè)試在大多數(shù)情況下是準(zhǔn)確的,因?yàn)楦W(wǎng)絡(luò)情況有關(guān),有時(shí)不能成功檢測(cè)到成功的標(biāo)志。(就像原本有檢測(cè)是否連上網(wǎng)絡(luò)功能的,但是檢測(cè)太耗時(shí),故后面刪除了相關(guān)代碼)
6.最后,LCD1602會(huì)顯示本次上傳的傳感器數(shù)據(jù)值,像下圖
以上就是基于OneNet平臺(tái)的傳感器監(jiān)測(cè)使用說明,以DHT11溫濕度傳感器為例,其它的操作方法類似
代碼:
  1. //C庫(kù)
  2. #include <reg52.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. //硬件驅(qū)動(dòng)
  6. #include "lcd.h" //lcd1602
  7. #include "dht11.h" //dht11溫濕度傳感器
  8. //#define FOSC_110592M //看你使用的晶振是什么,選擇啟用的宏定義
  9. #define FOSC_12M
  10. #define DEVID        "25336321"
  11. #define APIKEY        "v5lJaPvQHj=qjBUSYmGOVnA5TX8="

  12. //以下用于保存單片機(jī)收到模塊發(fā)來的AT指令,通過這些指令單片機(jī)可以判斷模塊的狀態(tài)
  13. uchar GsmRcv[50] = {0};
  14. uchar GsmRcvAt[50] = {0};
  15. uchar GsmRcvCnt = 0;
  16. uchar GsmAtFlag = 0;
  17. Sensor_Structure Sensor_Data;
  18. void SerialInti()//串口初始化程序
  19. {
  20.         TMOD=0x20;//定時(shí)器1操作模式2:8位自動(dòng)重載定時(shí)器

  21. #ifdef FOSC_12M                   //在這里根據(jù)晶振大小設(shè)置不同的數(shù)值初始化串口,
  22.                            //如果用的12M晶振的話裝下面兩種值都可以,但
  23.                            //個(gè)人推薦用6250,能有效減小誤碼率,保證對(duì)GPRS模塊返回信息的準(zhǔn)確判斷
  24.         TH1=0xfb;//裝入初值,波特率6250
  25.         TL1=0xfb;        

  26. //  TH1=0xf3;//裝入初值,波特率2400
  27. //        TL1=0xf3;
  28. #else         
  29.         TH1=0xfd;//裝入初值,波特率9600
  30.         TL1=0xfd;
  31. #endif //
  32.         
  33.         TR1=1;//打開定時(shí)器
  34.         SM0=0;//設(shè)置串行通訊工作模式
  35.         SM1=1;//(同上)在此模式下,定時(shí)器溢出一次就發(fā)送一個(gè)位的數(shù)據(jù)
  36.         REN=1;//串行接收允許位(要先設(shè)置sm0sm1再開串行允許)
  37.         EA=1;//開總中斷
  38.         ES=1;//開串行口中斷        
  39. }

  40. /*串行通訊中斷,收發(fā)完成將進(jìn)入該中斷*/
  41. void Serial_interrupt() interrupt 4
  42. {
  43.         uchar i = 0;

  44.         if(RI == 1)        //收到信息
  45.         {

  46.                 RI=0;//接收中斷信號(hào)清零,表示將繼續(xù)接收
  47.                
  48.                 GsmRcv[GsmRcvCnt] = SBUF;
  49.                 GsmRcvCnt++;
  50.                 //收到了完整的AT指令,完整的AT指令是以0x0d 0x0a結(jié)尾的。故作此判斷,在接收的過程中是否收到0x0d 0x0a
  51.                 if(GsmRcv[GsmRcvCnt-2] == 0x0d && GsmRcv[GsmRcvCnt-1] == 0x0a && GsmRcvCnt >= 4)
  52.                 {
  53.                         //一旦收到0x0d 0x0a,就將數(shù)據(jù)保存起來。用戶主函數(shù)的判斷。                        
  54.                         for(i=0; i<GsmRcvCnt; i++)
  55.                         {
  56.                                 GsmRcvAt[i] = GsmRcv[i];
  57.                                 GsmRcv[i] = 0;        
  58.                         }
  59.                         GsmRcvCnt = 0;
  60.                         GsmAtFlag = 1;//收到了完整的at指令,通過這個(gè)標(biāo)志位置1,這樣主函數(shù)就知道去判斷了。
  61.                                                                                 
  62.                 }
  63.                 else if(GsmRcvCnt >= 50)//因?yàn)閮?nèi)存有限,收到了50個(gè)字符還是沒有看到0x0a 0x0d的話,就重新開始接收吧。
  64.                 {
  65.                         GsmRcvCnt = 0;
  66.                 }
  67.                
  68.         }
  69. }


  70. void Uart1Send(uchar c)
  71. {
  72.         SBUF=c;
  73.         while(!TI);//等待發(fā)送完成信號(hào)(TI=1)出現(xiàn)
  74.         TI=0;        
  75. }

  76. //串行口連續(xù)發(fā)送char型數(shù)組,遇到終止號(hào)/0將停止
  77. void Uart1Sends(uchar *str)
  78. {
  79.         while(*str!='\0')
  80.         {
  81.                 SBUF=*str;
  82.                 while(!TI);//等待發(fā)送完成信號(hào)(TI=1)出現(xiàn)
  83.                 TI=0;
  84.                 str++;
  85.         }
  86. }

  87. //延時(shí)函數(shù)大概是1s鐘,不過延時(shí)大的話不準(zhǔn)...
  88. void DelaySec(int sec)
  89. {
  90.         uint i , j= 0;

  91.         for(i=0; i<sec; i++)
  92.         {
  93.                 for(j=0; j<65535; j++)
  94.                 {        
  95.                 }
  96.         }
  97. }

  98. //判斷是否上傳成功
  99. void OneNet_RevPro(unsigned char *GsmRcvAt)
  100. {
  101.         if(strstr((char *)GsmRcvAt, "CLOSED"))
  102.         {
  103.   LcdWriteString("TCP CLOSED",strlen("TCP CLOSED"),0x80+0x40,0);               
  104.         }
  105.         else
  106.         {
  107.                 //這里用來檢測(cè)是否發(fā)送成功
  108.                 if(strstr((char *)GsmRcvAt, "succ"))
  109.                 {
  110.                         LcdWriteString("SEND OK",strlen("SEND OK"),0x80+0x40,0);
  111.                 }
  112.                 else
  113.                 {
  114.                   LcdWriteString("SEND FAIL",strlen("SEND FAIL"),0x80+0x40,0);
  115.                 }
  116.         }
  117. }

  118. void main()
  119. {
  120.         uchar i = 0;
  121.         char xdata text[28];
  122.         char xdata buf1[60];
  123.         SerialInti(); //串口初始化
  124.   LcdInit(); //LCD1602初始化
  125.         
  126.         GsmAtFlag = 0;
  127.         while(GsmAtFlag == 0) //確保波特率同步良好
  128.         {
  129.                 Uart1Sends("ATI\r\n");
  130.                 DelaySec(1);//延時(shí)1秒
  131.         }
  132.         GsmAtFlag = 0;

  133.         while(1)
  134.         {
  135.                 LcdWriteString("Init Connection",strlen("Init Connection"),0x80,1);
  136.                 Uart1Sends("AT+CIPCLOSE\r\n");
  137.                 DelaySec(1);
  138.                 Uart1Sends("AT+CIPSHUT\r\n");        
  139.                 DelaySec(1);
  140.                 LcdWriteString("Connect Onenet",strlen("Connect Onenet"),0x80,1);
  141.                 Uart1Sends("AT+CLPORT=\"TCP\",\"2000\"\r\n");//發(fā)送指令指定本地端口
  142.                 DelaySec(1);
  143.                 Uart1Sends("AT+CIPSTART=\"TCP\",\"183.230.40.33\",\"80\"\r\n");//此處修改你建立服務(wù)器的IP,服務(wù)器端口號(hào)8080
  144.                 DelaySec(2);
  145.                 if(GsmAtFlag == 1 && strstr(GsmRcvAt, "CONNECT OK") )//檢測(cè)是否收到 CONNECT OK ,如果這連接成功
  146.                 {
  147.                         LcdWriteString("Onenet Is Ready",strlen("Onenet Is Ready"),0x80,1);
  148.       Sensor_Data=DHT11_receive();
  149.                         LcdWriteString("Data Is Ready",strlen("Data Is Ready"),0x80,1);
  150.                         Uart1Sends("AT+CIPSEND\r\n");
  151.                         DelaySec(1);
  152.                         LcdWriteString("Start Upload",strlen("Start Upload"),0x80,1);
  153.                         memset(buf1, 0, sizeof(buf1));
  154.                         LcdWriteString("Schedule:",strlen("Schedule:"),0x80,1);
  155.                         sprintf(buf1,"POST /devices/%s/datapoints?type=3 HTTP/1.1\r\n",DEVID);
  156.                         LcdWriteString("1 of 7",strlen("1 of 7"),0x80+0x40,0);
  157.                         Uart1Sends(buf1);//向服務(wù)器發(fā)送數(shù)據(jù)
  158.                         DelaySec(1);
  159.                         memset(buf1, 0, sizeof(buf1));
  160.                         sprintf(buf1,"api-key:%s\r\n",APIKEY);
  161.                         LcdWriteString("2 of 7",strlen("2 of 7"),0x80+0x40,0);
  162.                         Uart1Sends(buf1);
  163.                         DelaySec(1);
  164.                         LcdWriteString("3 of 7",strlen("3 of 7"),0x80+0x40,0);
  165.                         Uart1Sends("Host:api.heclouds.com\r\n");
  166.                         DelaySec(1);
  167.                         memset(text, 0, sizeof(text));
  168.             memset(buf1, 0, sizeof(buf1));
  169.             strcpy(buf1, "{");
  170.             memset(text, 0, sizeof(text));
  171.             sprintf(text, "\"Temperature\":%f,",Sensor_Data.temp_l*0.01+Sensor_Data.temp_h);
  172.             strcat(buf1, text);
  173.       memset(text, 0, sizeof(text));
  174.             sprintf(text, "\"Humidity\":%f",Sensor_Data.humi_l*0.01+Sensor_Data.humi_h);
  175.             strcat(buf1, text);
  176.             strcat(buf1, "}");
  177.                         memset(text, 0, sizeof(text));
  178.                         sprintf(text,"Content-Length:%d\r\n",strlen(buf1));
  179.                         LcdWriteString("4 of 7",strlen("4 of 7"),0x80+0x40,0);
  180.                         Uart1Sends(text);
  181.                         LcdWriteString("5 of 7",strlen("5 of 7"),0x80+0x40,0);
  182.                         Uart1Sends("\r\n");
  183.                         DelaySec(1);
  184.                         LcdWriteString("6 of 7",strlen("6 of 7"),0x80+0x40,0);
  185.                         Uart1Sends(buf1);
  186.                         DelaySec(1);
  187.                         LcdWriteString("7 of 7",strlen("7 of 7"),0x80+0x40,0);
  188.                         Uart1Send(0x1a);//以0x1a結(jié)束
  189.                         DelaySec(1);
  190.                         LcdWriteString("Upload Result:",strlen("Upload Result:"),0x80,1);
  191.                         while(GsmAtFlag==0);
  192.             OneNet_RevPro(GsmRcv);
  193.                         DelaySec(6);
  194.                 }                        
  195.         
  196.         }


  197. }
復(fù)制代碼


全部資料51hei下載地址:
GSM +DHT11.zip (88.47 KB, 下載次數(shù): 200)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:97588 發(fā)表于 2018-11-18 19:24 | 只看該作者
感謝分享!下了學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

板凳
ID:138273 發(fā)表于 2018-12-14 19:26 | 只看該作者
DEVID
APIKEY
都修改為自己的了為啥總是上傳失敗???
回復(fù)

使用道具 舉報(bào)

地板
ID:138273 發(fā)表于 2018-12-18 13:14 | 只看該作者
我的最后服務(wù)器返回Content-Type: application/json
Content-Length: 58
Connection: keep-alive
Serveroyotg/1.1
Pragma: no-cache

{"errno":3,"error":"auth failed: not found device:172639"}
產(chǎn)品ID和APIKEY都沒錯(cuò),郁悶了啊。。。。
回復(fù)

使用道具 舉報(bào)

5#
ID:63317 發(fā)表于 2018-12-26 20:12 | 只看該作者
感謝分享!下了學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

6#
ID:496317 發(fā)表于 2019-3-23 20:37 | 只看該作者
你好,謝謝您的分享,我粗略地學(xué)習(xí)了一下,想問問……您是用的TCP透?jìng)鹘尤氲腛neNET么?
回復(fù)

使用道具 舉報(bào)

7#
ID:249062 發(fā)表于 2019-4-27 19:44 | 只看該作者
剛哥哥 發(fā)表于 2018-12-14 19:26
DEVID
APIKEY
都修改為自己的了為啥總是上傳失敗???

是不是IP和端口沒改
回復(fù)

使用道具 舉報(bào)

8#
ID:249062 發(fā)表于 2019-4-27 20:06 | 只看該作者
樓主能介紹一下onenet這里嗎,第一次做物聯(lián)網(wǎng)這邊,不太懂
回復(fù)

使用道具 舉報(bào)

9#
ID:315093 發(fā)表于 2020-1-16 13:50 | 只看該作者
感謝分享!下了學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

10#
ID:279295 發(fā)表于 2020-4-12 22:55 | 只看該作者
想問一下,本地端口2000是怎么確定的
回復(fù)

使用道具 舉報(bào)

11#
ID:767423 發(fā)表于 2020-6-9 09:03 | 只看該作者
有沒有教程分享出來,讓大家一起學(xué)習(xí)學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

12#
ID:604052 發(fā)表于 2020-6-11 20:12 | 只看該作者
有protus仿真程序嗎?
回復(fù)

使用道具 舉報(bào)

13#
ID:604052 發(fā)表于 2020-6-11 20:46 | 只看該作者
能夠?qū)崿F(xiàn)自動(dòng)上傳嗎
回復(fù)

使用道具 舉報(bào)

14#
ID:796585 發(fā)表于 2020-7-3 16:04 | 只看該作者

能夠?qū)崿F(xiàn)自動(dòng)上傳嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲www啪成人一区二区 | 久久精品99久久 | 四虎影院在线播放 | 99视频在线播放 | 一区二区三区亚洲 | 6080亚洲精品一区二区 | 国产精品美女久久久久 | 一区二区av | 久久精品国产一区 | 精品国产免费人成在线观看 | 国产日韩精品一区 | 日韩视频在线一区 | 精品国产青草久久久久福利 | 亚洲一区久久 | 91av精品| 亚洲精品视频免费观看 | 日韩高清在线观看 | 九九九视频精品 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 日韩欧美精品 | 国产精品久久久久久久久久久久久 | 91精品国产综合久久香蕉922 | 欧美一区二区免费 | 免费大黄视频 | 国产精品永久免费观看 | 国产美女在线观看 | 亚洲一区在线日韩在线深爱 | 国产一区二区三区高清 | 99tv| 麻豆一区一区三区四区 | 91电影| 国产高清在线精品 | 中文字幕在线不卡 | 成人h动漫精品一区二区器材 | 久久久久久亚洲 | 免费美女网站 | 日本在线观看视频 | 国产精品久久久久久吹潮 | 久久伊人精品一区二区三区 | 97精品国产97久久久久久免费 | h在线免费观看 |