在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于華為云物聯網平臺設計的澆花神器(STM32設備)

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2022-05-28 14:11 ? 次閱讀

1. 前言

隨著社會的不斷發展和人們生活水平的逐漸提高,人們逐漸追求高質量的生活,很多人都會選擇在家里或辦公室種植一些花卉以凈化家庭空氣,陶冶情操,但是很多人忙于工作、學習、出差、旅游或者一些其他的原因,不能及時地對花卉進行照料,短時間內導致很多花卉因缺水分而影響正常生長,長時間不照料有些名貴的花卉直接死亡。基于上述狀況,提出了此基于物聯網的智慧澆花系統。該系統采用工業高精度土壤溫濕度傳感器采集花盆中的突然溫濕度,環境的溫度濕度,通過ESP8266 WIFI實時上傳當前的土壤溫濕度、環境光照度等數據到華為云物聯網云平臺,可以通過 app實時查看花卉的土壤濕度、環境溫度等信息,并且本地通過OLED顯示屏實時顯示這些信息,可以設定某種花適宜的生長的土壤濕度條件,實現自動控制給花澆水,即能讓花卉生長在適宜的濕度下,與目前市場上的自動澆花系統相比,該系統的特點具有遠程控制,低成本、極高的資源利用率、操作簡單和反應靈敏等。

2. 整體系統設計

主控MCU選擇STM32F103芯片,通過土壤濕度傳感器、環境溫濕度傳感器,檢測整個周邊環境信息,再通過ESP8266 WIFI傳遞到物聯網平臺。程序里可以預設濕度閥值,當檢測到土壤濕度低于閥值就自動澆花。在手機APP上可以實現遠程控制水泵澆花,本地在搭載一個TFT小尺寸顯示屏,可以實時顯示測量檢測的數據,在辦公室里也可以通過TFT彩屏顯示屏解周圍環境的信息。

3. 應用側軟件運行效果

image-20220314220612175.png


image-20220314221035015.png


image-20220314220440225.png

4. 硬件運行效果

image-20220314225450773.png


image-20220315004128180.png


image-20220315012115581.png


9)ZPR5ZTLKT1V945T)LI420.jpg


image.png


1.jpg


image-20220315015914129.png


image-20220315015941794.png


image-20220315020302958.png

5. 創建產品、設備

image.png


image.png


image.png

6.硬件核心代碼–ESP8266

#include "esp8266.h"
u8 ESP8266_IP_ADDR[16]; //255.255.255.255
u8 ESP8266_MAC_ADDR[18]; //硬件地址
/*
函數功能: ESP8266命令發送函數
函數返回值:0表示成功  1表示失敗
*/
u8 ESP8266_SendCmd(char *cmd)
{
    u8 i,j;
    for(i=0;i<10;i++) //檢測的次數--發送指令的次數
    {
        USARTx_StringSend(USART2,cmd);
        for(j=0;j<100;j++) //等待的時間
        {
            delay_ms(50);
            if(USART2_RX_FLAG)
            {
                USART2_RX_BUFFER[USART2_RX_CNT]='\0';
                USART2_RX_FLAG=0;
                USART2_RX_CNT=0;
                if(strstr((char*)USART2_RX_BUFFER,"OK"))
                {
                    return 0;
                }
            }
        }
    }
    return 1;
}

/*
函數功能: ESP8266硬件初始化檢測函數
函數返回值:0表示成功  1表示失敗
*/
u8 ESP8266_Init(void)
{
    //退出透傳模式
    USARTx_StringSend(USART2,"+++");
    delay_ms(100);
     //退出透傳模式
    USARTx_StringSend(USART2,"+++");
    delay_ms(100);
    return ESP8266_SendCmd("AT\r\n");
}

