伴隨著網(wǎng)絡(luò)技術(shù),各種通訊技術(shù),傳感器技術(shù)的飛速發(fā)展,物聯(lián)網(wǎng)技術(shù)成為了當(dāng)今技術(shù)領(lǐng)域發(fā)展為迅速的技術(shù)。而物聯(lián)網(wǎng)技術(shù)的核心仍然是以互聯(lián)網(wǎng)技術(shù)為基礎(chǔ)的,物聯(lián)網(wǎng)是新一代信息技術(shù)的重要組成部分,也是信息化時(shí)代的重要發(fā)展階段。物聯(lián)網(wǎng)通過(guò)智能感知、識(shí)別技術(shù)與普適計(jì)算等通信感知技術(shù),廣泛應(yīng)用于網(wǎng)絡(luò)的融合中,也因此被稱(chēng)為繼計(jì)算機(jī)、互聯(lián)網(wǎng)之后世界信息產(chǎn)業(yè)發(fā)展的第三次浪潮。
本設(shè)計(jì)的模型來(lái)源于物流、礦山、高速公路等場(chǎng)合,車(chē)輛稱(chēng)重地螃的智能化升級(jí)要求,設(shè)計(jì)基于物聯(lián)網(wǎng)的智能在線(xiàn)稱(chēng)重方案,開(kāi)發(fā)智能稱(chēng)重控制器,合理選擇部署多個(gè)重量傳感器和必要的算法、通過(guò)WIFF通信模塊、GPS定位模塊,采集車(chē)輛重?cái)?shù)據(jù)一地理位置信息,并通過(guò)網(wǎng)絡(luò)發(fā)送至云平臺(tái),設(shè)計(jì)圖形化UI界面展示稱(chēng)重、地圖位置等重要信息,實(shí)現(xiàn)對(duì)稱(chēng)重系統(tǒng)的遠(yuǎn)程監(jiān)測(cè)。
隨著物聯(lián)網(wǎng)技術(shù)的逐步發(fā)展和日趨成熟,物聯(lián)網(wǎng)技術(shù)是一個(gè)大而廣的應(yīng)用技術(shù),并非僅僅局限于延伸應(yīng)用。相信對(duì)地磅來(lái)說(shuō)必然會(huì)有更多創(chuàng)新的應(yīng)用實(shí)踐??偟膩?lái)說(shuō),地磅現(xiàn)代化、信息化、智能化一定緊隨物聯(lián)網(wǎng)技術(shù)的發(fā)展,而物聯(lián)網(wǎng)技術(shù)的發(fā)展也必將促使地磅興起新的技術(shù)革命。
設(shè)計(jì)的技術(shù)與硬件選項(xiàng)總結(jié):
(1)云端通信模塊采用ESP8266-WIFI
(2)聯(lián)網(wǎng)通信模塊采用:ESP8266
(3)GPS模塊:采用ATGM336H雙模GPS模塊
(4)電子秤模塊:用于稱(chēng)重
(5)物聯(lián)網(wǎng)云平臺(tái):采用華為云物聯(lián)網(wǎng)平臺(tái)
設(shè)計(jì)總結(jié):
(1)采用ESP8266連接OneNet上傳稱(chēng)重?cái)?shù)據(jù)和GPS數(shù)據(jù)到云端(采用HTTP協(xié)議)
云端上顯示2個(gè)數(shù)據(jù):GPS定位數(shù)據(jù)–地圖顯示,稱(chēng)重傳感器的數(shù)據(jù)值
(2)3個(gè)稱(chēng)重傳感器接一個(gè)秤面稱(chēng)重計(jì)算平均值
(3)本地OLED顯示屏顯示GPS經(jīng)緯度數(shù)據(jù)、稱(chēng)重傳感器的數(shù)據(jù)值。
(4)OLED設(shè)計(jì)一個(gè)頁(yè)面顯示并設(shè)置當(dāng)前的報(bào)警上限。通過(guò)按鍵進(jìn)行加減
	當(dāng)稱(chēng)重的閥值超出了設(shè)置閥值,蜂鳴器報(bào)警。
	

	
	

	
	

	
	

