树莓派python gpio 模仿iic_Adafruit的树莓派教程:GPIO配置

概览

树莓派最令人兴奋的特点之一是它有一个GPIO连接器可以用来接其他的硬件设备。

GPIO连接器实际上是由许多不同类型的接口组成的:

真正的GPIO(General Purpose Input Output,通用输入/输出)针脚,你可以用来控制LED灯的开和关。

I2C(Inter-Integrated Circuit)接口针脚,使你能够仅使用2个控制针脚连接硬件模块。

SPI(Serial Peripheral Interface,串行外设接口)接口用以连接SPI设备,概念上与I2C接口类似,但是标准不同。

Serial Rx和Tx针脚用于和其他的串行外围设备通信。

另外,一些针脚可被用于PWM(pulse Width Modulation, 脉冲宽度调制)进行电源控制,以及PPM(Pulse Position Modulation,脉冲位置调制)控制马达。

在这篇教程里,你实际上用不着组装任何东西,但你将学到如何配置你的树莓派并且安装有用的类库来为连接外部电子元件做准备。

注意:这篇教程只适用于Raspbian和Raspbian衍生的系统(例如Occidentalis)

GPIO连接器

下面的图表展示了第一版树莓派的GPIO连接器的针脚(当这篇文章发布时存在的版本)第二版的只是用27针替换了21针,其他都是一样的。

除了供电针脚(包括GND,3.3V和5V),所有的GPIO针脚均可被用于数字输入或输出。标记为SCL和SDA的针脚可被用于I2C。标记为MOSI,MISO和SCKL的针脚可以用于连接高速SPI设备。

所有针脚有一个3.3V的逻辑电平并且不是5V安全的,所以输出电平是O-3.3V并且输入电平也不应高于3.3V。如果想要连接5V的输出电平作为树莓派的输入电平,你需要使用一个电平位移器

一个流行的连接到树莓派的做法是接一块扩展板(Pi Cobbler)。

一定要确认确认再确认连接线的第一针标识靠近树莓派的角落。如果你使用的是灰色的连接线,它是红色条纹,而黑色的连接线是白色的条纹。那一针一定不能挨着TV连接口。把连接线翻个个或者拧一下使它翻到正确的方向。

这里使用了一个带状电缆来连接GPIO到一个无焊点的面包板上,这样你就可以在它上面连接其他电子元件了。

Adafruit Pi Code

为了方便那些想要连接电子元件到他们的小派上的人们,Adafruit编写了许多可以扩展的非常有用的代码集合。这包含了大量电子元件的简单Python类库,例如显示,传感器和PWM控制等等。

要获得这些代码,你需要使用一个名为”git”的软件。这预装在Occidentalis里面了,但是在Raspbian上你必须通过在终端里输入下面的命令来安装。

你会在桌面上找到终端LX Terminal的快捷方式。

在我们更加深入之前,先运行一下下面的命令。这将会确保能找到你所要安装的软件包并且是最新版本。无论你是在什么路径下。

sudo apt-get update

update命令将会花费一点时间,特别是当你第一次在小派上运行的时候。最终它会变成一个命令提示符”$”并且这时已经可以敲下一个命令了。

sudo apt-get install git

一旦git安装完成(如果原来没有装过)你就可以使用下面的命令”check out” Adafruit Pi Python代码库到你自己的小派上了。

git clone http://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git

cd Adafruit-Raspberry-Pi-Python-Code

ls

如果上面的步骤出现了一些问题,你会看到一条错误信息。通常导致安装失败的原因有以下几点:

网络连接问题

命令拼写错误。要记得Linux下是大小写敏感的。最好是在树莓派上直接打开这个页面,这样你就只需要复制粘贴就可以了

在这里你将会找到好多好东东,我们会在今后的教程里用到它们。

配置GPIO

GPIO针脚可被用于数字输出和数字输入。作为数字输出,你可以写程序切换某些针的高低电平。如果置为3.3V就是高电平,0V就是低电平。要使得一个针脚控制LED灯,你需要一个1kΩ的电阻连接到LED上,因为GPIO针脚可管理的电量很小。

如果你用针脚作为数字输入,你可以把开关和简单的传感器连到一针上然后检查它是否打开或关闭(也就是是否激活)。

一些使用GPIO的Adafruit项目:

要使用Python对GPIO端口进行编程,我们需要安装一个十分有用的Python 2 类库,它叫做Rpi.GPIO。这个Python类库使我们了能够十分容易的控制GPIO针脚。

安装流程对于Raspbian或者Occidentalis来说都是一样的。实际上,一些版本的Raspbian已经包含了这个类库,但是也推荐你升级到最新版本,这是值得的。

