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

201 篇文章 119 订阅
187 篇文章 117 订阅


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 最后

  • 4
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
树莓派智能项目设计.pdf是一份关于利用树莓派进行智能产品开发的指南。其中介绍了如何搭建树莓派的软硬件环境,开发基于Python语言的应用程序,以及如何使用传感器、摄像头等模块实现智能控制及监测功能。 该指南主要分为三个部分: 第一部分介绍了树莓派及其相关硬件的基本知识,包括树莓派的型号、接口类型、扩展板、摄像头、传感器等等。同时介绍了如何为树莓派搭建开发环境,包括操作系统的安装,软件的配置等。 第二部分介绍了利用Python语言进行应用程序的开发。该部分包括Python语言的基础知识、GPIO编程及面向模块编程。通过学习这些知识,可以为树莓派开发出各种智能应用程序,如家庭自动化、智能监测、智能安全警报等。 第三部分则介绍了如何使用各种传感器、摄像头模块实现智能控制及监测功能。该部分详细介绍了如何使用温度传感器、湿度传感器、气体传感器、人体红外传感器、超声波传感器、智能摄像头等等模块,并且提供了相应的示例代码供读者学习。 该指南对于想要利用树莓派进行智能产品开发的爱好者和工程师来说,具有非常高的实用性和参考价值。通读该指南可以让读者深入了解树莓派的硬件架构和开发环境的搭建,同时学习到Python编程语言及各类传感器、摄像头模块的使用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值