2. 硬件選型
2.1 STM32F103C8T6
STM32F103C8T6是一款基于ARM Cortex-M 內(nèi)核STM32系列的32位的微控制器,程序存儲(chǔ)器容量是64KB,需要電壓2V~3.6V,工作溫度為-40°C ~ 85°C。

2.2 電子秤傳感器

HX711 是一款專(zhuān)為高精度稱(chēng)重傳感器而設(shè)計(jì)的24位A/D 轉(zhuǎn)換器芯片。
2.3 ESP8266-wifi

2.4 GPS模塊

2.5 蜂鳴器

3. 創(chuàng)建云端產(chǎn)品與設(shè)備
3.1 創(chuàng)建產(chǎn)品
	地址:https://www.huaweicloud.com/?locale=zh-cn
	

	
	

	
	

	
	

3.2 創(chuàng)建設(shè)備
	地址: https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/device/all-device
	

	
	

3.3 自定義模型數(shù)據(jù)
	鏈接:https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-dev/all-product/7211833377cf435c8c0580de390eedbe/product-detail/6277d70223aaf461a0f72a56
	這個(gè)模型數(shù)據(jù)就是設(shè)備要上傳的數(shù)據(jù)。
	

	
	

	
	

	
	

	
	

{
    "device_id": "6277d70223aaf461a0f72a56_weigh",
    "secret": "12345678"
}
服務(wù)ID: weigh
屬性名稱(chēng)	數(shù)據(jù)類(lèi)型	訪(fǎng)問(wèn)方式	描述	    
weigh	   int(整型)	可讀	   重量	      
GPS	   string(字符串)	可讀	  GPS定位信息	
3.4 MQTT密匙生成
	創(chuàng)建完產(chǎn)品、設(shè)備之后,接下來(lái)就需要知道如何通過(guò)MQTT協(xié)議登陸華為云服務(wù)器。
	官方的詳細(xì)介紹在這里:
	https://support.huaweicloud.com/devg-iothub/iot_01_2127.html#ZH-CN_TOPIC_0240834853__zh-cn_topic_0251997880_li365284516112
	屬性上報(bào)格式:
	https://support.huaweicloud.com/api-iothub/iot_06_v5_3010.html
	


	MQTT設(shè)備登陸密匙生成地址: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/
	

	
	

DeviceId 		6277d70223aaf461a0f72a56_weigh
DeviceSecret 	12345678
ClientId		6277d70223aaf461a0f72a56_weigh_0_0_2022050814
Username		6277d70223aaf461a0f72a56_weigh
Password       0a3d097c6449b8526a562006a74c8c5e61ce63d6c831ea291560736a3332cf77
	華為云物聯(lián)網(wǎng)平臺(tái)的域名是: 161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com
	華為云物聯(lián)網(wǎng)平臺(tái)的IP地址是:121.36.42.100
	在軟件里參數(shù)填充正確之后,就看到設(shè)備已經(jīng)連接成功了。
	接下來(lái)打開(kāi)設(shè)備頁(yè)面,可以看到設(shè)備已經(jīng)在線(xiàn)了。
	

	
	

3.5 主題訂閱與發(fā)布
//訂閱主題: 平臺(tái)下發(fā)消息給設(shè)備
$oc/devices/6277d70223aaf461a0f72a56_weigh/sys/messages/down
//設(shè)備上報(bào)數(shù)據(jù)
$oc/devices/6277d70223aaf461a0f72a56_weigh/sys/properties/report
//上報(bào)的屬性消息 (一次可以上報(bào)多個(gè)屬性,在json里增加就行了)
{"services": [{"service_id": "weigh","properties":{"GPS":"lat:12.345,lng:45.678"}}]}
	通過(guò)MQTT客戶(hù)端軟件模擬上報(bào)測(cè)試:
	

	
	查看控制臺(tái)頁(yè)面,數(shù)據(jù)已經(jīng)上傳成功了。
	

