找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5180|回复: 3
打印 上一主题 下一主题
收起左侧

基于STM32F407与OPENMV通信(识别颜色发送坐标+颜色类别)

  [复制链接]
跳转到指定楼层
楼主
ID:589140 发表于 2019-12-8 17:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近拥有了OPENMV,这可是个好摄像头,虽然他是用我还没接触过的Python,但是里面例程超级多啊!大部分都是比较常用的
作为新手,刚开始不知道如何将摄像头获得的数据传给单片机..

于是,迷茫的我最终获得师兄赞助的通信程序,改成了自己需要的,就分享给大家康康啦

通过单片机给openmv供电5v,我的是openmv3,将openmv3上的P4与P5与单片机上的PA9和PA10 连接,就是单片机的Tx接摄像头的Rx,单片机的Rx接摄像头的Tx。如果接电以后,LCD上数值无变化,可能是接线接反了,一般交换过来就行。

openmv要脱机运行,就将程序保存进去,即在IDE界面点左上方的“工具”选择“将打开的脚本保存到openmvcam”即可,这时给摄像头上电就能执行程序

就是摄像头识别四个颜色,四个颜色是有顺序的,在我程序里,红色是1,黄色是2,绿色是4,深蓝色是8(本来是红色是0001,黄色是0010,绿色是0100,深蓝色是1000,传给单片机就转成了十进制输出来),然后传给单片机之后,就可以通过获得的数据判断识别到了哪种颜色,进而给单片机相应的指令。

可以通过实际情况修改摄像头里面程序中的颜色阈值,以达到想要的效果。在不同的环境下,可能颜色的阈值会有点变动,就是识别没那么准确啦..有能力的小伙伴可以自己修改程序让摄像头适应不同环境,我没能力就只能修改阈值啦..唉..叹气,哪个伙伴会的话告诉我!我去下载!

单片机与摄像头通信以后,识别到对应颜色,会在屏幕上显示posX,这是颜色中心坐标的横坐标,显示posY,这是颜色类别的序号。

这些都是我个人理解,有不对的地方欢迎大家指正啊~我们可以多多交流,一起进步鸭!
以下是主函数的程序
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"

extern u16 posX,posY

void color_s()
{
if(posY==1)
{LCD_ShowString(30,100,210,24,24,"red");        }
if(posY==2)
        {LCD_ShowString(30,100,210,24,24,"yellow");        }
         if(posY==4)
        {LCD_ShowString(30,100,210,24,24,"green");        }
         if(posY==8)
        {LCD_ShowString(30,100,210,24,24,"blue");        }

}


int main(void)
{
         u8 x=0;
        u8 lcd_id[12];                        
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)
        delay_init(168);     
        uart_init(115200);        
        
        LED_Init();                                
         LCD_Init();         
        POINT_COLOR=RED;     
        sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id)                                 
          while(1)
        {                 
                USART1_Rx_Task();
                POINT_COLOR=RED;
color_s();         
                LCD_ShowNum(30,40,posX,3,24);
                LCD_ShowNum(30,70,posY,3,24);
                                 
          x++;
                if(x==12)x=0;
                LED0=!LED0;         
                delay_ms(1000);        
        }
}

全部资料51hei下载地址:
STM32F407与OPENMV的通信.7z (335.9 KB, 下载次数: 207)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:696130 发表于 2021-8-2 12:07 | 只看该作者
楼主,为什么我的串口是乱码的啊,急
回复

使用道具 举报

板凳
ID:955629 发表于 2021-8-2 16:06 | 只看该作者
YaNGsHuOcONG 发表于 2021-8-2 12:07
楼主,为什么我的串口是乱码的啊,急

你看一下你的波特率是不是对应的
回复

使用道具 举报

地板
ID:956087 发表于 2021-8-2 19:08 | 只看该作者
YaNGsHuOcONG 发表于 2021-8-2 12:07
楼主,为什么我的串口是乱码的啊,急

观察波特率设定正确,引脚配置是否与复用引脚冲突。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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