• 树莓派小车By 树莓派爱好者ITJoker(通过python socket通信实现树莓派视频小车)(一)新博客:https://www.itjoker.cn


    本文由树莓派爱好者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树莓派小车By <wbr>树莓派爱好者ITJoker(通过python <wbr>socket通信实现树莓派视频小车)
    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()
    View Code

    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)
    View Code
    附上小车电脑控制端链接:链接:http://pan.baidu.com/s/1jHXZvD0 密码:0lbv
    好了接下来就可以玩自己制作的视频小车了
    需要安卓控制端可以联系邮箱:649258008@qq.com(QQ拒加)
    内容太长无法显示。
  • 相关阅读:
    cookie标准话
    thinkphp关联查询
    jq获取表单值与赋值代码
    Github使用.gitignore文件忽略不必要上传的文件 (转)
    python 库 Numpy 中如何求取向量范数 np.linalg.norm(求范数)(向量的第二范数为传统意义上的向量长度),(如何求取向量的单位向量)
    word 使用中 上标符号的实现
    python 编程中的一个关于图片的库 imageio (读取照片RGB内容,转换照片格式)
    交叉熵代价函数(作用及公式推导) ------转载
    cousera 深度学习 吴恩达 第一课 第二周 学习率对优化结果的影响
    python3 读入一个jpg格式的图片,并转换长宽像素个数,然后进行绘制
  • 原文地址:https://www.cnblogs.com/ITJoker/p/7279390.html
Copyright © 2020-2023  润新知