3.6 應(yīng)用側(cè)開(kāi)發(fā)
為了更方便的展示設(shè)備數(shù)據(jù),與設(shè)備完成交互,還需要開(kāi)發(fā)一個(gè)配套的上位機(jī),官方提供了應(yīng)用側(cè)開(kāi)發(fā)的API接口、SDK接口,為了方便通用一點(diǎn),我這里采用了API接口完成數(shù)據(jù)交互,上位機(jī)軟件采用QT開(kāi)發(fā)。
幫助文檔地址: https://support.huaweicloud.com/api-iothub/iot_06_v5_0034.html
設(shè)備屬性就是設(shè)備上傳的傳感器狀態(tài)數(shù)據(jù)信息,應(yīng)用側(cè)提供了API接口,可以主動(dòng)向設(shè)備端下發(fā)請(qǐng)求指令;設(shè)備端收到指令之后需要按照約定的數(shù)據(jù)格式上報(bào)數(shù)據(jù);所以,要實(shí)現(xiàn)應(yīng)用層與設(shè)備端的數(shù)據(jù)交互,需要應(yīng)用層與設(shè)備端配合才能完成。

	
	

	在使用接口時(shí),最好先使用華為自己的調(diào)試接口測(cè)試。
	https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=IoTDA&api=ListProperties
	

上位機(jī)軟件采用Qt框架設(shè)計(jì),Qt是一個(gè)跨平臺(tái)的C++圖形用戶(hù)界面應(yīng)用程序框架。Qt是一個(gè)1991年由Qt Company開(kāi)發(fā)的跨平臺(tái)C++圖形用戶(hù)界面應(yīng)用程序開(kāi)發(fā)框架。它既可以開(kāi)發(fā)GUI程序,也可用于開(kāi)發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器。簡(jiǎn)單來(lái)說(shuō),QT可以很輕松的幫你做帶界面的軟件,甚至不需要你投入很大精力。
	QT官網(wǎng): https://www.qt.io/
	

4. STM32設(shè)備端開(kāi)發(fā)
4.1 程序下載

4.2 原理圖

