目录:
本帖相关分享资料整理【程序+原理图-手工PCB】,最后有下载链接
注:本文仅用于学习交流分享,[若有不妥之处,请指正,感谢]
关键词:【OpenMV】【颜色识别】【PID】【STM32】
最后面有程序与原理图PCB分享
用到的工具有:
- openMV IDE
- Keil 5 编译器
- Altium Designer
实现的小功能有:
①设别颜色小球,并自动追寻小球
②简单测试与颜色小球的粗略距离,并且在小球10cm处停车
③按键调节PID参数以及调节识别的颜色
总体设计
1.基础硬件DIY设计
2.openMV简单识别程序设计 与 单片机控制程序设计
3.效果展示
1.基础硬件DIY设计
电路硬件:
[MCU] STM32F103C8T6最小系统板
[稳压电源]【L7805】 7.2V稳压5.0V 【AMS1117-3.3】5.0V稳压3.3V
[外围电路] 按键、蜂鸣器、OLED、干簧管
1)整体原理图
2)PCB电路
2.OpenMV简单识别程序设计 与 STM32控制程序设计
1)OpenMV简单识别程序设计【microPython】
识别小球颜色并通过串口定时发送小球坐标与距离的数据包
#2018.8.2 【microPython】
import sensor, image, time , pyb
from pyb import UART
from pyb import Timer
from pyb import LED
import json
led = pyb.LED(3) # Red LED = 1, Green LED = 2, Blue LED = 3, IR LEDs = 4.
thresholds = [(27, 67, 19, 91, 45, 76), # 红色
#(21, 75, 3, -38, 34, 68), # 绿色
(27, 90, -3, -28, 31, 125),
(0, 30, 0, 64, -128, 0)] # generic_blue_thresholds
threshold_index = 1 # 0 for red, 1 for gre9en, 2 for blue
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA) #320*240
sensor.skip_frames(time = 100)
sensor.set_auto_gain(False) # must be turned off for color tracking
sensor.set_auto_whitebal(False) # must be turned off for color tracking
clock = time.clock()
uart = UART(3, 115200)
uart.init(115200, bits=8, parity=None, stop=1, timeout_char=1000) # 使用给定参数初始化
def tick(timer): # we will receive the timer object when being called
global data
if blobs:
print("Find")
print('you send:',output_str)
uart.write(data)
tim = Timer(4, freq=10) # create a timer object using timer 4 - trigger at 1Hz
tim.callback(tick) # set the callback to our tick function
def find_max(blobs):
max_size=0
for blob in blobs:
if blob[2]*blob[3] > max_size:
max_blob=blob
max_size = blob[2]*blob[3]
return max_blob
def Uart_Receive(): #UART接收 改变框小球的颜色阈值
global threshold_index
if uart