找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9926|回复: 9
收起左侧

基于stm32和opencv人脸识别的智能风扇源程序

  [复制链接]
ID:628487 发表于 2019-10-22 21:43 | 显示全部楼层 |阅读模式
本题设计一个基于STM32F103VET6控制的智能风扇系统,其机械部分包括舵机、舵机云台、直流减速电机、直流减速电机支架等,硬件部分由STM32F103VET6单片机、接口电路、电源降压电路和电机驱动电路等部分组成,并且与软件程序构成一个完整的控制系统。以STM32F103作为控制器的核心,采用12V的直流减速电机作为风扇动力来源,2个舵机控制云台方向,利用单片机来控制电机。在基础功能上通过温度采样来控制直流减速电机的启停,在人脸追踪功能方面单片机串口通讯接收PC端发送来的人脸坐标,通过PID控制算法进行控制达到舵机云台人脸跟踪的目标。
系统采用STM32F103作为智能风扇的控制核心,直流减速电机作为风扇的动力装置,舵机作为云台的动力装置,实现云台的一系列动作。硬件由电源电路,CPU最小系统模块,电机驱动模块,编码器模块,显示模块,视觉模块,温度传模块等组成。除根据当前温度传感器温度实现控制电机启停及转速外,还采用PID算法等进行控制,将目标坐标与当前人脸坐标的误差量作为反馈对舵机位置进行控制。同时采用串口通信,实现PC端发送人脸坐标到STM32端
1.jpg 图片1.png
单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "key.h"
  5. #include "sys.h"
  6. #include "oled.h"
  7. #include "menu.h"
  8. #include "encoder.h"
  9. #include "timer.h"
  10. #include "motor.h"
  11. #include "pid.h"
  12. /************************************************
  13. 最后修改日期:2019/7/6 15:05
  14. 功能加上串口通讯
  15.   x,下舵机(1750->1950)从右往左
  16.         y,上舵机(1750->1950)从上往下
  17. ************************************************/

  18. int x_pwm = 1850,y_pwm = 1825;
  19. // 初始化目标值和小球的中心位置
  20. int x_face = 320, y_face = 240;
  21. int if_face=0;
  22. int x_face_store = 320, y_face_store = 240;
  23. int face_store=0;
  24. int x_target = 320, y_target = 240;
  25. // 上下舵机PID参数
  26. float x_KP = -0.00060,x_KI = 0.0007, x_KD = 0.002;
  27. float y_KP = -0.00060, y_KI = 0.0007, y_KD =0.002;
  28. // 储存OPENCV发送来的数据
  29. u16 Res;
  30. int main(void)
  31. {
  32.         /*延时函数初始化*/
  33.         delay_init();
  34.         
  35.         /* 设置中断优先级分组2*/
  36.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        
  37.         
  38.         /*串口初始化为115200*/
  39.         uart_init(115200);         
  40.         
  41.         /*LED初始化*/
  42.         LED_Init();
  43.         
  44.         /*KEY初始化*/
  45.         KEY_Init();
  46.         
  47.         /*OLED初始化*/
  48.         OLED_Init();        
  49.         
  50.         /*100hz的计数频率,每10ms进入一次定时器中断,更新当前电机速度*/
  51.         TIM6_Int_Init(99,7199);
  52.         
  53.         /*初始化编码器 */
  54.         Encoder_Init_TIM2();            
  55.         
  56.         /*舵机定时器初始化 50HZ范围1750-1950*/
  57.         TIM3_PWM_Init(1999,719);
  58.         
  59.         /*初始化TIM1 PWM 10KHZ,用于驱动电机 */
  60.         TIM4_PWM_Init(7199,0);
  61.         
  62.         /*200hz的计数频率,每5ms进入一次定时器中断:中断PID赋值*/
  63.         TIM7_Int_Init(49,7199);
  64.         
  65.         AIN2=1;
  66.         AIN1=0;//初始将电机不转
  67.         PWMA=0;

  68.         TIM_SetCompare1 (TIM3,1850); //初始将舵机云台位置设置在中间
  69.         TIM_SetCompare2 (TIM3,1825);
  70.         
  71.         
  72.         OLED_Fill(0, 0, 128, 63, 0);
  73.         Display_OLEDMenu();
  74.         while (1)
  75.         {        
  76.                 MenuReflash();
  77.         }
  78. }
复制代码
单片机程序下载: 单片机程序V1.2.7z (217.74 KB, 下载次数: 175)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:628487 发表于 2019-10-22 21:44 | 显示全部楼层
电脑端的PY文件上传不了,需要的可以私我
回复

使用道具 举报

ID:490939 发表于 2020-1-27 21:29 来自手机 | 显示全部楼层
博主你好,视觉模块用的什么相机,能发一下py文件吗
回复

使用道具 举报

ID:282095 发表于 2020-4-19 15:17 | 显示全部楼层
楼上可以重新发送一下PY文件吗
回复

使用道具 举报

ID:737227 发表于 2020-4-29 10:13 | 显示全部楼层
学习一下,谢谢了
回复

使用道具 举报

ID:618513 发表于 2020-10-10 08:01 | 显示全部楼层
anan945945 发表于 2019-10-22 21:44
电脑端的PY文件上传不了,需要的可以私我

楼主来一个
回复

使用道具 举报

ID:788427 发表于 2020-10-12 20:30 | 显示全部楼层
openmv可以识别口罩吗?
回复

使用道具 举报

ID:826428 发表于 2020-10-21 17:28 来自手机 | 显示全部楼层
开开心心1122 发表于 2020-10-12 20:30
openmv可以识别口罩吗?

可以的,你是做ti杯的比赛吗。
回复

使用道具 举报

ID:711539 发表于 2020-10-21 18:57 | 显示全部楼层
anan945945 发表于 2019-10-22 21:44
电脑端的PY文件上传不了,需要的可以私我

是python文件吗?可以放一个文件夹里,打成压缩包.rar格式上传
回复

使用道具 举报

ID:327871 发表于 2020-11-18 22:01 | 显示全部楼层
anan945945 发表于 2019-10-22 21:44
电脑端的PY文件上传不了,需要的可以私我

楼主您好,我想要学习一下您这个东西,能发个py文件的资料给我吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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