python代码实现树莓派3b+驱动步进电机
python代码实现树莓派3b+驱动步进电机
之前买了个树莓派,刚买回来那会儿热情高涨,折腾了一段时间,然后就放那吃灰了。前几天忽然想起来这个东西了,决定再玩玩儿,于是就从某宝上购买了一套步进电机、驱动板。东西收到后就开始折腾研究,下边来总结下折腾的结果吧。
先来说下都需要什么吧,树莓派的这一套都少不了,树莓派3b+主板、TF卡、树莓派电源、步进电机以及对应的驱动板、杜邦线6根(母对母),差不多就这么多吧。
引脚
首先,我们先看下树莓派的40个Pin都是什么功能吧!可以通过过树莓派的命令行窗口来查询,输入命令:
gpio readall
输出的结果是什么呢?见下图:

上边图中已经全部显示了40个GPIO的定义。下边是我从网上荡了一张图带颜色的图,看的会更清楚一些:

上图可以看到,这些Pin的编码方式有三种,分别是BOARD编码、BCM编码和WiringPi编码。这些都是什么含义呢?下边我们来一一说下:
BOARD编码
上图也写了,就是物理引脚嘛,怎么编码的呢,就是在一列的引脚1、2,旁边的是3、4……直接上图吧,估计也说不清楚。由于我的主板已经安装到盒子里边了,固定也挺麻烦的,我就从网上荡一张来说事儿吧!

上图从左到右、从下到上以及进行编码,物理编码的起始值为1,从1到40。
BCM编码
BCM编码起始为是从0开始编码的,并且不像BOARD编码方式那样有序,他是根据功能进行编码的。具体的编码可以结合BOARD编码查看上边那张带颜色的表,从而确定每个引脚的功能。
WiringPin编码
这是另外一种编码方式,具体也没研究的太透,这里就简单略过吧,免得误人子弟了。
至于为什么要讲这写呢,首先是连接点击要用,另外就是编写代码要用。
步进电机及驱动板
看完编码当时,加下来我们再说下步进电机和驱动板电路吧。
步进电机
我这个型号是28BYJ-48 5V DC,也没少好解释的,某宝上一搜一大把,而且还很便宜。

驱动板
驱动板必须要跟点击匹配,否则必有一坏,就是看什么坏了。这个买的时候跟老板说,都懂,顺便一起买了,白菜价。

