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

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

3天内不再提示

【一等奖】RT-Thread创新应用设计大赛作品

电子发烧友论坛 2022-02-07 14:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作品名:基于RT-Thread摄像头车牌图像采集

作品地址:http://www.elecfans.com/project/33798

作者:Mak_z

项目简介:

使用基于RT-thread操作系统的AB32VG1开发板作为主控,对ov7670摄像头进行图像采集,并使用串口发送图片RGB565格式到PC供opencv进行图像识别。原项目设想在开发板上进行采集的同时并通过简单的二值算法和插值算法实现车牌号识别,但实践中发现开发板的ram并不够保存采集回来的图像信息,与数据手册中介绍的192k有一定差距,实现用户能使用的ram是70k;同时原设想是带lcd屏幕的,但最后发觉io口数量不够,只能通过串口调试显示,但lcd屏幕的 spi代码仍保留在原码中,可供参考。目前开发板通过摄像头采集完整数据部分已经完成,并且可以通过串口uart1发送到上位机进行图像显示。识别号牌上位机需要另外再做。

硬件说明:

1.摄像头ov7670带fifo:采用csi总线的普通30w摄像头。考虑到用模拟读取摄像头,io的反转速度可能不能满足高速采集的需要,因此保险起见,直接使用带fifo的摄像头。sccb总线采用全模拟的方式,跳过了所有中间层,直接操作寄存器,提高了总线的时钟

2f60475c-805e-11ec-9e9d-dac502259ad0.jpg

2.串口工具PL2302(ttl转RS232),一款与pc通讯的串口工具,免驱。

2f76cdce-805e-11ec-9e9d-dac502259ad0.jpg

3.总接线图

2f97d08c-805e-11ec-9e9d-dac502259ad0.jpg

软件说明:

1.软件流程图

2fabca56-805e-11ec-9e9d-dac502259ad0.jpg

2.关键代码

/* 摄像头IO口采用直接操作寄存器的方式实现,极大提升io速度 */#define BSP_FIFO_RCK_PIN      "PA.5"#define BSP_FIFO_RCK_SET_LOW     (GPIOA_BASE[GPIOx] &= ~(1ul << 5))#define BSP_FIFO_RCK_SET_HIGH     (GPIOA_BASE[GPIOx] |= (1ul << 5))
/* sccb总线的初始化并设置ov7670相应寄存器 */  sccb_init();
  if(sccb_write_reg(0x12, 0x80) == RT_FALSE){    return RT_FALSE;  }
  rt_thread_delay(50);
  id1 = sccb_read_reg(0x0b);  id2 = sccb_read_reg(0x0a);
rt_kprintf("id1 = 0x%02x, id2 = 0x%02x\n", id1, id2);
  for(rt_uint16_t i = 0;i < sizeof(ov7670_init_reg_tbl) / sizeof(ov7670_init_reg_tbl[0]);i++){    sccb_write_reg(ov7670_init_reg_tbl[0], ov7670_init_reg_tbl[1]);}
/* 开启摄像头vsync扫描线程(没有外部中断因此改用轮询的方式实现) */  rt_thread_t thread;  /* 查询VSYNC线程 */  thread = rt_thread_create("ov7670_vsync", ov7670_vsync_thread_entry, RT_NULL, 1024, 5, 100);
  if (thread == RT_NULL){    rt_kprintf("ov7670_vsync thread create fail!\n");    return RT_FALSE;  }  /* 启动线程 */rt_thread_startup(thread);
/* 提取hal库实现了uart的数据发送函数 */void uart1_send(rt_uint8_t *pbuf, rt_uint32_t len){  for(rt_uint32_t i = 0;i < len;i++){    hal_uart_clRFlag(UART1_BASE, UART_FLAG_TXPND);    hal_uart_write(UART1_BASE, pbuf);    while(hal_uart_getflag(UART1_BASE, UART_FLAG_TXPND) == 0);  }}

