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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2285|回復: 1
打印 上一主題 下一主題
收起左側

基于單片機WiFi的農田信息采集系統程序,增加電容傳感器測土壤濕度

[復制鏈接]
跳轉到指定樓層
樓主
ID:512761 發表于 2020-4-25 20:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于WiFi的農田信息采集系統,增加電容傳感器測土壤濕度

單片機源程序如下:
  1. #include        "stc8.h"
  2. #include         "stdio.h"
  3. #include        "config.h"
  4. #include        "delay.h"
  5. #include    "uart.h"
  6. #include    "display.h"
  7. #include    "ADC.h"
  8. #include    "DHT11.h"
  9. #include <string.h>
  10. #include "pcf8591_i2c.h"


  11. #define uchar unsigned char
  12. #define uint unsigned int
  13. #define  ulint unsigned long int
  14. //extern uchar xdata Rec_Buf[Buf_Max];

  15. /**********************
  16. 引腳別名定義
  17. ***********************/               
  18. sbit RST = P3^6;     //ESP8266復位引腳用IO口

  19. //uchar ATCWJAP[]="AT+CWJAP=\"OPPO A59m\",\"12345678\"\r\n";
  20. //uchar ATCIPSTART[]="AT+CIPSTART=\"TCP\",\"192.168.2.4\",8888\r\n";//向手機發送數據
  21. //uchar ATCIPSTART[]="AT+CIPSTART=\"TCP\",\"192.168.2.2\",8880\r\n";

  22. uchar AT[]="AT\r\n";

  23. uchar ATRST[]="AT+RST\r\n";
  24. uchar ATCWJAP[]="AT+CWJAP=\"Netcore\",\"18337257016\"\r\n";
  25. uchar ATCWMODE[]="AT+CWMODE=1\r\n";  //設置 Wi-Fi 模式
  26. uchar ATCIPMUX[]="AT+CIPMUX=0\r\n";      //設置多連接模式

  27. uchar ATCIPMODE[]="AT+CIPMODE=1\r\n";   //設置透傳模式
  28. uchar ATCIPSTART[]="AT+CIPSTART=\"TCP\",\"183.230.40.33\",80\r\n";
  29. uchar ATCIPSEND[]="AT+CIPSEND\r\n";
  30. uchar ATEXITCIPMODE[]="+++";

  31. uchar POST1[]="POST /devices/579828346/datapoints?type=3 HTTP/1.1\r\n";
  32. uchar POST2[]="api-key:8YGhUHuHNQODlsbk7YrimCE2Qow=\r\n";
  33. uchar POST3[]="Host:api.heclouds點com\r\n";
  34. uchar POST5[]="\r\n";
  35. uchar POST40[]="Content-Length:11\r\n";
  36. uchar POST60[]="{\"temp\":11}";
  37. uchar POST41[]="Content-Length:10\r\n";
  38. uchar POST61[]="{\"wet\":20}";
  39. uchar POST42[]="Content-Length:14\r\n";        
  40. uchar POST62[]="{\"light\":3333}";        
  41. uchar POST43[]="Content-Length:15\r\n";
  42. uchar POST63[]="{\"Soilwet\":201}";        

  43. uchar numlist[]={
  44.                                 0x30,
  45.                                 0x31,
  46.                                 0x32,
  47.                                 0x33,
  48.                                 0x34,
  49.                                 0x35,
  50.                                 0x36,
  51.                                 0x37,
  52.                                 0x38,
  53.                                 0x39
  54. };

  55. uchar temp1[3];
  56. uchar humidity1[3];
  57. uchar photo1[4];
  58. uchar sd[3];
  59. uchar tempphoto1,soilwet;
  60. uchar mnum,count,mark;

  61. uchar gdu[3],sdu[3],gq[5],ts[4];


  62. sbit SDA = P7^6;  /* 數據線 */
  63. sbit SCL = P7^7;  /* 時鐘線 */


  64. void tm0()interrupt 1{
  65.         
  66.         ET0=0;
  67.         TH0 = 0xb7;
  68.         TL0 = 0xfe;
  69.         TF0 = 0;

  70.         count ++;
  71.         
  72.         if(count == 50){
  73.            mnum ++;  
  74.            count = 0;
  75.            //P6 = ~P6;
  76.         }
  77.         
  78.         if(mnum==10){
  79.           mark=1;
  80.                 mnum=0;        
  81.         }
  82.         
  83.    ET0=1;
  84. }


  85. void espdelay(uint z){           //ms延時
  86.         uint x,y;
  87.         for(x = z; x > 0; x--)
  88.                 for(y = 829; y > 0 ; y--);
  89. }

  90. void uart3init(){
  91.         S3CON = 0x50;
  92.         T3H = 0xff;
  93.         T3L = 0xfe;
  94.         T4T3M = 0x08;

  95. }

  96. void uart3send1byte(uchar dat){
  97.         S3BUF = dat;
  98.         while(!(S3CON&0x02));
  99.         S3CON = S3CON | 0xfd;
  100.         espdelay(2);
  101. }

  102. void sendstr(uchar *p){
  103.         while(1)
  104.         {
  105.                 uart3send1byte(*p++);
  106.                 if(*p=='\0') break;
  107.                
  108.         }

  109. }


  110. void send2(unsigned char string){
  111.         
  112.         SBUF = string;
  113.         while(!(SCON&0x02));
  114.         SCON &= ~0x02;
  115.         
  116. }

  117. void sendstr1(uchar *p)
  118. {
  119.         while(1)
  120.         {
  121.                 send2(*p++);
  122.                 if(*p=='\0') break;
  123.         }
  124.         
  125. }

  126. void timer0_init(){
  127.         TMOD = 0x01;
  128.         TH0 = 0xb7;
  129.         TL0 = 0xfe;                 //20ms
  130.         TR0=1;
  131.         ET0 = 1;
  132.         EA = 1;
  133. }

  134.          
  135. int  main(void)

  136. {        P0M1 = 0;
  137.         P0M0 = 0;

  138.         P1M1 = 0;
  139.         P1M0 = 0;

  140.         P2M1 = 0;
  141.         P2M0 = 0;

  142.         P3M1 = 0;
  143.         P3M0 = 0;

  144.         P4M1 = 0;
  145.         P4M0 = 0;
  146.         
  147.         P5M1 = 0;
  148.         P5M0 = 0;

  149.         P6M1 = 0;
  150.         P6M0 = 0;

  151.         P7M1 = 0;
  152.         P7M0 = 0;

  153.         P_SW2=0x02;
  154.   ADC_config();                                 //ADC初始化  
  155.         uart3init();                                  //串口3初始化
  156.         init_1602();                                                                  //1602初始化
  157.         EA = 1;  
  158.         timer0_init();
  159.         Uart_Init();                                  //總中斷打開
  160.         delay_ms(100);                                 //初始化后延時
  161.         
  162. //        WiFi模塊初次設置使用
  163.         sendstr(ATRST);
  164.         sendstr(ATCWJAP);
  165.         sendstr(ATCWMODE);
  166.         sendstr(ATCIPMUX);         

  167.         while (1)
  168.         {         
  169.                 displaynumber();
  170.                 DHT11();
  171.                 tempphoto1 = Get_ADC12bitResult();
  172.                 soilwet =(int)Pcf8591_ReadAD()/51.0*100;
  173.                 espdelay(5);
  174.                 //將溫濕度值轉換為字符串
  175.                 temp1[0] =DHT11Value.tempH;
  176.                 temp1[1] =DHT11Value.tempL;
  177.                
  178.                 humidity1[0] = DHT11Value.humyH;
  179.                 humidity1[1] = DHT11Value.humyL;
  180.                 //將光照強度值轉換為字符串
  181.                 photo1[0] = tempphoto1/1000;
  182.                 photo1[1] =  (tempphoto1%1000)/100;
  183.                 photo1[2] =  ((tempphoto1%1000)%100)/10;
  184.                 photo1[3] =   ((tempphoto1%1000)%100)%10;

  185.                
  186.                 sd[0]=soilwet/100;
  187.                 sd[1]=soilwet%100/10;
  188.                 sd[2]=soilwet%10;
  189.                
  190.                 POST60[8]= numlist[temp1[0]];
  191.                 POST60[9]= numlist[temp1[1]];

  192.                 POST61[7]=numlist[humidity1[0]];
  193.                 POST61[8]=numlist[humidity1[1]];

  194.                 POST62[9]=numlist[photo1[0]];
  195.                 POST62[10]=numlist[photo1[1]];
  196.                 POST62[11]=numlist[photo1[2]];
  197.                 POST62[12]=numlist[photo1[3]];

  198.                 POST63[11]=numlist[sd[0]];
  199.                 POST63[12]=numlist[sd[1]];
  200.                 POST63[13]=numlist[sd[2]];


  201.                 sendstr(ATCIPSTART);

  202.         //sendstr1("已連接到服務器\r\n");

  203.         sendstr(ATCIPMODE);

  204.         //sendstr1("開啟透傳\r\n");

  205.         sendstr(ATCIPSEND);

  206.         //sendstr1("開始發送數據\r\n");
  207.                         

  208.                 gdu[0]=POST60[8];
  209.                 gdu[1]=POST60[9];
  210.                 gdu[2]='\0';
  211.                 sendstr1("溫度:\r\n");
  212.                 sendstr1(gdu);
  213.                 sendstr1("\r\n");
  214.                
  215.                 sendstr(POST1);               
  216.                 sendstr(POST2);               
  217.                 sendstr(POST3);               
  218.                 sendstr(POST40);               
  219.                 sendstr(POST5);               
  220.                 sendstr(POST60);

  221.                
  222.                 sdu[0]=POST61[7];
  223.                 sdu[1]=POST61[8];
  224.                 sdu[2]='\0';
  225.                 sendstr1("濕度:\r\n");
  226.                 sendstr1(sdu);               
  227.                 sendstr1("\r\n");
  228.                
  229.                 sendstr(POST1);               
  230.                 sendstr(POST2);               
  231.                 sendstr(POST3);               
  232.                 sendstr(POST41);               
  233.                 sendstr(POST5);               
  234.                 sendstr(POST61);        
  235.                         

  236.                 gq[0]=POST62[9];
  237.                 gq[1]=POST62[10];
  238.                 gq[2]=POST62[11];
  239.                 gq[3]=POST62[12];
  240.                 gq[4]='\0';
  241.                 sendstr1("光照強度:\r\n");
  242.                 sendstr1(gq);        
  243.                 sendstr1("\r\n");
  244.                         
  245.                 sendstr(POST1);               
  246.                 sendstr(POST2);               
  247.                 sendstr(POST3);               
  248.                 sendstr(POST42);        
  249.                 sendstr(POST5);        
  250.                 sendstr(POST62);
  251.                
  252.                
  253.                 ts[0]=POST63[11];
  254.                 ts[1]=POST63[12];
  255.                 ts[2]=POST63[12];
  256.                 ts[3]='\0';
  257.                 sendstr1("土壤濕度:\r\n");
  258.                 sendstr1(ts);
  259.                 sendstr1("\r\n");
  260.                
  261.                 sendstr(POST1);
  262.                 sendstr(POST2);        
  263.                 sendstr(POST3);        
  264.                 sendstr(POST43);        
  265.                 sendstr(POST5);
  266.                 sendstr(POST63);

  267.                 espdelay(500);
  268.                
  269.                 sendstr(ATEXITCIPMODE);         
  270.                
  271.         //        sendstr1("退出數據發送\r\n");
  272.         
  273.         }
  274. }
