基于串口调试助手的WIFI模块调试-FPGA简单联网(点灯)

根据正点原子的《ATK-ESP8266 WIFI用户手册》,使用XCOM V2.2串口调试助手测试WIFI模块[26]。在本系统中运用到的功能主要是TCP/IP模式中的TCP Client透传模式。发送指令的顺序如下:

  1. 设置WIFI的模式为STA模式:AT+CWMODE=1。响应:OK
  2. 重启使命令生效:AT+RST。响应:OK
  3. 联网:AT+CWJAP="wy225","pcblab225"(连接WIFI的名称(ssid)和密码)。响应:OK WIFIconnect GOTip
  4. 连接服务器:AT+CIPSTART="TCP","www.mjywxy.xin",80。响应:CONNECT OK
  5. 开启透传模式:AT+CIPMODE=1。响应:OK
  6. 开始透传:AT+CIPSEND。响应: OK >
  7. 最后使用“+++”退出透传模式

结果如下使用GET方法,通过HTTP请求的方法发送数据,得到服务器返回的数据如下。

图1 WIFI调试之HTTP请求

服务器端wifi.php程序主要代码如下。

图2 wifi.php主要程序

第一个if判断,是否获取到数据;第二个if判断获取到数据中a的值是否是0或1。如果是则表示存储a的值到wifi.dat文件中,否则从wifi.dat文件中读取a的值返回。

…… FPGA-UART-WIFI

原计划UART部分使用NiosII搭建,但是使用片上ROM进行搭建系统时会提示内存不足,ELF文件下载失败。EP4CE6E22C8N只有276480bits的片上ROM。但是NiosII+UART需要27480Byte,编译显示超过片上ROM的106%内存占用率。故需用SDRAM(只买了SDRAM)作为系统的复位向量和错误向量,而NiosII与原来用Verilog写的系统要共用SDRAM,这无疑增加了系统的复杂程度,而且难以实现,故采用纯Verilog进行整个系统的编写。

…… UART_TX

为了进行串口通信,首先进行串口发送模块程序的编写。其功能是每次发送一个字节的数据(串转并),并可通过baud_set选择不同的波特率,用tx_done信号表示已经发送完成。其端口定义如下。

表1 UART发送模块端口定义


端口名


位宽


输入 / 输出


说明


clk


1


input


时钟信号50MHz


rst_n


1


input


复位信号,低电平有效


data_byte


8


input


要发送的数据


send_en


1


input


为1使能发送(一个脉冲就好)


baud_set


3


input


波特率选择端


rs232_TX


1


output


数据串行输出引脚


tx_done


1


output


发送完成标志信号


uart_state


1


output


发送状态,为1表示正在发送中

具体实现方法,包括波特率的计算、激励文件的编写等,参照《小梅哥的教学视频》

…… UART_RX

关于串口接收程序,同样参照《小梅哥的教学视频》,有波特率的选择、接收数据存储(串转并)和接收完成标志等功能。在顶层文件中例化uart的发送模块,使用“In-System Source and Probe”IP核,完成在线发送和接收功能。

表2 UART接收模块端口定义


端口名


位宽


输入 / 输出


说明


clk


1


input


时钟信号50MHz


rst_n


1


input


复位信号,低电平有效


data_byte


8


output


接收到的数据


baud_set


3


input


波特率选择端


rs232_RX


1


input


数据串行输入引脚


Rx_done


1


output


接收完成标志信号

…… UART_WIFI之自启动联网

首先发送数据到电脑上,通过串口调试助手,检测发送数据的格式是否有问题。一开始通过按键控制发送数据的内容,确认无误之后,再修改为自启动。其中,为了避免插拔的麻烦,直接定义两个相等的RX和TX引脚,故定义模块的端口如下表。

表3 UART配置WIFI自启动联网模块端口定义


端口名


位宽


输入 / 输出


说明


clk


1


input


时钟信号50MHz


rst_n


1


input


复位信号,低电平有效


key


1


input


按键


rs232_tx


1


output


数据串行输出引脚


rs232_rx


1


input


数据串行输入引脚


test_tx


1


output


方便测试用,等于rs232_tx


test_rx


1


input


方便测试用,等于rs232_rx


led


1


output


LED灯,接收到指定数据的标志

