STM32CubeMx学习与K210串口通信+识别橘色色块——点亮小灯

这篇具有很好参考价值的文章主要介绍了STM32CubeMx学习与K210串口通信+识别橘色色块——点亮小灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 K210模块的串口发送代码

引入模块

import sensor, image,time,lcd,utime
import KPU as kpu
import gc, sys
from fpioa_manager import fm
from machine import UART

锁定引脚 和 申明串口

fm.register(9, fm.fpioa.UART1_TX, force=True)
fm.register(10, fm.fpioa.UART1_RX, force=True)  #映射串口IO口
uart_A = UART(UART.UART1, 115200, 8, 0, 1, timeout=1000, read_buf_len=4096) #初始化串口

发送函数

data = bytearray([0xa3,0xb3,b[5],b[6],qianbai,shige,0xff])
uart_A.write(data)

识别色块 +数字处理

img = sensor.snapshot() #Take a picture and return the image.
    lcd.display(img)   #lcd屏幕显示
    blobs = img.find_blobs([orginal_threshold],pixels_threshold = 2,area_threshold = 125,merge = 1)
    if blobs:
        for b in blobs:
            x = b[0]
            y = b[1]
            width = b[2]
            height = b[3]
            img.draw_rectangle([x,y,width,width]) # rect
            img.draw_cross(b[5], b[6]) # cx, cy
            Lm = (b[2]+b[3])/2 #b[2]色块的外框的宽 ,b[3]色块的外框的高
            print(b[5])#中心X坐标
            print(b[6])#中心Y坐标
            x1=b[5]//100
            x2=b[5]%100
            y1=b[6]//100
            y2=b[6]%100
            length = K/Lm
            hh = round(length, 2)#两位小数
            zz=hh*100#转换为整数
            zz=int(zz)

这里zz是4个数字的数,则需要分成千百位和低二位传输 zz是距离。也映射了距离的算法

整体K210代码

import sensor, image,time,lcd,utime
import KPU as kpu
import gc, sys
from fpioa_manager import fm
from machine import UART

# need your connect hardware IO 9/10 to loopback
fm.register(9, fm.fpioa.UART1_TX, force=True)
fm.register(10, fm.fpioa.UART1_RX, force=True)  #映射串口IO口
uart_A = UART(UART.UART1, 115200, 8, 0, 1, timeout=1000, read_buf_len=4096) #初始化串口
orginal_threshold =(16, 47, 25, 57, 9, 62)

#摄像头初始化
sensor.reset()
sensor.set_pixformat(sensor.RGB565) #设置帧格式
sensor.set_framesize(sensor.QVGA)   #设置帧大小,成功返回True,失败返回False
sensor.set_vflip(1) #后置拍摄模式
sensor.skip_frames(50)  #跳过指定(这里是10帧)帧数或者跳过指定时间内的图像,让相机图像在改变相机设置后稳定下来
sensor.set_auto_whitebal(False) #白平衡关闭
#sensor.snapshot(1.8)   #去鱼眼化

#LCD初始化
lcd.init()
img = sensor.snapshot() #用摄像头拍摄一张图片
K=650  #the value should be measured K=length*Lm # 实际的大小=K2*直径的像素
K2=10.5/279 #QQVGA模式下K2=10.5/139  #QVGA模式下K2=10.5/279

while(True):
    img = sensor.snapshot() #Take a picture and return the image.
    lcd.display(img)   #lcd屏幕显示
    blobs = img.find_blobs([orginal_threshold],pixels_threshold = 2,area_threshold = 125,merge = 1)
    if blobs:
        for b in blobs:
            x = b[0]
            y = b[1]
            width = b[2]
            height = b[3]
            img.draw_rectangle([x,y,width,width]) # rect
            img.draw_cross(b[5], b[6]) # cx, cy
            Lm = (b[2]+b[3])/2 #b[2]色块的外框的宽 ,b[3]色块的外框的高
            print(b[5])#中心X坐标
            print(b[6])#中心Y坐标
            x1=b[5]//100
            x2=b[5]%100
            y1=b[6]//100
            y2=b[6]%100
            length = K/Lm
            hh = round(length, 2)#两位小数
            zz=hh*100#转换为整数
            zz=int(zz)
            qianbai=zz//100
            shige=zz%100
            print(zz)
            data = bytearray([0xa3,0xb3,b[5],b[6],qianbai,shige,0xff])
            uart_A.write(data)
    else:   
        data = bytearray([0xa3,0xb3,0,0,0,0,0xff])
        uart_A.write(data)
                    #如果没有找到的话,返回
        print('0000'+' '+'0000'+'\n')

    #lcd.display(img)#lcd屏幕显示

STM32串口接受端函数

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
	if(huart==&huart5)
	{
		
		if(rx_buff[0]==0xa3)
		{
			if(rx_buff[1]==0xb3)
			{
				if(rx_buff[Size-1]==0xff)
				{
					if((rx_buff[2]>106&&rx_buff[2]<212)&&(rx_buff[3]>80&&rx_buff[3]<160))
					{
						HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,0);
					}
					else
					{
						HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,1);
					}
				}
			}
		}
		
			
		
	}
 
}

判断帧头帧尾 如果数据正常 判断 数据是否合格 若合格则点灯 否则灭灯

不要忘记加入文章来源地址https://www.toymoban.com/news/detail-624571.html

HAL_UARTEx_ReceiveToIdle_DMA(&huart5,rx_buff,sizeof(rx_buff));
	