復制代碼

所有資料51hei提供下載:
代碼.7z (69.22 KB, 下載次數: 22)

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

使用道具 舉報

沙發
ID:328014 發表于 2020-4-26 01:14 | 只看該作者
樓主您好,能上傳或者說明一下原理圖嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区2区三区3区公司 | 本道综合精品 | 日韩精品久久 | 天堂成人国产精品一区 | 成人在线免费视频 | 成人国产精品免费观看 | 国产成人精品久久二区二区91 | 欧美精品一区二区三区在线 | 国产伦一区二区三区四区 | 国产a级黄色录像 | 欧美日韩视频在线第一区 | 午夜天堂精品久久久久 | 激情婷婷 | 九色 在线 | 91精品国产91久久久久久吃药 | 久久久久国产精品一区二区 | 一级黄色录像片子 | 国产视频中文字幕 | 亚洲午夜电影 | 大象一区 | 日韩三级在线观看 | 激情在线视频网站 | av网站免费在线观看 | 欧美久久一区二区 | 精品欧美一区二区精品久久久 | 日韩免费视频一区二区 | 久久久久久久久蜜桃 | 九九热免费看 | 久久久999国产精品 中文字幕在线精品 | 黄网站在线播放 | 人人人人人爽 | 中文字幕日韩欧美一区二区三区 | 成人在线看片 | 午夜亚洲 | 国产精品福利在线观看 | 成人精品一区二区 | 国产乱人伦精品一区二区 | 成人免费网站 | 最新中文字幕久久 | 亚洲九九精品 | 91精产国品一二三区 |