/*
函數功能: 一鍵配置WIFI為AP+TCP服務器模式
函數參數:
char *ssid  創建的熱點名稱
char *pass  創建的熱點密碼 (最少8位)
u16 port    創建的服務器端口號
函數返回值: 0表示成功 其他值表示對應錯誤值
*/
u8 ESP8266_AP_TCP_Server_Mode(char *ssid,char *pass,u16 port)
{
    char *p;
    u8 i;
    char ESP8266_SendCMD[100]; //組合發送過程中的命令
    /*1. 測試硬件*/
    if(ESP8266_SendCmd("AT\r\n"))return 1;
    /*2. 關閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 2;
    /*3. 設置WIFI模式*/
    if(ESP8266_SendCmd("AT+CWMODE=2\r\n"))return 3;
    /*4. 復位*/
    ESP8266_SendCmd("AT+RST\r\n");
    delay_ms(1000);
    delay_ms(1000);
    delay_ms(1000);
    /*5. 關閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 5;
    /*6. 設置WIFI的AP模式參數*/
    sprintf(ESP8266_SendCMD,"AT+CWSAP=\"%s\",\"%s\",1,4\r\n",ssid,pass);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 6;
    /*7. 開啟多連接*/
    if(ESP8266_SendCmd("AT+CIPMUX=1\r\n"))return 7;
    /*8. 設置服務器端口號*/
    sprintf(ESP8266_SendCMD,"AT+CIPSERVER=1,%d\r\n",port);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 8;
    /*9. 查詢本地IP地址*/
    if(ESP8266_SendCmd("AT+CIFSR\r\n"))return 9;
    //提取IP地址
    p=strstr((char*)USART2_RX_BUFFER,"APIP");
    if(p)
    {
        p+=6;
        for(i=0;*p!='"';i++)
        {
            ESP8266_IP_ADDR[i]=*p++;
        }
        ESP8266_IP_ADDR[i]='\0';
    }
    //提取MAC地址
    p=strstr((char*)USART2_RX_BUFFER,"APMAC");
    if(p)
    {
        p+=7;
        for(i=0;*p!='"';i++)
        {
            ESP8266_MAC_ADDR[i]=*p++;
        }
        ESP8266_MAC_ADDR[i]='\0';
    }
    
    //打印總體信息
    printf("當前WIFI模式:AP+TCP服務器\n");
    printf("當前WIFI熱點名稱:%s\n",ssid);
    printf("當前WIFI熱點密碼:%s\n",pass);
    printf("當前TCP服務器端口號:%d\n",port);
    printf("當前TCP服務器IP地址:%s\n",ESP8266_IP_ADDR);
    printf("當前TCP服務器MAC地址:%s\n",ESP8266_MAC_ADDR);
    return 0;
}

/*
函數功能: TCP服務器模式下的發送函數
發送指令: 
*/
u8 ESP8266_ServerSendData(u8 id,u8 *data,u16 len)
{
    u8 i,j,n;
    char ESP8266_SendCMD[100]; //組合發送過程中的命令
    for(i=0;i<10;i++)
    {
        sprintf(ESP8266_SendCMD,"AT+CIPSEND=%d,%d\r\n",id,len);
        USARTx_StringSend(USART2,ESP8266_SendCMD);
        for(j=0;j<10;j++)
        {
            delay_ms(50);
            if(USART2_RX_FLAG)
            {
                USART2_RX_BUFFER[USART2_RX_CNT]='\0';
                USART2_RX_FLAG=0;
                USART2_RX_CNT=0;
                if(strstr((char*)USART2_RX_BUFFER,">"))
                {
                    //繼續發送數據
                    USARTx_DataSend(USART2,data,len);
                    //等待數據發送成功
                    for(n=0;n<200;n++)
                    {
                        delay_ms(50);
                        if(USART2_RX_FLAG)
                        {
                            USART2_RX_BUFFER[USART2_RX_CNT]='\0';
                            USART2_RX_FLAG=0;
                            USART2_RX_CNT=0;
                            if(strstr((char*)USART2_RX_BUFFER,"SEND OK"))
                            {
                                return 0;
                            }
                         }            
                    }   
                }
            }
        }
    }
    return 1;
}

