树莓派2和树莓派3 gpio接口规范的gpio有什么区别吗

3、树莓派小车系列之python控制马达转动
以下为本篇文章全部内容:
&&&&&&&&大家好,我是Sunny。今天将给大家带来系列教程《树莓派小车系列》,今天这个是第三讲,上回讲了我们如何把树莓派和l298n和马达接线连接起来。既然连起来了,我们就应该来试试如何用树莓派通过python来控制这个马达的转动。高清视频下载地址:/cF7R4ULY4pJN2 (提取码:9006)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&链接: /s/1i3poadJ 密码: beqr&&&&&&&&前面我已经说过了,我们做这个小车最主要的部分就是控制L298N这个模块,因为编码部分都有什么难度主要还是靠控制这个模块来控制马达的转动和转向,当我拿到这个模块的时候我一头雾水实在是不知道该如何折腾,不过还好后面我找到了一张图,有了这张图我就可以很清楚的知道我的代码改怎么写,怎么控制这个模块控制马达了。这个图的IN1、IN2、IN3、IN4我在上一讲已经说明跟树莓派怎么接了,大家如果忘记了可以去看上一篇《》在上一讲我说了,我的IN1、IN2、IN3、IN4分别接了树莓派的GPIO11、GPIO12、GPIO13、GPIO15首先我们需要安装python的gpio模块,可以通过pip安装也可以通过下载源代码安装。安装好python和gpio的模块之后就进行编码了。我这里使用的是vim编辑器,我个人在linux比较习惯用vim。大家可以在自己电脑编写好之后再上传到树莓派上面。sudo&vim&xiaoche.pyxiaoche.py代码,这里的代码对应参考图编写。#导入gpio的模块
import&RPi.GPIO&as&GPIO
import&time
#设置gpio口的模式
GPIO.setmode(GPIO.BOARD)
#定义信号接口gpio口
#设置gpio口为输出
GPIO.setup(INT1,GPIO.OUT)
GPIO.setup(INT2,GPIO.OUT)
GPIO.setup(INT3,GPIO.OUT)
GPIO.setup(INT4,GPIO.OUT)
#这里参考上一节模块接线的L298N模块的控制图
GPIO.output(INT1,GPIO.HIGH)
GPIO.output(INT2,GPIO.LOW)
GPIO.output(INT3,False)
GPIO.output(INT4,False)
#延时2秒之后执行cleanup释放GPIO接口
time.sleep(2)
GPIO.cleanup()代码写到之后我们保存退出,接着执行一下观看马达有没有转动sudo&python&xiaoche.py&&&&& & 希望大家能操作成功,欢迎期待下一期的教程,下一期教程就是小车底盘的安装。&&&&& & & & 树莓派小车系列教程一:《》& & & & 树莓派小车系列教程二:《》& & & & 树莓派小车系列教程三:《》& & & & 树莓派小车系列教程四:《》& & & & 树莓派小车系列教程五:《》& & & & 树莓派小车系列教程六:《》&&&&&&&&谢谢大家对本博客的支持,本站专注原创技术文章,请尊重原创,杜绝百度上面出现的各种一模一样的帖子,让我们一起努力做更优质的文章。且看且珍惜博主的心得。请转载带上本文链接注明出处。如果大家有什么疑问可以加我QQ进行解答,也可以加入交流群群二维码Sunny博客技术交流群:Sunny博客技术交流群:&
听说点赞是一种美德在RPI上完成了一个用JAVA开发的智能家居小项目,将RPI与单片机结合后可以对一些设备进行简单的控制。在项目中,RPI充当了服务器,它的性能对于这种小数据处理量的场合还是游刃有余的。而谈到控制,最简单的控制方式之一就是采用串行接口通信。因为项目采用JAVA语言进行开发,只能通过JNI调用底层的代码实现。至于JVM,原本需要安装预览版的JRE8。不过最新版本的系统镜像中已经内置了支持硬浮点运算的JRE7,因此JAVA环境不再需要额外安装。
在安装RXTX的时候还是遇到了一些小麻烦,因为目前Raspbian源中的librxtx似乎是在openJDK的基础上编译打包的,直接通过apt-get安装的librxtx无法在JRE7中使用。因此,只能从RXTX项目的网站上下载源码包进行编译安装了。
在撰写本文时,最新的RXTX稳定版本是rxtx 2.1-7r2。首先用wget获取源码包并解压
wget http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7r2.zip
unzip rxtx-2.1-7r2.zip
如果直接MAKE编译安装,可能会遇到以下两种错误:
错误1:/tmp/rxtx-2.1-7r2/./src/I2CImp.c:135: error: &UTS_RELEASE& undeclared (first use in this function)
这是由于version.h中缺少&UTS_RELEASE&信息,需要手工添加。先获取当前系统的版本信息:
然后在/usr/include/linux/version.h中添加
3.10.24+为上一步中获得的版本号
错误2:libtool: install: armv6l-unknown-linux-gnu/librxtxRS485.la& is not a directory
这个错误会出现在JDK1.6及以上的运行环境下,需要对configure文件进行修改。在configure文件中找到
1.2*|1.3*|1.4*|1.5*
这一行,在后边添加上当前JDK的版本号即可,如
1.2*|1.3*|1.4*|1.5*|1.6*|1.7*|1.8*
完成以上两项修改后,就可以正常编译安装了。如果看到 Libraries have been installed in:/usr/lib/jvm/jdk-7-oracle-armhf/jre/lib/arm 则说明RXTX安装已经成功。
配置树莓派GPIO
1)&安装Java
要想控制继电器,我们必须先学会控制树莓派上的GPIO,控制GPIO有很多方式:python、wiringPi、pi4j。前两种方式的介绍网上有很多,所以我们这里介绍pi4j,该项目旨在为全面进入Raspberry&Pi的提供本地库和Java之间的桥梁(This&project&is&intended&to&provide&a&bridge&between&the&native&libraries&and&Java&for&full&access&to&the&Raspberry&Pi.)。要想使用pi4j必须给树莓派安装Java,不过在最新的树莓派系统Raspbian中已经内置了Java(),如果不知道你的树莓派中有没有Java,你可以使用javac&-version&来查看是否有安装了Java。如下图出现了版本信息,就表示安装了Java。如果没有就去下载最新的Raspbian系统吧。
2)&安装Pi4j
打开树莓派的控制台输入下面的命令下载Pi4j文件:
wget&/download/pi4j-0.0.5.deb&&
(如果你已经安装了Pi4j的其他版本,请先执行如下命令将其卸载掉:sudo&dpkg&-r&pi4j)
下载完成后使用下面的命令安装:
sudo&dpkg&-i&pi4j-0.0.5.deb&&
安装Pi4j库和示例文件:
/opt/pi4j/lib&&&
/opt/pi4j/examples&&
到这里就已经安装完成了,如果想要卸载Pi4j执行如下命令:
sudo&dpkg&-r&pi4j&&
3)&Pi4j程序的编译与运行示例
要想编译使用Pi4j的程序必须指明其包的路径比如说我在home/pi/code/java/下编写了一个叫Test.java的程序,应该执行如下命令:
首先进入到程序的目录:
cd&code/java&&
javac&-classpath&.:classes:/opt/pi4j/lib/'*'&-d&.&Test.java&&
sudo&java&-classpath&.:classes:/opt/pi4j/lib/'*'&Test&&
4、控制继电器
在home/pi/code/java/下新建java程序Test.java,功能就是让继电器每隔一秒就切换一下状态:
import&com.pi4j.io.gpio.GpioC&&
import&com.pi4j.io.gpio.GpioF&&
import&com.pi4j.io.gpio.GpioPinDigitalO&&
import&com.pi4j.io.gpio.PinS&&
import&com.pi4j.io.gpio.RaspiP&&
public&class&Test&{&&
&&&&public&static&void&main(String[]&args)&throws&InterruptedException&{&&
&&&&&&&&&&
&&&&&&&final&GpioController&gpio&=&GpioFactory.getInstance();&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&final&GpioPinDigitalOutput&pin&=&gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01,&"LED",&PinState.HIGH);&&
&&&&while(true){&&
&&&&&&&&&&
&&&&&&&&pin.high();&&
&&&&&&&&System.out.println("打开继电器");&&
&&&&&&&&&&
&&&&&&&&&&&Thread.sleep(1000);&&
&&&&&&&&&&
&&&&&&&&pin.low();&&
&&&&&&&&System.out.println("关闭继电器");&&
&&&&&&&&&&&Thread.sleep(1000);&&
&&&&&&&&&&
&&&&&&&&&&&&&
进入到程序的目录:
cd&code/java&&
javac&-classpath&.:classes:/opt/pi4j/lib/'*'&-d&.&Test.java&&
sudo&java&-classpath&.:classes:/opt/pi4j/lib/'*'&Test&&
5、完整的Java代码&-&原文来自:http://blog.csdn.net/qigenhuochai/article/details/
搭建好Yeelink平台后,我们可以用树莓派访问设备的状态链接以获得设备的当前状态,然后根据得到的状态来控制GPIO。编写程序每2秒获取一次状态,访问时间间隔不建议设置的太短。在home/pi/code/java/下新建java程序ControlLed.java,代码没有什么算法,都是基本的操作。如有不足望高手指点一二。
import java.io.BufferedRimport java.io.IOEimport java.io.InputSimport java.io.InputStreamRimport java.net.HttpURLCimport java.net.URL;import com.pi4j.io.gpio.GpioCimport com.pi4j.io.gpio.GpioFimport com.pi4j.io.gpio.GpioPinDigitalOimport com.pi4j.io.gpio.PinSimport com.pi4j.io.gpio.RaspiP/** * 远程控制树莓派上的GPIO实例 * @author 亓根火柴 */public class ControlLed { GpioC GpioPinDigitalO public static void main(String s[]){ //下面的链接就是你在Yeelink的设备的状态URL String urlStr = "http://api.yeelink.net/v1.0/device/《这
里是你的设备编号》/sensor/《这里是你的传感器编号》/datapoints"; ControlLed cl = new ControlLed(); cl.gpio = GpioFactory.getInstance(); cl.pin = cl.gpio.provisionDigitalOutputPin
(RaspiPin.GPIO_01, "LED", PinState.HIGH); boolean current = cl.getStatus(urlStr); cl.setLedStatus(current); while(true){ try{ if(cl.getStatus(urlStr) != current){ current = cl.getStatus(urlStr); cl.setLedStatus(current); } Thread.sleep(2000); }catch(Exception e){e.printStackTrace();} } } public boolean getStatus(String urlStr){ URLboolean on = try { url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection)
url.openConnection(); conn.setRequestMethod("GET"); InputStream in = conn.getInputStream(); BufferedReader rd = new BufferedReader(new
InputStreamReader(in)); StringBuilder tempStr = new StringBuilder(); while (rd.read() != -1) { tempStr.append(rd.readLine()); } //System.out.print("--& 服务器上传感器的信息:"); String status = tempStr.substring
(tempStr.lastIndexOf(":")+1, tempStr.length()-1); //System.out.println(status); on = status.equals("1")? true: //System.out.println(on); } catch (IOException e) { e.printStackTrace(); } } public void setLedStatus(boolean sta){ if(sta){ pin.low(); //因为我的继电器是低电平有效 System.out.println("--& 更新GPIO的状态: 开"); }else { pin.high(); System.out.println("--& 更新GPIO的状态: 关"); } }}
频道: Java 标签:GPIO
pi4j RXTX 串口 树莓派
&&&&相关课程求指教,Mp4上的液晶屏能够直接连到树莓派的GPIO口么 | 树莓派爱好者小组 | 果壳网 科技有意思
13354人加入此小组
如题,手上有一台纽曼的MP4,里面的液晶屏和背光板是封装好的,通过两片软排线连接到主板。求指教,如果购买个淘宝上的排线转接板后,能不能直接把这个液晶屏和背光板连到树莓派上作为监视屏幕。(声音什么的都无所谓,明暗其实也不那么要紧,默认最亮就好)目前树莓派主要作为下载机使用,如果有个小屏幕能够监视下载状况和进度就很好了。求大神指教,这里先谢过了!
+ 加入我的果篮
恐怕不行,MP4上的液晶屏是需要驱动程序的,而且淘宝上肯定不容易买到特定型号的液晶屏的驱动板,树莓派的GPIO没有能够给液晶用的通用接口,网上有人做出来是用GPIO模拟液晶屏的接口时序来驱动液晶的,但是这样会占用大量的CPU资源,能用但是不划算。如果你有能力的话,就做一个HDMI或者VGA转换成MP4液晶屏的驱动板,这个东西我觉得应该是没得卖的。
做下载机的话,不是有网页版的可以控制下载状态么
恩,网页版和直观屏幕上显示还是有区别啊,毕竟我还得开台机子上网不是,我刚玩树莓派,还不是很熟悉,基本停留在script kid的水平。多谢指导!我看到网上有直接卖tft屏的,这种的可以么?还是也需要驱动板?这个和我mp4上的很像。
(C)2016果壳网&&&&&京ICP备号-2&&&&&后使用快捷导航没有帐号?
查看: 22476|回复: 19
注册时间最后登录阅读权限100积分4953精华3帖子
TA的每日心情开心 16:50签到天数: 15 天[LV.4]偶尔看看III
本帖最后由 ukonline2000 于
15:38 编辑
今天教大家在树莓派上如何安装python和python的GPIO库!简单4步就完成,方便大家使用树莓派的GPIO
1.安装python $ sudo apt-get install python-dev复制代码
2.执行更新 $ sudo easy_install -U distribute复制代码3.安装python-pip $ sudo apt-get install python-pip复制代码
4.安装python的GPIO库 $ sudo pip install rpi.gpio复制代码
博客站点:
注册时间最后登录阅读权限200积分17875精华1帖子
该用户从未签到
呵呵,期待Raspi 的详细教程
注册时间最后登录阅读权限40积分843精华0帖子
举人, 积分 843, 距离下一级还需 157 积分
TA的每日心情无聊 15:08签到天数: 16 天[LV.4]偶尔看看III
注册时间最后登录阅读权限100积分1907精华0帖子
TA的每日心情奋斗昨天&09:48签到天数: 162 天[LV.7]常住居民III
我怎么搞了没有用啊?
注册时间最后登录阅读权限100积分1907精华0帖子
TA的每日心情奋斗昨天&09:48签到天数: 162 天[LV.7]常住居民III
有用了,没注意大小写!
注册时间最后登录阅读权限60积分4841精华1帖子
状元, 积分 4841, 距离下一级还需 5159 积分
TA的每日心情开心 01:21签到天数: 354 天[LV.8]以坛为家I
看来这个平台果然很强大呀!以库得名呀!
先收藏了,有机会好好看看!!
注册时间最后登录阅读权限100积分1907精华0帖子
TA的每日心情奋斗昨天&09:48签到天数: 162 天[LV.7]常住居民III
好像还是不太会用!不知道怎么回事!
注册时间最后登录阅读权限100积分4953精华3帖子
TA的每日心情开心 16:50签到天数: 15 天[LV.4]偶尔看看III
cat3902982 发表于
好像还是不太会用!不知道怎么回事!
别着急,慢慢来
博客站点:
注册时间最后登录阅读权限100积分1907精华0帖子
TA的每日心情奋斗昨天&09:48签到天数: 162 天[LV.7]常住居民III
ukonline2000 发表于
别着急,慢慢来
请教下,按照你上面来好了,下面怎么弄啊?
注册时间最后登录阅读权限100积分4953精华3帖子
TA的每日心情开心 16:50签到天数: 15 天[LV.4]偶尔看看III
cat3902982 发表于
请教下,按照你上面来好了,下面怎么弄啊?
。。。。。。。。这你让我如何说起了
该干嘛干嘛呀,控制GPIO,写程序,调试。。。。。
博客站点:
论坛版主职务勋章
爱板网论坛版主
优秀会员勋章
经常在论坛发帖,与论坛互动交流,对论坛贡献很大
活跃会员勋章
经常参与各类话题的讨论,发帖内容较有主见
原创达人勋章
经常在论坛发表原创帖,且质量较高
突出贡献勋章
长期对论坛的繁荣而不断努力,或多次提出建设性意见
技术高手勋章
拥有多年经验和一流的技术水平
论坛骨干勋章
在论坛积极发帖,并积极与坛友交流互动,成为论坛骨干力量
分区版主职务勋章
爱板网分区版主
爱板会员勋章
注册成为爱板网会员
发帖机器勋章
在论坛积极发帖,数量巨大,质量较高
在线达人勋章
在线时间长,且活跃度高
在线之王勋章
在线时间非常长,且活跃度高
站长推荐 /4
EVB-335X-II是CoM-335X工控模块的评估系统,为客户提供CoM-335X的原始参考设计,方便客户快速应用。立即查看申请!
丰富的视频教程和应用文档都在这里!8月1日之前回答相关问题,还能获得精美的奖品。立即点击查看
7月31日之前,爱板网联合机智云为感兴趣的爱板网友推出机智云 Gokit 3(S) - SoC版(Gokit3.2)免费试用申请通道!快来申请吧!
即日起,在爱板网论坛参加 Atmel抢楼主题活动,就有机会赢取Atmel板卡和京东券啦!活动截止到7月10日。立即参加!
Powered by Discuz!树莓派B+与树莓派B的区别与联系(二) & DesignSpark
Loading DesignSpark, please wait...
We apologise for the slowness of this page You are using Internet Explorer 6, upgrading your browser will greatly enhance your experience using DesignSpark
The gateway to online resources and design support for engineers, powered by
Choose language:
树莓派B+与树莓派B的区别与联系(二)
on Sat, Aug 23 :57
树莓派B+相对于树莓派B在GPIO数目、USB扩展口数目、存储卡类型等有了重大改变,但是依然保留了Model B版本的使用方法,本期blogger将介绍Model B的使用方法和与Model B的联系之处。
关于系统安装
树莓派B+采用处理器仍然是BCM2835,保留了原有的运行软件。其系统的下载与安装方式与Model B 相同,你依然可以采用Boobls和win32Imager两种方式安装linux操作系统,需要注意的是,Model B+ 在下载liunx安装版本时,最好在官网下载最新发布的版本安装,两种下载与安装方式,可以参考笔者。
关于外形封装
树莓派B+ 与树莓派B的外形尺寸相当,这不代表新版本可以使用B的设计外壳或者其他已经购置的外接设备,毕竟Model B的安装孔的位置发生了改变。
笔者在之前的blogger中已经尝试为两种树莓派设计两种外壳,需要参考的童鞋可以参看和。
关于GPIO的使用
Model B+的前26个GPIO口的使用与Model &B的使用方法是一样的,所以之前的GPIO的使用方式依然可以作为参考,笔者在之前的Blogger中,已经对GPIO的使用方法进行了较为详细的介绍,总结下常用的方式有三种:
关于应用实例
Related Blog posts
29/06/2016
29/04/2016
29/04/2016
05/01/2016
Related Forum Posts 30/09/201508/07/201527/01/201501/12/2014
Related Knowledge items
04/08/2015
27/04/2016
20/06/2016
22/10/2015

我要回帖

更多关于 树莓派3 gpio定义 的文章

 

随机推荐