找回密码
 立即注册

QQ登录

只需一步,快速开始

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

K60单片机摄像头处理(上位机)飞思卡尔 NXP

[复制链接]
跳转到指定楼层
楼主
本帖最后由 帆船102 于 2021-5-18 12:26 编辑

花了一段时间研究了下飞思卡尔恩智浦的K60系列的单片机,主要是通过摄像头来完成赛道一圈的行驶,本人萌新比较菜,到处CtrlC+V程序,又到处去问,总算是了解了一些,经过理解修改代码,算是入了个门吧,接下来有空的话搞一搞直立小车,那也就另说了……

发这篇文的目的主要还是记录一下自己的经历,顺便对比我还菜的萌新有个引导作用,额……应该没有吧,感觉有也非常少。

首先我用的是逐飞的一系列的东西,大大小小加起来还是花了上千,有些还是咸鱼买的……所以如果想搞智能车大赛的同志们要做好掏空钱包的准备……当然能报销最好,我仅仅是出于兴趣。。

主板:某一个宝搜索 逐飞科技智能车基地      

K60是非常老的一款单片机,主频为100MHZ,K66的话主频为180MHZ。

摄像头:MT9V032(这是130度的摄像)

电机驱动:双电机驱动电路模块

车模类型:C车车模(自带3010舵机与电机)

编码器(512线)

显示屏:IPS液晶屏模块 1.14寸

无线转串口通信:主要是将摄像头采集的图片通过上位机传输到电脑上YY上位机上。(传输为蓝色,接收为绿色)

另外:编译环境用的是IAR,不过需要配置一下逐飞库的参数才能用,不然报错,上位机用的是YY上位机(能够以方格形式显示)

说一下摄像头小车思路,这里用main函数说明,可以很好的知道小车具体流程,大致有个思路,我觉得
{

     get_clk(); //逐飞程序必备初始化代码,可以不用管

     Init_Hardware();// 初始化各个模块,如串口模块,电机驱动模块,摄像头模块,按键模块,等等。

    //Test_Steer_CenterVal();//寻找舵机中值代码

    while(1)

    {

       if(mt9v032_finish_flag)//一场图像采集的标志

       {

            JC_isGet_Gray_Image(image,PICTURE_USE2);//得到灰度图像。

            mt9v032_finish_flag = 0;//图像采集完的结束标志

            THRESHOLD = JC_Get_OSTU (PICTURE_USE2);//自动寻找最佳阈值,也就是图像二值化的临界值,阈值越大黑点越多。

            JC_GetBinaryImage(PICTURE_USE2,PICTURE_USE2,THRESHOLD);//得到阈值后,就可以得到二值化的图像

            ips114_displayimage032(PICTURE_USE2[0],IMGW,IMGH) ;//在显示屏显示二值化图像           

            JC_Element(PICTURE_USE2);//元素处理,如十字处理,弯道处理,环岛处理额这个没弄起

            hauxian();//画线,在ISP114显示屏显示中线位置,可以快速检测有无错误

            Test_KD_Control();//这个简单的舵机PD控制,可以通过按键增加P D 与qianzhan值。

            //sending(PICTURE_USE2,sizeof(PICTURE_USE2));//当需要将图像发往PC端yy上位机时才加,不然占内存。

            ips114_showint16(0,-9,st_control.jiao); //在显示屏显示舵机角度。

            ips114_showint16(0,-10,st_control.qianzhan); //显示前瞻值,作用举个例子:当有弯道出现时,值的增加和减少会让 小车提前转弯冲出赛道或延迟冲出赛道。

            ips114_showint8(0,-12,st_control.kp);//实际上我感觉 它调节舵机在规定范围内的最大角度

            ips114_showint8(0,-11,st_control.kd);  //实际上感觉无卵用,当然针对我的代码,有点问题 锁定在1或2.

            //ips114_showint16(0,-11,st_control.duoji_mid - st_control.jiao); //负值应该向左转,正值向右转,0的值不转,值的绝对值越大舵机打角越大

       }
    }

}
流程大概是这样,我太懒了也不细说,代码附一份,不过文件大概有80M,只有将代码的.c与.h文件单独发出来,在说一次这是逐飞库!山外啊龙邱啊请别烧……代码中有些地方会有注释,不过对于初学者来说,只需要大概搞懂那一坨代码干啥的?然后直接调用就对了,当然你是大佬,觉得代码太low,那也很正常,逐飞底层代码也不用管,也不要改,拿来用就是了,当然你要深入理解那也就当我没说,反正我没管。

附图

俯视图: 侧视图:

工程文件远大于20M发不了,截取其中需要的代码上位机等关键资料附上: 代码上位机.zip (10.26 MB, 下载次数: 14)

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

使用道具 举报

沙发
ID:584814 发表于 2021-5-12 21:12 | 只看该作者
果然不同凡响,当下的技术单片机内存居然有100M而且一堆东西只要千元,呵呵。
回复

使用道具 举报

板凳
ID:494288 发表于 2021-5-12 22:33 | 只看该作者
man1234567 发表于 2021-5-12 21:12
果然不同凡响,当下的技术单片机内存居然有100M而且一堆东西只要千元,呵呵。

不好意思,应为主频为100MHZ , 确确实实是上千买的 ,有些咸鱼买的便宜一半。我还以为是草稿没想到发出去了。
回复

使用道具 举报

地板
ID:494288 发表于 2021-5-12 22:43 | 只看该作者
帆船102 发表于 2021-5-12 22:33
不好意思,应为主频为100MHZ , 确确实实是上千买的 ,有些咸鱼买的便宜一半。我还以为是草稿没想到发出 ...

真是丢脸哈哈哈哈哈哈,其实我当时写的时候是想到的是:既然可以烧写100MB的工程文件,那它的内存应该就是100M,这样理解好像有问题。
回复

使用道具 举报

5#
ID:494288 发表于 2021-5-12 22:44 | 只看该作者
帆船102 发表于 2021-5-12 22:33
不好意思,应为主频为100MHZ , 确确实实是上千买的 ,有些咸鱼买的便宜一半。我还以为是草稿没想到发出 ...

还没有写完,写完麻烦大佬再看看哪里有错误,感谢批评指正。
回复

使用道具 举报

6#
ID:584814 发表于 2021-5-13 09:29 | 只看该作者
如果打算靠这玩易吃饭的几千元投入小意思,业余纯玩的自己可选,对这个老东东还是感觉高大尚
只是看到100内存对现有技术感觉惊叹,百度后知道这东东还可以随便超频到150M不过没考证。
目前本人入门级51水平会且只会对51有兴趣,偶尔参与讨论不敢随便引导怕是带人入沟就是图有一乐,呵
回复

使用道具 举报

7#
ID:584814 发表于 2021-5-13 09:37 | 只看该作者
帆船102 发表于 2021-5-12 22:43
真是丢脸哈哈哈哈哈哈,其实我当时写的时候是想到的是:既然可以烧写100MB的工程文件,那它的内存应该就 ...

这个理解没错,电视上经常有报气功大师就是这样带人的逻辑:
拉动十吨大卡,十吨大卡一般指其载重量而不是自重,自重也不表示平地拉动需克服的静摩擦力等于其自重.....和这一个套路的还有十吨大卡过身.......拉动大型飞机......
普通小型客车(就是常说的私家小轿车)挂空档平地成人都可以推动谁能感觉也是一吨多的呢 ?
所以
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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