Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1560|回复: 13

组6进度

[复制链接]

391

主题

1222

帖子

3902

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3902
发表于 2024-7-9 12:45:37 | 显示全部楼层 |阅读模式
回复

使用道具 举报

2

主题

10

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2024-7-9 23:40:08 | 显示全部楼层
1.学习了解openMV的上手教程。
2.了解图像处理背景知识,学习色块查找利用LAB方式,并通过调整L和a,b分别修改亮度和输出色阶进行颜色平衡。
3.学习Python基础知识,了解输出;变量赋值;list列表;tuple元组;条件判断;循环;数据类型转换;函数;切片;对象和模组的基础知识为学习OpenMV做准备。
回复

使用道具 举报

2

主题

10

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2024-7-11 17:59:21 | 显示全部楼层
学习openMV图像处理方法,包含:
      1.感光元件sensor模块,设置参数
      2.获取图像宽度高度等基本运算
      3.图像的统计信息
      4.在图像上显示线,框,圆等
      5.查找色块进行颜色识别
回复

使用道具 举报

3

主题

34

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
发表于 2024-7-12 01:15:51 | 显示全部楼层
import time
import image
import sensor
from pyb import UART
from pyb import LED
THRESHOLD = (0, 46, -58, 54, -88, 36)  # 循迹阈值


uart = UART(3, 115200)
uart.init(115200, bits=8, parity=None, stop=1)  # 8位数据位,无校验位,1位停止位

#LED(1).on()
# LED(2).on()
# LED(3).on()

sensor.reset()
sensor.set_vflip(True)
sensor.set_hmirror(True)
sensor.set_pixformat(sensor.RGB565)
# 80x60 (4,800 pixels) - O(N^2) max = 2,3040,000.
sensor.set_framesize(sensor.QQQVGA)
# sensor.set_windowing([0,20,80,40])
# WARNING: If you use QQVGA it may take seconds
sensor.skip_frames(time=2000)
clock = time.clock()                # to process a frame sometimes.

while (True):
    clock.tick()
    img = sensor.snapshot()

    img.mean(2)  # 降噪
    img.binary([THRESHOLD])  # 二值化
    img.set_pixel(10,50,(255,0,0))
    img.draw_line(0,0,50,50, color=127)
    img.draw_string(20,20,'123')
    '''
    #img.crop([0, 15, 80, 60])  # 截取图像
    img.erode(1)  # 加粗线条
    line = img.get_regression([(100, 100)], robust=True)
    #print("rho:", rho)
    if (line):
        rho = (int)(abs(line.rho())-img.width()/2)
        if line.theta() > 90:
            theta = line.theta()-180
        else:
            theta = line.theta()
        img.draw_line(line.line(), color=127)

        data = bytearray([0xb3, 0xb3, rho, theta, 0x5b])
        uart.write(data)  # 打印rho和偏移坐标
        print("rho:", line.rho())  # 回归线的偏移距离   一般用偏移距离较好
        print("theta:", line.theta())  # 回归线的偏移角度
'''
回复

使用道具 举报

3

主题

34

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
发表于 2024-7-12 02:37:10 | 显示全部楼层
TX----RX
RX----TX
GND----GND


K210:
import sensor, lcd, time
from machine import UART,Timer
from fpioa_manager import fm
#映射串口引脚
fm.register(10, fm.fpioa.UART1_TX, force=True)
fm.register(11, fm.fpioa.UART1_RX, force=True)

#初始化串口
uart = UART(UART.UART1, 115200, read_buf_len=4096

DATA = '@' + A+ B + C + '@' + '@'
uart.write(DATA)
uart.write('\r\n')#发送换行符
utime.sleep_ms(1)#加上延时发送不乱



OpenMV:
import  time
from pyb import UART
uart = UART(3,115200)   #定义串口3变量
uart.init(115200, bits=8, parity=None, stop=1) # init with given parameters
……


STM32
GPIO端口设置、串口1对应引脚复用映射、USART1端口配置、USART1 初始化设置、串口2 NVIC 配置


串口1中断服务程序(接openmv的串口)
void USART6_IRQHandler(void)           
void USART6_IRQHandler(void)                        //串口1中断服务程序
{
        static uint8_t RxState = 0;
        static uint8_t pRxPacket = 0;
//                BEEP_Start;

        if (USART_GetITStatus(USART6, USART_IT_RXNE) == SET)
        {
                uint8_t RxData = USART_ReceiveData(USART6);//接收数据
               
                if (RxState == 0)
                {
                        if (RxData == '@' && Serial_RxFlag == 0)
                        {       
                                RxState = 1;   //进入接收状态 标志位置一(判断第一个帧头)
                                pRxPacket = 0;
                        }
                }
                else if (RxState == 1)
                {
                        if (RxData == '@'&& pRxPacket==13) //判断接收数据完毕
                        {
                                RxState = 2;
                        }
                        else
                        {
                                Serial_RxPacket[pRxPacket] = RxData;
                                pRxPacket ++;//最后一个数据是第二个帧尾,索引pRxPacket=11
......;
                                if(pRxPacket==13)
                                {
//                        .........                       
                                }
                        }
                }
                else if (RxState == 2)
                {                       
                        if (RxData == '@')
                        {
                                A0=Serial_RxPacket[0];
                                A1=Serial_RxPacket[1];
                                A2=Serial_RxPacket[2];
                                A3=Serial_RxPacket[3];
                                B0=Serial_RxPacket[4];
                                B1=Serial_RxPacket[5];
                                B2=Serial_RxPacket[6];
                                B3=Serial_RxPacket[7];
                               
                                C1=Serial_RxPacket[8];
                                C2=Serial_RxPacket[9];
                                C3=Serial_RxPacket[10];
                                C4=Serial_RxPacket[11];
                                C5=Serial_RxPacket[12];//后面5位
//                                Serial_RxPacket[pRxPacket] = '\0';
                                //..........chuliABC
                                RxState = 0;
                                Serial_RxFlag = 1;
                        }
                }
               
                USART_ClearITPendingBit(USART6, USART_IT_RXNE);//清空数据组
        }
}     


STM32发送,openmv/K210接收时解析端函数相匹配......


..........
.......
.....
回复

使用道具 举报

2

主题

10

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2024-7-12 21:57:16 | 显示全部楼层
主要学习了特征点检测,颜色形状同时匹配,颜色模块同时识别
初步进行了项目实例的学习,学习了利用OpenMV进行小车追小球,巡线小车的例程
回复

使用道具 举报

3

主题

34

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
发表于 2024-7-13 01:41:51 | 显示全部楼层
初步完成所有功能OpenMV部分的代码理解编写。
已经复习的知识:GPIO,PWM,PID,串口通信等基础操作,循迹小车,平衡车的逻辑思路程序编写。(学习运用理解)

回复

使用道具 举报

2

主题

10

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2024-7-13 22:30:48 | 显示全部楼层
学习32与openmv的串口通信,对于openmv的巡线程序有了进一步了解
回复

使用道具 举报

3

主题

34

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
发表于 2024-7-14 18:10:15 | 显示全部楼层
循迹小车已完成
回复

使用道具 举报

2

主题

10

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2024-7-14 22:00:01 | 显示全部楼层
进行了巡线功能的进一步学习,理解利用openmv完成数据的整理
准备进一步通过串口通信完成与32的结合
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-4-12 23:05 , Processed in 0.046657 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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