树莓派 gpio usb_树莓派gpio编程

树莓派 gpio usb_树莓派gpio编程概览树莓派最令人兴奋的特点之一是它有一个GPIO连接器可以用来接其他的硬件设备。GPIO连接器实际上是由许多不同类型的接口组成的:真正的GPIO(GeneralPurposeInputOutput,通用输入/输出)针脚,你可以用来控制LED灯的开和关。I2C(Inter-IntegratedCircuit)接口针脚,使你能够仅使用2个控制针脚连接硬件模块。SPI(SerialPeriph…


Jetbrains全系列IDE稳定放心使用

概览

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

树莓派 gpio usb_树莓派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针,其他都是一样的。

树莓派 gpio usb_树莓派gpio编程

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

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

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

树莓派 gpio usb_树莓派gpio编程

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

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

Adafruit Pi Code

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

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

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

树莓派 gpio usb_树莓派gpio编程

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

sudo apt-get update

树莓派 gpio usb_树莓派gpio编程

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项目:

http://learn.adafruit.com/raspberry-pi-e-mail-notifier-using-leds

http://learn.adafruit.com/playing-sounds-and-using-buttons-with-raspberry-pi

http://learn.adafruit.com/basic-resistor-sensor-reading-on-raspberry-pi

树莓派 gpio usb_树莓派gpio编程

要使用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项目:

http://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi

http://learn.adafruit.com/adafruit-16×2-character-lcd-plus-keypad-for-raspberry-pi

http://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi

http://learn.adafruit.com/matrix-7-segment-led-backpack-with-the-raspberry-pi

http://learn.adafruit.com/mcp4725-12-bit-dac-with-raspberry-pi

http://learn.adafruit.com/adafruit-16-channel-servo-driver-with-raspberry-pi

http://learn.adafruit.com/using-the-bmp085-with-raspberry-pi

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

sudo nano /etc/modules

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

i2c-bcm2708

i2c-dev

树莓派 gpio usb_树莓派gpio编程

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

如果在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保存退出。

树莓派 gpio usb_树莓派gpio编程

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

sudo i2cdetect -y 1

树莓派 gpio usb_树莓派gpio编程

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

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

sudo i2cdetect -y 0

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

测试和配置

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

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

http://learn.adafruit.com/raspberry-pi-e-mail-notifier-using-leds

http://learn.adafruit.com/playing-sounds-and-using-buttons-with-raspberry-pi

http://learn.adafruit.com/matrix-7-segment-led-backpack-with-the-raspberry-pi

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182239.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • ES6 类的使用(class)

    ES6 类的使用(class)

    2022年4月3日
  • rolling在舞蹈里是什么意思_机械舞和街舞有啥区别

    rolling在舞蹈里是什么意思_机械舞和街舞有啥区别原标题:这,就是街舞中的那些“Swag”十足的舞蹈类型,你了解吗?世界越来越小了,人们越靠越近,视野越来越广,局限于逼仄的小空间的时代已经一去不复返了。现在,一推门,迎面就是全世界。自去年开始,嘻哈文化开始通过综艺节目进入公众视野(中国有嘻哈),这种来自大洋彼岸的“陌生文化”随即引起了广泛的关注。尽管作为“第一个吃螃蟹的人”,《中国有嘻哈》的最终结果不尽如人意,但却为后来的综艺制作人提供了全新的视…

    2022年11月2日
  • 拜占庭将军问题_拜占庭为什么叫拜占庭

    拜占庭将军问题_拜占庭为什么叫拜占庭在https://blog.csdn.net/qq_41946557/article/details/102770531分布式系统之Paxos选举协议有提到Paxos有一个前提:没有拜占庭将军问题。,所以这里对拜占庭将军问题进行了解。拜占庭将军问题拜占庭将军问题(Byzantinefailures),是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试…

    2022年10月22日
  • 手机号码归属地数据库下载

    手机号码归属地数据库下载一份手机号归属地数据,共有174495条数据,包括中国移动,中国联通,中国电信的(包含152、186、188、189开头的手机号)。其中cardtype字段基本上没有什么用。因为可以通过办理某些业务就可以把如全球通卡转成神州行卡。对于这样的一份数据,你想要怎么利用?如果你只是想做一个手机号归属地查询的功能,那就浪费了。这个收数据库的主要功能就是通过手机号的前7位数字判断出手机号的归属城…

    2022年7月22日
  • 使用 SCTP 优化网络

    使用 SCTP 优化网络SCTP是在IP网络上使用的一种可靠的通用传输层协议。尽管SCTP协议最初是为发送电话信号而设计的(RFC2960),但带来了一个意外的收获:它通过借鉴UDP的优点解决了TCP的某些局限。SCTP提供的特性使套接字初始化的可用性、可靠性和安全性都得以提高。(图1给出了IP堆栈的层次化架构。)图1.IP栈的层次化架构本文简要介绍了Linux

    2022年6月16日
  • mysql的case when语法_sql基本语句大全

    mysql的case when语法_sql基本语句大全介绍mysql数据库中casewhen语句的用法,首先介绍casewhen语句的基础知识,然后提供了相关例子。(1)mysql数据库中CASEWHEN语句。casewhen语句,用于计算条件列表并返回多个可能结果表达式之一。CASE具有两种格式:简单CASE函数将某个表达式与一组简单表达式进行比较以确定结果。CASE搜索函数计算一组布尔表达式以确定结果。两种格式都支持…

    2022年9月5日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号