0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32+華為云IOT設(shè)計(jì)智能稱重系統(tǒng)

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-05-28 14:17 ? 次閱讀

伴隨著網(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)通過智能感知、識(shí)別技術(shù)與普適計(jì)算等通信感知技術(shù),廣泛應(yīng)用于網(wǎng)絡(luò)的融合中,也因此被稱為繼計(jì)算機(jī)、互聯(lián)網(wǎng)之后世界信息產(chǎn)業(yè)發(fā)展的第三次浪潮。

本設(shè)計(jì)的模型來源于物流、礦山、高速公路等場(chǎng)合,車輛稱重地螃的智能化升級(jí)要求,設(shè)計(jì)基于物聯(lián)網(wǎng)的智能在線稱重方案,開發(fā)智能稱重控制器,合理選擇部署多個(gè)重量傳感器和必要的算法、通過WIFF通信模塊、GPS定位模塊,采集車輛重?cái)?shù)據(jù)一地理位置信息,并通過網(wǎng)絡(luò)發(fā)送至云平臺(tái),設(shè)計(jì)圖形化UI界面展示稱重、地圖位置等重要信息,實(shí)現(xiàn)對(duì)稱重系統(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ì)地磅來說必然會(huì)有更多創(chuàng)新的應(yīng)用實(shí)踐??偟膩碚f,地磅現(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)電子秤模塊:用于稱重

(5)物聯(lián)網(wǎng)云平臺(tái):采用華為云物聯(lián)網(wǎng)平臺(tái)

設(shè)計(jì)總結(jié):

(1)采用ESP8266連接OneNet上傳稱重?cái)?shù)據(jù)和GPS數(shù)據(jù)到云端(采用HTTP協(xié)議)

云端上顯示2個(gè)數(shù)據(jù):GPS定位數(shù)據(jù)–地圖顯示,稱重傳感器的數(shù)據(jù)值

(2)3個(gè)稱重傳感器接一個(gè)秤面稱重計(jì)算平均值

(3)本地OLED顯示屏顯示GPS經(jīng)緯度數(shù)據(jù)、稱重傳感器的數(shù)據(jù)值。

(4)OLED設(shè)計(jì)一個(gè)頁面顯示并設(shè)置當(dāng)前的報(bào)警上限。通過按鍵進(jìn)行加減

當(dāng)稱重的閥值超出了設(shè)置閥值,蜂鳴器報(bào)警。

image-20220423172247041.png


image-20220423172310175.png


image-20220423172332897.png


image.png

2. 硬件選型

2.1 STM32F103C8T6

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

image-20220420111635569.png

2.2 電子秤傳感器

image-20220421100325942.png

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

2.3 ESP8266-wifi

image-20220420112202167.png

2.4 GPS模塊

image-20220420131853905.png

2.5 蜂鳴器

image-20220415203419349.png

3. 創(chuàng)建云端產(chǎn)品與設(shè)備

3.1 創(chuàng)建產(chǎn)品

地址:https://www.huaweicloud.com/?locale=zh-cn

image.png


image.png


image.png


image.png

3.2 創(chuàng)建設(shè)備

地址: https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/device/all-device

image.png


image.png

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ù)。

image.png


image.png


image.png


image.png


image.png
{
    "device_id": "6277d70223aaf461a0f72a56_weigh",
    "secret": "12345678"
}

服務(wù)ID: weigh
屬性名稱	數(shù)據(jù)類型	訪問方式	描述	    
weigh	   int(整型)	可讀	   重量	      
GPS	   string(字符串)	可讀	  GPS定位信息	


3.4 MQTT密匙生成

創(chuàng)建完產(chǎn)品、設(shè)備之后,接下來就需要知道如何通過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

image.pngimage.png

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

image.png


image.png
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)連接成功了。
接下來打開設(shè)備頁面,可以看到設(shè)備已經(jīng)在線了。

image.png


image.png

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"}}]}

通過MQTT客戶端軟件模擬上報(bào)測(cè)試:

image.png


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

image.png

3.6 應(yīng)用側(cè)開發(fā)

