ESP8266+STM32F407+OV7670实现图片传输

admin 未命名 2024-02-11 46 0

     声明:由于ESP8266与STM32之间采用串口进行通讯,导致传输速率较低,一到两秒才可以传输一帧图片,因此无法实现实时的图像显示。

  本文虽然以串口通讯的方式进行数据传输,但是建议想要实现实时视频显示的朋友:想要提高无线传输的速率,必须放弃串口通讯的方式,采用如SPI或SDIO的通讯方式作为STM32单片机与ESP8266(或其他无线模块)进行通讯。

大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  1. 硬件结构

    本文使用到的硬件设备主要为STM32F407单片机、ESP8266无线WIFI模块、OV7670摄像头、LCD显示屏幕以及计算机。整体结构如下图所示:

  在这里插入图片描述  上图中的LCD显示屏幕只是为了将OV7670采集到的图片在下位机进行显示,与图片传输没有什么关系,并且若增加LCD显示图像功能的话,会进一步影响图片传输的速率。因此不需要在下位机显示的朋友可以不用LCD显示屏幕,直接将图片数据通过ESP8266传输到上位机进行显示大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!。

工作方式:

     此处对上图硬件结构中各个模块是如何工作的进行简单的介绍,首先OV7670摄像机模块在单片机的驱动下,采集图像,然后单片机通过串口将采集到的图像传输给ESP8266无线WIFI模块,该模块已经提前设置为无线透传模式(后文会介绍无线透传模式的设置方式),在透传模式下,ESP8266会将单片机串口发送来的所有数据,以无线的方式自动发送给与其连接好的上位机软件,上位机软件通过对接收到的图像数据进行处理,就能够显示出OV7670采集到的图片,本文使用到的上位机软件为C#语言编写,通过TCP/IP通讯方式与ESP8266进行通讯,并可以将传输到的数据处理成图片进行显示,后文会对上位机软件进行详细介绍。

  2. STM32驱动OV7670采集图片

    本文没有使用DCMI接口来驱动摄像机,而是使用IO口,实现OV7670图像数据的采集,而且其采集速率可以达到每秒24帧以上。以下为OV7670的IO口驱动代码:

    根据OV7670的驱动代码,正确连接接线,搭配LCD显示屏幕,就可以显示摄像机采集到的图像,速率大于24帧每秒,下图为LCD摄像头视频显示。

  在使用杜邦线进行接线的时候,一定注意要将数据线和信号线分开各自单独捆起来,否则信号之间会发生干扰,导致花屏现象。如果使用排针插口,则不存在这个问题。

  在这里插入图片描述

  3. ESP8266无线透传模式设置

    一般情况下,在网上购买的ESP8266模块内置AT固件库,用户使用串口助手通过简单的AT指令就可以将ESP8266设置为不同的模式(总共有3种模式)。但是,如果用户购买的模块没有内置固件库,则需要用户自己烧写固件。烧写固件库很简单,网上由很多教程,本文重点不在此,因此不做过多介绍。

ESP8266透传模式设置步骤:

设置为客户端模式:AT+CWMODE=1 设置工作模式查询是否设置成功:AT+CWMODE? 查询工作模式加入AP: AT+CWJAP=“XXXX”,“XXXX”,上述指令中,使用者应该根据实际情况,填写所要连接的热点或者WIFI的名称以及密码重启ESP8266: AT+RST 重启获取本模块IP看一下是否连接上了: AT+CIFSR设置为透传模式:AT+CIPMODE=1连接到你自己的服务器(可以用网络调试助手进行测试): AT+CIPSTART=“TCP”,“IP地址”,端口进入透传:AT+CIPSEND

     ESP8266模块按照上述步骤与PC连接好并设置为透传模式之后,就可以与PC进行通讯。本文使用STM32采集OV7670的图像,然后利用串口将采集到的图像数据传输给ESP8266,ESP8266会自动将串口传输来的数据发送给PC端的上位机软件,在上位机中就可以实现图片的显示。

  4. STM32主函数图像数据更新代码

    以下代码为STM32主程序,包括OV7670图像帧的刷新以及数据发送。

    5. 上位机软件

     上位机主要用于与ESP8266进行无线连接,并将ESP8266发送来的图片数据重新编码为图片并进行显示,本文使用C#语言编写上位机软件,通过TCP/IP协议与ESP8266进行通讯,软件界面如下图所示。

  在这里插入图片描述   软件界面中间黑色区域为图像显示区域,下方白色TextBox为数据发送区域,左侧TextBox为数据接收显示区域(程序设置为图片数据不显示)。由于下位机单片机采集到的图片数据格式为RGB565,因此上位机内部需要将接收到的RGB565格式的图像数据转化为RGB24,才可以正常将接收到的图片数据显示为图片。

     该上位机主要功能包括TCO/IP协议以及图像数据解码,具体代码如下所示:

     最终的显示结果如下图所示:

  在这里插入图片描述

     上图完成了最终的图像数据无线传输,并在上位机中完成了图像的解码,其中图像显示区域右侧黑色区域是因为图像显示区域设置的比真实图片的分辨率略大。后续可以进行改进大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!。此外,由于单片机每发送一次数据,除原本的数据之后,貌似好有多余的几个字节的数据,导致图片显示出现些许差错,后续也可以进行改进。

上位机源代码:https://download.csdn.net/download/qq_37855507/16496001

ESP8266+STM32F407+OV7670实现图片传输

ESP8266+STM32F407+OV7670实现图片传输

评论