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

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

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

AB32VG1連接無線網(wǎng)

AB32VG1評測 ? 2021-11-04 22:43 ? 次閱讀

1、 資源介紹

pYYBAGGDx76Af-MGAAFfNm8F3Qw511.png

可以看到,AB32VG1擁有三個全雙工串口
資源分配:
UART0 -> 上位機(jī)通訊
UART1 -> ESP8266無線網(wǎng)絡(luò)
UART2 -> 待分配


UART1所對應(yīng)的引腳為PA3和PA4,其中PA3為RX1,PA4為TX1

2、ESP8266介紹:

pYYBAGGDyCaARZo4AAD2zvgNTZI273.pngpYYBAGGDyJmAPldKAAEsXfeg0L0041.png

3、連接圖

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

pYYBAGGDyISAes03AAAqwpyqejQ522.png

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

poYBAGGDyOuAc9znAACOvQn3-Q0578.png

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

poYBAGGDyUqANoE-AAAdcoBgT7c244.png

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

poYBAGGDzyCAWw3AAABtdPb0fjY766.png

要么單獨定義判斷i的值

poYBAGGD0MSATAYBAABUAsVLdx0784.png

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:接入點名稱

               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ù),接入點名稱
:信號強(qiáng)度
19、AT+CWJAP=”MERSAIN”,”XXXXXXXX”

       功能:加入當(dāng)前無線網(wǎng)絡(luò)

指令: AT+CWJAP=,< pwd >
說明: :字符串參數(shù),接入點名稱
:字符串參數(shù),密碼,最長64字節(jié)ASCII
響應(yīng):正確: OK
錯誤: ERROR
20、AT+CWJAP?

        功能:檢測是否真的連上該路線網(wǎng)絡(luò)
 
指令: AT+CWJAP?
響應(yīng):返回當(dāng)前選擇的AP
+ CWJAP:
OK
說明: :字符串參數(shù),接入點名稱
21、AT+CIFSR

        功能:查看模塊 IP 地址

指令: AT+CIFSR
響應(yīng):正確: + CIFSR:
OK
錯誤: ERROR
說明: :字符串參數(shù),接入點名稱

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、效果展示

