0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AB32VG1连接无线网

AB32VG1评测 2021-11-04 22:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、 资源介绍

pYYBAGGDx76Af-MGAAFfNm8F3Qw511.png

可以看到,AB32VG1拥有三个全双工串口
资源分配:
UART0 -> 上位机通讯
UART1 -> ESP8266无线网络
UART2 -> 待分配


UART1所对应的引脚为PA3和PA4,其中PA3为RX1,PA4为TX1

2、ESP8266介绍:

pYYBAGGDyCaARZo4AAD2zvgNTZI273.pngpYYBAGGDyJmAPldKAAEsXfeg0L0041.png

3、连接图

单片机与ESP8266采用串口通讯(AT指令),功能:获取网络数据及设备联网

pYYBAGGDyISAes03AAAqwpyqejQ522.png

坑1、在程序实现之前,需要注意的点,在配置中需要打开“硬件”下的UART1功能,要注意配置截图中有没有SDK软件包,如果没有打开UART1口编译不通过。(升级软件版本2.1.2)

poYBAGGDyOuAc9znAACOvQn3-Q0578.png

坑2、还有一个坑的地方,例程中:搞不明白为什么要错位,错位后收到的数据为乱码

poYBAGGDyUqANoE-AAAdcoBgT7c244.png

坑3、波特率显示问题(要么整体改)

poYBAGGDzyCAWw3AAABtdPb0fjY766.png

要么单独定义判断i的值

poYBAGGD0MSATAYBAABUAsVLdx0784.png

4、AT指令

1、 AT+RST

       功能:重启模块

2、AT+CWMODE=

     功能:mode=1 :Station模式(接收模式)

                 mode=2:AP模式(发送模式)

                mode=3:AP+Station模式

3、AT+ CWSAP= ,,, 

     功能:配置AP参数(指令只有在AP模式开启后有效)

                ssid:接入点名称

               pwd:密码

              chl:通道号

              ecn:加密方式:(0-OPEN, 1-WEP, 2-WPA_PSK, 3-WPA2_PSK, 4-WPA_WPA2_PSK)

             注意:此设置完成后,连接网络会可能出现连接不上的情况,请发送 AT+RST 命令并等待几分钟之
             后再连接。

4、AT+CWLIF

     功能:查看已接入设备的 IP

5、AT+CIFSR

      功能:查看本模块的 IP 地址

      注意: AP 模式下无效!会造成死机现象!

6、AT+CWMODE?

      功能:查看本机配置模式

7、AT+CIPMUX?

     功能:查询本模块是否建立多连接

    说明: :0-单路连接模式, 1-多路连接模式

8、AT+CIPMODE?
      功能:查询本模块的传输模式

说明: :0-非透传模式, 1-透传模式

9、AT+CIPSTO?

     功能:查询本模块的服务器超时时间

10、AT+CIPMUX=1

       功能:开启多连接模式

11、AT+CIPSERVER=1,8080

       功能:创建服务器

关闭 server 服务如下图所示:

说明: :0-关闭 server 模式, 1-开启 server 模式
:端口号,缺省值为 333

说明: (1) AT+ CIPMUX=1 时才能开启服务器;关闭 server 模式需要重启
(2)开启 server 后自动建立 server 监听,当有 client 接入会自动按顺序占用一个连
接。

12、AT+CIPSTO=2880

        功能:设置服务器超时时间

13、AT+CIPSTATUS

        功能:查看当前连接

说明: :连接的 id 号 0-4
:字符串参数,类型 TCP 或 UDP
:字符串参数, IP 地址
:端口号
: 0-本模块做 client 的连接, 1-本模块做 server 的连接

14、AT+CIPSEND=1,6

        功能:向某个连接发送数据