关于程序,首先初始化要发送的数据,如图7-4示。其中,由于之前连接了WIFI,模块会保存账号和密码,故可不发送WIFI账号和密码。重启之后,模块会在5秒之内自动连接到WIFI,并获得IP。

关于波特率设置,因为ESP8266每次重启之后,都会把波特率自动设置为115200,故配置UART的波特率为115200。

图3 自启动联网相关配置数据

需要注意的是,WIFI模块数据接收时,以十六进制的“0A 0D”表示数据接收完成,对应到程序中是“\r\n”。还有,发送“+++”表示退出透传模式,此时不需要“\r\n”,而且任何多余字符(包括空格、换行等)都不能有,否则无法退出透传模式[26]

另外,还有一个需要注意的点是,Verilog中必须用双引号包围字符串。且发送CIPSTART的字符串时,也必须用双引号。故此时就必须用反斜杠转义双引号。

首先,通过计数器cnt判断发送到第几字节了。由于字符串寄存器最大设置了42字节,所以当发送完第42字节时,让cnt清零。相关程序如下:

图4 发送完42字节清零寄存器

其中delay1s_cnt是延时1秒计数器,为了实现自动启动(发送完一个字符串之后,自动发送下一个字符串)而设置。delay5s_cnt是延时5秒计数器,目的是为了保证模块能获得IP后再操作。

接下来开始按字符串的顺序发送,其中,为了使每次都能正常退出透传模式,在程序开始,首先发送“+++”。之后,发送复位信号,使ESP8266重启,此时需要等待5秒延时,才能保证模块已获得IP,能够进行之后的数据发送。

图5 发送数据转换程序

由于uart_tx模块每次只能发送一个字节,所以需要一个移位寄存器来表示,每次应该发送第几个字节。相关代码如下。

图6 移位寄存器的实现

对于接收模块,接收完成后判断当接收到0时,让LED灯亮;接收到K时,让LED灯熄灭。实现其功能的代码如图所示。

图7 接收到指定字符,执行相应操作代码

将LED与单片机的舵机信号直连(使用电阻分压),即可实现WIFI控制舵机,使摄像头旋转或者停止。关于程序部分,直接例化此模块到myCamera的顶层文件即可。

…… 最终显示结果

图8 WIFI控制的显示结果

从图中可以看出网页可以实现对蓝色LED的亮灭控制。由于舵机控制无法从图片上提现出来,故用LED灯指示。

原文地址:https://www.cnblogs.com/mjy2wxy/p/11089146.html

时间: 2024-10-14 17:06:09

基于串口调试助手的WIFI模块调试-FPGA简单联网(点灯)的相关文章

树莓派3uart wifi模块调试 (浪费了我3天时间的宝贵经验)