pYYBAGGD08KAdx6VAA8n2eS1FpY889.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關(guān)推薦

    wds無線怎么設(shè)置

    無線分布式系統(tǒng)(Wireless Distribution System,簡稱WDS)是一種允許無線網(wǎng)絡(luò)設(shè)備之間進(jìn)行橋的技術(shù)。通過WDS,可以將多個無線設(shè)備
    的頭像 發(fā)表于 07-18 09:59 ?534次閱讀

    plc數(shù)采無線網(wǎng)關(guān)是什么

    。 具體來說,PLC數(shù)采無線網(wǎng)關(guān)具有以下幾個特點: 1. 無線通信:通過Wi-Fi、藍(lán)牙、ZigBee、LoRa、NB-IoT等多種無線通信方式之一或幾種的組合,實現(xiàn)與PLC或其他傳感
    的頭像 發(fā)表于 06-27 14:49 ?266次閱讀
    plc數(shù)采<b class='flag-5'>無線網(wǎng)</b>關(guān)是什么

    線網(wǎng)卡和無線網(wǎng)卡分別指的是什么

    線網(wǎng)卡和無線網(wǎng)卡是計算機(jī)或網(wǎng)絡(luò)設(shè)備中用于連接網(wǎng)絡(luò)的兩種不同類型的網(wǎng)絡(luò)接口卡。它們的主要區(qū)別在于傳輸媒介和連接方式。
    的頭像 發(fā)表于 05-28 15:28 ?1942次閱讀

    PLC無線網(wǎng)關(guān)是什么?PLC無線網(wǎng)關(guān)的功能作用

    PLC無線網(wǎng)關(guān)是一種專為工業(yè)自動化設(shè)計的物聯(lián)網(wǎng)設(shè)備,它充當(dāng)可編程邏輯控制器(PLC)與無線網(wǎng)絡(luò)之間的橋梁。通過整合無線通信技術(shù)(如4G、5G、Wi-Fi等),PLC無線網(wǎng)關(guān)能夠?qū)崿F(xiàn)以下
    的頭像 發(fā)表于 05-16 14:16 ?358次閱讀
    PLC<b class='flag-5'>無線網(wǎng)</b>關(guān)是什么?PLC<b class='flag-5'>無線網(wǎng)</b>關(guān)的功能作用

    無線網(wǎng)絡(luò)傳感器方案

    無線網(wǎng)絡(luò)傳感器方案
    的頭像 發(fā)表于 05-08 09:39 ?309次閱讀
    <b class='flag-5'>無線網(wǎng)</b>絡(luò)傳感器方案

    無線網(wǎng)橋的工作原理 無線網(wǎng)橋的安裝注意事項

    無線網(wǎng)橋的工作原理 無線網(wǎng)橋的安裝注意事項? 無線網(wǎng)橋是一種用于擴(kuò)充無線網(wǎng)絡(luò)覆蓋范圍的設(shè)備,它可以通過無線信號來
    的頭像 發(fā)表于 02-03 16:27 ?2291次閱讀

    無線網(wǎng)卡驅(qū)動怎么安裝 無線網(wǎng)卡怎么連接臺式電腦

    如今,隨著科技的不斷發(fā)展,無線網(wǎng)絡(luò)已經(jīng)成為了我們生活中不可或缺的一部分。對于臺式電腦用戶而言,如果沒有內(nèi)置無線網(wǎng)卡,就需要通過安裝外置無線網(wǎng)卡來連接
    的頭像 發(fā)表于 01-19 09:54 ?2404次閱讀

    對于距離較遠(yuǎn)的監(jiān)控攝像頭的連接,應(yīng)該選擇中繼器還是無線網(wǎng)橋?

    對于距離較遠(yuǎn)的監(jiān)控攝像頭的連接,應(yīng)該選擇中繼器還是無線網(wǎng)橋? 對于距離較遠(yuǎn)的監(jiān)控攝像頭的連接,無線傳輸是一種非常常見的解決方案。而在無線傳輸
    的頭像 發(fā)表于 01-09 11:35 ?1715次閱讀

    連接兩個局域網(wǎng)應(yīng)該使用無線網(wǎng)橋還是使用光纖轉(zhuǎn)換器對接呢?

    連接兩個局域網(wǎng)應(yīng)該使用無線網(wǎng)橋還是使用光纖轉(zhuǎn)換器對接呢? 連接兩個局域網(wǎng)時,使用無線網(wǎng)橋還是光纖轉(zhuǎn)換器對接的選擇應(yīng)基于特定的需求和條件來決定。本文將從不同的角度分析和比較這兩種方法,以
    的頭像 發(fā)表于 01-09 11:23 ?685次閱讀

    如何將以太網(wǎng)連接轉(zhuǎn)換為無線網(wǎng)絡(luò)連接

    如何將以太網(wǎng)連接轉(zhuǎn)換為無線網(wǎng)絡(luò)連接? 將以太網(wǎng)連接轉(zhuǎn)換為無線網(wǎng)絡(luò)連接是一種常見的需求,特別是在現(xiàn)代家庭中。有幾種方法可以實現(xiàn)這一轉(zhuǎn)換,包括使用無線
    的頭像 發(fā)表于 12-28 11:15 ?4231次閱讀

    什么是無線網(wǎng)卡?它是如何工作的?如何安裝無線網(wǎng)卡?

    什么是無線網(wǎng)卡?它是如何工作的?如何安裝無線網(wǎng)卡? 無線網(wǎng)卡(無線適配器)是一種設(shè)備,用于使計算機(jī)或其他設(shè)備能夠連接
    的頭像 發(fā)表于 12-15 09:58 ?1176次閱讀

    無線網(wǎng)卡槽位有哪些種類及其優(yōu)勢介紹

    介紹各種類型的無線網(wǎng)卡槽以及它們的優(yōu)勢。 1. PCI槽:PCI(Peripheral Component Interconnect)槽是最常用的無線網(wǎng)卡插槽。它是一種用于將外接設(shè)備與計算機(jī)主板進(jìn)行
    的頭像 發(fā)表于 12-15 09:58 ?1029次閱讀

    選擇無線網(wǎng)卡的原則和方法

    選擇無線網(wǎng)卡的原則和方法 無線網(wǎng)卡是一種用于連接電腦或其他設(shè)備與無線網(wǎng)絡(luò)的設(shè)備,它可以通過Wi-Fi信號接收和發(fā)送數(shù)據(jù)。隨著無線網(wǎng)絡(luò)的廣泛應(yīng)
    的頭像 發(fā)表于 12-11 11:38 ?940次閱讀

    掌握路由器設(shè)置技巧,打造穩(wěn)定快速的無線網(wǎng)絡(luò)

    路由器設(shè)置的教程,包括選擇適合的路由器、連接路由器、登錄管理界面、設(shè)置無線網(wǎng)絡(luò)等步驟。通過跟著教程,用戶可以快速上手并享受暢快的無線網(wǎng)絡(luò)體驗。
    的頭像 發(fā)表于 12-05 09:39 ?915次閱讀

    無線網(wǎng)橋ALXB15i,讓信息傳輸更加便捷

    NEWS自科技PART/1網(wǎng)橋是一個局域網(wǎng)與另一個局域網(wǎng)之間建立連接的橋梁,是拓展網(wǎng)絡(luò)和通訊手段的好幫手。很多人覺得有線傳輸更加穩(wěn)定,但是在某些應(yīng)用場景中搭建有線傳輸比較困難,這時候就需要更加靈活
    的頭像 發(fā)表于 10-26 08:17 ?591次閱讀
    自<b class='flag-5'>連</b><b class='flag-5'>無線網(wǎng)</b>橋ALXB15i,讓信息傳輸更加便捷