文章目录
1 简介2 实现功能主控开发板:树莓派电机和控制器避障功能3 实现效果5 部分实现代码6 最后1 简介
Hi,大家好,这里是丹成学长,今天向大家介绍一个单片机项目
** 基于树莓派的智能小车**
大家可用于 课程设计 或 毕业设计
单片机-嵌入式毕设选题大全及项目分享:
/m0_71572576/article/details/125409052
2 实现功能
超声波测距四路红外避障检测周围环境的湿度检测周围环境的温度监控及拍照与人的交互,语音控制主控开发板:树莓派
开发板有很多种,比如51单片机、树莓派、STM32、Arduino、micro:bit等等,都可以做为小车的控制板,我使用的是树莓派开发板,然后,可持树莓派有很多版本、型号,最便宜的树莓派zero 68元就可以买到,不过不建议买这种,没有网卡,需要另外买网线模块,我使用的是树莓派3B,价格220元,带有无线和有线网卡,还带有蓝牙。
树莓派配置:
Micro-USB Power–电源插槽CPU四个USB接口一个HDMI接口一个耳机插孔,也可以输出视频40个GPIO引脚一个SD卡插槽,没有硬盘一个网线插口,自带无线网卡树莓派相机插槽
电机和控制器
这里选择使用,L298N双H桥直流电机驱动器
马达A输出----------控制小车左后轮电机的旋转;马达B输出----------控制小车右后轮电机的旋转;12V输入-------------链接外部电源"+"极;电源地----------------链接外部电源"-"极;单片机I/O控制输入–链接树莓派GPIO引脚;A通道使能----------默认跳线帽(可拔掉)链接上面5V引脚;B通道使能----------默认跳线帽(可拔掉)链接上面5V引脚;板载5V输出使能----默认跳线帽(可拔掉)链接两个引脚;5V输入----------------该接口功能与板载5V输出使能有关;
避障功能
四路红外避障
3 实现效果
5 部分实现代码
部分控制代码:
# -*- coding:utf-8 -*-import RPi.GPIO as GPIOimport timeclass Car():def __init__(self, left_in1, left_in2, left_ena, right_in3, right_in4, right_enb, low_electrical_level, hight_electrical_level):GPIO.setwarnings(False)GPIO.setmode(GPIO.BOARD)self.left_in1 = left_in1self.left_in2 = left_in2self.left_ena = left_enaif self.left_ena > 0:GPIO.setup(self.left_ena, GPIO.OUT)GPIO.setup(self.left_in1, GPIO.OUT)GPIO.setup(self.left_in2, GPIO.OUT)self.right_in3 = right_in3self.right_in4 = right_in4self.right_enb = right_enbGPIO.setup(self.right_in3, GPIO.OUT)GPIO.setup(self.right_in4, GPIO.OUT)if self.right_enb > 0:GPIO.setup(self.right_enb, GPIO.OUT)self.hight_electrical_level = hight_electrical_levelself.low_electrical_level = low_electrical_level'''右边轮子前进'''def rFoward(self):GPIO.output(self.right_in3, self.hight_electrical_level)GPIO.output(self.right_in4, self.low_electrical_level)if self.right_enb > 0:GPIO.output(self.right_enb, self.hight_electrical_level)'''左边轮子前进'''def lFoward(self):GPIO.output(self.left_in1, self.hight_electrical_level)GPIO.output(self.left_in2, self.low_electrical_level)if self.left_ena > 0:GPIO.output(self.left_ena, self.hight_electrical_level)'''右边轮子后退'''def rBackward(self):GPIO.output(self.right_in3, self.low_electrical_level)GPIO.output(self.right_in4, self.hight_electrical_level)if self.right_enb > 0:GPIO.output(self.right_enb, self.hight_electrical_level)'''左边边轮子后退'''def lBackward(self):GPIO.output(self.left_in1, self.low_electrical_level)GPIO.output(self.left_in2, self.hight_electrical_level)if self.left_ena > 0:GPIO.output(self.left_ena, self.hight_electrical_level)'''左边轮子停止'''def lStop(self):if self.left_ena > 0:GPIO.output(self.left_ena, self.low_electrical_level)else:GPIO.output(self.left_in2, self.low_electrical_level)GPIO.output(self.left_in1, self.low_electrical_level)'''右边轮子停止'''def rStop(self):if self.right_enb > 0:GPIO.output(self.right_enb, self.low_electrical_level)else:GPIO.output(self.right_in3, self.low_electrical_level)GPIO.output(self.right_in4, self.low_electrical_level)'''小车前进'''def moveForward(self):self.lFoward()self.rFoward()'''小车后退'''def moveBackground(self):self.lBackward()self.rBackward()'''小车右转'''def spinRight(self):self.rFoward()self.lBackward()'''小车左转'''def spinLeft(self):self.rBackward()self.lFoward()'''小车停止--左边及右边轮子都停止'''def stop(self):self.lStop()self.rStop()def cleanup(self):GPIO.cleanup()def instanceCar():return Car(11, 13, 15, 38, 40, 36, 0, 1)
单片机-嵌入式毕设选题大全及项目分享:
/m0_71572576/article/details/125409052