OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3127|回复: 16

GD32F303CCT6+OV7670+NRF24L01P=无线图像传输

[复制链接]

10

主题

3073

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7750
金钱
7750
注册时间
2020-5-11
在线时间
3221 小时
发表于 2023-4-18 10:17:04 | 显示全部楼层 |阅读模式
本帖最后由 LcwSwust 于 2023-4-18 10:41 编辑

接上一帖:“基于GD32F303CCT6的OV7670驱动
  http://www.openedv.com/forum.php?mod=viewthread&tid=342658&extra=

此次调试了接收端,图像传输已初步完成,目前帧率为1帧/秒。
而且由于每次采集1/4帧图像,在有运动物体的情况下,图像会出现“错位”。
(后期再考虑图像压缩及语音的传输)
图像为320*240像素,每像素2字节,每行640字节;
NRF地址宽度为3,CRC为1字节,
NRF打包多出部分:1前导+3地址+1.1控制+1CRC=6.1字节;
PAYLOAD为32字节(x+y+30字节图像数据);空中速度2Mbps。
每行图像:320*2/30=22包;


有效载荷:32/(32+6.1)=84%
利用FIFO:1包150us,空中速率约2.032Mbps。
1行数据约3.2ms;
(32+6.1)*22=838.2字节,838.2*8/3.25=2.063Mbps,符合配置。
60行数据约200ms;
加上等待DMA的时间,传输一幅图像(240行)约需1s。


发送端OV7670配置为RGB565模式,
发送流程:
设置好采集启始行,等待DMA采集完成,通过无线模块发出采集数据。
NRF24L01P模块流程:
初始化为发送模式,CE置高,读取TX_FULL状态位,若为0(表示TX_FIFO未满)就
将数据包写入NRF。

接收端直接将数据发给显示屏(SPI接口,2.8寸TFT,320*240)。
接收流程:
NRF24L01P初始化为接收模式,读取RX_EMPTY状态位,若为0(表示RX_FIFO有数据)
就读取数据包,送往TFT显示屏。


电路.rar (147.26 KB, 下载次数: 15)
专治疑难杂症
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3073

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7750
金钱
7750
注册时间
2020-5-11
在线时间
3221 小时
 楼主| 发表于 2023-7-27 10:56:21 | 显示全部楼层
20230727:改进OV7670配置,图像看着更清晰。

程序1.1.rar (8.68 MB, 下载次数: 6)
专治疑难杂症
回复 支持 1 反对 0

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2023-7-1
在线时间
0 小时
发表于 2023-7-1 22:10:31 | 显示全部楼层
好人一生平安
回复 支持 反对

使用道具 举报

0

主题

441

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2850
金钱
2850
注册时间
2016-3-19
在线时间
747 小时
发表于 2023-7-27 13:53:28 | 显示全部楼层
谢谢分享

有时间的话   可以鼓捣一下
Nothing is impossible
回复 支持 反对

使用道具 举报

10

主题

3073

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7750
金钱
7750
注册时间
2020-5-11
在线时间
3221 小时
 楼主| 发表于 2023-8-14 13:00:24 | 显示全部楼层
本帖最后由 LcwSwust 于 2023-8-14 13:02 编辑

20230814
图像经压缩后传输(非标准JPG压缩)
程序:
图传-TX2.2.rar (4.32 MB, 下载次数: 8)
专治疑难杂症
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2019-9-4
在线时间
31 小时
发表于 2023-8-17 00:22:57 | 显示全部楼层
请问楼主有没有测试这个传输距离最大是多少?
回复 支持 反对

使用道具 举报

10

主题

3073

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7750
金钱
7750
注册时间
2020-5-11
在线时间
3221 小时
 楼主| 发表于 2023-8-17 12:24:48 | 显示全部楼层
mcuboy 发表于 2023-8-17 00:22
请问楼主有没有测试这个传输距离最大是多少?

由于空中波特率为2Mbps,两米外就有丢包,最大距离估计10米左右吧。
想要距离远,可以降低空中波特率,1Mbps,250kbps(NRF24L01+),后面有空再试试,目前正在调试音频传输。
专治疑难杂症
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2021-10-17
在线时间
63 小时
发表于 2023-9-18 00:55:36 | 显示全部楼层
楼主,我是需要用两块NRF24L01单向传输100K字节左右的数据,现在遇到的问题是,接收端接收速率(大概只有20K字节1秒)跟不上发送的速率,导致只能收到一半左右的数据,请问你是怎么提高接收的速率的?
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2021-10-17
在线时间
63 小时
发表于 2023-9-18 01:00:15 | 显示全部楼层
我手上用的是f1c8t6,两端速率也设置的是2Mbs,也有对比过你的配置,没有太大的差别。
回复 支持 反对

使用道具 举报

10

主题

3073

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7750
金钱
7750
注册时间
2020-5-11
在线时间
3221 小时
 楼主| 发表于 2023-9-22 13:59:16 | 显示全部楼层