最开始我是连接一个wifi模块到我的arduino uno上,可是uno只有一个uart并且这个uart和usb串口相连的.出现了一些和很奇怪的问题.进入设置模式(m0=1 , m1=1)后,确实能够设置,设置的参数都保存成功了,但是使用c3c3c3无法获取到版本没有任何返回,可能当时是我的rx数据线的没有接触的问题. 后来我将两块uart wifi模块通讯,在电脑上外接usb转串口 (2个usb转换器,通讯一点问题没有,使用linux的minicom. minicom一定要将硬件流控制关闭,8

13-51单片机ESP8266学习-AT指令(ESP8266作为TCP客户端,连接TCP服务器,用串口调试助手和手机TCP调试助手测试)

写完题目刚想起来一件事情,如果手机作为客户端(不连接路由器的情况下),手机连接模块的无线会分配一个IP地址,,,这个IP地址事先我也不知道....我先看看AT指令里面有没有一个指令可以打印一下连接自己wifi信号后的设备的IP地址的指令. 没找到....................... 算啦,我直接用手机连接,看一下手机分配的IP地址,然后再设置模块APP可在百度手机助手,安卓市场,91助手,下载安装(搜索"小五物联") 咱们还是设置模块的工作模式为模式3 AT+CWMODE_D

基于WIFI模块(ESP8266)与非同一个局域网内服务器建立连接(转)

原文地址:https://blog.csdn.net/ludaoyi88/article/details/62236644 案例简述: 以WIFI模块(ESP8266)为开发对象,处在局域内网中的WIFI模块,连接到另外一个局域内网的TCP服务器,形成WIFI模块和服务器之间通信.本文先以电脑控制WIFI模块的连接,熟悉AT指令的使用,再通过编程手段,由单片机去控制WIFI模块,深入学习. 一.电脑端调试,控制WIFI模块的连接 说明:将WIFI模块通过串口与电脑连接,电脑通过串口调试软件给模块

一牛网 | 试用&评测-Lark7618语音识别wifi模块

一牛网论坛是一个技术交流平台,论坛包含各种技术资料.案例分析.问题解答,是IT人员交流的好平台,平台中汇聚着各类工程师,可以在论坛进行手机开发.物联网.无人机.智能车等知识的学习交流和分享经验,各种资料免费下载. 试用活动开始后,笔者第一时间联系到一牛网的论坛管理员-白菜,经过多次协商,最终确定了此次Lark7618语音识别wifi模块的免费试用活动方式,入口在文章的最下方. 由白菜亲自操刀,对Lark7618 语音识别wifi模块进行了深度的剖析,让我们来看看白菜对Lark7618 语音识别w

利用FPGA控制WIFI模块(1)——8266篇

0.前言: 这一系列博客主要用来记录通过FPGA控制无线传输设备,特别是WIFI模块的博客.希望为后来的FPGAer提供相关的经验,少走弯路. 1.模组简介 ESP8266 系列模组是基于乐鑫ESP8266的超低功耗的UART-WiFi模块的模组,可以方便地进行二次开发,接入云端服务,以最低成本提供最大实用性.可以在10元以内实现WIFI-UART的双向控制.模块的基本外观可以参考下面官网的图片.图片里模块的型号是ESP-01S,安信可公司除了这款模块以外,还有几款几款类似的型号,都是基于ESP

esp8266 wifi模块刷nodemcu固件并蓝牙串口调试

esp8266 wifi模块价格十分实惠.出厂是默认带AT指令的系统,通过串口使用at命令进行交互.但是可以刷别的固件,例如nodemcu. nodemcu可以用lua脚本控制模块,而且lua脚本的优势是非常容易编写,也不需要编译.本文简单的介绍一下在esp8266模块上烧写nodemcu固件,并简单的通过串口让模块接入AP. 下载nodemcu_flasher64bit.exe  这是一个nodemcu固件的烧写软件.我下载的是64为版本.32为版本地址为:http://www.nodemcu

ESA2GJK1DH1K升级篇: 测试STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级

实现功能概要 前面的版本都是,定时访问云端的程序版本,如果版本不一致,然后下载最新的升级文件,实现升级. 这一节,在用户程序里面加入MQTT通信,执行用户程序的时候,通过接收MQTT的升级命令实现升级 注意:BootLoader程序还是用以前的程序. 一开始设计这个升级篇的时候,我就规定好了大的框架 BootLoader只是负责升级,其它一概不管 用户程序只是写入升级标志,然后重启,所有的升级步骤全部交给BootLoader! 协议: 一,MQTT上位机通过MQTT发送获取设备信息指令 {"da

单片机+wifi模块进行远程控制开关灯

一.前言 菜鸟起初玩单片机的时候,当点亮第一个小灯时内心激动的一批,大二下半学期利用一个寒假在跟着视频学习,就这样开始入们单片机了.大学里一年一度的校园电子设计大赛如期而至,我也报名参加了(纯属曾热闹着玩去了),学校要求参赛的人员晚上要去实验室去做自己的作品,我也去实验室了几次,给我最为震惊的就是他们设计的东西大部分都是某宝上买的零期间然后自己焊装拼接,代码啥的拿过来然后改个一二就行了!(当时给我都整懵逼了,比赛原来是这样的,这能学到啥~V~,我想象的应该是卷起袖子自己纯撸代码那种.....).

移植 wifi模块

本文以realtek 8192CU WiFi模块为例,介绍USB wifi在Jelly Bean 4.1的调试笔记. 1.WIFI打不开现象概述 WiFi打不开是指您在UI的settings下选中WiFi选项,将其置为on(打开),但最终结果是自动变成off(关闭).正在打开Wi-Fi.正在扫描等一系列不能正常打开WiFi的提示. 2.问题分析流程 WiFi打不开从硬件和软件两方面进行定位,一般是先硬件,然后软件.总体分析流程如图: 3.确认硬件可以识别 8192CU WiFi模块是基于usb接