【毕业设计】基于树莓派的智能小车设计 - 物联网 单片机 嵌入式 stm32

文章目录

  • 1 简介
  • 2 实现功能
  • 主控开发板:树莓派
  • 电机和控制器
  • 避障功能
  • 3 实现效果
  • 5 部分实现代码
  • 6 最后


1 简介

Hi,大家好,这里是丹成学长,今天向大家介绍一个单片机项目

** 基于树莓派的智能小车**

大家可用于 课程设计 或 毕业设计


单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/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 GPIO
import time

class 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_in1
        self.left_in2 = left_in2
        self.left_ena = left_ena
        if 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_in3
        self.right_in4 = right_in4
        self.right_enb = right_enb
        
        
        GPIO.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_level
        self.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)

单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052


6 最后

你可能感兴趣的:(单片机,毕业设计,物联网,单片机,物联网,智能小车,树莓派,毕业设计)