/* LCD底层驱动代码,因为引脚不够,所以无法演示,测试可用,另外程序里也配有寄存器版本的操作代码 */
static rt_uint32_t spi_bit_xfer(struct rt_spi_device *device, struct rt_spi_message *message){  struct rt_spi_bit_ops *ops = (struct rt_spi_bit_ops *)device->user_data;
  rt_uint8_t tmp_buf[1024];  rt_memset(tmp_buf, 0, sizeof(tmp_buf));
  if(message->send_buf == RT_NULL){    message->send_buf = tmp_buf;  }else if(message->recv_buf == RT_NULL){    message->recv_buf = tmp_buf;  }else{    return RT_FALSE;  }
  if (message->cs_take){    ops->set_cs(ops->data, PIN_LOW);  }#ifdef SPI_DC  message->length & SPI_DC ? ops->set_dc(ops->data, PIN_HIGH) : ops->set_dc(ops->data, PIN_LOW);  message->length &= ~SPI_DC;   /* 复原消息长度 *///  rt_kprintf("message->length = %d\n", message->length);#endif  spi_rw_bytes(device, (rt_uint8_t *)message->send_buf, (rt_uint8_t *)message->recv_buf, message->length);
  if (message->cs_release){    ops->set_cs(ops->data, PIN_HIGH);  }}
static const struct rt_spi_ops spi_bit_bus_ops ={  RT_NULL,  spi_bit_xfer
};

优化思路:


1. 由于ab32vg1没有外部中断可以使用,ov7670的帧同步信号vsync只有500us的高电平时间,因此为了捕捉到该信号,vsync线程一直占用很多的资源;


2. 串口与上位通讯的速度目前最快只有115200bps,上位机可以接受256000bps的速度,但将驱动改为256000bps后,接收会出现乱码,因此串口使用的图片数据非常缓慢。

项目演示

