手机控制树莓派监控小车小车转动时电板为什么会出嗡嗡声

Android手机控制树莓派制作的四驱小车
年初的时候看到&的这篇文章《》后,觉得硬件编程似乎没有想象的难。
之前认为硬件编程可能需要学习新的编程语言,需要特别的编程环境。然而树莓派使用Linux操作系统环境,只要Linux支持的编程语言
,都可以成为你的选择。当语言环境不是问题的时候,对于我来说,我最感兴趣的部分是如何用树莓派来控制一些低速的外部设备,例如
:继电器、小马达。 一般的PC并不提供这些通用接口,PC只提供一些高速设备的接口如USB。
而树莓派不止提供了USB接口,还提供了GPIO接口,有了这个接口使得控制通用的外部设备得以实现。
开始之前,请用最方便的方式连入树莓派。我自己没有额外的显示器,所以只好通过MBA的Terminal直接SSH上去。
树莓派预装了Python,但是你需要安装RPI GPIO
python来驱动GPIO。安装包地址:/writing/tutorials/tutorial-how-to-use-your-raspberry-pi-like-an-arduino&。安装之后,在程序中import就可以控制GPIO:
代码中树莓派通过指定GPIO接口向外部发送信号,如果从外部向树莓派输入信号,则指定GPIO.input。整个小车需要的部件就是四个轮子,可以单独控制,所以下面我们只说说如何来控制其中的一个电机。&
第一部分:
电机控制电路
接通VCC,GND&模块电源指示灯亮
IA1输入高电平,IA1输入低电平,【OA1&OB1】电机正转;
IA1输入低电平,IA1输入高电平,【OA1&OB1】电机反转;
IA2输入高电平,IA2输入低电平,【OA2&OB2】电机正转;
IA2输入低电平,IA2输入高电平,【OA2&OB2】电机反转;
为了简化电路设计,考虑用驱动模块控制。这是我在淘宝购买的,接上它,你只需要下面简单的连接,就可以让树莓派来控制电机了。驱动模块有电源、信号输入接口以及电源输出接口:
电源输入,VCC,GND分别是输入电源的正负极,可以用电池组来供电。
注意不能接反,否则驱动模块可能短时间内发烫,甚至烧坏。
&信号输入,IA1
IB2分别是两对信号输入接口,接受来自树莓派信号的控制驱动模块的电源输出,达到电机正转反正的目的。
电源输出,电源输出接口OA1
OB2&(绿色部分)分别是两对输出电流到电机的接口,通过他们为电机供电。
当你连接好这些接口后,模块上的连接也就全部完成了,接下来就要把模块上的IA1
IB1, IA2 IB2连接到树莓派程序指定的GPIO。
BOARD模式下的接口定义
第二部分:连接GPIO
要使用树莓派为GPIO提供连个设置模式,BOARD和BCM,
模式的不同GPIO的每一个接口的定义也不同(上图是BOARD模式下的定义),使用时必须在代码中必须明确指定他的模式:
这六行就是要让一个电机转起来的全部代码。代码中的指定了13
和15两个输出接口为驱动模块提供控制信号。我们要做的是在上图中找到这两个GPIO,把它们连接到IA1和IB1,
这个时候运行程序,电机转动。
当然,为代码更好读,可以专门写一个Wheel类来控制轮子。单个轮子只有三个操作,
前进、后退、停止,现在来封装这些操作:
第三部分:封装轮子
于是你就可以简单的使用一下一行代码达到之前六行代码的功能:
通过调用每个Wheel实例,可以对他们自由操作。由于整个车是由四个轮子协同来工作的,我们需要同时来让四个轮子一起工作,对此对这种协同工作进行封装,让我们不必在关心怎样驱动4个轮子就可以前进了:
第四部分: 封装车子
我们希望车子能够前进、后退、左转、右转,于是可以这样来封装一下代码:
Car是一个静态类,它提供的五个方式分别对应到小车的前、后、左、右、停。现在我们考虑远程遥控小车,因此小车必须提供和外部遥控设备的通信接口:
第五部分:通信程序
小车和外界的通信方式其实很多,红外、蓝牙、Wifi等等。根据我的设备清单我就选择了Wifi的方式,所以使用socket作为接口最直接不过了:
& sudo python server.py
之后,树莓派会监听8888端口一旦有消息传递过来,根据命令参数调用相应的方法。小车的服务端接口就相当一个执行者,接受到命令就立刻执行,此次只要可以建立和小车的socket连接,便可以轻松控制,我们打算用Android手机来发送这个消息:
第六部分: Android手机操作小车
通过手机来操作,实际上就通过socket和树莓派进行通信,当树莓派处于listening状态,对于手机来说,它要做的最重要的事情就是发送消息到树莓派,一个小车的指挥者:
&当然这仅仅是手机向树莓派发送消息的部分,手机发送什么的命令,你还需要编程额外的用户接口程序来完成。最简单的,你可以放上四个按钮来操作小车的四个运动方向。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。后使用快捷导航没有帐号?
查看: 10315|回复: 11
注册时间最后登录阅读权限70积分21890精华2帖子
翰林, 积分 21890, 距离下一级还需 8110 积分
TA的每日心情奋斗 09:10签到天数: 361 天[LV.8]以坛为家I
本帖最后由 GY@艳 于
17:20 编辑
ukonline2000
用树莓派+全功能扩展版完成的无线遥控小车!!!
程序下载:
(984 Bytes, 下载次数: 525)
15:25 上传
点击文件名下载附件
爱板&&爱板&&爱板& &&&
注册时间最后登录阅读权限60积分4519精华0帖子
状元, 积分 4519, 距离下一级还需 5481 积分
TA的每日心情难过 15:23签到天数: 567 天[LV.9]以坛为家II
LZ& &V5& && && && && &
做对的事情比做对事情更重要!
注册时间最后登录阅读权限200积分18137精华1帖子
该用户从未签到
醉清风 发表于
注册时间最后登录阅读权限100积分18191精华6帖子
TA的每日心情奋斗 12:42签到天数: 692 天[LV.9]以坛为家II
这个小车没看到跑啊,呵呵,如果能移动一段距离就更完美了
注册时间最后登录阅读权限70积分21890精华2帖子
翰林, 积分 21890, 距离下一级还需 8110 积分
TA的每日心情奋斗 09:10签到天数: 361 天[LV.8]以坛为家I
fengye5340 发表于
这个小车没看到跑啊,呵呵,如果能移动一段距离就更完美了
难道不可以???
爱板&&爱板&&爱板& &&&
注册时间最后登录阅读权限100积分18191精华6帖子
TA的每日心情奋斗 12:42签到天数: 692 天[LV.9]以坛为家II
GY@艳 发表于
难道不可以???
视频上看着没怎么动啊,可能是跑的距离太短了,呵呵
注册时间最后登录阅读权限60积分4841精华1帖子
状元, 积分 4841, 距离下一级还需 5159 积分
TA的每日心情开心 01:21签到天数: 354 天[LV.8]以坛为家I
唉,看来还有很多东西要学呀!!
注册时间最后登录阅读权限70积分21890精华2帖子
翰林, 积分 21890, 距离下一级还需 8110 积分
TA的每日心情奋斗 09:10签到天数: 361 天[LV.8]以坛为家I
shamowangzi 发表于
唉,看来还有很多东西要学呀!!
学无止境嘛
爱板&&爱板&&爱板& &&&
注册时间最后登录阅读权限60积分7648精华1帖子
状元, 积分 7648, 距离下一级还需 2352 积分
TA的每日心情奋斗半小时前签到天数: 1058 天[LV.10]以坛为家III
来看看 不错呢
注册时间最后登录阅读权限20积分150精华0帖子
童生, 积分 150, 距离下一级还需 50 积分
TA的每日心情怒 16:52签到天数: 3 天[LV.2]偶尔看看I
gggggggggggggggggg
分区版主职务勋章
爱板网分区版主
爱板会员勋章
注册成为爱板网会员
活跃会员勋章
经常参与各类话题的讨论,发帖内容较有主见
在线达人勋章
在线时间长,且活跃度高
在线之王勋章
在线时间非常长,且活跃度高
论坛版主职务勋章
爱板网论坛版主
论坛骨干勋章
在论坛积极发帖,并积极与坛友交流互动,成为论坛骨干力量
发帖机器勋章
在论坛积极发帖,数量巨大,质量较高
热心会员勋章
经常帮助其他会员答疑
优秀会员勋章
经常在论坛发帖,与论坛互动交流,对论坛贡献很大
原创达人勋章
经常在论坛发表原创帖,且质量较高
灌水专家勋章
长期在论坛灌水,活跃论坛气氛
站长推荐 /4
10月26日,ADI、博通、Murata等业内大咖将汇聚上海探讨物联网领域的现状和未来,届时您将获得精彩的技术内容分享、与行业大牛面对面交流的机会、也将有幸见证2016年物联网创新设计大赛的优秀获奖作品,同时,我们还将为到厂的各位准备了大疆无人机、华米智能手表、红米手机等精美礼品!立即报名参加吧
泰克推出了多合一的混合域示波器,一台仪器包含了示波器、频谱仪、矢量分析仪与逻辑分析仪等多种功能。既可以满足物联网设计的跨域测量调试需求,又能一机多用,节省了公司在测试仪器上的开支。查看泰克示波器相关视频和技术文档,且看1台示波器如何媲美6台测试仪。
TI Store是TI在其官网上建立的一个TI产品在线购买平台。即日起至10月31日,参与本次问卷调查,你可以进一步了解TI Store,同时将有机会获得精美礼品的机会。
市场价499元的小e2 WiFi M303I-B评估板现免费申请,帮助用户快速将传感器或者MCU等采集到的数据快速上传到云端、或者用户手机端和PC端,从而开发自己的产品。
Powered by Discuz!树莓派瑞士军刀扩展板(SAKS)
树莓派瑞士军刀扩展板是由一系列元件经过精心构建而成的多功能扩展板,适用于40Pin GPIO口的树莓派系列。您可以基于树莓派主机和本产品学习树莓派GPIO的使用,开发出各种的上层软件,软硬件结合,研发出功能丰富的功能和应用。
您对这儿的内容还有疑问?
是否想深入了解?
实践上是否需要支持?
欢迎加入我们的社区,这里有热心技术宅倾力支持!
菲尔宾 (Carrie Anne Philbin)著,方可(树莓派实验室)译
您对这儿的内容还有疑问?
是否想深入了解?
实践上是否需要支持?
欢迎加入我们的社区,这里有热心技术宅倾力支持!
实验室QQ群:
(D群,空闲)
(C群,已满)
(B群,空闲)
(A群,已满)
赞助与合作
“树莓派实验室”欢迎同类网站、社区与我们展开各类形式的合作,同时也在寻求有节操的硬件供应商的赞助。
请邮件联系 7355861[在安卓下控制基于树莓派的小车 皆用python实现 - 推酷
在安卓下控制基于树莓派的小车 皆用python实现
小车端(即树莓派),记得装
RPI GPIO python
import RPi.GPIO as GPIO
#GPIO package
from socket import *
import sys
import time
#import car
# for example
# GPIO.setmode(GPIO.BOARD) #set mode
# GPIO.setup(13, GPIO.OUT) #set gpio in or out
# GPIO.setup(15, GPIO.OUT) #set gpio in or out
# GPIO.output(13, GPIO.HIGH) #set out HIGH or LOW
# GPIO.output(15, GPIO.LOW) #set out HIGH or LOW
class Wheel:
pins ={'a':[13,15],'b':[16,18],'c':[19,21],'d':[22,24]}# four (wheel-gpio prot)
def __init__(self,name):
self.name = name
self.pin = Wheel.pins[self.name]
GPIO.setmode(GPIO.BOARD)
GPIO.setup(self.pin[0],GPIO.OUT)
GPIO.setup(self.pin[1],GPIO.OUT)
self.stop()
def forward(self):
GPIO.output(self.pin[0],GPIO.HIGH)
GPIO.output(self.pin[1],GPIO.LOW)
def stop(self):
GPIO.output(self.pin[0],False)
GPIO.output(self.pin[1],False)
def back(self):
GPIO.output(self.pin[0],False)
GPIO.output(self.pin[1],True)
class Car:
wheels=[Wheel('a'),Wheel('b'),Wheel('c'),Wheel('d')]
@staticmethod
def init():
GPIO.setmode(GPIO.BOARD)
@staticmethod
def forward():
for wheel in Car.wheels:
wheel.forward()
@staticmethod
def back():
for wheel in Car.wheels:
wheel.back()
@staticmethod
def left():
Car.wheels[0].forward()
Car.wheels[1].forward()
Car.wheels[3].back()
Car.wheels[2].back()
@staticmethod
def right():
Car.wheels[2].forward()
Car.wheels[3].forward()
Car.wheels[0].back()
Car.wheels[1].back()
@staticmethod
def stop():
Car.wheels[0].stop()
Car.wheels[1].stop()
Car.wheels[3].stop()
Car.wheels[2].stop()
#########################################################
commands ={'forward':Car.forward,
'back':Car.back,
'stop':Car.stop,
'left':Car.left,
'right':Car.right
def execute(command):
print command
commands[command]()
HOST ='10.1.1.190' #the ip of rapberry pi
PORT = 8888
s= socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
print ('listening on 8888')
conn, addr = s.accept()
print ('Connected by:', addr)
command= conn.recv(1024).replace('\n','')
if not command:break
execute(command)
conn.close()
手机端,记得装qpython这个python环境
#-*- coding:utf-8 -*-
import kivy
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from socket import *
host = '10.1.1.190'
port = 8888
bufsiz =1024
addr = (host, port)
def SendComand(cmd):
s=socket(AF_INET, SOCK_STREAM)
s.connect(addr)
s.send(cmd)
Builder.load_string('''
&CarControlScreen&:
text: 'forward'
on_release: root.forward()
text: 'back'
on_release: root.back()
text: 'left'
on_release: root.left()
text: 'right'
on_release: root.right()
text: 'stop'
on_release: root.stop()
class CarControlScreen(GridLayout):
def left(self):
print &Left&
SendComand('left')
def right(self):
print &Right&
SendComand('right')
def forward(self):
print &forward&
SendComand('forward')
def back(self):
print &back&
SendComand('back')
def stop(self):
print &Stop&
SendComand('stop')
class myApp(App):
def build(self):
return CarControlScreen()
if __name__ == '__main__':
myApp().run()
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致树莓派小车_树莓派吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:32,683贴子:
树莓派小车收藏
Traceback (most recent call last):
File &robot3.py&, line 84, in &module&
command = tk.Tk()
File &/usr/lib/python2.7/lib-tk/Tkinter.py&, line 1813, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)_tkinter.TclError: no display name and no $DISPLAY environment variable
为什么我远程控制树莓派小车不行 会出现上面代码
求解 哪里设置不行
大神指教下
没给参数方程tk那句,看看函数定义里给了默认参数没?
你看看蓝牙连上了么,有的时候会掉
要蓝牙连接吗?
我到这里也进行不下去了 直接换成网页控制了 NND
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 树莓派小车教程 的文章

 

随机推荐