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

树莓派笔记5:自制小车(简单避障)

利用树莓派做智能小车是个很常见的玩法,整个过程涉及手工制作、GPIO控制、Python程序编写、网络通信等内容,知乎上有的大神还加入图像识别甚至人工智能元素,我自己在制作过程中真的感觉非常有意思,也很有成就感。为了做这个小车,我不惜破费买了各种小车零件和电子元器件(其实花不了多少钱),还突击学习了Python,参考书上的内容和网络上的信息也搞出了自己的小车,虽然功能真的很简单,这次记录的是简单的避障功能实现。

1 小车结构

整个小车涉及的元件:
①树莓派,作为主控芯片;
②小车底盘及其他配件,淘宝上30块钱就能买到;
③L298N 电机驱动模块,用来控制小车电机;
④HC-SR04 超声波测距模块,用来检测距离;
⑤干电池组或者锂电池,为L298N供电,需要12V左右;
⑥杜邦线、导线、螺丝刀等工具。

下图是整体的结构示意,小车的每个轮子都装有电机,电机与L298N模块相连,而树莓派控制L298N模块进而控制电机运动,同时树莓派也控制超声波测距模块检测距离。
这里写图片描述

2 树莓派GPIO概念

之所以树莓派可以直接控制电子元件,是因为它提供了GPIO区,所谓GPIO就是可以自由配置引脚的模式,比如可以配置成输出模式从而输出高低电平,或者可以配置成输入模式接收电平信号,正因为树莓派的GPIO功能,让它看起来似乎更加底层化了。

使用GPIO前首先需要了解的是引脚的编号方式,如下图所示,按照物理方位的话是按照从左到右、从上到下的方式从1编号到40,但是在编写程序是一般不用物理编码方式,如果用C语言写的话需要导入wiringPi库,用Python写的话需要导入RPi.GPIO库,这两种库的引脚编号方式都不同,例如按照RPi.GPIO编号方式,物理号码为38的引脚编号为BCM.20,而物理号码为40的引脚编号为BCM.21。完整的编码表可以查阅网上资料。
这里写图片描述
Python程序下涉及GPIO的主要代码摘录如下:

import RPi.GPIO as GPIO #导入GPIO模块
GPIO.setmode(GPIO.BCM) #设定编号模式
GPIO.setwarnings(False) #关闭警告说明
GPIO.setup(1, GPIO.IN) #设置引脚1(BCM编号)为输入通道
GPIO.setup(2, GPIO.OUT) #设置引脚2为输出通道
value=GPIO.input(1) #读取通道1的输入值( 0 / GPIO.LOW / False 或者 1 / GPIO.HIGH / True)
GPIO.output(2, GPIO.HIGH) #设置通道2输出高电平的状态,状态可以为0 / GPIO.LOW / False 或者 1 / GPIO.HIGH / True
GPIO.cleanup() #清理通道资源

3 车体拼装

首先把小车车架拼好,买来的车架是有说明书的,而且车架本身也很简单,用固定片把各个电机固定好就基本OK了,需要注意的是马达朝向、螺丝朝向等小细节,有时候朝向不对会卡住轮子,或者不方便后续的绕线等操作。下图是我拼装好的车架图(这里已经把电机控制模块和测距模块加上去了)。

http://www.xdnf.cn/news/826759.html

相关文章:

  • SQL Server 2012 下载和安装详细教程
  • 线程池之ScheduledThreadPoolExecutor详解
  • System.currentTimeMillis()与SystemClock.uptimeMillis()
  • JavaBean技术
  • Robots协议(爬虫协议、机器人协议)
  • Linux常用命令详解
  • solver及其配置参数详解
  • 叔丁醇钾是什么?叔丁醇钾的分子量和结构式
  • 六种基本网络拓扑结构详解
  • 【常用】Ultra Edit常用设置及快捷键
  • 【Python】全网最详细的Python入门基础教程(非常详细,整理而来)
  • 数据库设计规范
  • 【转载】【5G学习】小区搜索——SSB
  • 数据结构-二叉搜索树/二叉排序树/二叉查找树
  • arm平台下使用bl和ldr跳转应当注意的地方(arm-linux-gcc环境)
  • WOL(Wake On LAN - 局域网唤醒)外网唤醒 配置教程 远程开机
  • Statement和PreparedStatement的区别与联系
  • pcre简介
  • 【网络安全】nmap深度入门讲解
  • 请问一下java在线编程的网站有哪一些?
  • JDK配置环境变量【图文详解】
  • 微服务网关API Geteway
  • 【Oracle database】 Oracle数据库分区表基础
  • Apriori算法详解
  • linux下logcat命令,Android logcat 命令以及 Log机制
  • 好玩的100个网站收藏
  • BDI和CDI理论四个象限的概念特点及其运用
  • MySQL中information_schema详解
  • Java 匿名内部类
  • R730结构