当前位置: 首页 > news >正文

stm32智能颜色送餐小车(红外光管避障)

大家好啊,我是情谊,今天我们来介绍一下我最近设计的stm32产品,我们在今年七月份的时候参加了光电设计大赛,我们小队使用的就是stm32的智能送餐小车,虽然止步于省赛,但是还是一次成长的经验吧,那么我也来分享一下我们小队这次的产品设计,希望里面的一些模块可以给你们一点的参考建议。

我先说说我的博客文章的设计吧,我准备的是以模块的方式展示代码,但是文章的最后我会附带我们小队设计的stm32小车的完整代码

接下来我再说说我的小车实现的功能:

1二维码识别,使用openmv扫描对应颜色的二维码后,oled屏幕上显示对应的菜品名称,并且小车识别追踪该颜色物体

2压力传感器感知物体重量,当压力传感器的重量超过一定值后小车才会运动,注意!这个功能和上面的二维码识别并不冲突,上面扫码后openmv只能识别到该颜色,但是小车却不能动,只有压力传感器有示数才会运动

3APP点单,我们小组是使用ESP8266wifi模块制作了一个APP来模拟点单

4温度传感器时刻感知环境温度,这个模块的功能其实就是在送餐途中进行保温使用的

5蜂鸣器播报,客户下单后蜂鸣器会进行鸣叫

6红外光管避障,我们小组并未在避障方面进行过多的功能,所以只有简单的避障功能:小车识别到前方有物体,然后停下来,等到前方没有物体后继续运动

以上就是我的产品的全部功能了

注意注意!!!

我文章末尾上传的代码只有功能1和功能2和功能6的代码,功能3我只能负责给你们说说怎么做,如果实在需要代码,请联系我,这部分代码不是免费的,功能4和功能5的代码不在我的电脑上,所以我就不进行讲解了。

器件端

首先声明一下

本次实验的芯片是基于stm32c8t6

本次实验使用的红外光管为下图

 

 代码端

我们直接配置一个引脚,当红外光管被挡住时,我们只需要检测引脚的电平就可以判断前方是否有障碍。这里我使用了两个红外光管进行避障检测。

检测引脚电平代码:

//红外光管
void INFRARED_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);
}uint8_t INFRARED_Get(void)
{return GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3);
}
//红外光管

 main.c

#include "stm32f10x.h"                 
#include "delay.h"
#include "OLED.h"             
#include "stdio.h"
int main(void)
{INFRARED_Init();delay_ms(1000);while (1){Led_Flash(50);}
}void TIM3_IRQHandler(void)
{if (TIM_GetITStatus(TIM3, TIM_IT_Update) == SET){	t=INFRARED_Get();KeyNum = Key_GetNum();Read_DMP(); if(KeyNum==1){if(t==0){Set_Pwm(0,0);}else{Set_Pwm(2000,2000);}}if(KeyNum==2){Set_Pwm(0,0);}TIM_ClearITPendingBit(TIM3, TIM_IT_Update);}
}

因为我的颜色识别是使用的pid计算,所以避障我就重新写的一个代码,使用两个代码实现功能

好了,以上就是红外避障的全部代码了,如果有什么问题,欢迎各位在评论区留言,本人看到一定会回消息的,还有一个问题,代码本身是由程序中截取出来的所以可能会出现部分代码出现错误,所以还是建议根据下方提供的链接查源代码,明天我会更新stm32智能颜色送餐小车(ESP8266使用和APP软件设计)如果本文章对你有用的话,请给一个小小的赞呗,你的赞就是对我的最大的鼓励!谢谢大家!

代码链接处:链接:链接: https://pan.baidu.com/s/1buk_I9_bZ_rIou1iW9v1jA?pwd=2180 提取码: 2180

最后一个需要注意以下,本代码中的pid参数我全部都置零了,请根据自己的小车进行调节!

mmexport1723541008067


http://www.mrgr.cn/news/10439.html

相关文章:

  • python如何调用另一个文件中的函数
  • 使用kafka改造分布式事务
  • 一文搞定MybatisPlus
  • asio之task_io_service多线程
  • [Linux]如何在虚拟机安装Ubuntu?(小白向)
  • Java获取List实体交集差集
  • docker inspect输出内容详解,推测容器运行命令
  • 【案例59】WebSphere类加载跟踪开启方法
  • 吴恩达谈AI未来:Agentic Workflow、推理成本下降与开源的优势
  • 【Kotlin设计模式】Kotlin实现工厂模式
  • Python-断点续传的方式下载GPM降水数据
  • 企业高性能web服务器知识点合集
  • [指南]微软发布Windows-Linux双系统无法启动的完整修复方案
  • 可变参数模板(C++11)
  • 深度学习设计模式之策略模式
  • 【HTML】DOCTYPE作用
  • 【clickhouse】访问clickhouse数据库,并且插入数据
  • vue3+elementPlus:无法清空问题,清空表单没效果
  • Clearpool 推出 Ozean:专注 RWA 的高性能创新区块链
  • 使用 QML 类型系统注册 C++ 类型