K210视觉循迹,STM32之间串口通信 #智能车

2024-03-01 1447阅读

温馨提示:这篇文章已超过401天没有更新,请注意相关的内容是否还可用!

目录

个人感慨与感悟

K210视觉循迹


个人感慨与感悟

本人是一名大二的二本学生,本篇文章记录一下我这一年多的学习历程(主要还是针对标题的内 容)。下面是我的一些经历和感悟,不感兴趣的可以直接跳过-——————————

       高考完之后,在我收到录取通知书之后,父母让我提前学点大学的东西,比如高数英语之类的。后来,我就在b站上面逛逛,然后了解到了python这门语言。后来........被卖课的骗了,上了及几十节基础语法(上网上搜,随便一搜一大堆),花了三千多(服了,当时我还傻乎乎的分期付款);正如我前几篇文章。

        开学之后,在新生群里,看到有机器人之类的社团招生。想着给自己的大学生活找点事情做做,进入社团之后,我被那些智能车给深深的迷住了。从此开启造车之路。

        大一上没学啥。就学了Arduino的一些基础知识,如digitalRead(),analogWrite()函数之类的,后来在期末的时候勉强做出了一个小车。仅仅能控制正转反转哈哈哈。当时一直不理解寻迹小车是生么个逻辑,为什么检测到黑线能直走,为什么检测到十字路口就能转弯;(实际上,就是循迹传感器检测到黑线返回高电平(也有的是低电平),单片机检测到为高电平(低电平),我就控制电机,从而它才能走。而不是检测到高电平它自己就动,而是我写了代码让他动而已)

K210视觉循迹,STM32之间串口通信 #智能车 第一次做的小车

​​​​

大一下学的还行,还是学arduino。现在看来进度挺慢的。就学了一些模块,如超声波,机械臂,esp8266,激光传感器,播放器之类的。因为口罩原因,所有吉林省电赛推迟举办了,然后我就碰巧让我遇上了,那年省赛是自主命题,也是小车循迹,不过那时候我还没有完全搞清楚循迹的逻辑,很菜,然后连循迹都没循好,(扇形那块卡住了),后来和学长合作,给学长了做了个人机互界面

K210视觉循迹,STM32之间串口通信 #智能车 人机交互,发送数据 K210视觉循迹,STM32之间串口通信 #智能车 淘晶驰的显示屏

 升大二时候的暑假,打了电赛,也取得了一点成绩(大佬轻喷,手下留情),我做的是E题,激光追踪,主控还是用的Mega2560,搭配云台,K210。
K210视觉循迹,STM32之间串口通信 #智能车

2023电赛

 大二上,也就是这个学期。提前一个月准备   吉林省人工智能创新大赛。打了四次板子,车身外壳用3d打印机打的,最后比赛前一天晚上摄像头被我搞坏了,哎。好了,正式开始正题吧

K210视觉循迹

       K210基于MicroPython 语言,而“MicroPython 是 Python 3 编程语言的精简高效实现。说人话就是K210用python编程。

       我是利用K210检测物体的方法来写的循迹,这个方法的话肯定是没有利用二值化那些方法寻线好,因为我选择的赛道是全地形赛道,需要识别不同颜色的障碍物,所以只能靠检测物体来做。

K210视觉循迹,STM32之间串口通信 #智能车 全地形赛道

 先附上源码(参考CSDN一些大佬文章写的,不是纯手搓哈哈哈,刚接触K210,还没那个实力

/(ㄒoㄒ)/~~)

# Untitled - By: ZWHSONDER - 周四 10月 26 2023
# 导入模块
import sensor, time, image ,lcd                                 
from machine import UART 
from fpioa_manager import fm 
# 配置串口引脚
fm.register(18, fm.fpioa.UART1_TX, force=True)
uart_A = UART(UART.UART1, 115200, 8, 0, 1, timeout=1000, read_buf_len=4096)
# 感光元件设置
sensor.reset()                                              
                
sensor.set_pixformat(sensor.RGB565)                        
sensor.set_framesize(sensor.QVGA)                           
sensor.set_auto_exposure(1)                                 
sensor.set_auto_gain(False)
sensor.set_auto_whitebal(False)          
sensor.set_vflip(1)                               
sensor.set_hmirror(False)         
sensor.skip_frames(time = 2000) 

# 显示屏初始化
lcd.init(freq=15000000)
# 创建时钟对象
clock = time.clock()                                       
# 寻找色块
# 定义类
class color_property():
    cx                      =  0                            
    cy                      =  0                           
    flag                    =  0                           
    color                   =  0                            
    pixels_max              =  0                                      
    color_threshold         = (0, 0, 0, 0, 0, 0)            
    color_roi               = (0,0,320,240)                 
    color_x_stride          =  1                            
    color_y_stride          =  1                            
    color_pixels_threshold  =  100                          
    color_area_threshold    =  100                          
    color_merge             =  True                         
    color_margin            =  1                            

# 定义黑色色块
black = color_property()
black.color_threshold         = (0, 20, -9, 4, -5, 6)
black.color_roi               = (0,120,320,240)
black.color_x_stride          =  1
black.color_y_stride          =  1
black.color_pixels_threshold  =  4000
black.color_area_threshold    =  4000
black.color_merge             =  True
black.color_margin            =  1

#串口发送数据
def sending_data(x,y):
    FH = bytearray([0x2C,0x12,x,y,0x5B])
    uart_A.write(FH);
# 定义寻找色块函数
def opv_find_blobs(color,led_flag):
    color.pixels_max = 0                                    
    color.flag       = 0                                   
    color.led_flag   = 0                                    
    for blobs in img.find_blobs([color.color_threshold],    
    roi = color.color_roi,                                 
    x_stride = color.color_x_stride,                        
    y_stride = color.color_y_stride,                       
    pixels_threshold = color.color_pixels_threshold,        
    area_threshold = color.color_area_threshold,            
    merge = color.color_merge,                              
    margin = color.color_margin):                           
        img.draw_rectangle(blobs[0:4])                     
        if color.pixels_max 160:
                  if black.cy60:#80
               if black.cx>140:
                  if black.cx160:
                        if black.cy160:
                  if black.cy
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]