為了更方便的展示設(shè)備數(shù)據(jù),與設(shè)備完成交互,還需要開發(fā)一個(gè)配套的上位機(jī),官方提供了應(yīng)用側(cè)開發(fā)的API接口、SDK接口,為了方便通用一點(diǎn),我這里采用了API接口完成數(shù)據(jù)交互,上位機(jī)軟件采用QT開發(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è)備端配合才能完成。

image.png


image.png

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

image.png

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

QT官網(wǎng): https://www.qt.io/

image.png

4. STM32設(shè)備端開發(fā)

4.1 程序下載

image-20220423172434570.png

4.2 原理圖

image-20220423172622099.png

4.3 硬件接線

(1)OLED顯示屏接線:
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接線
PA2(TX)--RXD 模塊接收腳
PA3(RX)--TXD 模塊發(fā)送腳
GND---GND 地
VCC---VCC 電源(3.3V~5.0V)

(3)外接蜂鳴器模塊: 高電平響
BEEP----->PB8

(4)外接按鍵:
KEY1 -PB3 按下是低電平  清零
KEY2 -PB2 按下是低電平  翻頁
KEY3 -PB6 按下是低電平  加
KEY4 -PB7 按下是低電平  減

(5)外接LED燈模塊:
LED1-PB4 低電平亮
LED2-PB5 低電平亮

(6)稱重傳感器1
VCC--->5V
SCK--->PA4   時(shí)序控制腳--對(duì)STM32--輸出模式
DT---->PA5   輸出輸出腳-對(duì)STM32--輸入模式
GND--->GND

(7)稱重傳感器2
VCC--->5V
SCK--->PA11   時(shí)序控制腳--對(duì)STM32--輸出模式
DT---->PA12   輸出輸出腳-對(duì)STM32--輸入模式
GND--->GND

(8)稱重傳感器3
VCC--->5V
SCK--->PA6   時(shí)序控制腳--對(duì)STM32--輸出模式
DT---->PA8   輸出輸出腳-對(duì)STM32--輸入模式
GND--->GND

(9)GPS模塊接線說明
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)名稱
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ā)送過程中的命令
    /*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. 開啟多連接*/
    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. 查詢本地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)名稱:%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ā)送過程中的命令
    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客戶端模式
