本文由树莓派爱好者ITJoker 编辑,转载请注明出处。本人也有新浪博客同样是树莓派爱好者ITJoker
所需材料:树莓派2B或者2B以上,L2985n驱动板,若干排线,电池及电池盒,usb无线网卡(免驱动),usb摄像头(免驱动)。
所需环境:raspberry-gpio-python,以及安装mjpg-streamer及所需的环境。(这里就不多说了,等日后博主有时间增加这些环境的配置内容)
好了接下来开始我们的行动。
首先,开始我们先用4根母对母杜邦线分别连接L2985n的IN1,IN2,IN3,IN4然后对上树莓派的GPIO接口11,12,13,15。(IN1=12,IN2=11,IN3=13,IN4=15)
IN1,IN2控制的是OUT1,OUT2的马达
IN3,IN4控制的是OUT3,OUT4的马达
(注意,马达接线要左边的与左边的交叉相接,即左前轮和左后轮交叉相接。以此类推右边也是如此。)
树莓派PIN脚图借鉴下树莓派实验室的。(由于博主懒,详细的接线方法没上图。)
接线完毕后,通过网络上的方法用ssh 进入到树莓派
输入命令:(将服务端代码复制上去)
sudo nano start.py
然后Ctrl+x再输入Y加回车即可。
再然后我们继续执行下列命令!
sudo nano csb.py
输入命令:
sudo python start.py
即可运行!
附下小车服务端控制代码及超声波模块代码:(请勿用于其他用途,使用时请注明转载处及作者:树莓派爱好者ITJoker)
start.py
########################################### #Writer: ITJoker # #Time: 2018.3.10 # #Version:2.0 # #Trig=GPIO 2 # #Echo=GPIO 3 # ########################################### # -*- coding: utf-8 -*- import RPi.GPIO as GPIO from socket import * import csb import time def t_init(): GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup(11,GPIO.OUT) GPIO.setup(12,GPIO.OUT) GPIO.setup(13,GPIO.OUT) GPIO.setup(15,GPIO.OUT) def chaoshenbo(): csb.setup() a=csb.checkdist() GPIO.cleanup() conn.send(str(a)) def t_stop(): GPIO.output(11, False) GPIO.output(12, False) GPIO.output(13, False) GPIO.output(15, False) GPIO.output(3, False) GPIO.output(2, False) time.sleep(1) GPIO.cleanup() def t_up(): t_init() GPIO.output(11, True) GPIO.output(12, False) GPIO.output(13, True) GPIO.output(15, False) time.sleep(1) GPIO.cleanup() chaoshenbo() def t_down(): t_init() GPIO.output(11, False) GPIO.output(12, True) GPIO.output(13, False) GPIO.output(15, True) time.sleep(1) GPIO.cleanup() chaoshenbo() def t_right(): t_init() GPIO.output(11, False) GPIO.output(12, True) GPIO.output(13, True) GPIO.output(15, False) time.sleep(1) GPIO.cleanup() chaoshenbo() def t_left(): t_init() GPIO.output(11, True) GPIO.output(12, False) GPIO.output(13, False) GPIO.output(15, True) time.sleep(1) GPIO.cleanup() chaoshenbo() ######################################################### def commands (cmd): print cmd if cmd == 'd': t_down() elif cmd == 's': t_stop() elif cmd == 'u': t_up() elif cmd == 'l': t_left() elif cmd == 'r': t_right() HOST ='192.168.43.97' #the ip of raspberry pi PORT =8888 #the port of raspberry pi s= socket(AF_INET, SOCK_STREAM) s.bind((HOST, PORT)) s.listen(5) print ('listening on',PORT) while 1: conn, addr = s.accept() print ('Connected ok! By ',addr) while 1: command= conn.recv(20).replace(' ','') if command == 'g': conn.close break elif not command:break commands(bytearray(command)) #command conn.close()
csb.py
#! /usr/bin/python # -*- coding:utf-8 -*- import RPi.GPIO as GPIO import time def checkdist(): #发出触发信号 GPIO.output(2,GPIO.HIGH) #保持10us以上 time.sleep(0.000015) GPIO.output(2,GPIO.LOW) while not GPIO.input(3): pass #发现高电平时开时计时 t1 = time.time() while GPIO.input(3): pass #高电平结束停止计时 t2 = time.time() #返回距离,单位为米 return (t2-t1)*340/2 def setup(): GPIO.setmode(GPIO.BCM) GPIO.setup(2,GPIO.OUT,initial=GPIO.LOW) GPIO.setup(3,GPIO.IN) time.sleep(2)
附上小车电脑控制端链接:链接:http://pan.baidu.com/s/1jHXZvD0 密码:0lbv
好了接下来就可以玩自己制作的视频小车了
需要安卓控制端可以联系邮箱:649258008@qq.com(QQ拒加)