2fba60c0-805e-11ec-9e9d-dac502259ad0.jpg


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RT-Thread
    +关注

    关注

    32

    文章

    1638

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于RT-Thread和兆易创新GD32F527系列MCU的健康监测站 | 技术集结

    本项目为RT-Thread嵌入式大赛获奖作品,基于RT-Thread和兆易创新GD32F527I-EVAL的健康监测站。目录项目概述系统硬件
    的头像 发表于 01-20 17:37 7417次阅读
    基于<b class='flag-5'>RT-Thread</b>和兆易<b class='flag-5'>创新</b>GD32F527系列MCU的健康监测站 | 技术集结

    新疆移动携手华为斩获第三届IPv6技术应用创新大赛一等奖

    大赛一等奖。该赛事由中国信息通信研究院、中国通信标准化协会联合主办,以推动IPv6从“规模领先”向“质量跃升”迈进,评审严格专业,一等奖获奖率不足2%,堪称“百里挑”。该项目标志着我
    的头像 发表于 01-10 15:07 1908次阅读

    晶能光电斩获2025年度江西省省长质量奖提名与标准项目一等奖

    近日,江西省人民政府公布了2025年度江西省省长质量和专利授奖的决定,晶能光电凭借在质量管理领域的卓越实践与标准创新领域的突出贡献,举斩获省长质量奖提名
    的头像 发表于 01-04 16:36 1140次阅读

    2025 RT-Thread 嵌入式大赛排名公布!作品共赏,看大奖花落谁家!

    、实现完整、技术亮点突出的优秀作品。经过评审委员会认真、专业、公正的评审,最终分别评选出获奖作品。奖项设置一等奖2000¥+证书二等奖1000¥+证书三
    的头像 发表于 12-11 18:09 3543次阅读
    2025 <b class='flag-5'>RT-Thread</b> 嵌入式<b class='flag-5'>大赛</b>排名公布!<b class='flag-5'>作品</b>共赏,看大奖花落谁家!

    奥松两项创新技术荣获2025中国创新方法大赛广东赛区一等奖

    项目脱颖而出,双双荣获一等奖。这奖项不仅是奥松技术创新实力的权威认证,更标志着公司在高端MEMS传感与控制领域再次取得关键突破,为半导体、生物医药战略行业提供了更精准、可靠的“中国
    的头像 发表于 10-30 18:58 842次阅读

    华为与广东移动荣获ICT中国2025案例一等奖

    近日,在2025中国国际信息通信展览会上,由中国通信企业协会发起的“ICT中国案例(2025年度)”评选活动结果正式揭晓。中国移动广东有限公司与华为联合申报的“基于大模型的智能孪生网络与精准验证技术创新实践”项目,经过激烈角逐,最终荣获“一等奖(卓越案例)”。
    的头像 发表于 10-10 17:23 1327次阅读

    华为与中国移动合作荣获第三届“新绿杯”全国总决赛一等奖

    近日,第三届“新绿杯”信息通信行业赋能碳达峰碳中和创新大赛颁奖仪式在北京举行。华为联合中国移动申报的《AI赋能无线网络精细化节能创新应用》案例荣获“绿色基站及通信机房”专项赛道一等奖
    的头像 发表于 10-09 16:47 1246次阅读

    华为荣获第三届“华彩杯”算力大赛北区决赛一等奖

    近日,第三届“华彩杯”算力大赛北区决赛在北京举行。华为AI集群路由器助力中国移动打造的“AI+时代IP网络新架构助力算力网络新发展”项目,在众多参赛项目中脱颖而出,荣获北区决赛一等奖
    的头像 发表于 09-16 15:11 1171次阅读
    华为荣获第三届“华彩杯”算力<b class='flag-5'>大赛</b>北区决赛<b class='flag-5'>一等奖</b>

    华砺智行荣获湖北省科学技术进步一等奖

    斩获湖北省科学技术进步一等奖,这标志着华砺智行在智能驾驶领域的科技实力再获权威认可,成为公司科技创新征程上的又重要里程碑。
    的头像 发表于 09-12 10:10 1287次阅读

    喜报!康柚斩获全国数据创新大赛一等奖,与中石油、中国移动名企同台载誉!

    管理,慢病防治智慧平台”,从全国1300多个参赛项目中脱颖而出,斩获大赛一等奖!数据赋能乘数而上:国家级的巅峰对决“2025中国信息协会数据要素应用创新大赛”是由中
    的头像 发表于 08-28 17:33 1149次阅读
    喜报!康柚斩获全国数据<b class='flag-5'>创新</b><b class='flag-5'>大赛</b><b class='flag-5'>一等奖</b>,与中石油、中国移动<b class='flag-5'>等</b>名企同台载誉!

    易控智驾荣获应急管理科技创新奖一等奖

    的 “大型露天煤矿卡车无人驾驶安全高效运行关键技术及规模化应用” 项目荣获一等奖(本次评选仅13个项目获得一等奖)。
    的头像 发表于 08-21 16:30 1417次阅读

    季丰电子斩获中国仪器仪表学会科学技术一等奖

    技术发明一等奖 近日,2025年度中国仪器仪表学会科学技术评选结果正式揭晓。经过严格评审,季丰电子凭借自主研发的“高精度激光位移传感器”项目,从众多优秀参评项目中脱颖而出, 成功斩获该奖项的技术
    的头像 发表于 08-03 09:30 1736次阅读
    季丰电子斩获中国仪器仪表学会科学技术<b class='flag-5'>奖</b><b class='flag-5'>一等奖</b>

    (ST大赛等奖作品)超声波自拍神器实例项目

    (ST大赛等奖作品)超声波自拍神器电路图:
    发表于 05-28 21:04

    英诺达斩获第四届“创赢未来”集成电路赛道一等奖

    日前,“创赢未来”第四届长三角G60科创走廊科技与产业创新大赛(松江赛区)暨第五届“海聚英才”全球创新创业大赛(松江区选拔赛)成功举办,英诺达凭借其EDA软件及解决方案,从80余个硬科技项目中脱颖而出,斩获集成电路赛道
    的头像 发表于 05-23 10:16 1032次阅读

    电科网安斩获2025数字中国创新大赛一等奖

    近日,电科网安联合测科院打造的方案《无人机多源地理空间信息采集与处理系统密码应用方案》项目从全国300余支顶尖团队中脱颖而出,在2025数字中国创新大赛中荣获“低空产业数据安全规范化技术”赛道一等奖。颁奖典礼于福州隆重举行。
    的头像 发表于 05-10 10:00 1495次阅读