树莓派wifi小车制作(6)wifi小车大功告成

22 篇文章 0 订阅
18 篇文章 2 订阅

关于代码

emmm,这里只包含了控制代码
获取摄像头的数据可以通过之前的网络摄像头搭建完成,那个还是挺全面的,我就不在这里明抄了
代码源码,一个C币带走

关于价格

其实我也不知道C币有什么用,因为作为白嫖党我一般遇到要花钱的基本就直接走人
但是理论上来说,按照我对我自己的了解,如果把我的树莓派系列的从头读到尾的人,应该不需要从这里花钱要代码?

关于这个系列

重要提示!!如果从你头读到尾,但是发现依然有缺少的地方,请在评论区留言让我知道或者私信我
我个人是非常倾向于 能把我的树莓派wifi小车系列 从头读到尾 ,就能把代码在小车上跑起来的做法,但我不清楚我的系列是否能够真的达成这个目标,所以这需要读者们你们的提醒

如果有缺斤少两,欢迎留言提醒,我看情况会将对应的内容补充

目录
0.树莓派 wifi小车制作(0)总览
1.树莓派 wifi小车制作(1)获取手柄按键输入
2. 树莓派 wifi小车制作(2)搭建网络摄像头
3.树莓派 wifi小车制作(3)小车移动控制模块
4.树莓派wifi小车制作(4)舵机云台控制
5.树莓派 wifi小车制作(5)socket通讯连接PC与树莓派


当然,你如果说有的代码只控制了两个舵机,但是你要我提供三个舵机的控制代码之类的问题……我……只能说你去研究下单个舵机云台是怎么控制的去吧
我总不能来个人就提供份三个舵机,四个舵机……N个舵机吧?
是吧?

代码

电脑端

只需要运行socket_client.py的文件
嘛,几个需要import的的环境自己安装
电脑端需要修改的就是树莓派的ip地址了,要是找不到ip地址……那我也没办法了
电脑端两个文件,一个开线程获取手柄输入的文件,一个发送信息的文件

from socket import *
import time
import test_shoubing_noclass

#下面的ip地址要改!!!!!!!!!!!!!!!!!!!!!!!
HOST = '192.168.0.106' # or 'localhost'
#上面的ip地址要改!!!!!!!!!!!!!!!!!!!!!!!

PORT = 21567
BUFSIZ =1024
ADDR = (HOST,PORT)

tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
     a=test_shoubing_noclass.get_shoubing_info()
     send_str=""
     ID=str(1001)
     send_str+=ID
     for i in a :
         send_str+="#"+str(int(i))
     send_str+="##"
     tcpCliSock.send(send_str.encode())
     time.sleep(0.01)

树莓派端

只需要运行socket_server.py文件
理论上看我的文章的人应该都会运行python吧?不会真的有人连运行python都不会就想搞树莓派吧?
不会吧?不会吧?

from socket import *
from time import ctime
import car_control
import time
import MotorHAT.control as duoji

def socket_car_control(arr):
    l_speed=arr[1]
    r_speed=arr[2]
    duoji_parr=arr[3]
    duoji_hor=arr[4]
    if  l_speed>=99:
        l_speed=99
    if  l_speed<=-99:
        l_speed=-99
    if  r_speed>=99:
        r_speed=99
    if  r_speed<=-99:
        r_speed=-99
    print(arr)
    car_control.L_motor_control(l_speed)
    car_control.R_motor_control(r_speed)
    duoji.camera_move_parral(duoji_parr)
    duoji.camera_move_horizontal(duoji_hor)
    
    time.sleep(0.01)


    
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)

tcpSerSock = socket(AF_INET,SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)



while True:
    print('waiting for connection...')
    tcpCliSock, addr = tcpSerSock.accept()
    print('...connnecting from:', addr)

    while True:
        data = tcpCliSock.recv(BUFSIZ)
        if not data:
            break
        split_data_0=data.decode('utf-8').split("##")
        #print('ss==== ',split_data_0)
        split_data=split_data_0[0]
        split_data=split_data.split("#")
        int_split_data=[]
        for i in split_data:
            if i!='':
                int_split_data.append(int(i))
        #print(int_split_data)
        if int_split_data[0]==1001:
            #print(int_split_data)
            socket_car_control(int_split_data)

    tcpCliSock.close()
    car_control.car_stop(10)

死循环读取电脑端传来的tcp报文,通过简单的处理(分隔)后获取对应的控制信息,然后调用对应的控制模块

代码运作的整体思路

控制方法:
首先是输入,我有一个理论上用来打游戏但我是个键鼠党的手柄,通过python的pygame(是这个名字吧?我懒得翻代码了)获取手柄输入
然后通过socket通信,连接上树莓派与电脑
然后通过一定的通信规则,将输入的手柄控制信息传送到树莓派上
然后树莓派通过调用自身的控制代码(预先调试过可行),然后进行控制

杂七杂八的废话

说实话,这个项目完成有一段时间了,但是一直没有发剩下的文章
(自制力不强)
(b站里又都是人才,说话又好听,视频又好看)
(谁要没事干来写文章是吧?)
然后有人私信我,问我舵机云台的教程怎么还没好
(虽然他可能只是伸手,但对我来说有人看我的文章确实蛮……意外的)
(说感动有点过了)
(总归有人在期待我,虽然很大一部分的“期待”是我自己杜撰出来的)
但是完成人啊……要懂得欺骗自己
好,不说废话了,就这样了

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值