sudo apt-get update

要安装RPI.GPIO,你首先需要安装RPi.GPIO所需的Python Development toolkit。

通过下面的命令来安装:

sudo apt-get install python-dev

然后安装Rpi.GPIO:

sudo apt-get install python-rpi.gpio

你可能会收到提示,只需要按’Y’确认就行了。

就是这样了,现在你可以尝试我上面提到的那些项目了。

配置I2C

I2C是一个广泛使用的芯片通信设计标准。所以我们可以在树莓派上连接许多带I2C接口的芯片和模块。

以下是一些使用I2C设备和模块的Adafruit项目:

如果你正在使用Occidentalis,那你的小派已经配置好I2C接口了,如果你使用Raspbian,你需要打开LXTerminal终端窗口并且输入下面的命令:

sudo nano /etc/modules

并且在文件末尾添加下面两行:

i2c-bcm2708

i2c-dev

编辑完成后,你需要重启来使改动生效。

如果在Raspbian上你的I2C有问题,那最好升级到最新版本。这篇教程的测试版本是2012-10-28。

I2C总线允许你连接多个设备到树莓派上,每一台设备都有一个唯一地址,这通常可以通过改变模块上的跳线进行设置。能看到哪台设备连接到你的小派上非常有用,因为这样可以让你确保所有事情都正常工作。

要达到这一点,你需要在命令行里敲入下面的命令来安装i2c-tools工具。

sudo apt-get install python-smbus

sudo apt-get install i2c-tools

根据你的发行版,你可能会找到一个这样的文件:

/etc/modprobe.d/raspi-blacklist.conf

如果没有这个文件,那什么都不用动,如果找到了这个文件,你需要编辑它注释掉下面两行:

blacklist spi-bcm2708

blacklist i2c-bcm2708

通过在行首添加一个’#’来进行注释。

通过键入下面的命令打开编辑器:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

然后像下图那样编辑文件,然后使用CTRL+X和CTRL+Y保存退出。

一旦完成,你就可以通过下面的命令看到连接的设备了(假设你使用的是512MB的Model B型树莓派)

sudo i2cdetect -y 1

上图显示有两个I2C地址被使用 – 0×40和0×70。

注意如果你还使用的是先前版本的树莓派(256MB的Model B型)那你需要把命令改为:

sudo i2cdetect -y 0

树莓派不同型号的I2C端口不同。所以要记住:512M的小派使用i2c端口1,256MB的使用端口0!

测试和配置

最好的测试方法是挑选一个项目(最好从一个十分简单的项目开始)然后自己亲手试一试。

下面是我推荐的一些可以作为入门项目的教程:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

netcore docker_让.NetCore程序跑在任何有docker的地方

一.分别在Windows/Mac/Centos上安装DockerWindows上下载地址:https://docs.docker.com/docker-for-windows/install/(window上安装的常见问题和解决方案请参考下方步骤六)Mac上下载地址:https://hub.docker.com/editions/communit…

MapReduce 编程实践

文章目录1. MapReduce 作业流程2. 实践2.1 启动 hadoop2.2 创建 java 项目2.3 MapReduce shell2.4 MapReduce Web UI3. MapReduce 编程实践:统计对象中的某些属性参考书:《Hadoop大数据原理与应用》1. MapReduce 作业流程 2. 实践 2.1 启动 hadoop sta…

linux c代码出现段错误,Linux下段错误(C语言)

问题描述:在Linux下编程有时会出现段错误的提醒,出现这种错误有可能是因为以下几种原因1.数组越界:如果在初始化或者接收输入时内容超过了定义好的数组元素个数时会出现段错误,Linux的数组越界检查做的不是很好,在编译…

micropython webrepl_4-5 MicroPython WebREPL 命令行交互环境设置-2 接入点模式

在这一节教程里我们将一起学习如何为NodeMCU在接入点模式下设置MicroPython网络命令行交互环境(以下简称: WebREPL)。所谓接入点模式就是NodeMCU可以建立WIFI网络供其他设备接入。如下图所示。ESP8266-NodeMCU接入点(Access Point)工作模式在开始设置WebREPL以前请确认您已经完…

基于XMPP实现的Openfire的配置安装+Android客户端的实现

http://blog.csdn.net/sky_monkey/article/details/9495571转载于:https://www.cnblogs.com/eustoma/p/4217028.html

lammps软件_Lammps模型构建的方法之一:组合模型构建

对于Lammps初学者,建模的方法主要有以下几种:1、在Lammps中自行建模,适合金属等简单的模型,如果遇到聚合物就比较麻烦了;2、通过第三方软件建模,例如:Matlab、Python、VMD、Material Studio(MS)…