指令: 1)单路连接时(+CIPMUX=0),指令为: AT+CIPSEND=
2)多路连接时(+CIPMUX=1) ,指令为: AT+CIPSEND= ,
响应:收到此命令后先换行返回”>”,然后开始接收串口数据
当数据长度满 length 时发送数据。
如果未建立连接或连接被断开,返回 ERROR
如果数据发送成功,返回 SEND OK
说明: :需要用于传输连接的 id 号
:数字参数,表明发送数据的长度,最大长度为 2048

15、AT+CIPSERVER=0
        功能:关闭 server 服务

      

指令: AT+CIPSERVER=[,]
说明: :0-关闭 server 模式, 1-开启 server 模式
:端口号,缺省值为 333
响应: OK
说明: (1) AT+ CIPMUX=1 时才能开启服务器;关闭 server 模式需要重启
(2)开启 server 后自动建立 server 监听,当有 client 接入会自动按顺序占用一个连
接。

16、AT+CIPSTART=2,"TCP","192.168.4.101",8080
        功能:建立 TCP 连接

指令: 1)单路连接时(+CIPMUX=0),指令为: AT+CIPSTART= ,,
2)多路连接时(+CIPMUX=1),指令为: AT+CIPSTART=,,,
响应:如果格式正确且连接成功,返回 OK,否则返回 ERROR
如果连接已经存在,返回 ALREAY CONNECT
说明: :0-4,连接的 id 号
:字符串参数,表明连接类型, ”TCP”-建立 tcp 连接, ”UDP”-建立 UDP 连接
:字符串参数,远程服务器 IP 地址
:远程服务器端口号

17、AT+CIPSEND=2,8

指令: 1)单路连接时(+CIPMUX=0),指令为: AT+CIPSEND=
2)多路连接时(+CIPMUX=1) ,指令为: AT+CIPSEND= ,
响应:收到此命令后先换行返回”>”,然后开始接收串口数据
当数据长度满 length 时发送数据。
如果未建立连接或连接被断开,返回 ERROR
如果数据发送成功,返回 SEND OK
说明: :需要用于传输连接的 id 号
:数字参数,表明发送数据的长度,最大长度为 2048
18、AT+CWLAP

        功能:查看当前无线路由器列表

响应:正确: (终端返回AP列表)
+ CWLAP: ,,
OK
错误: ERROR
说明: < ecn >:0-OPEN, 1-WEP, 2-WPA_PSK, 3-WPA2_PSK, 4-WPA_WPA2_PSK
:字符串参数,接入点名称
:信号强度
19、AT+CWJAP=”MERSAIN”,”XXXXXXXX”

       功能:加入当前无线网络

指令: AT+CWJAP=,< pwd >
说明: :字符串参数,接入点名称
:字符串参数,密码,最长64字节ASCII
响应:正确: OK
错误: ERROR
20、AT+CWJAP?

        功能:检测是否真的连上该路线网络
 
指令: AT+CWJAP?
响应:返回当前选择的AP
+ CWJAP:
OK
说明: :字符串参数,接入点名称
21、AT+CIFSR

        功能:查看模块 IP 地址

指令: AT+CIFSR
响应:正确: + CIFSR:
OK
错误: ERROR
说明: :字符串参数,接入点名称

5、程序实现

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;
/* 接收数据回调函数 */
static rt_err_t uart_input(rt_device_t dev, rt_size_t size)
{
 /* 串口接收到数据后产生中断,调用此回调函数,然后发送接收信号量 */
 rt_sem_release(&rx_sem);
 return RT_EOK;
}
static void serial_thread_entry(void *parameter)
{
 char ch;
 while (1)
 {
 /* 从串口读取一个字节的数据,没有读取到则等待接收信号量 */
 while (rt_device_read(serial, -1, &ch, 1) != 1)
 {
 /* 阻塞等待接收信号量,等到信号量后再次读取数据 */
 rt_sem_take(&rx_sem, RT_WAITING_FOREVER);
 }
 /* 读取到的数据通过串口错位输出 */
 //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);
 }
 /* 查找系统中的串口设备 */
 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);
 /* 以中断接收及轮询发送模式打开串口设备 */
 rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);
 /* 设置接收回调函数 */
 rt_device_set_rx_indicate(serial, uart_input);
 /* 发送字符串 */
 rt_device_write(serial, 0, str, (sizeof(str) - 1));
 /* 创建 serial 线程 */
 rt_thread_t thread = rt_thread_create("serial", serial_thread_entry, RT_NULL, 1024, 25, 10);
 /* 创建成功则启动线程 */
 if (thread != RT_NULL)
 {
 rt_thread_startup(thread);
 }
 else
 {
 ret = RT_ERROR;
 }
 return ret;
}
/* 导出到 msh 命令列表中 */
MSH_CMD_EXPORT(uart_sample, uart device sample);