本帖最后由 LcwSwust 于 2023-9-22 14:04 编辑
l666l 发表于 2023-9-18 00:55
楼主,我是需要用两块NRF24L01单向传输100K字节左右的数据,现在遇到的问题是,接收端接收速率(大概只有20 ...

报歉未收到通知,刚打开帖子才看到消息,接收端关闭自动应答,开启接收中断,单片机检测到中断就读数据清中断标志就行。

若实在无法解决,建议发个帖子,我们探讨一下。
专治疑难杂症
回复 支持 反对

使用道具 举报

10

主题

3073

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7750
金钱
7750
注册时间
2020-5-11
在线时间
3221 小时
 楼主| 发表于 2023-9-22 14:02:45 | 显示全部楼层
本帖最后由 LcwSwust 于 2023-9-22 14:18 编辑

20230922更新:1.增加了音频传输功能<gd32_adc.c>
  ADC0.8检测MIC信号,T1.1(20KHz)触发,DMA0.0循环模式采集。
  音频压缩采用"增量调制",音质较差,见主程序 nrf_txwav(void):
    主要流程:数字低通滤波、去直流、AGC、增量调制;
    压缩率:1个采样点压缩为1位;对于NRF24L01P来说,只需11ms左右发一包数据即可。
2.图像方面的改进:
  DMA采集OV7670图像后,每8行压缩为一个小JPG文件进行打包,改善在信号差时的表现。

增加音频传输程序.rar (9.32 MB, 下载次数: 2)
专治疑难杂症
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2021-10-17
在线时间
63 小时
发表于 2023-9-22 15:59:35 | 显示全部楼层
LcwSwust 发表于 2023-9-22 13:59
报歉未收到通知,刚打开帖子才看到消息,接收端关闭自动应答,开启接收中断,单片机检测到中断就读数据清 ...

已发,求大佬救救
回复 支持 反对

使用道具 举报

10

主题

3073

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7750
金钱
7750
注册时间
2020-5-11
在线时间
3221 小时
 楼主| 发表于 2023-10-24 09:32:37 | 显示全部楼层
20231024更新
增加信号图标、电量图标、菜单显示、自动清屏、图像变化报警功能。
增加菜单程序.rar (9.45 MB, 下载次数: 2)
专治疑难杂症
回复 支持 反对

使用道具 举报

10

主题

3073

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7750
金钱
7750
注册时间
2020-5-11
在线时间
3221 小时
 楼主| 发表于 2023-11-9 17:12:15 | 显示全部楼层
本帖最后由 LcwSwust 于 2023-11-9 17:27 编辑

20231109更新
通过超频让无线图像传输帧率达到8帧每秒;
程序的主要改动:
1.MCU超频,改"system_gd32f30x.c",设置频率到240MHz。
2.控制OV7670的0x2A、0x2B寄存器降低帧率,降至8fps左右。
3.修改OV7670图像采集时序,通过双缓冲(每个缓冲为8行数据)不间断DMA采集,
采集的同时进行压缩(ImgComp,存入环形队列)、无线传输(nrf_txjpg_q读取环形队列);
得到的图像就不会像以前那样在转动摄像头时柱子变阶梯,
  现在的图像在转动摄像头时柱子只是会变斜一点。
4.修改音频数据增量调制的时序,在“OV_flagok[id]=0;”之后
   处理音频增量调制dlt_pro(),在nrf_txjpg_q()中发送数据。

注意:
1.超频后单片机的可靠性不能保证。
2.程序中的注释有大部分数据是超频前的数据,有些注释不一定正确,
代码较乱,待有空时慢慢整理。

程序.rar (9.6 MB, 下载次数: 6)
专治疑难杂症
回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2022-2-14
在线时间
22 小时
发表于 2024-1-23 10:17:47 | 显示全部楼层
LcwSwust 发表于 2023-11-9 17:12
20231109更新
通过超频让无线图像传输帧率达到8帧每秒;
程序的主要改动:

学习学习
回复 支持 反对

使用道具 举报

0

主题

30

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1007
金钱
1007
注册时间
2020-3-1
在线时间
189 小时
发表于 2024-2-2 20:14:59 | 显示全部楼层
楼主厉害呀,还可以这样玩,如果换大内存芯片,速度更高点的芯片,是不是就基本上能满足30帧要求?
回复 支持 反对

使用道具 举报

10

主题

3073

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7750
金钱
7750
注册时间
2020-5-11
在线时间
3221 小时
 楼主| 发表于 2024-2-3 09:06:25 | 显示全部楼层
本帖最后由 LcwSwust 于 2024-2-3 09:08 编辑
cooleaf 发表于 2024-2-2 20:14
楼主厉害呀,还可以这样玩,如果换大内存芯片,速度更高点的芯片,是不是就基本上能满足30帧要求?

目前的情况是这样:
一帧图像原始数据量为320*240*2=153.6K字节,压缩后数据量约10K~17K字节;
NRF24L01P空中波特率2Mbps,就是每秒250K字节;
250/17=14.7帧每秒;250/10=25帧每秒;
再考虑到打包、音频数据的消耗,单片机性能足够的情况下,估计能做到12~20帧每秒;
也就是说,受限于空中波特率、压缩比,保守估计就是12帧每秒的帧率。
若想要达到30帧,可能需要空中波特率更高的模块或改进压缩算法减小数据量。
专治疑难杂症
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-16 10:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表