本文由树莓派爱好者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('\n','')
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拒加)

树莓派小车By 树莓派爱好者ITJoker(通过python socket通信实现树莓派视频小车)(一)的更多相关文章

  1. Python Socket通信原理

    [Python之旅]第五篇(一):Python Socket通信原理   python Socket 通信理论 socket例子 摘要:  只要和网络服务涉及的,就离不开Socket以及Socket编 ...

  2. python - socket通信笔记

    参考: 通过编写聊天程序来熟悉python中多线程和socket的用法:https://www.cnblogs.com/mingjiatang/p/4905395.html python socket ...

  3. 树莓派小车By 树莓派爱好者ITJoker(通过C socket通信实现树莓派视频小车)(二)

    前面的方法可以参照(一)来配置GPIO口. 下面是代码...仅供参考,转载请注明出处. 1.  先输入以下指令,再复制代码,Ctrl+X  输入Y  回车  保存. sudo nano start.c ...

  4. Python Socket通信黏包问题分析及解决方法

    参考:http://www.cnblogs.com/Eva-J/articles/8244551.html#_label5 1.黏包的表现(以客户端远程操作服务端命令为例) 注:只有在TCP协议通信的 ...

  5. Python Socket通信例子

    一.TCP 通信 服务端 #!/usr/bin/env python # -*- coding: utf-8 -*- # server_tcp.py import socket so = socket ...

  6. Python Socket 通信

    参考: http://www.cnblogs.com/alex3714/articles/5830365.html Socket A network socket is an endpoint of ...

  7. 程序媛计划——python socket通信

    定义 socket 是进程间的一种通信方式,可以实现不同主机间的数据传输 #写服务期端程序server.py #实现服务器向客户端连接 #!/usr/bin/env python #coding:ut ...

  8. Python socket通信之FTP

    Python中利用socket进行server端和client端通信是网络编程的基础,是最简单的传输范例. (懂网络的请自动跳过这一部分) 首先,要想通信,必须建立连接,建立连接的过程,需要clien ...

  9. Python socket 通信功能简介

    常用的地址家族AF_UNIX:基于文件,实现同一主机不同进程之间的通信AF_INET:基于网络,适用于IPv4AF_INET6:基于网络,使用于IPv6 常见的连接类型SOCK_STREAM:即TCP ...

随机推荐

  1. SpringBoot入坑-持久化操作

    前面内容中我们已经了解到了SpringBoot关于参数传递的相关知识,本篇我们一起来学习一下SpringBoot关于数据库持久化操作的知识,这里我们使用JPA进行数据库的持久化操作. 首先由于我们需要 ...

  2. 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】

    KazaQ's Socks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  3. UESTC 1591 An easy problem A【线段树点更新裸题】

    An easy problem A Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others ...

  4. HDU 1711 Number Sequence(KMP裸题,板子题,有坑点)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. Codeforces Round #345(Div. 2)-651A.水题 651B.。。。 651C.去重操作 真是让人头大

    A. Joysticks time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  6. BZOJ2004: [Hnoi2010]Bus 公交线路

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2004 状压dp+矩阵乘法. f[i][s]表示从第i位至前面的i-k位,第i位必须取的状态. ...

  7. BZOJ3997: [TJOI2015]组合数学(网络流)

    3997: [TJOI2015]组合数学 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 405  Solved: 284[Submit][Status ...

  8. c++(排序二叉树)

    前面我们讲过双向链表的数据结构.每一个循环节点有两个指针,一个指向前面一个节点,一个指向后继节点,这样所有的节点像一颗颗珍珠一样被一根线穿在了一起.然而今天我们讨论的数据结构却有一点不同,它有三个节点 ...

  9. FineReport父子格实现动态参数注入

    "深入学习FineReport后发现其功能及其强大,之前使用存储过程实现的报表完全可以使用FineReport本身的功能实现. 当你需要的表名,查询条件等均未知的时候,使用"动态参 ...

  10. [Golang]一道考察defer与命名返回值的题目

    题目 输出: 4 1 3 解释 当函数有可命名结果形参时,结果形参的初始值被设置为零值,函数的return语句会设置结果形参的值 当函数有可命名结果形参时,defer函数是可以修改它,然后再将它的值返 ...