下来就说怎么用吧,步进电机根据自己的接口进行连接,由于我的就是那个匹配白色排针接口的,所以就不解释了,就算是傻子也接不错。
重点是怎么跟树莓派连接?IN1~IN4是控制信号输入接口;G接树莓派的GND引脚,不要问我为什么,就是这么接的,查看原理图得出来的结论。V呢接树莓派5V的引脚,不要问我为什么,记住就是这么接的就行了。
怎么显示他们的工作状态呢,看到上边的D1~D4了没,那就是等,给谁信号谁亮。
我就不上我具体的接线图了,因为盒子拆装太麻烦,并且我的杜邦线都是临时凑出来的,不好看。
代码
下边我们说代码,由于我只会python,所以我就用python来编写,不要让我用C了什么的给你写个,不写,不会!
首先就是安装模块呗,装啥呢?装RPi.GPIO。我用的是python3,所以就在python3下安装的。如果你的出错了别找我,我也不会,因为我的没有出错。解决办法就是百度,网上一找一大堆。
怎么安装呢?
pip3 install RPi.GPIO
接着等提示安装成功就行了。
接下里就是写py代码了,由于我就是做了个简单的测试,所以代码也很简答,能让步进电机转起来。代码呢也是找的,因为他的比我的好看,并且也规范:
import RPi.GPIO as GPIO
import time delay=2 #delay 2ms pin_4 = 4
pin_17 = 17
pin_23 = 23
pin_24 = 24 GPIO.setmode(GPIO.BCM) #设置引脚的编码方式 def init():
GPIO.setwarnings(False)
GPIO.setup(pin_4, GPIO.OUT)
GPIO.setup(pin_17, GPIO.OUT)
GPIO.setup(pin_23, GPIO.OUT)
GPIO.setup(pin_24, GPIO.OUT) def forward(delay):
setStep(1, 0, 0, 0)
time.sleep(delay)
setStep(0, 1, 0, 0)
time.sleep(delay)
setStep(0, 0, 1, 0)
time.sleep(delay)
setStep(0, 0, 0, 1)
time.sleep(delay) def setStep(w1, w2, w3, w4):
GPIO.output(pin_4, w1)
GPIO.output(pin_17, w2)
GPIO.output(pin_23, w3)
GPIO.output(pin_24, w4) def main():
init()
while True:
forward(int(delay) / 1000.0) main() # 调用main
至于代码呢,很简单简单看下吧,设置引脚的编码方式,这就是我上边为什么那么费劲的讲编码方式的原因了,虽然你可能还是看读懂。接下来就是设置引脚的输出,说白了就是你用树莓派的那几个脚来控制步进电机,这个引脚可以根据自己的喜好进行设置。下来就是设置点击怎么转,方向自己设定。
基本上呢就这么多,我也是第一次,什么都不懂,一切都来自网络。
参考链接
python代码实现树莓派3b+驱动步进电机的更多相关文章
- 树莓派(Raspbian系统)中使用pyinstaller封装Python代码为可执行程序
一.前言 将做好的Python软件运行在树莓派上时,不想公开源码,就需要对文件进行封装(或称打包),本文主要介绍使用pyinstaller封装Python代码为可执行程序. Python是一个脚本语言 ...
- 树莓派3b无驱动打印
Linux系统下很少有对打印机做驱动支持,自己做起来又有非常麻烦,还好大多数打印机都能够支持escpos协议,因此我们可以做到无驱动打印. 1.安装python-usb库 git clone http ...
- 树莓派3b添加python时间同步脚本
树莓派没有电池,因此断电后系统时间会停止,直到你开机后又继续计时,所以会造成系统时间和实际时间有很大的误差. 因为项目需要用到本地时间,精度要求不高不想折腾(如果需要高精度,需要安装ntp),所以考虑 ...
- 在树莓派上读取土壤湿度传感器读书-python代码实现及常见问题(全面简单易懂)
本篇文章简单介绍了如何在树莓派上配置土壤湿度传感器以读取土壤湿度(以百分比的形式出现)及代码实现. 主要包含有以下4个模块: 一.土壤湿度传感器常见类型及介绍 二.实验所需设备 三.设备连线方式与代码 ...
- 在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)
最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...
- [记录]学习树莓派3B接DHT11和LCD1602和修改树莓派时区
前提 树莓派系统安装好 apache web 服务器,如未安装,可在树莓派内执行sudo apt-get install apache2 进行安装apache 也可以通过命令获取GPIO信息: gpi ...
- 树莓派3B 安装微雪LCD5inch显示器(包含软键盘)
树莓派单独使用时,往往需要触摸屏和软键盘用以方便操作,微雪LCD显示器就能较好的实现这个功能, 正好实验室又买入了一个3B的板子和一个5inch的显示器,便对着官方的安装手册,亲自安装了一次. 一:材 ...
- 学习 27 门编程语言的长处,提升你的 Python 代码水平
Python猫注:Python 语言诞生 30 年了,如今的发展势头可谓如火如荼,这很大程度上得益于其易学易用的优秀设计,而不可否认的是,Python 从其它语言中偷师了不少.本文作者是一名资深的核心 ...
- 树莓派linux驱动学习之hello world
最近想学习一下linux驱动,看了一些书和教学视频,大概了解了一下,不过要想深入,肯定需要实践.手上有几块linux的板子,最终选择了树莓派作为我的实验平台,资料比较丰富,接口也比较简单. 程序员的入 ...
随机推荐
- JavaScript创建对象的几种方式总结
ECMA把对象定义为:无序属性的集合,其属性可以包含基本值.对象或者函数. 1. 使用Object构造函数创建对象 创建自定义对象的最简单的方式就是创建一个Object的实例,然后再为它添加属性和方法 ...
- 关于CE的反思
当你注视着你的分数, 眼眶倏地猛睁. 不会做的题血红一片, 认真做了的题一点墨蓝. 你知道, 你CE了, 你挂了, 你倒数第一了, 你当场去世了. 两小时的努力付诸东流, 线段树的碎片历历在目. 思考 ...
- 关于 matplotlib
注意,需要 zlib, 需要 Tkinter pip install matplotlib import numpy as np import matplotlib.pyplot as plt plt ...
- 【solr】SolrCloud中索引数据存储于HDFS
SolrCloud中索引数据存储于HDFS 本人最近使用SolrCloud存储索引日志条件,便于快速索引,因为我的索引条件较多,每天日志记录较大,索引想到将日志存入到HDFS中,下面就说说怎么讲sol ...
- HTML 页面间传值(包含中文)
A页面——>B页面 A页面 $('.edit-bottom').click(function () { var word1=$('#word').val();//需要传到B页面的值 var ur ...
- Redis → Windows下搭建redis集群
一,redis集群介绍 Redis cluster(redis集群)是在版本3.0后才支持的架构,和其他集群一样,都是为了解决单台服务器不够用的情况,也防止了主服务器宕机无备用服务器,多个节点网络互联 ...
- 爬取简书图片(使用BeautifulSoup)
import requests from bs4 import BeautifulSoup url_list = [] kv = {'User-Agent':'Mozilla/5.0'} r = re ...
- homebrew长时间停在Updating Homebrew 这个步骤
在国内的网络环境下使用 Homebrew 安装软件的过程中可能会长时间卡在 Updating Homebrew 这个步骤. 例:执行 brew install composer 命令 ➜ ~ brew ...
- vue-li+webpack+iview构建项目步骤
首先安装各类插件 npm install vue-cli -g vue init webpack demo npm install iview --save npm install less styl ...
- git之操作准则
每天下班前合一次代码,每次合代码先pull 不要多人同时修改同一个文件,避免冲突 在每个人自己的分支进行开发,先合并到dev分支解决冲突,确认无冲突后再合并到master