MapReduce 编程实践:统计对象中的某些属性

文章目录1. 生成数据2. 编写实体类3. Mapper类4. Reducer类5. Driver类6. 运行参考书:《Hadoop大数据原理与应用》 相关文章:MapReduce 编程实践 1. 生成数据 超市消费者 数据: id, 时间,消费金额,会员/…

linux共享数据,使用Linux共享数据对象

Linux共享数据对象类似于windows中的动态链接库,其后缀通常为so.* (*为版本号),例如为我们所熟知的libpcap,它对应的文件为/usr/lib/libpcap.so。如果程序中使用了某共享数据对象文件,需要在链接时指定gcc的链接参数。如使用libpc…

pythonselenium提高爬虫效率_[编程经验] Python中使用selenium进行动态爬虫

Hello,大家好!停更了这么久,中间发生了很多事情,我的心情也发生了很大的变化,看着每天在增长的粉丝,实在不想就这么放弃了,所以以后我会尽量保持在一周一篇的进度,与大家分享我的学习…

超级签名源码_企业签名和超级签名有哪些区别?

我们知道iOS系统对于非App Store中的应用是有安装限制的,而App Store严格的审核机制又将许多APP拒之门外,这令不少开发者们郁闷不已。所以很多开发者们会选择苹果签名的方式,让自己的iOS APP可以不经过App Store就安装在用户的苹果手机上&…

2015-01-14

1.鞋子到了 2.网络一天没有好 3. 又吸烟了,难受 4. 单双杠:60 5. 洗澡:no 6. 仰卧起坐:100 7. 洗脚/刷牙 8.曾的车 9.老梁关世界 总结:今天还好吧,但我还是很想znn!! 转载于:https://www.cnblo…

天池 在线编程 到达终点

文章目录1. 题目2. 解题1. 题目 描述 A robot is located in a pair of integer coordinates (x, y). It must be moved to a location with another set of coordinates. Though the bot can move any number of times, it can only make the following two types of moves:…

python os函数_python os模块主要函数

使用python提供的os模块,对文件和目录进行操作,重命名文件,添加,删除,复制目录以及文件等。一、文件目录常用函数在进行文件和目录操作时,一般会用到以下几种操作。1、获得当前;路径在python中可…

第十七节(is-a 、is-like-a 、has-a,包和 import )

is - a 类与类之间的继承关系;is - like - a 类与接口之间的关系;has - a 关联关系; public class Animal{public void method01();}// 类与类之间的关系class Dog extends Animal{ // Dog is a Animal} /// public interface I{public void…

quartz获取开始结束时间_Springboot集成quartz

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。本文描述在springboot 2.x环境下怎么集成quartz。一、添加quartz到项目中在pom.xml中加入 <dependency>特别注意application入口类的注解&#xff0c;这里一定…

linux 添加本地磁盘,XenServer如何添加本地存储

在一次测试中&#xff0c;发现本地有两块磁盘&#xff0c;但是只有一块磁盘在XenServer中显示出来&#xff0c;另外一块没有显示。本地只有一个Local storage。查询KB后&#xff0c;发现XenServer可以添加多块本地存储。详情&#xff0c;请见KB&#xff1a;CTX121313详细添加如…

流畅的Python 5. 函数

文章目录1. 函数对象2. 高阶函数3. 匿名函数4. 可调用函数5. 定位参数、仅限关键字参数6. 获取参数信息7. 函数注解8. 支持函数式编程的包1. 函数对象 def factorial(n):returns n! n的阶乘return 1 if n < 2 else n * factorial(n - 1)print(factorial(42)) print(factori…

python方向键键值_python字典键值对的添加和遍历方法

添加键值对 首先定义一个空字典 >>> dic{} 直接对字典中不存在的key进行赋值来添加 >>> dic[name]zhangsan >>> dic {name: zhangsan} 如果key或value都是变量也可以用这种方法 >>> keyage >>> value30 >>> dic[key]val…

无穷大正整数 python_python模块:数字处理

http://blog.csdn.net/pipisorry/article/details/37055183python数字处理简介数字类型python没有unsighed int&#xff1a;The Python int is an abstraction of an integer value, not a direct access to a fixed-byte-size integer.不过int还是当成sighed int处理的&#x…

linux主机基本情况,查看linux主机系统基本信息.pdf

查看linux 主机系统的基本信息一、 硬件信息1. CPUa. Cat /proc/cpuinfo例&#xff1a;[rootlinux victor]# cat /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu family : 6model : 13model name : Intel(R) Celeron(R) M processor 1.50GHzstepping : 8cpu MHz : 150…