函數(shù)參數(shù):
char *ssid  創(chuàng)建的熱點(diǎn)名稱
char *pass  創(chuàng)建的熱點(diǎn)密碼 (最少8位)
char *p     將要連接的服務(wù)器IP地址
u16 port    將要連接的服務(wù)器端口號(hào)
u8 flag     1表示開啟透?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ā)送過程中的命令
    //退出透?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. 開啟透?jìng)髂J?/
    if(flag)
    {
       if(ESP8266_SendCmd("AT+CIPMODE=1\r\n"))return 9; //開啟
       if(ESP8266_SendCmd("AT+CIPSEND\r\n"))return 10;  //開始透?jìng)?       if(!(strstr((char*)USART3_RX_BUFFER,">")))
       {
            return 11;
       }
        //如果想要退出發(fā)送:  "+++"
    }
    
     //打印總體信息
    USART1_Printf("當(dāng)前WIFI模式:STA+TCP客戶端\n");
    USART1_Printf("當(dāng)前連接的WIFI熱點(diǎn)名稱:%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客戶端模式下的發(fā)送函數(shù)
發(fā)送指令: 
*/
u8 ESP8266_ClientSendData(u8 *data,u16 len)
{
    u8 i,j,n;
    char ESP8266_SendCMD[100]; //組合發(fā)送過程中的命令
    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;
}


審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2902

    文章

    44116

    瀏覽量

    370415
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10858

    瀏覽量

    354384
  • 稱重系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    7965
  • ESP8266
    +關(guān)注

    關(guān)注

    50

    文章

    962

    瀏覽量

    44758
  • 華為云
    +關(guān)注

    關(guān)注

    3

    文章

    2392

    瀏覽量

    17253
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于STM32+ESP8266+華為IoT設(shè)計(jì)的健康管理系統(tǒng)并完成應(yīng)用側(cè)開發(fā)

    這篇文章就利用STM32加上各種外設(shè)傳感器配合華為IOT物聯(lián)網(wǎng)平臺(tái)設(shè)計(jì)一個(gè)健康管理設(shè)備,通過ESP8266+MQTT協(xié)議將數(shù)據(jù)傳輸導(dǎo)致華為
    的頭像 發(fā)表于 07-11 09:09 ?2505次閱讀
    基于<b class='flag-5'>STM32</b>+ESP8266+<b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IoT</b>設(shè)計(jì)的健康管理<b class='flag-5'>系統(tǒng)</b>并完成應(yīng)用側(cè)開發(fā)

    基于STM32+華為IOT設(shè)計(jì)的智能防盜單車鎖

    。目前市場(chǎng)上自行車鎖大多是傳統(tǒng)機(jī)械結(jié)構(gòu)車鎖,沒有實(shí)現(xiàn)智能化,急需解決。本文提出一種基于STM32單片機(jī)的智能自行車鎖(馬蹄鎖)的設(shè)計(jì)方法,來提高自行車鎖的智能化及安防等級(jí)。
    的頭像 發(fā)表于 05-28 14:21 ?3119次閱讀
    基于<b class='flag-5'>STM32+</b><b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IOT</b>設(shè)計(jì)的<b class='flag-5'>智能</b>防盜單車鎖

    基于STM32+NBIOT+華為IOT設(shè)計(jì)的智能井蓋

    智能井蓋是一種通過物聯(lián)網(wǎng)技術(shù)實(shí)現(xiàn)對(duì)井蓋狀態(tài)監(jiān)測(cè)和管理的設(shè)備。當(dāng)前介紹基于STM32微控制器,BC26 NBIOT模組以及華為IOT平臺(tái)設(shè)計(jì)
    的頭像 發(fā)表于 04-26 11:06 ?3764次閱讀
    基于<b class='flag-5'>STM32</b>+NBIOT+<b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IOT</b>設(shè)計(jì)的<b class='flag-5'>智能</b>井蓋

    基于STM32+華為IOT設(shè)計(jì)的智能溫室大棚監(jiān)控系統(tǒng)

    當(dāng)前文章介紹基于STM32單片機(jī)的智能溫室大棚監(jiān)控系統(tǒng),當(dāng)前系統(tǒng)由溫濕度傳感器、二氧化碳傳感器、光敏電阻傳感器、土壤濕度傳感器笨時(shí)溫宏大棚中內(nèi)作物生長(zhǎng)環(huán)境因子主要包括溫度、濕度、光度、
    的頭像 發(fā)表于 04-26 11:08 ?6681次閱讀
    基于<b class='flag-5'>STM32+</b><b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IOT</b>設(shè)計(jì)的<b class='flag-5'>智能</b>溫室大棚監(jiān)控<b class='flag-5'>系統(tǒng)</b>

    基于STM32+華為設(shè)計(jì)的智慧煙感系統(tǒng)

    當(dāng)前基于STM32華為,設(shè)計(jì)了一種智慧煙感系統(tǒng),該系統(tǒng)可以檢測(cè)煙霧,同時(shí)將檢測(cè)到的數(shù)據(jù)上傳到云端進(jìn)行處理和分析。
    的頭像 發(fā)表于 04-26 11:16 ?7687次閱讀
    基于<b class='flag-5'>STM32+</b><b class='flag-5'>華為</b><b class='flag-5'>云</b>設(shè)計(jì)的智慧煙感<b class='flag-5'>系統(tǒng)</b>

    基于STM32設(shè)計(jì)的智能門鎖(華為IOT)

    這篇文章就介紹如何使用華為物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)智能鎖的應(yīng)用場(chǎng)景構(gòu)建,硬件采用STM32F103ZET6 + ESP8266+步進(jìn)電機(jī)實(shí)現(xiàn)。在華為
    的頭像 發(fā)表于 07-11 13:53 ?3200次閱讀
    基于<b class='flag-5'>STM32</b>設(shè)計(jì)的<b class='flag-5'>智能</b>門鎖(<b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IOT</b>)

    基于STM32設(shè)計(jì)的智能家居控制系統(tǒng)華為IOT

    設(shè)計(jì)了一款基于華為物聯(lián)網(wǎng)平臺(tái)的智能家居控制系統(tǒng),硬件采用了STM32和ESP8266的組合,實(shí)現(xiàn)了設(shè)備的上
    的頭像 發(fā)表于 07-11 13:58 ?3307次閱讀
    基于<b class='flag-5'>STM32</b>設(shè)計(jì)的<b class='flag-5'>智能</b>家居控制<b class='flag-5'>系統(tǒng)</b>(<b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IOT</b>)

    設(shè)計(jì)基于STM32+機(jī)智的手機(jī)APP點(diǎn)燈遇到哪些問題

    設(shè)計(jì)基于STM32+機(jī)智的手機(jī)APP點(diǎn)燈遇到哪些問題?怎樣去解決?
    發(fā)表于 10-14 07:55

    使用MQTT方式對(duì)接華為IoT平臺(tái)的具體過程

    摘要:本文主要講述使用MQTT方式對(duì)接華為IoT平臺(tái)的具體過程。使用的方案:目標(biāo)板為STM32L431BearPI(帶E53擴(kuò)展板); TCPIP功能由開發(fā)板的ESP8266提供;M
    發(fā)表于 01-27 07:13

    基于OpenHarmony的華為IoT智慧路燈實(shí)現(xiàn)

    。前面的文章介紹了基于OpenHarmony的智慧路燈實(shí)現(xiàn),本文將在前面文章的基礎(chǔ)上,添加華為IoT功能,實(shí)現(xiàn)基于OpenHarmony系統(tǒng)Io
    發(fā)表于 05-10 09:36

    基于OpenHarmony的華為IoT智慧路燈

    。前面的文章介紹了基于OpenHarmony的智慧路燈實(shí)現(xiàn),本文將在前面文章的基礎(chǔ)上,添加華為IoT功能,實(shí)現(xiàn)基于OpenHarmony系統(tǒng)Io
    發(fā)表于 05-11 10:06

    IoT畢設(shè).6】STM32+機(jī)智物聯(lián)網(wǎng)+系統(tǒng)驗(yàn)證與調(diào)試

    +機(jī)智AIoT+豬舍監(jiān)測(cè)與系統(tǒng)總體方案設(shè)計(jì)第三篇內(nèi)容:系統(tǒng)硬件設(shè)計(jì)點(diǎn)擊下載:【IoT畢設(shè).3】STM32單片機(jī)+機(jī)智
    發(fā)表于 08-02 18:15

    【合作伙伴】華為--智能見未來

    華為華為IoT,致力于提供極簡(jiǎn)接入、智能化、安全可信等全棧全場(chǎng)景服務(wù)和開發(fā)、集成、托管、運(yùn)營(yíng)
    發(fā)表于 12-12 10:35

    基于STM32+華為IOT設(shè)計(jì)的平臺(tái)監(jiān)控系統(tǒng)

    智能系統(tǒng)作為新興產(chǎn)業(yè),是國(guó)家重點(diǎn)發(fā)展產(chǎn)業(yè)之一。國(guó)外自美國(guó)在1984年建設(shè)出真正的智能建筑至今為止已經(jīng)有30多年的歷史了。由于智能家居的安全、高效、便捷以,及
    的頭像 發(fā)表于 05-28 14:14 ?2321次閱讀
    基于<b class='flag-5'>STM32+</b><b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IOT</b>設(shè)計(jì)的<b class='flag-5'>云</b>平臺(tái)監(jiān)控<b class='flag-5'>系統(tǒng)</b>

    IoT畢業(yè)設(shè)計(jì) | STM32+機(jī)智AIoT平臺(tái)實(shí)現(xiàn)智能鴿籠控制

    摘要本智能鴿籠控制系統(tǒng)由貴州大學(xué)電氣工程專業(yè)的劉磊、王民慧設(shè)計(jì)開發(fā)完成,基于STM32+機(jī)智AIoT平臺(tái)設(shè)計(jì)專為賽鴿進(jìn)籠檢測(cè)的裝置,利用
    的頭像 發(fā)表于 06-23 14:30 ?950次閱讀
    <b class='flag-5'>IoT</b>畢業(yè)設(shè)計(jì) | <b class='flag-5'>STM32+</b>機(jī)智<b class='flag-5'>云</b>AIoT<b class='flag-5'>云</b>平臺(tái)實(shí)現(xiàn)<b class='flag-5'>智能</b>鴿籠控制