/*自定义的函数*/

/*初始化函数*/
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);
 /* 查找系统中的串口设备 */
 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);
 /* 以中断接收及轮询发送模式打开串口设备 */
 rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);
 /* 设置接收回调函数 */
 rt_device_set_rx_indicate(serial, uart_input);
 /* 发送字符串 */
 rt_device_write(serial, 0, str, (sizeof(str) - 1));
 /* 创建 serial 线程 */
 rt_thread_t thread = rt_thread_create("serial", serial_thread_entry, RT_NULL, 1024, 25, 10);
 /* 创建成功则启动线程 */
 if (thread != RT_NULL)
 {
 rt_thread_startup(thread);
 }
 else
 {
 ret = RT_ERROR;
 }
 return ret;
}
/*结束*/
/*发送字符串*/
int uart_sendstring(char *str) {
    rt_device_write(serial, 0, str, (strlen(str) - 1));
}
/*结束*/

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_

/*默认串口*/
#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
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 国产单片机
    +关注

    关注

    1

    文章

    20

    浏览量

    4095
  • 中科蓝讯
    +关注

    关注

    10

    文章

    67

    浏览量

    10707
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    乐鑫ESP32+Sub-1G小无线网关方案

    工厂、农场、园区等大范围场景中,Wi-Fi/蓝牙覆盖不足,信号中断、数据丢包、组网不稳定,轻则影响效率,重则造成损失。启明云端重磅推出「乐鑫ESP32+Sub-1G小无线网关方案」,短距离
    的头像 发表于 04-08 18:02 187次阅读
    乐鑫ESP32+Sub-<b class='flag-5'>1</b>G小<b class='flag-5'>无线网</b>关方案

    华为在MWC 2026发布正式无线网络智能体RAN Agent

    在MWC26 巴塞罗那期间,华为无线MAE产品线总裁赵振龙在移动AI产业峰会上正式发布无线网络智能体(RAN Agent),并发表主题演讲 《无线网络智能体将高阶自智网络带入现实,点亮移动AI时代》。
    的头像 发表于 03-05 14:13 625次阅读

    RTL8812构成的无线网卡原理图谁有呀

    本人是名在校大学生最近正在研究8812au的无线网卡,从网上购买了一个8812au的无线卡使用后发现信号接收功能情况不佳,想尝试自己加装天线或者修改电路但是苦于这个板子已经是成品了不能再修改,所以想
    发表于 10-30 20:03

    工业路由器支持哪些无线网

    工业路由器支持多种无线网络协议和技术,以满足不同工业场景下的数据通信需求,具体包括: 1. 蜂窝无线网络(4G/5G/3G/2G) 支持制式 : 4G/5G :支持TD-LTE、FDD-LTE等5G
    的头像 发表于 10-23 10:03 734次阅读

    RJ45连接器类型详细介绍

    RJ45连接器是网络通信中常用的连接器类型,主要用于以太网连接,实现设备之间的数据传输。根据不同的分类标准,RJ45连接器可分为多种类型,以下是详细介绍: 一、按屏蔽性能分类 非屏蔽R
    的头像 发表于 09-29 10:01 1575次阅读

    华为AgenticRAN重塑无线网络价值

    在全球5G-A商用加速的关键节点,华为无线网络副总裁、首席营销官赵东以“AgenticRAN: 用有限的无线资源创造无限可能”为主题发表演讲,首次系统阐述AgenticRAN架构的核心理念:基于“有效性、可靠性、经济性”AI关键三要素,分层分级引入AI技术,实现网络价值跃
    的头像 发表于 09-25 11:45 1023次阅读

    FAQ_MA35D1_I2C1连接失败的原因?

    FAQ_MA35D1_I2C1连接失败
    发表于 09-03 07:33

    【嘉楠堪智K230开发板试用体验】CanMV K230 连接无线网

    =None, password=None, bssid=None)*__ 使用指定的密码连接到指定的无线网络。如果给出了bssid,则连接将被限制为具有该 MAC 地址的接入点(在这种情况下还必须指定
    发表于 08-16 22:27

    由挑战走向未来:无线网络如何迎接智能时代?

    AI时代,依旧需要以无线网络升级为先锋
    的头像 发表于 07-30 00:02 3008次阅读
    由挑战走向未来:<b class='flag-5'>无线网</b>络如何迎接智能时代?

    辽宁移动携手华为打造无线网络全要素智能化示范区

    近日,中国移动辽宁公司(以下简称“辽宁移动”)携手华为率先打造规模应用、场景最全的智能追焦网络,成功打通无线网络智能化的“最后一公里”,建成具备无线网络智能化全要素的示范网。这标志着在中国移动无线AI智能化升级的指引下,辽宁移动
    的头像 发表于 07-23 16:22 1073次阅读

    【干货】不用拉网线也能组网?无线网桥才是远距离组网的硬核神器!

    无线网桥Wirelessbridges无线网桥,顾名思义就是无线网络桥,在一些不方便或是不能以有线方式布线的地方,便是无线网桥大展身手的地
    的头像 发表于 07-17 19:34 4095次阅读
    【干货】不用拉网线也能组网?<b class='flag-5'>无线网</b>桥才是远距离组网的硬核神器!

    华为在无线网络智能化领域的最新成果与未来蓝图

    在MWC 2025上海的无线媒体分析师圆桌上,华为无线网络产品线副总裁、首席营销官赵东发表了题为《意图驱动业务自闭环,多智能体协同迈向全场景AN L4》的主题演讲,系统阐述了华为在无线网络智能化领域
    的头像 发表于 07-01 15:49 1217次阅读

    行业必知!M12连接器标准的最新动态与发展趋势

    小型化与高密度集成:为满足设备小型化需求,M12连接器正朝着更小尺寸、更多针数方向发展。德索微型M12连接器体积缩小30%,同时实现12芯集成,在有限空间内提供更多连接可能。​德索优势:标准践行
    的头像 发表于 06-30 10:02 812次阅读
    行业必知!M12<b class='flag-5'>连接</b>器标准的最新动态与发展趋势

    码头吊机和龙门吊无线网桥,无线自组网传输系统

    采用无线网桥来搭建码头的监控系统,不仅缩短施工时间,提高工程进度,还减少了后期维护的成本。无线网桥组网也是非常灵活,增加点位也是不影响原来的线路。无线信号强,覆盖范围大,延迟低,带宽高,性能强大。
    的头像 发表于 06-06 10:19 757次阅读
    码头吊机和龙门吊<b class='flag-5'>无线网</b>桥,<b class='flag-5'>无线</b>自组网传输系统

    工业以太网无线网桥:无线通信的工业级解决方案

    灵活高效的无线通信方案。本文从技术特性、应用场景及核心优势等方面展开解析。 ​ 一、产品定位与核心功能   该无线网桥的核心功能是实现工业以太网协议(如Profinet、EtherNet/IP、Modbus TCP)与无线通信的
    的头像 发表于 04-22 15:50 1189次阅读