精华内容
下载资源
问答
  • 2022-01-14 17:56:56

    一、知识要点

    基于前一日Day 4的课程内容,今日增加了通过串口的WiFi配网功能。

    WiFi配网主要是如下两个API,具体查看官方API

    esp_err_t esp_wifi_connect(void)
    
    esp_err_t esp_wifi_set_config(wifi_interface_t interface
    更多相关内容
  • 69028+ESP32-CAM摄像头开发板+WiFi+蓝牙模块ESP32串口转WiFi物联网.zip
  • 本文是ESP32-CAM板+USBTLL下载器,使用Arduino IDE 1.87+esp32库来测试视频流抓拍、人脸识别和检测功能的视频流Web服务器搭建,提供详细实验步骤和完整代码。
  • ec20 和esp32 通过串口wifi透传

    方案
    EC20和ESP32通过串口SLIP接收传输WIFI数据
    数据流
    EC20上层应用-> EC20通过slip串口发送数据->ESP32接收到数据->传输到ESP32 TCP层 ->传输到ESP32的IP层(通过IP地址的不同选择netif接口转发数据)
    注意
    EC20和ESP32在wifi这里对外是当作一体的,所以EC20设置的IP地址可以是ESP32获取到的wifi地址,slip需要设置一个netif,wifi有一个netif,在IP层通过src地址和dest 地址选择相应的netif进行转发

    SLIP
    • 定义
    ①IP数据包以END(0xc0)的特殊字符结束,而有些数据报的开始处也传一个END字符以防止数据报到来之前的线路噪声当做数据报内容。
    ②若IP报文中某个字符为END,那么就连续传输两个字节oxdb和oxdc来取代(oxdb这个特殊字符被称作SLIP的ESC字符)。
    ③若IP报文中某个字符为ESC,那么就连续传输两个字节oxdb和oxdd来取代。
    • 缺陷
    ①数据帧中没有类型字段,这代表若一条串行线路上使用SLIP进行传输数据报,那么其不能使用其他协议。
    ②每一段必须知道对方的IP地址且无法把本段的IP地址通知给另一端。
    ③SLIP没有在数据帧中加入检验和,若SLIP传输的报文发生错误,只能通过上层协议来发现其错误。
    • MAC 层协议,三种实现方式
    1. For NO_SYS==0, an RX thread can be used which blocks on sio_read() until data is received.
    2. In your main loop, call slipif_poll() to check for new RX bytes, completed packets are fed into netif->input().
    3. Call slipif_received_bytes from your serial RX ISR and slipif_process_rxqueue() from your main loop. ISR level decodes packets and puts completed packets on a queue which is fed into the stack from the main loop (needs SYS_LIGHTWEIGHT_PROT for pbuf_alloc to work on ISR level!).
    • 注意
    选择的是第一种,第三种因为没法在中断中调用slipif_received_byte,开始选择第三种的时候一直在丢包。

    EC20需要设置
    • 波特率配置为3Mbps,只能通过EC20串口的接口去配置 (也可以通过stty -F /dev/ttyHS0 ispeed 3000000 ospeed 3000000 cs8)
    • slattach /dev/ttyHS0 -p slip -m -F &
    • ifconfig sl0 192.168.1.xx pointopoint 192.168.1.yy up (第一个IP是设置EC20的IP(ESP32 WIFI GOT IP获取到的IP),第二个IP是ESP32 slip设置的ip)
    • route add default gw 192.168.1.yy
    • 设置DNS vi /etc/resolv.conf
    nameserver 8.8.8.8
    注意
    开始调试的时候可以使用115200 bps 设置方法:slattach /dev/ttyHS0 -p slip -s 115200 -m -F &
    • linux ubuntu 1804上配置slip协议和ESP32进行调试
    1.slattach -s 115200 -p slip /dev/ttyHS0 -m &
    2.ifconfig sl0 192.168.6.x pointopoint 3.192.168.6.y up
    3.route add default gw 192.168.6.2y
    3.ping 192.168.6.y
    • 调试
    可以ping 局域网ip,网关,外网ip,运行http程序

    SLIP 需要设置
    • 配置slip ip地址,网关,掩码
    LWIP

    数据流
    上行: slipif_loop_thread–>slipif_rxbyte_input–>slipif_rxbyte(slip 接收数据并解决)–>netif->input–>tcpip_input()–>tcpip_inpkt–>tcpip_thread–>ip4_input–>ip4_forward(根据src地址判断从WIFI接口输出)–>netif->output–>low_level_output–>esp_wifi_internal_tx
    下行: wlanif_input–>netif->input–>-->tcpip_input()–>tcpip_inpkt–>tcpip_thread–>ip4_input–>ip4_forward(根据dst地址判断从slip接口输出)–>netif->output–>slipif_output_v4–>slipif_output
    注意: 通过netif_add设置数据给TCP层的接口,在slipif_init的配置slip输出函数,wlanif_init配置wifi输出函数

    IP &TCP校验
    • IP校验
    1、 把校验和字段置为0;
    2、 对IP头部中的每16bit进行二进制求和;
    3、 如果和的高16bit不为0,则将和的高16bit和低16bit反复相加,直到和的高16bit为0,从而获得一个16bit的值; 4、 将该16bit的值取反,存入校验和字段。
    • TCP校验
    tcp校验需要将ip伪首部、tcp报头、tcp数据分为16位的字,然后进行累加(如果总长度为奇数个字节,则在最后增添一个位都为0的字节 ),最后对累加的和进行按位取反即可。
    Ip伪首部包括源ip地址(4字节)、目的ip地址(4字节)、协议号(两字节)、tcp包长(2字节) ,共14字节。

    抓包工具
    • wireshark
    可以抓本机ip的报文,抓别的ip的报文(需要专门的网卡)
    注意:
    wireshark中IP头部没有进行校验判断,TCP协议中也没有进行数据的校验判断
    • omnipeak
    抓包数据比较详细,需要有专门的无线网卡
    • 路由器抓包 可以使用h3c路由器抓包 网址192.168.1.1

    展开全文
  • 在上一期的免费项目:高性价比WIFI图传方案快速入门教程的介绍中,详细地介绍了ESP32-CAM模块的简单使用 ,其裁剪了官方图传和人脸识别的代码改造成简单的图传代码,由官方四个文件的代码缩减成一个文件的代码。...
  • ESP32 串口WiFi 扫描 连接
  • ESP8266串口转wifi/wifi转串口模块

    千次阅读 2020-07-13 20:43:13
    ESP8266串口转wifi透传模块(MS_Uart2Wifi) 简介 模块功能 模块使用步骤 效果展示 使用ESP8266开发板进行试验 简介   最近几天做了一个串口转wifi模块,平常我们使用单片机往往用串口通信或者通过串口在pc上显示...

    简介

      最近几天做了一个串口转wifi模块,平常我们使用单片机往往用串口通信或者通过串口在pc上显示数据。但当我们想通过通过wifi无线通信方式来进行通信时,我们可能就要使用ESP8266模块的AT指令集,然后就要又要加上一大波程序,又要下载啥的。当我们想要改变wifi模块要连接的无线网、密码、要连接的服务器端和端口时又要重新改一波程序然后再下载,很是麻烦。因此改了一下ESP8266 wifi模块的固件.大家只要通过手机app 设置一下,即可完成串口到wifi透传功能。

      下面我所介绍的东西为串口转wifi模块(我称之为MS_Uart2Wifi),我会将程序开源,大家可以自行下载,使用的ESP8266的NOS_SDK3.03开发包。由于程序比较杂,我就不在这里详细介绍了,大家下载以后自行查看吧,我注释的比较详细,下载资源里还有个任务书上面也稍微介绍了一下。

    *程序下载链接:程序下载链接
    百度云配置app下载链接:配置app下载链接 提取码:vvpf
    百度云串口助手和网络调试助手下载链接:串口助手和网络调试助手下载链接 提取码:8v3q
    模块淘宝链接:淘宝模块连接
    模块使用视频演示:B站模块使用演示视频链接


    模块功能

    ①将MS_Uart2Wifi模块连接到目标设备上可实现串口转wifi透传功能。
    ②长按MS_Uart2Wifi模块上的配置按键三秒,MS_Uart2Wifi模块进入配置模式,配置指示灯常亮后,用户通过手机APP输入要wifi模块将要连接的路由器名称、密码以及电脑Server端的IP地址和端口还有透传时的串口波特率后,点击确定即可完成配置。
    ③模块信息重新配置后会默认重启,用户等待10秒左右模块会自动连接。
    ③当串口转wifi模块与服务器的连接断开后每隔6秒模块会自动重连。
    ④每次模块重启后默认是上次的配置信息,除非再次通过手机配置信息。

    在这里插入图片描述

    图1 模块实物图

    如图1为MS_Uart2Wifi模块的电路图,S1为配置按键,S2为模块复位按键,左边的VCC GND TX RX为串口接口。上面的TX GND GP0为固件烧录接口。D1为模块配置指示灯,配置的时候亮,工作的时候灭。
    模块使用系统框图

    图2 模块使用系统框图

    如图2为模块使用系统框图,串口转wifi模块连接到单片机,单片机通过串口与串口转wifi模块MS_Uart2Wifi进行通信。MS_Uart2Wifi模块收到数据后再以wifi的方式将数据上传到服务器端,当然服务器端可以是电脑也也可以是手机,但是要在同一个局域网下。如果就只有这些功能那我做的东西也就没太大意义了,这个项目的意义在于我们能够通过手机设置wifi模块要连接server的信息,时串口转wifi的适配性更强。

    模块使用步骤

    第一步:配置
     给MS_Uart2Wifi模块供电,长按配置按键三秒,直到配置指示灯常亮。然后手机打开wifi连接名为MS_Uart2Wifi的wifi,打开配置APP,点击连接,输入配置信息点击发送即可。
    第二步:建立服务端
     将电脑连接到无线网,通过网络调试助手,建立TCP服务端。
    第三步:等待连接成功
     模块连接成功后会显示,"This is MS_Uart2Wifi"的字符串提示信息。这时候就完成了模块的配置,只需配置一次,然后你就可以串口发啥,网络调试助手就接收啥,网络调试助手发啥,模块就接收啥。

    效果展示

    在这里插入图片描述

    图3 配置app界面图
    如图3为MS_Uart2Wifi模块的手机配置app界面,打开app后点击连接,连接成功后即输入配置信息然后点击发送,收到"YES"返回数据后即设置成功。


    在这里插入图片描述

    图4 模块开机连接成功打印信息
    如果将usb转ttl模块的rx引脚接MS_Uart2Wifi的串口信息打印引脚(TX)即可接受到开机配置信息,配置信息如上图4所示。

    图5 模块连接上后打印信息

    当MS_Uart2Wifi连接到服务器以后会给服务器发送一段命令,“Hello,this is MS_Uart2Wifi”,当收到这些消息时代表模块连接成功。

    在这里插入图片描述

    图6 数据透传显示界面

    自己测试设置模块的波特率为1382400也可以用(串口助手上限),大家如果有过有能力和需求也可以试试是否能通过这个模块传输图像,自测传输20kb没啥问题(通过定时1ms发送128个字节数据3s串口助手上面显示接收60000左右个数据,波特率1382400)。

    使用ESP8266开发板进行试验

     当然我一开始也是用esp8266开发板进行调试的,所以大家如果有esp8266的开发板那直接就把固件烧写进去然后重启就行了。我用的是下面这个esp8266开发板。

    在这里插入图片描述
     大家要做的电路连接就是把GPIO4->D2连接配置按键,GPIO5->D1连接配置至少灯。按键一端接D2引脚一端接地,指示灯正极接3V3电压,另一个引脚接D1,指示灯别忘记接电阻了不然会烧掉。再然后要做的就是烧写固件了。(固件程序上面是通过串口1打印信息,如果大家想改成串口0的话只要在user_init里改下
    UART_SetPrintPort(1);//使用串口1作为信息输出引脚
    这个函数就行了,把1改为0。
     当然如果大家不想麻烦还是直接买我们做的模块吧,这样方便又简单,淘宝链接在上面。

    展开全文
  • ①将MS_Uart2Wifi模块连接到目标设备上可实现串口转wifi透传功能。 ②长按MS_Uart2Wifi模块上的配置按键三秒,MS_Uart2Wifi模块进入配置模式,配置指示灯常亮后,用户通过手机APP输入要wifi模块将要连接的路由器名称...
  • stm32103c8t6ESP8266串口转WIFI模块TCP服务器(STA模式)单片机用两个串口分别给ESP8266发送数据和给电脑打印信息,方便调试和观测
  • 单片机通过PB10/PB11串口3与ESP8266模块连接,代码实现功能如下: 1、在笔记本或手机 ,新建一个 TCP Sever,以用于与 ESP8266 WIFI 模块通信。 2、ESP8266 WIFI 模块工作于 STATION 模式,作为 TCP Client 与测试用...
  • 通过stc15和ds18b20进行温度收集,通过esp826进行网络通信,将温度上传云端
  • 采用STM32串口调试ESP8266WIFI模块,将大部分的AT指令通过串口发送串口助手,方便ESP8266新手学习使用。
  • 佳仕通科技有限公司ESP8266串口WIFI模块资料,包括ESP8266AT命令例程、使用方法、sdk等。
  • stc15单片机nRF24L01无线发射ESP8266串口WiFi模块实验例程源码(11例): ESP8266串口WiFi模块 AP+STATION 模式stc15单片机 实验例程源码 ESP8266串口WiFi模块 STATION 模式stc15单片机 实验例程源码 ESP8266串口WiFi...
  • esp8266 串口wifi模块 DEVKIT开发板ALTIUM设计硬件原理图+PCB+固件源码+文档资料: NCP1117ST33T3G.PDF NODEMCU-DEVKIT-V1.0-INSTRUCTION-EN.pdf NodeMCU.png NodeMCU_DEVKIT_1.0.jpg NODEMCU_DEVKIT_V1.0_PINMAP....
  • 【玩转esp32】12、esp32串口使用

    千次阅读 2021-06-04 17:08:44
    系列文章: 【玩转ESP32】1、开发环境搭建 【玩转ESP32】2、开发参考资料 ...【玩转ESP32】7、ESP32连接wifi 【玩转ESP32】8、ESP32 Guru MeditationError报错分析 【玩转ESP32】9、ESP32 作为TCP客户端连接服务器(非

    系列文章:

    【玩转ESP32】1、开发环境搭建
    【玩转ESP32】2、开发参考资料
    【玩转ESP32】3、点亮LED,Blink,blink,blink
    【玩转ESP32】4、ESP32驱动DHT11
    【玩转ESP32】5、i2c-tools访问i2c设备
    【玩转ESP32】6、驱动i2c设备—0.96 OLED
    【玩转ESP32】7、ESP32连接wifi
    【玩转ESP32】8、ESP32 Guru MeditationError报错分析
    【玩转ESP32】9、ESP32 作为TCP客户端连接服务器(非阻塞接收)
    【玩转ESP32】10、创建用户分区表,数据读写存储
    【玩转ESP32】11、编译报错:esp_bt.h:No such file or directory

    1、esp32串口

    ESP32芯片有三个UART控制器(UART0, UART1UART2),其中UART0GPIO3用于U0RXDGPIO1用于U0TXD)用作下载、调试串口,引脚不可改变;
    在这里插入图片描述
    UART1UART2的引脚是可以设置的。
    UART1默认引脚是GPIO9用作U1RXDGPIO10用作U1TXD,但是这两个引脚也是用于外接flash的,因此在使用UART1的时候需要设置其他引脚;
    在这里插入图片描述
    UART2默认引脚是GPIO16用作U2RXDGPIO17用作U2TXD
    在这里插入图片描述

    2、API

    components/driver/include/driver/uart.h中可以查看api;
    在examples/peripherals/uart中也可以参考官方的各种串口例程。

    2.1、安装uart驱动

    esp_err_t uart_driver_install(uart_port_t uart_num, int rx_buffer_size, int tx_buffer_size, int queue_size, QueueHandle_t* uart_queue, int intr_alloc_flags);
    

    这里要注意参数:uart_queue属于freertos里面的队列句柄,在这里表示用于指示来自串口底层中断的队列消息。

    2.2、uart参数配置

    esp_err_t uart_param_config(uart_port_t uart_num, const uart_config_t *uart_config);
    

    2.3、接收阈值设置

    esp_err_t uart_set_rx_full_threshold(uart_port_t uart_num, int threshold);
    

    2.4、串口引脚设置

    esp_err_t uart_set_pin(uart_port_t uart_num, int tx_io_num, int rx_io_num, int rts_io_num, int cts_io_num);
    

    2.5、从接收缓冲区读取数据

    int uart_read_bytes(uart_port_t uart_num, uint8_t* buf, uint32_t length, TickType_t ticks_to_wait);
    

    2.6、数据写入发送缓冲区

    int uart_write_bytes(uart_port_t uart_num, const char* src, size_t size);
    

    3、代码实现

    3.1、参数定义

    #define EX_UART_NUM UART_NUM_1  //串口1
    
    #define TXD_PIN    (GPIO_NUM_17) //txd使用gpio17
    #define RXD_PIN    (GPIO_NUM_16) //rxd使用gpio16
    
    #define BUF_SIZE (128)   //缓冲区定义
    static QueueHandle_t uart_queue; //队列句柄
    static uint8_t  uartbuf[BUF_SIZE];
    

    3.2、串口初始化

    void uart_comm_init(void)
    {
        /* Configure parameters of an UART driver,
         * communication pins and install the driver */
        uart_config_t uart_config = {
            .baud_rate = 115200,
            .data_bits = UART_DATA_8_BITS,
            .parity = UART_PARITY_DISABLE,
            .stop_bits = UART_STOP_BITS_1,
            .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
            .source_clk = UART_SCLK_APB,
        };
        //Install UART driver, and get the queue.
        uart_driver_install(EX_UART_NUM, BUF_SIZE * 2, BUF_SIZE * 2, 20, &uart_queue, 0);
        uart_param_config(EX_UART_NUM, &uart_config);
        uart_set_rx_full_threshold(EX_UART_NUM,126);
    
        //Set UART pins (using UART0 default pins ie no changes.)
        uart_set_pin(EX_UART_NUM, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
    
        //Create a task to handler UART event from ISR
        xTaskCreate(uart_event_task, "uart_event_task", 2048, NULL, 12, NULL); //创建串口任务
    }
    

    3.3、串口任务函数

    static void uart_event_task(void *pvParameters)
    {
        uart_event_t event;
        for(;;) {
            //阻塞接收串口队列,
            //这个队列在底层发送,用户只需在应用层接收即可
            if(xQueueReceive(uart_queue, (void * )&event, (portTickType)portMAX_DELAY)) {
                switch(event.type) {//各种串口事件
                    case UART_DATA:
                        ESP_LOGI(TAG, "[UART DATA]: %d", event.size);
                        uart_read_bytes(EX_UART_NUM, uartbuf, event.size, portMAX_DELAY); //阻塞接收
                        ESP_LOGI(TAG, "[DATA EVT]:");
                        uart_write_bytes(EX_UART_NUM, uartbuf, event.size);//原样发送
                        break;
                    //Event of HW FIFO overflow detected
                    case UART_FIFO_OVF: //硬件fifo溢出
                        ESP_LOGI(TAG, "hw fifo overflow");
                        // If fifo overflow happened, you should consider adding flow control for your application.
                        // The ISR has already reset the rx FIFO,
                        // As an example, we directly flush the rx buffer here in order to read more data.
                        uart_flush_input(EX_UART_NUM);
                        xQueueReset(uart_queue);
                        break;
                    //Event of UART ring buffer full
                    case UART_BUFFER_FULL: //环形缓冲区满
                        ESP_LOGI(TAG, "ring buffer full");
                        // If buffer full happened, you should consider encreasing your buffer size
                        // As an example, we directly flush the rx buffer here in order to read more data.
                        uart_flush_input(EX_UART_NUM);
                        xQueueReset(uart_queue);
                        break;
                    //Event of UART RX break detected
                    case UART_BREAK:
                        ESP_LOGI(TAG, "uart rx break");
                        break;
                    //Event of UART parity check error
                    case UART_PARITY_ERR:
                        ESP_LOGI(TAG, "uart parity error");
                        break;
                    //Event of UART frame error
                    case UART_FRAME_ERR:
                        ESP_LOGI(TAG, "uart frame error");
                        break;
                    //UART_PATTERN_DET
                    case UART_PATTERN_DET:
                        break;
                    //Others
                    default:
                        ESP_LOGI(TAG, "uart event type: %d", event.type);
                        break;
                }
            }
        }
        vTaskDelete(NULL);
    }
    

    4、使用总结

    1. 初始化串口参数,(队列指针、缓冲区、引脚等);
    2. 任务中阻塞等待串口队里 。
    展开全文
  • 基于STM32单片机与wifi模块串口结合进行PC端或手机端无线通信 esp8266 基于STM32单片机与wifi模块串口结合进行PC端或手机端无线通信 esp8266
  • ESP8266 WIFI转串口模块AD设计硬件原理图+PCB+封装库文件,ALTIUM AD09设计的工程文件,2层板,包括完整的原理图,PCB,2D3D封装库文件,原理图和PCB文件完全对应无差错,可以做为你的产品设计参考。
  • flash_download_tools_v3.6.5, 一款超好用的串口WIFI固件烧录器,支持以下型号的串口WIFI模块ESP8266, ESP8285, ESP32, ESP32D2WD,机智云固件,正点原子固件都试过都能正常烧录。
  • ATK-ESP8266 串口转WIFI模块 简历

    千次阅读 2019-05-05 09:59:05
    一、模块参数 二、模块说明
  • ESP32-C3入门教程 WiFi篇⑥——基于串口WiFi 智能配网
  • v2.6 注意事项:由于新增了功能,使用前请先仔细阅读v2.6的使用说明; ...2.WiFi没连接成功时,WiFi重连机制占用着CPU,此时连接AP与打开Webconfig会有点慢,请刷新几次即可,ESP32 没有此问题。
  • ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。...
  • ATK-ESP8266 WIFI 模块有串口无线 AP、串口无线 STA和串口无线 AP+STA 3 个模式,每个模式又包含 TCP 服务器、 TCP客户端和UDP 这 3 个子模式。 1. 无线 AP模式配置准备(重点介绍): ①模块处于默认设置(即出厂
  • STC单片机+ESP8266串口WiFi模块 STATION 模式
  • 单片机通过PB10/PB11串口3与ESP8266模块连接,代码实现功能如下: 1、 ESP8266 WIFI 模块工作于 AP,即建立一个 TCP SEVER,IP 地址为:192.168.4.1, 端口:5000。 2、 手机或者笔记本电脑连接到 ESP8266 的热点后...
  • ESP8266串口WiFi模块基本使用方法和配置教程

    万次阅读 多人点赞 2021-07-21 20:23:02
    由于本人一直从事医学信息处理与医学物联网设备研发,硬件联网一直以来都是比较麻烦的事情,而通过使用 ESP8266 这款WiFi模块,仅需要通过串口使用AT指令控制,就能满足大部分的网络功能需求。本文通过简单介绍及...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,946
精华内容 2,778
关键字:

esp32串口转wifi