/*
函數功能: 配置WIFI為STA模式+TCP客戶端模式
函數參數:
char *ssid  創建的熱點名稱
char *pass  創建的熱點密碼 (最少8位)
char *p     將要連接的服務器IP地址
u16 port    將要連接的服務器端口號
u8 flag     1表示開啟透傳模式 0表示關閉透傳模式
函數返回值:0表示成功  其他值表示對應的錯誤
*/
u8 ESP8266_STA_TCP_Client_Mode(char *ssid,char *pass,char *ip,u16 port,u8 flag)
{
    char ESP8266_SendCMD[100]; //組合發送過程中的命令
    //退出透傳模式
    //USARTx_StringSend(USART2,"+++");
    //delay_ms(50);
    /*1. 測試硬件*/
    if(ESP8266_SendCmd("AT\r\n"))return 1;
    /*2. 關閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 2;
    /*3. 設置WIFI模式*/
    if(ESP8266_SendCmd("AT+CWMODE=1\r\n"))return 3;
    /*4. 復位*/
    ESP8266_SendCmd("AT+RST\r\n");
    delay_ms(1000);
    delay_ms(1000);
    delay_ms(1000);
    /*5. 關閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 5;
    /*6. 配置將要連接的WIFI熱點信息*/
    sprintf(ESP8266_SendCMD,"AT+CWJAP=\"%s\",\"%s\"\r\n",ssid,pass);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 6;
    /*7. 設置單連接*/
    if(ESP8266_SendCmd("AT+CIPMUX=0\r\n"))return 7;
    /*8. 配置要連接的TCP服務器信息*/
    sprintf(ESP8266_SendCMD,"AT+CIPSTART=\"TCP\",\"%s\",%d\r\n",ip,port);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 8;
    /*9. 開啟透傳模式*/
    if(flag)
    {
       if(ESP8266_SendCmd("AT+CIPMODE=1\r\n"))return 9; //開啟
       if(ESP8266_SendCmd("AT+CIPSEND\r\n"))return 10;  //開始透傳
       if(!(strstr((char*)USART2_RX_BUFFER,">")))
       {
            return 11;
       }
        //如果想要退出發送:  "+++"
    }
    
    printf("WIFI模式:STA+TCP客戶端\r\n");
    printf("Connect_WIFI熱點名稱:%s\r\n",ssid);
    printf("Connect_WIFI熱點密碼:%s\r\n",pass);
    printf("TCP服務器端口號:%d\r\n",port);
    printf("TCP服務器IP地址:%s\r\n",ip);
    return 0;
}


/*
函數功能: TCP客戶端模式下的發送函數
發送指令: 
*/
u8 ESP8266_ClientSendData(u8 *data,u16 len)
{
    u8 i,j,n;
    char ESP8266_SendCMD[100]; //組合發送過程中的命令
    for(i=0;i<10;i++)
    {
        sprintf(ESP8266_SendCMD,"AT+CIPSEND=%d\r\n",len);
        USARTx_StringSend(USART2,ESP8266_SendCMD);
        for(j=0;j<10;j++)
        {
            delay_ms(50);
            if(USART2_RX_FLAG)
            {
                USART2_RX_BUFFER[USART2_RX_CNT]='\0';
                USART2_RX_FLAG=0;
                USART2_RX_CNT=0;
                if(strstr((char*)USART2_RX_BUFFER,">"))
                {
                    //繼續發送數據
                    USARTx_DataSend(USART2,data,len);
                    //等待數據發送成功
                    for(n=0;n<200;n++)
                    {
                        delay_ms(50);
                        if(USART2_RX_FLAG)
                        {
                            USART2_RX_BUFFER[USART2_RX_CNT]='\0';
                            USART2_RX_FLAG=0;
                            USART2_RX_CNT=0;
                            if(strstr((char*)USART2_RX_BUFFER,"SEND OK"))
                            {
                                return 0;
                            }
                         }            
                    }   
                }
            }
        }
    }
    return 1;
}


審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 物聯網
    +關注

    關注

    2910

    文章

    44778

    瀏覽量

    374694
  • STM32F103
    +關注

    關注

    33

    文章

    477

    瀏覽量

    63707
  • ESP8266
    +關注

    關注

    50

    文章

    962

    瀏覽量

    45137
  • 華為云
    +關注

    關注

    3

    文章

    2607

    瀏覽量

    17483