#define printfl(...) HAL_UART_Transmit(&huart1,(uint8_t*)u_buff,sprintf((char *)u_buff,__VA_ARGS__),0xffff)
uint8_t u_buff[256];
uint8_t rx_buff[50];
extern DMA_HandleTypeDef hdma_uart5_rx;

到了这里,关于STM32CubeMx学习与K210串口通信+识别橘色色块——点亮小灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

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

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

    目录 个人感慨与感悟 K210视觉循迹 本人是一名大二的二本学生,本篇文章记录一下我这一年多的学习历程(主要还是针对标题的内 容)。 下面是我的一些经历和感悟,不感兴趣的可以直接跳过 -——————————        高考完之后,在我收到录取通知书之后,父母让

    2024年01月19日
    浏览(14)
  • 电赛备赛日记(一):K210与STM32串口通信

    电赛备赛日记(一):K210与STM32串口通信

       拖更了n久的备赛日记终于来啦,最近实现了关于K210图像识别并将所需数据(即目标类别,目标在图像中的加权坐标)其中,加权坐标指K210识别到的目标并框出的框的宽和高与框左上顶点的坐标加权,希望以此来判断目标所处的位置并方便后续进行诸如寻迹,目标跟随等

    2024年02月04日
    浏览(17)
  • K210追小球程序与STM32最小系统板通信(自主学习)

    本人先通过学习OPENMV,再延申到K210中。(主要是OPENMV我还没买屏幕,但是K210有)在OPENMV官网中,有相关追小球的函数,但是是用OPENMV单片机来进行调试的。在网上找到的相关源码,加载到OPENMV后发现帧数很慢。 学校实训的要求是要做出能追一定物体的平衡小车,我的小车的

    2024年02月16日
    浏览(51)
  • 【K210】K210学习笔记五——串口通信

    【K210】K210学习笔记五——串口通信

    本人大四学生,电赛生涯已经走到尽头,一路上踩过不少坑,但运气也不错拿了两年省一,思来想去,决定开始写博客,将电赛经验分享一二,能力有限,高手轻喷。 往期的博客讲述了 K210 的感光元件模块 sensor 的配置,机器视觉模块 image 中部分函数的使用(目前是用 find

    2024年04月28日
    浏览(15)
  • 亚博k210视觉模块与stm32双向通信

    亚博k210视觉模块与stm32双向通信

    【K210模块】使用UART模块发送和接收数据_KevinGuo457的博客-CSDN博客 K210的串口_uart_a.write_飞鸟211的博客-CSDN博客 ①每隔1s终端以及串口助手收到消息并显示 ②通过串口助手发送123,K210收到数据并显示 这里如果想要指定K210接收的数据,判断条件不能直接用==(原因参考上面的链接

    2024年04月23日
    浏览(85)
  • STM32如何通过K210进行物体识别(1.开发环境搭建)

    STM32如何通过K210进行物体识别(1.开发环境搭建)

    本来参加智能物流机器人比赛是要用OpenMV的,但无奈于诸多因素只有K210可以使用,这也算是不幸中的万幸吧。这篇文章也作为我这一段时间的学习K210进行物体识别的复习与总结(因为种种原因,比赛也面临无法完成,大哭;人工智能小白一枚,欢迎各路大神指正,求轻喷)

    2023年04月10日
    浏览(38)
  • k210——maix bit串口通信

    k210——maix bit串口通信

    k210 一共有 3个 uart ,每个 uart 可以进行自由的引脚映射。 一、API函数介绍 1.1 register(pin, function, force=True) K210 可以通过映射来改变引脚功能,设置引脚(pin)对应的外设功能(func),默认启用强制绑定参数(force=True) pin: 功能映射引脚 function: 芯片功能 force: 默认为Tru

    2024年02月15日
    浏览(20)
  • STM32通过K210进行PID巡线,使用蓝牙模块与电脑通信从而进行P,I,D参数的调节

    目录 一.前言部分(废话部分) 二.K210色块识别 1.必要知识 2.色块识别 3.单片机的接收代码 三.通过蓝牙连接在电脑上实现PID的调参 我使用的是HAL库,如果你使用的是标准库的话可以根据对应标准库的函数进行更改即可 因为之前使用灰度传感器进行巡线,即使用上PID,最后的效果也

    2024年02月14日
    浏览(18)
  • STM32CubeMX实现USART串口通信

    STM32CubeMX实现USART串口通信

    硬件:stm32f103c8t6核心板 软件:STM32CubeMX 6.6.1 keil5 mdk 这里就不再详细介绍了,详细请参考上一篇博客: https://blog.csdn.net/qq_55894922/article/details/127232999?spm=1001.2014.3001.5501 若点击 Manage embedded software packages 后,出现失败,则需要随便点击其它任一选项,进行下载一些文件,比如点

    2023年04月17日
    浏览(8)
  • stm32串口通信(PC--stm32;中断接收方式;附proteus电路图;开发方式:cubeMX)

    stm32串口通信(PC--stm32;中断接收方式;附proteus电路图;开发方式:cubeMX)

     单片机型号STM32F103R6: 最后实现的效果是,开机后PC内要求输入1或0,输入1则打开灯泡,输入0则关闭灯泡,输入其他内容则显示错误,值得注意的是这个模拟的东西只能输入英文 之所以用2个LED灯是因为LED电阻粗略一算就是100欧姆,所以懒得再去画其他的东西,真是天助我也

    2024年02月11日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包