zoukankan      html  css  js  c++  java
  • 树莓派小车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拒加)
    内容太长无法显示。
  • 相关阅读:
    使用 yo 命令行向导给 SAP UI5 应用添加一个新的视图
    SAP Fiori Elements 应用的 manifest.json 文件运行时如何被解析的
    SAP UI5 标准应用的多语言支持
    微软 Excel 365 里如何设置下拉菜单和自动高亮成指定颜色
    SAP Fiori Elements 应用里的 Title 显示的内容是从哪里来的
    本地开发好的 SAP Fiori Elements 应用,如何部署到 ABAP 服务器上?
    如何在 Cypress 测试代码中屏蔽(Suppress)来自应用代码报出的错误消息
    教你一招:让集群慢节点无处可藏
    应用架构步入“无服务器”时代 Serverless技术迎来新发展
    MySQL数据库事务隔离性的实现
  • 原文地址:https://www.cnblogs.com/ITJoker/p/7279390.html
Copyright © 2011-2022 走看看