收藏 人收藏

    評論

    相關推薦

    OneNET Studio平臺STM32聯網開發(1)- MQTT協議設備接入數據上報測試

    OneNET Studio平臺STM32聯網開發(1)- MQTT協議設備接入數據上報測試
    的頭像 發表于 09-25 01:01 ?1966次閱讀
    OneNET Studio<b class='flag-5'>云</b><b class='flag-5'>平臺</b><b class='flag-5'>STM32</b><b class='flag-5'>物</b><b class='flag-5'>聯網</b>開發(1)- MQTT協議<b class='flag-5'>設備</b>接入數據上報測試

    基于機智平臺聯網實驗平臺設計

    ,方便學生進行基礎性操作和擴展設計。經過實驗測試,聯網實驗平臺運行效果良好。【關鍵詞】機智STM32
    發表于 09-09 14:39

    互聯時代引領者—微聯網服務平臺

    標準化、智能化、界面化的硬件產品及通訊管理和數據管理軟件,用戶只需完成傳感器選型和應用界面設計,即可實現聯網應用項目的迅速落地。  在業界首創三端合一、遠程控制設備  微
    發表于 05-21 16:52

    機智聯網平臺)上新了

    方式,如GPRS、NB-IoT、4G全網通;支持RS232、RS485等方式接入;甚至是可通過APP、后臺、小程序等方式進行設備管理。機智聯網
    發表于 11-05 19:21

    有沒有人用開發板連接公有聯網平臺

    有人連接過阿里華為或者騰訊這類聯網
    發表于 11-26 10:51

    STM32F103C8T6連接阿里聯網平臺

    STM32F103C8T6連接阿里聯網平臺(1)—阿里lot Studio控制Web開發分
    發表于 08-11 09:33

    阿里聯網平臺接入NodeMCU的方法

    文章目錄NodeMCU(ESP8266) 接入阿里聯網平臺 踩坑之旅NodeMCU簡介快速入門簡單使用阿里
    發表于 11-03 07:11

    基于blinker聯網平臺使用3D打印制作的一個澆花系統

    flower care sys基于arduino Blinker的聯網植物養護系統背景信息:這是一個開源的;基于arduino;基于blinker聯網
    發表于 12-08 06:25

    NodeMCU開發板接入阿里聯網平臺和百度天工聯網平臺的注意事項

    的也是NodeMCU開發板。下面是分別是接入阿里聯網平臺和百度天工聯網
    發表于 01-24 07:46

    基于STM32機智平臺控制設備開關的相關資料推薦

    簡單粗暴 一看就懂 拒絕花里胡哨先看視頻效果啦 基于STM32的機智平臺控制設備開關(聯網)
    發表于 02-14 07:42

    【IoT開發】基于機智聯網的智能澆花教程

    控制器,esp8266聯網模塊作為通信設備,底層采用MQTT協議,連接到聯網
    發表于 07-13 15:39

    Fibocom 公有華為 技術資料

    Fibocom 公有華為 技術資料內容如下:1、華為連接教程2、華為
    發表于 01-05 12:12

    基于STM32的機智平臺控制設備開關(聯網)

    簡單粗暴 一看就懂 拒絕花里胡哨先看視頻效果啦 基于STM32的機智平臺控制設備開關(
    發表于 12-08 19:36 ?6次下載
    基于<b class='flag-5'>STM32</b>的機智<b class='flag-5'>云</b><b class='flag-5'>平臺</b>控制<b class='flag-5'>設備</b>開關(<b class='flag-5'>物</b><b class='flag-5'>聯網</b>)

    【IoT開發】基于機智聯網的智能澆花教程

    本文設計一套基于聯網的智能澆花系統,可以根據傳感器檢測數據及環境溫度等因素自動澆花,又可以通過聯網
    的頭像 發表于 07-13 15:53 ?1112次閱讀
    【IoT開發】基于機智<b class='flag-5'>云</b><b class='flag-5'>物</b><b class='flag-5'>聯網</b>的智能<b class='flag-5'>澆花</b>教程

    嵌入式澆花神器拆解

    這就是澆花神器,很小巧的一個東西,可以把水桶中的水泵到花盆中。它可以用按鍵手動操作,不過更方便的是通過WiFi連接網絡,這樣就可以通過手機端的APP遠程操作了,還可以定時操作,間隔多長時間澆一次,每次膠水多長時間都可以設置。
    的頭像 發表于 08-29 10:11 ?352次閱讀
    嵌入式<b class='flag-5'>澆花神器</b>拆解
    主站蜘蛛池模板: 欧美午夜小视频| 亚洲一区二区中文字5566| 美女被免费网站视频九色| 色老成人精品视频在线观看| 日本一区二区免费在线观看| 亚洲免费在线观看视频| 日本不卡一区| 一级毛片免费网站| 四虎永久在线精品免费影视 | 夜夜做夜夜爽| 成人午夜毛片| 羞羞影院男女午夜爽爽影视| 成人欧美一区二区三区视频不卡| 成人伊人| 色综合色综合色综合网址| 午夜啪| 色综合免费视频| va国产| 免费男女| 国产福利vr专区精品| 午夜欧美在线| 亚洲天堂婷婷| 亚洲成年人影院| 四虎地址8848最新章节| 四虎院影永久在线观看| 日本免费黄视频| 欧美性猛交xxxxbbbb| 激情综合网激情| 国产一级aaa全黄毛片| 激情综合六月| 亚洲午夜久久久久国产| 久久99爱爱| 91国在线啪精品一区| 亚洲一区亚洲二区| 一级毛片黄色| 女人的天堂网站| 91精品国产91久久久久青草| 国产成人精品曰本亚洲77美色| 国产三级a三级三级野外| 午夜资源| 免费视频h|