4.3 硬件接線(xiàn)
(1)OLED顯示屏接線(xiàn):
D0----(SCK)------------------->>PB14
D1----(MOSI)------------------>>PB13
RES—(復(fù)位腳低電平有效)-------->>PB12
DC--(數(shù)據(jù)和命令控制管腳)------>>PB1
CS--(片選引腳)---------------->>PA7
GND--------------------------->>GND
VCC--------------------------->>3.3V或者5V
(2)ATK-ESP8266 WIFI接線(xiàn)
PA2(TX)--RXD 模塊接收腳
PA3(RX)--TXD 模塊發(fā)送腳
GND---GND 地
VCC---VCC 電源(3.3V~5.0V)
(3)外接蜂鳴器模塊: 高電平響
BEEP----->PB8
(4)外接按鍵:
KEY1 -PB3 按下是低電平  清零
KEY2 -PB2 按下是低電平  翻頁(yè)
KEY3 -PB6 按下是低電平  加
KEY4 -PB7 按下是低電平  減
(5)外接LED燈模塊:
LED1-PB4 低電平亮
LED2-PB5 低電平亮
(6)稱(chēng)重傳感器1
VCC--->5V
SCK--->PA4   時(shí)序控制腳--對(duì)STM32--輸出模式
DT---->PA5   輸出輸出腳-對(duì)STM32--輸入模式
GND--->GND
(7)稱(chēng)重傳感器2
VCC--->5V
SCK--->PA11   時(shí)序控制腳--對(duì)STM32--輸出模式
DT---->PA12   輸出輸出腳-對(duì)STM32--輸入模式
GND--->GND
(8)稱(chēng)重傳感器3
VCC--->5V
SCK--->PA6   時(shí)序控制腳--對(duì)STM32--輸出模式
DT---->PA8   輸出輸出腳-對(duì)STM32--輸入模式
GND--->GND
(9)GPS模塊接線(xiàn)說(shuō)明
GND----GND
VCC---3.3V
PB11----GPS_TX
PB10----GPS_RX
(--)板載LED燈:低電平亮
LED1--PC13  
BEEP2--PC14
(--)板載按鍵: 
KEY1--PA0  按下為高電平
4.4 MQTT連接代碼
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include 
#include "timer.h"
#include "bluetooth.h"
#include "esp8266.h"
#include "mqtt.h"
//華為物聯(lián)網(wǎng)服務(wù)器的設(shè)備信息
#define MQTT_ClientID "61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510"
#define MQTT_UserName "61b9ba3a2b2aa20288c1e7f1_QQ1126626497"
#define MQTT_PassWord "385ce91dfe7da5b7431868d5d87e7998163c493344040935d5a00024d6324242"
//訂閱與發(fā)布的主題
#define SET_TOPIC  "$oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510/sys/messages/down"  //訂閱
#define POST_TOPIC "$oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510/sys/properties/report"  //發(fā)布
char mqtt_message[200];//上報(bào)數(shù)據(jù)緩存區(qū)
int main()
{
   u32 time_cnt=0;
   u32 i;
   u8 key;
   LED_Init();
   BEEP_Init();
   KEY_Init();
   USART1_Init(115200);
   TIMER1_Init(72,20000); //超時(shí)時(shí)間20ms
   USART2_Init(9600);//串口-藍(lán)牙
   TIMER2_Init(72,20000); //超時(shí)時(shí)間20ms
   USART3_Init(115200);//串口-WIFI
   TIMER3_Init(72,20000); //超時(shí)時(shí)間20ms
   USART1_Printf("正在初始化WIFI請(qǐng)稍等.\n");
   if(ESP8266_Init())
   {
      USART1_Printf("ESP8266硬件檢測(cè)錯(cuò)誤.\n");  
   }
   else
   {
      //非加密端口
      USART1_Printf("WIFI:%d\n",ESP8266_STA_TCP_Client_Mode("CMCC-Cqvn","99pu58cb","121.36.42.100",1883,1));
  
   }
   
    //2. MQTT協(xié)議初始化	
    MQTT_Init(); 
    //3. 連接華為服務(wù)器        
    while(MQTT_Connect(MQTT_ClientID,MQTT_UserName,MQTT_PassWord))
    {
        USART1_Printf("服務(wù)器連接失敗,正在重試...\n");
        delay_ms(500);
    }
    USART1_Printf("服務(wù)器連接成功.\n");
    
    //3. 訂閱主題
    if(MQTT_SubscribeTopic(SET_TOPIC,0,1))
    {
        USART1_Printf("主題訂閱失敗.\n");
    }
    else
    {
        USART1_Printf("主題訂閱成功.\n");
    }        
    
    .........
        
4.5 ESP8266代碼
#include "esp8266.h"
u8 ESP8266_IP_ADDR[16]; //255.255.255.255
u8 ESP8266_MAC_ADDR[18]; //硬件地址
/*
函數(shù)功能: ESP8266命令發(fā)送函數(shù)
函數(shù)返回值:0表示成功  1表示失敗
*/
u8 ESP8266_SendCmd(char *cmd)
{
    u8 i,j;
    for(i=0;i<10;i++) //檢測(cè)的次數(shù)--發(fā)送指令的次數(shù)
    {
        USARTx_StringSend(USART3,cmd);
        for(j=0;j<100;j++) //等待的時(shí)間
        {
            delay_ms(50);
            if(USART3_RX_FLAG)
            {
                USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                USART3_RX_FLAG=0;
                USART3_RX_CNT=0;
                if(strstr((char*)USART3_RX_BUFFER,"OK"))
                {
                    return 0;
                }
            }
        }
    }
    return 1;
}
/*
函數(shù)功能: ESP8266硬件初始化檢測(cè)函數(shù)
函數(shù)返回值:0表示成功  1表示失敗
*/
u8 ESP8266_Init(void)
{
    //退出透?jìng)髂J?    USARTx_StringSend(USART3,"+++");
    delay_ms(50);
    return ESP8266_SendCmd("AT\r\n");
}
/*
函數(shù)功能: 一鍵配置WIFI為AP+TCP服務(wù)器模式
函數(shù)參數(shù):
char *ssid  創(chuàng)建的熱點(diǎn)名稱(chēng)
char *pass  創(chuàng)建的熱點(diǎn)密碼 (最少8位)
u16 port    創(chuàng)建的服務(wù)器端口號(hào)
函數(shù)返回值: 0表示成功 其他值表示對(duì)應(yīng)錯(cuò)誤值
*/
u8 ESP8266_AP_TCP_Server_Mode(char *ssid,char *pass,u16 port)
{
    char *p;
    u8 i;
    char ESP8266_SendCMD[100]; //組合發(fā)送過(guò)程中的命令
    /*1. 測(cè)試硬件*/
    if(ESP8266_SendCmd("AT\r\n"))return 1;
    /*2. 關(guān)閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 2;
    /*3. 設(shè)置WIFI模式*/
    if(ESP8266_SendCmd("AT+CWMODE=2\r\n"))return 3;
    /*4. 復(fù)位*/
    ESP8266_SendCmd("AT+RST\r\n");
    delay_ms(1000);
    delay_ms(1000);
    delay_ms(1000);
    /*5. 關(guān)閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 5;
    /*6. 設(shè)置WIFI的AP模式參數(shù)*/
    sprintf(ESP8266_SendCMD,"AT+CWSAP=\"%s\",\"%s\",1,4\r\n",ssid,pass);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 6;
    /*7. 開(kāi)啟多連接*/
    if(ESP8266_SendCmd("AT+CIPMUX=1\r\n"))return 7;
    /*8. 設(shè)置服務(wù)器端口號(hào)*/
    sprintf(ESP8266_SendCMD,"AT+CIPSERVER=1,%d\r\n",port);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 8;
    /*9. 查詢(xún)本地IP地址*/
    if(ESP8266_SendCmd("AT+CIFSR\r\n"))return 9;
    //提取IP地址
    p=strstr((char*)USART3_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*)USART3_RX_BUFFER,"APMAC");
    if(p)
    {
        p+=7;
        for(i=0;*p!='"';i++)
        {
            ESP8266_MAC_ADDR[i]=*p++;
        }
        ESP8266_MAC_ADDR[i]='\0';
    }
    
    //打印總體信息
    USART1_Printf("當(dāng)前WIFI模式:AP+TCP服務(wù)器\n");
    USART1_Printf("當(dāng)前WIFI熱點(diǎn)名稱(chēng):%s\n",ssid);
    USART1_Printf("當(dāng)前WIFI熱點(diǎn)密碼:%s\n",pass);
    USART1_Printf("當(dāng)前TCP服務(wù)器端口號(hào):%d\n",port);
    USART1_Printf("當(dāng)前TCP服務(wù)器IP地址:%s\n",ESP8266_IP_ADDR);
    USART1_Printf("當(dāng)前TCP服務(wù)器MAC地址:%s\n",ESP8266_MAC_ADDR);
    return 0;
}
/*
函數(shù)功能: TCP服務(wù)器模式下的發(fā)送函數(shù)
發(fā)送指令: 
*/
u8 ESP8266_ServerSendData(u8 id,u8 *data,u16 len)
{
    u8 i,j,n;
    char ESP8266_SendCMD[100]; //組合發(fā)送過(guò)程中的命令
    for(i=0;i<10;i++)
    {
        sprintf(ESP8266_SendCMD,"AT+CIPSEND=%d,%d\r\n",id,len);
        USARTx_StringSend(USART3,ESP8266_SendCMD);
        for(j=0;j<10;j++)
        {
            delay_ms(50);
            if(USART3_RX_FLAG)
            {
                USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                USART3_RX_FLAG=0;
                USART3_RX_CNT=0;
                if(strstr((char*)USART3_RX_BUFFER,">"))
                {
                    //繼續(xù)發(fā)送數(shù)據(jù)
                    USARTx_DataSend(USART3,data,len);
                    //等待數(shù)據(jù)發(fā)送成功
                    for(n=0;n<200;n++)
                    {
                        delay_ms(50);
                        if(USART3_RX_FLAG)
                        {
                            USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                            USART3_RX_FLAG=0;
                            USART3_RX_CNT=0;
                            if(strstr((char*)USART3_RX_BUFFER,"SEND OK"))
                            {
                                return 0;
                            }
                         }            
                    }   
                }
            }
        }
    }
    return 1;
}
/*
函數(shù)功能: 配置WIFI為STA模式+TCP客戶(hù)端模式
函數(shù)參數(shù):
char *ssid  創(chuàng)建的熱點(diǎn)名稱(chēng)
char *pass  創(chuàng)建的熱點(diǎn)密碼 (最少8位)
char *p     將要連接的服務(wù)器IP地址
u16 port    將要連接的服務(wù)器端口號(hào)
u8 flag     1表示開(kāi)啟透?jìng)髂J?0表示關(guān)閉透?jìng)髂J?函數(shù)返回值:0表示成功  其他值表示對(duì)應(yīng)的錯(cuò)誤
*/
u8 ESP8266_STA_TCP_Client_Mode(char *ssid,char *pass,char *ip,u16 port,u8 flag)
{
    char ESP8266_SendCMD[100]; //組合發(fā)送過(guò)程中的命令
    //退出透?jìng)髂J?    //USARTx_StringSend(USART3,"+++");
    //delay_ms(50);
    /*1. 測(cè)試硬件*/
    if(ESP8266_SendCmd("AT\r\n"))return 1;
    /*2. 關(guān)閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 2;
    /*3. 設(shè)置WIFI模式*/
    if(ESP8266_SendCmd("AT+CWMODE=1\r\n"))return 3;
    /*4. 復(fù)位*/
    ESP8266_SendCmd("AT+RST\r\n");
    delay_ms(1000);
    delay_ms(1000);
    delay_ms(1000);
    /*5. 關(guān)閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 5;
    /*6. 配置將要連接的WIFI熱點(diǎn)信息*/
    sprintf(ESP8266_SendCMD,"AT+CWJAP=\"%s\",\"%s\"\r\n",ssid,pass);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 6;
    /*7. 設(shè)置單連接*/
    if(ESP8266_SendCmd("AT+CIPMUX=0\r\n"))return 7;
    /*8. 配置要連接的TCP服務(wù)器信息*/
    sprintf(ESP8266_SendCMD,"AT+CIPSTART=\"TCP\",\"%s\",%d\r\n",ip,port);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 8;
    /*9. 開(kāi)啟透?jìng)髂J?/
    if(flag)
    {
       if(ESP8266_SendCmd("AT+CIPMODE=1\r\n"))return 9; //開(kāi)啟
       if(ESP8266_SendCmd("AT+CIPSEND\r\n"))return 10;  //開(kāi)始透?jìng)?       if(!(strstr((char*)USART3_RX_BUFFER,">")))
       {
            return 11;
       }
        //如果想要退出發(fā)送:  "+++"
    }
    
     //打印總體信息
    USART1_Printf("當(dāng)前WIFI模式:STA+TCP客戶(hù)端\n");
    USART1_Printf("當(dāng)前連接的WIFI熱點(diǎn)名稱(chēng):%s\n",ssid);
    USART1_Printf("當(dāng)前連接的WIFI熱點(diǎn)密碼:%s\n",pass);
    USART1_Printf("當(dāng)前連接的TCP服務(wù)器端口號(hào):%d\n",port);
    USART1_Printf("當(dāng)前連接的TCP服務(wù)器IP地址:%s\n",ip);
    return 0;
}
/*
函數(shù)功能: TCP客戶(hù)端模式下的發(fā)送函數(shù)
發(fā)送指令: 
*/
u8 ESP8266_ClientSendData(u8 *data,u16 len)
{
    u8 i,j,n;
    char ESP8266_SendCMD[100]; //組合發(fā)送過(guò)程中的命令
    for(i=0;i<10;i++)
    {
        sprintf(ESP8266_SendCMD,"AT+CIPSEND=%d\r\n",len);
        USARTx_StringSend(USART3,ESP8266_SendCMD);
        for(j=0;j<10;j++)
        {
            delay_ms(50);
            if(USART3_RX_FLAG)
            {
                USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                USART3_RX_FLAG=0;
                USART3_RX_CNT=0;
                if(strstr((char*)USART3_RX_BUFFER,">"))
                {
                    //繼續(xù)發(fā)送數(shù)據(jù)
                    USARTx_DataSend(USART3,data,len);
                    //等待數(shù)據(jù)發(fā)送成功
                    for(n=0;n<200;n++)
                    {
                        delay_ms(50);
                        if(USART3_RX_FLAG)
                        {
                            USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                            USART3_RX_FLAG=0;
                            USART3_RX_CNT=0;
                            if(strstr((char*)USART3_RX_BUFFER,"SEND OK"))
                            {
                                return 0;
                            }
                         }            
                    }   
                }
            }
        }
    }
    return 1;
}
審核編輯:湯梓紅
                                        - 
                                物聯(lián)網(wǎng)
                                +關(guān)注
關(guān)注
2938文章
47081瀏覽量
404766 - 
                                STM32
                                +關(guān)注
關(guān)注
2302文章
11108瀏覽量
370256 - 
                                稱(chēng)重系統(tǒng)
                                +關(guān)注
關(guān)注
0文章
17瀏覽量
8308 - 
                                ESP8266
                                +關(guān)注
關(guān)注
51文章
965瀏覽量
48850 - 
                                華為云
                                +關(guān)注
關(guān)注
3文章
2800瀏覽量
19021 
發(fā)布評(píng)論請(qǐng)先 登錄
基于STM32+ESP8266+華為云IoT設(shè)計(jì)的健康管理系統(tǒng)并完成應(yīng)用側(cè)開(kāi)發(fā)
    
基于STM32+華為云IOT設(shè)計(jì)的智能防盜單車(chē)鎖
    
基于STM32+NBIOT+華為云IOT設(shè)計(jì)的智能井蓋
    
基于STM32+華為云IOT設(shè)計(jì)的智能溫室大棚監(jiān)控系統(tǒng)
    
基于STM32+華為云設(shè)計(jì)的智慧煙感系統(tǒng)
    
基于STM32設(shè)計(jì)的智能門(mén)鎖(華為云IOT)
    
基于STM32設(shè)計(jì)的智能家居控制系統(tǒng)(華為云IOT)
    
設(shè)計(jì)基于STM32+機(jī)智云的手機(jī)APP點(diǎn)燈遇到哪些問(wèn)題
使用MQTT方式對(duì)接華為云IoT平臺(tái)的具體過(guò)程
基于OpenHarmony的華為云IoT智慧路燈實(shí)現(xiàn)
基于OpenHarmony的華為云IoT智慧路燈
【IoT畢設(shè).6】STM32+機(jī)智云物聯(lián)網(wǎng)+系統(tǒng)驗(yàn)證與調(diào)試
【合作伙伴】華為云--智能見(jiàn)未來(lái)
基于STM32+華為云IOT設(shè)計(jì)的云平臺(tái)監(jiān)控系統(tǒng)
    
IoT畢業(yè)設(shè)計(jì) | STM32+機(jī)智云AIoT云平臺(tái)實(shí)現(xiàn)智能鴿籠控制
    
          
        
        
基于STM32+華為云IOT設(shè)計(jì)智能稱(chēng)重系統(tǒng)
                
 
           
            
            
                
            
評(píng)論