1、 資源介紹

可以看到,AB32VG1擁有三個全雙工串口
資源分配:
UART0 -> 上位機(jī)通訊
UART1 -> ESP8266無線網(wǎng)絡(luò)
UART2 -> 待分配
UART1所對應(yīng)的引腳為PA3和PA4,其中PA3為RX1,PA4為TX1
2、ESP8266介紹:


3、連接圖
單片機(jī)與ESP8266采用串口通訊(AT指令),功能:獲取網(wǎng)絡(luò)數(shù)據(jù)及設(shè)備聯(lián)網(wǎng)

坑1、在程序?qū)崿F(xiàn)之前,需要注意的點(diǎn),在配置中需要打開“硬件”下的UART1功能,要注意配置截圖中有沒有SDK軟件包,如果沒有打開UART1口編譯不通過。(升級軟件版本2.1.2)

坑2、還有一個坑的地方,例程中:搞不明白為什么要錯位,錯位后收到的數(shù)據(jù)為亂碼

坑3、波特率顯示問題(要么整體改)

要么單獨(dú)定義判斷i的值

4、AT指令
1、 AT+RST
功能:重啟模塊
2、AT+CWMODE=
功能:mode=1 :Station模式(接收模式)
mode=2:AP模式(發(fā)送模式)
mode=3:AP+Station模式
3、AT+ CWSAP= ,,,
功能:配置AP參數(shù)(指令只有在AP模式開啟后有效)
ssid:接入點(diǎn)名稱
pwd:密碼
chl:通道號
ecn:加密方式:(0-OPEN, 1-WEP, 2-WPA_PSK, 3-WPA2_PSK, 4-WPA_WPA2_PSK)
注意:此設(shè)置完成后,連接網(wǎng)絡(luò)會可能出現(xiàn)連接不上的情況,請發(fā)送 AT+RST 命令并等待幾分鐘之
后再連接。
4、AT+CWLIF
功能:查看已接入設(shè)備的 IP
5、AT+CIFSR
功能:查看本模塊的 IP 地址
注意: AP 模式下無效!會造成死機(jī)現(xiàn)象!
6、AT+CWMODE?
功能:查看本機(jī)配置模式
7、AT+CIPMUX?
功能:查詢本模塊是否建立多連接
說明: :0-單路連接模式, 1-多路連接模式
8、AT+CIPMODE?
功能:查詢本模塊的傳輸模式
說明: :0-非透傳模式, 1-透傳模式
9、AT+CIPSTO?
功能:查詢本模塊的服務(wù)器超時時間
10、AT+CIPMUX=1
功能:開啟多連接模式
11、AT+CIPSERVER=1,8080
功能:創(chuàng)建服務(wù)器
關(guān)閉 server 服務(wù)如下圖所示:
說明: :0-關(guān)閉 server 模式, 1-開啟 server 模式
:端口號,缺省值為 333
說明: (1) AT+ CIPMUX=1 時才能開啟服務(wù)器;關(guān)閉 server 模式需要重啟
(2)開啟 server 后自動建立 server 監(jiān)聽,當(dāng)有 client 接入會自動按順序占用一個連
接。
12、AT+CIPSTO=2880
功能:設(shè)置服務(wù)器超時時間
13、AT+CIPSTATUS
功能:查看當(dāng)前連接
說明: :連接的 id 號 0-4
:字符串參數(shù),類型 TCP 或 UDP
:字符串參數(shù), IP 地址
:端口號
: 0-本模塊做 client 的連接, 1-本模塊做 server 的連接
14、AT+CIPSEND=1,6
功能:向某個連接發(fā)送數(shù)據(jù)
指令: 1)單路連接時(+CIPMUX=0),指令為: AT+CIPSEND=
2)多路連接時(+CIPMUX=1) ,指令為: AT+CIPSEND= ,
響應(yīng):收到此命令后先換行返回”>”,然后開始接收串口數(shù)據(jù)
當(dāng)數(shù)據(jù)長度滿 length 時發(fā)送數(shù)據(jù)。
如果未建立連接或連接被斷開,返回 ERROR
如果數(shù)據(jù)發(fā)送成功,返回 SEND OK
說明: :需要用于傳輸連接的 id 號
:數(shù)字參數(shù),表明發(fā)送數(shù)據(jù)的長度,最大長度為 2048
15、AT+CIPSERVER=0
功能:關(guān)閉 server 服務(wù)
指令: AT+CIPSERVER=[,]
說明: :0-關(guān)閉 server 模式, 1-開啟 server 模式
:端口號,缺省值為 333
響應(yīng): OK
說明: (1) AT+ CIPMUX=1 時才能開啟服務(wù)器;關(guān)閉 server 模式需要重啟
(2)開啟 server 后自動建立 server 監(jiān)聽,當(dāng)有 client 接入會自動按順序占用一個連
接。
16、AT+CIPSTART=2,"TCP","192.168.4.101",8080
功能:建立 TCP 連接
指令: 1)單路連接時(+CIPMUX=0),指令為: AT+CIPSTART= ,,
2)多路連接時(+CIPMUX=1),指令為: AT+CIPSTART=,,,
響應(yīng):如果格式正確且連接成功,返回 OK,否則返回 ERROR
如果連接已經(jīng)存在,返回 ALREAY CONNECT
說明: :0-4,連接的 id 號
:字符串參數(shù),表明連接類型, ”TCP”-建立 tcp 連接, ”UDP”-建立 UDP 連接
:字符串參數(shù),遠(yuǎn)程服務(wù)器 IP 地址
:遠(yuǎn)程服務(wù)器端口號
17、AT+CIPSEND=2,8
指令: 1)單路連接時(+CIPMUX=0),指令為: AT+CIPSEND=
2)多路連接時(+CIPMUX=1) ,指令為: AT+CIPSEND= ,
響應(yīng):收到此命令后先換行返回”>”,然后開始接收串口數(shù)據(jù)
當(dāng)數(shù)據(jù)長度滿 length 時發(fā)送數(shù)據(jù)。
如果未建立連接或連接被斷開,返回 ERROR
如果數(shù)據(jù)發(fā)送成功,返回 SEND OK
說明: :需要用于傳輸連接的 id 號
:數(shù)字參數(shù),表明發(fā)送數(shù)據(jù)的長度,最大長度為 2048
18、AT+CWLAP
功能:查看當(dāng)前無線路由器列表
響應(yīng):正確: (終端返回AP列表)
+ CWLAP: ,,
OK
錯誤: ERROR
說明: < ecn >:0-OPEN, 1-WEP, 2-WPA_PSK, 3-WPA2_PSK, 4-WPA_WPA2_PSK
:字符串參數(shù),接入點(diǎn)名稱
:信號強(qiáng)度
19、AT+CWJAP=”MERSAIN”,”XXXXXXXX”
功能:加入當(dāng)前無線網(wǎng)絡(luò)
指令: AT+CWJAP=,< pwd >
說明: :字符串參數(shù),接入點(diǎn)名稱
:字符串參數(shù),密碼,最長64字節(jié)ASCII
響應(yīng):正確: OK
錯誤: ERROR
20、AT+CWJAP?
功能:檢測是否真的連上該路線網(wǎng)絡(luò)
指令: AT+CWJAP?
響應(yīng):返回當(dāng)前選擇的AP
+ CWJAP:
OK
說明: :字符串參數(shù),接入點(diǎn)名稱
21、AT+CIFSR
功能:查看模塊 IP 地址
指令: AT+CIFSR
響應(yīng):正確: + CIFSR:
OK
錯誤: ERROR
說明: :字符串參數(shù),接入點(diǎn)名稱
5、程序?qū)崿F(xiàn)
myuart.c文件
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-11-04 Administrator the first version
*/
#include
#include "string.h"
#include "applications\myuart\myuart.h"
/* 用于接收消息的信號量 */
static struct rt_semaphore rx_sem;
static rt_device_t serial;
/* 接收數(shù)據(jù)回調(diào)函數(shù) */
static rt_err_t uart_input(rt_device_t dev, rt_size_t size)
{
/* 串口接收到數(shù)據(jù)后產(chǎn)生中斷,調(diào)用此回調(diào)函數(shù),然后發(fā)送接收信號量 */
rt_sem_release(&rx_sem);
return RT_EOK;
}
static void serial_thread_entry(void *parameter)
{
char ch;
while (1)
{
/* 從串口讀取一個字節(jié)的數(shù)據(jù),沒有讀取到則等待接收信號量 */
while (rt_device_read(serial, -1, &ch, 1) != 1)
{
/* 阻塞等待接收信號量,等到信號量后再次讀取數(shù)據(jù) */
rt_sem_take(&rx_sem, RT_WAITING_FOREVER);
}
/* 讀取到的數(shù)據(jù)通過串口錯位輸出 */
//ch = ch + 1;
//rt_device_write(serial, 0, &ch, 1);
rt_kprintf("%c",ch);
} }
static int uart_sample(int argc, char *argv[])
{
rt_err_t ret = RT_EOK;
char uart_name[RT_NAME_MAX];
char str[] = "hello RT-Thread!\r\n";
if (argc == 2)
{
rt_strncpy(uart_name, argv[1], RT_NAME_MAX);
}
else
{
rt_strncpy(uart_name, SAMPLE_UART_NAME, RT_NAME_MAX);
}
/* 查找系統(tǒng)中的串口設(shè)備 */
serial = rt_device_find(uart_name);
if (!serial)
{
rt_kprintf("find %s failed!\n", uart_name);
return RT_ERROR;
}
/* 初始化信號量 */
rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO);
/* 以中斷接收及輪詢發(fā)送模式打開串口設(shè)備 */
rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);
/* 設(shè)置接收回調(diào)函數(shù) */
rt_device_set_rx_indicate(serial, uart_input);
/* 發(fā)送字符串 */
rt_device_write(serial, 0, str, (sizeof(str) - 1));
/* 創(chuàng)建 serial 線程 */
rt_thread_t thread = rt_thread_create("serial", serial_thread_entry, RT_NULL, 1024, 25, 10);
/* 創(chuàng)建成功則啟動線程 */
if (thread != RT_NULL)
{
rt_thread_startup(thread);
}
else
{
ret = RT_ERROR;
}
return ret;
}
/* 導(dǎo)出到 msh 命令列表中 */
MSH_CMD_EXPORT(uart_sample, uart device sample);
/*自定義的函數(shù)*/
/*初始化函數(shù)*/
int uart_init(char *port)
{
rt_err_t ret = RT_EOK;
char uart_name[RT_NAME_MAX];
char str[] = "hello RT-Thread!\r\n";
rt_strncpy(uart_name, port, RT_NAME_MAX);
/* 查找系統(tǒng)中的串口設(shè)備 */
serial = rt_device_find(uart_name);
if (!serial)
{
rt_kprintf("find %s failed!\n", uart_name);
return RT_ERROR;
}
/* 初始化信號量 */
rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO);
/* 以中斷接收及輪詢發(fā)送模式打開串口設(shè)備 */
rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);
/* 設(shè)置接收回調(diào)函數(shù) */
rt_device_set_rx_indicate(serial, uart_input);
/* 發(fā)送字符串 */
rt_device_write(serial, 0, str, (sizeof(str) - 1));
/* 創(chuàng)建 serial 線程 */
rt_thread_t thread = rt_thread_create("serial", serial_thread_entry, RT_NULL, 1024, 25, 10);
/* 創(chuàng)建成功則啟動線程 */
if (thread != RT_NULL)
{
rt_thread_startup(thread);
}
else
{
ret = RT_ERROR;
}
return ret;
}
/*結(jié)束*/
/*發(fā)送字符串*/
int uart_sendstring(char *str) {
rt_device_write(serial, 0, str, (strlen(str) - 1));
}
/*結(jié)束*/
myuart.h文件
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-11-04 Administrator the first version
*/
#ifndef APPLICATIONS_MYUART_MYUART_H_
#define APPLICATIONS_MYUART_MYUART_H_
/*默認(rèn)串口*/
#define SAMPLE_UART_NAME "uart1"
int uart_init(char *port);
int uart_sendstring(char *str);
#endif /* APPLICATIONS_MYUART_MYUART_H_ */
main文件
/*
* Copyright (c) 2020-2021, Bluetrum Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2020/12/10 greedyhao The first version
*/
/**
* Notice!
* All functions or data that are called during an interrupt need to be in RAM.
* You can do it the way exception_isr() does.
*/
#include
#include "board.h"
#include "applications\myuart\myuart.h"
int main(void)
{
uint8_t pin = rt_pin_get("PE.1");
uart_init("uart1");
rt_pin_mode(pin, PIN_MODE_OUTPUT);
rt_kprintf("Hello, world\n");
while (1)
{
uart_sendstring("AT\r\n");
rt_pin_write(pin, PIN_LOW);
rt_thread_mdelay(500);
rt_pin_write(pin, PIN_HIGH);
rt_thread_mdelay(500);
}
}
6、效果展示
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
國產(chǎn)單片機(jī)
+關(guān)注
關(guān)注
1文章
20瀏覽量
4089 -
中科藍(lán)訊
+關(guān)注
關(guān)注
10文章
66瀏覽量
10661
發(fā)布評論請先 登錄
相關(guān)推薦
熱點(diǎn)推薦
華為在MWC 2026發(fā)布正式無線網(wǎng)絡(luò)智能體RAN Agent
在MWC26 巴塞羅那期間,華為無線MAE產(chǎn)品線總裁趙振龍在移動AI產(chǎn)業(yè)峰會上正式發(fā)布無線網(wǎng)絡(luò)智能體(RAN Agent),并發(fā)表主題演講 《無線網(wǎng)絡(luò)智能體將高階自智網(wǎng)絡(luò)帶入現(xiàn)實(shí),點(diǎn)亮移動AI時代》。
工業(yè)路由器支持哪些無線網(wǎng)絡(luò)
工業(yè)路由器支持多種無線網(wǎng)絡(luò)協(xié)議和技術(shù),以滿足不同工業(yè)場景下的數(shù)據(jù)通信需求,具體包括: 1. 蜂窩無線網(wǎng)絡(luò)(4G/5G/3G/2G) 支持制式 : 4G/5G :支持TD-LTE、FDD-LTE等5G
RJ45連接器類型詳細(xì)介紹
RJ45連接器是網(wǎng)絡(luò)通信中常用的連接器類型,主要用于以太網(wǎng)連接,實(shí)現(xiàn)設(shè)備之間的數(shù)據(jù)傳輸。根據(jù)不同的分類標(biāo)準(zhǔn),RJ45連接器可分為多種類型,以下是詳細(xì)介紹: 一、按屏蔽性能分類 非屏蔽R
【嘉楠堪智K230開發(fā)板試用體驗(yàn)】CanMV K230 連接無線網(wǎng)
=None, password=None, bssid=None)*__
使用指定的密碼連接到指定的無線網(wǎng)絡(luò)。如果給出了bssid,則連接將被限制為具有該 MAC 地址的接入點(diǎn)(在這種情況下還必須指定
發(fā)表于 08-16 22:27
【干貨】不用拉網(wǎng)線也能組網(wǎng)?無線網(wǎng)橋才是遠(yuǎn)距離組網(wǎng)的硬核神器!
無線網(wǎng)橋Wirelessbridges無線網(wǎng)橋,顧名思義就是無線網(wǎng)絡(luò)橋接,在一些不方便或是不能以有線方式布線的地方,便是無線網(wǎng)橋大展身手的地
碼頭吊機(jī)和龍門吊無線網(wǎng)橋,無線自組網(wǎng)傳輸系統(tǒng)
采用無線網(wǎng)橋來搭建碼頭的監(jiān)控系統(tǒng),不僅縮短施工時間,提高工程進(jìn)度,還減少了后期維護(hù)的成本。無線網(wǎng)橋組網(wǎng)也是非常靈活,增加點(diǎn)位也是不影響原來的線路。無線信號強(qiáng),覆蓋范圍大,延遲低,帶寬高,性能強(qiáng)大。
工業(yè)以太網(wǎng)無線網(wǎng)橋:無線通信的工業(yè)級解決方案
靈活高效的無線通信方案。本文從技術(shù)特性、應(yīng)用場景及核心優(yōu)勢等方面展開解析。 ? 一、產(chǎn)品定位與核心功能 ? 該無線網(wǎng)橋的核心功能是實(shí)現(xiàn)工業(yè)以太網(wǎng)協(xié)議(如Profinet、EtherNet/IP、Modbus TCP)與無線通信的
M12連接器如何做到低接觸電阻?4大核心保障技術(shù)全解析
?1M12連接器接觸電阻升高/超標(biāo)的危害知多少?1M12連接器低接觸電阻關(guān)鍵看這幾點(diǎn)?01接觸件高導(dǎo)材料+鍍層工藝①要選用銅合金等高導(dǎo)電材料,這是根本技術(shù)保障;②要采用
無線網(wǎng)橋究竟有何用
在工業(yè)物聯(lián)網(wǎng)和數(shù)字化轉(zhuǎn)型的浪潮中,有線網(wǎng)絡(luò)的部署成本高、靈活性差等問題日益凸顯,而傳統(tǒng)Wi-Fi又難以滿足遠(yuǎn)距離、高穩(wěn)定性的工業(yè)級傳輸需求。此時, 無線網(wǎng)橋 作為一種專為工業(yè)場景設(shè)計的無線通信設(shè)備
M12連接器是什么?工業(yè)選型5大誤區(qū)與高防護(hù)免接線方案推薦
連接器選型時又該規(guī)避哪些誤區(qū)?1M12連接器是什么?工業(yè)場景的主流選擇M12連接器是一種圓形螺紋鎖緊式接口,以M12×1螺紋規(guī)格命名,符合I
無線網(wǎng)橋的連接與調(diào)試方法,超詳細(xì)教程,小白也能輕松上手!
在網(wǎng)絡(luò)通信領(lǐng)域,無線網(wǎng)橋憑借其靈活便捷的特性,越來越受到大家的青睞,廣泛應(yīng)用于監(jiān)控、工業(yè)、戶外網(wǎng)絡(luò)搭建等場景。但對于很多新手來說,無線網(wǎng)橋的連接與調(diào)試卻讓人頭疼不已。別擔(dān)心,今天就為大家?guī)硪环莩?/div>
無線網(wǎng)橋傳輸距離與覆蓋范圍
在工業(yè)互聯(lián)網(wǎng)與物聯(lián)網(wǎng)(IoT)快速發(fā)展的今天,無線網(wǎng)橋作為連接分散設(shè)備與核心網(wǎng)絡(luò)的關(guān)鍵樞紐,其傳輸距離與覆蓋范圍直接決定了網(wǎng)絡(luò)部署的可行性與效率。無論是智慧工廠的設(shè)備互聯(lián),還是偏遠(yuǎn)地區(qū)的監(jiān)控系統(tǒng)搭建
M12連接器:卓越性能,鑄就工業(yè)連接的堅固橋梁
作為德索精密工業(yè)的核心產(chǎn)品之一,M12連接器憑借卓越性能贏得眾多客戶信賴。我們始終秉持高品質(zhì)產(chǎn)品與專業(yè)服務(wù),為工業(yè)連接領(lǐng)域提供可靠解決方案。未來,德索精密工業(yè)也將繼續(xù)秉持創(chuàng)新精神,持續(xù)優(yōu)化改進(jìn)M12連接器性能,為工業(yè)領(lǐng)域發(fā)展貢獻(xiàn)
無線網(wǎng)橋傳輸距離與覆蓋范圍的驚人真相,你了解多少?
在如今的網(wǎng)絡(luò)通信領(lǐng)域,無線網(wǎng)橋憑借其獨(dú)特的優(yōu)勢,在監(jiān)控、工業(yè)、安防等諸多場景中廣泛應(yīng)用。但很多人在使用無線網(wǎng)橋時,對它的傳輸距離與覆蓋范圍充滿疑惑。今天,就帶大家揭開其中的驚人真相。 無線網(wǎng)橋傳輸
AB32VG1連接無線網(wǎng)
評論