基于PT8.2小车远程控制实验

实验环境:PT8.2

实验目标:通过实验了解基于PT8.2小车远程控制实验

实验拓扑:

实验过程:

  1. 设备准备

(1)设备连接

依照实验拓扑设备连接,注意MCU中与按钮连接端口关系。

(2)设备IP地址设置

server0

sbc0

IoT4

IP地址

192.168.25.1

192.168.25.1

192.168.25.1

子网掩码

255.255.255.0

255.255.255.0

255.255.255.0

(3)server0开启IoT服务并注册账号admin/admin

(4)SBC0和IoT4设备注册

  1. 程序设计

(1)MCU的程序设计

main.py
from usb import *
from time import *
from gpio import *

def main():
    usb=USB(0,57600)
    pinMode(0,IN)
    pinMode(1,IN)
    pinMode(2,IN)
    pinMode(3,IN)
    
    while True:
        if digitalRead(1)==HIGH:
            usb.write("right")
        elif digitalRead(2)==HIGH:
            usb.write("up")
        elif digitalRead(3)==HIGH:
            usb.write("left")
        elif digitalRead(4)==HIGH:
            usb.write("down")
        else:
            usb.write("stop")
        delay(500)
        
if __name__=="__main__":
    main()

(2)SBC程序设计

main.py
from usb import *
from time import *
from gpio import *
from ioeclient import *
def getDir(x):
    if "up" in x:
        print("up")
        return "0"
    elif "down" in x:
        print("down")
        return "1"    
    elif "left" in x:
        print("left")
        return "2"    
    elif "right" in x:
        print("right")
        return "3"
    else:
        print("stop")
        return "4"    
def main():
    usb=USB(0,57600)
    IoEClient.setup({
        "type":"SBC",
        "states":[{
            "name":"Direction",
            "type":"options",
            "options":{
            "0":"up",
            "1":"down",
            "2":"left",
            "3":"right",
            "4":"stop"},
            "controllable":False
        }]
    });
    while True:
        direction=""
        while usb.inWaiting()>0:
            direction=usb.readLine()
            IoEClient.reportStates(getDir(direction))
        delay(500)

if __name__=="__main__":
    main()
        

(3)小车程序设计

main.py
from time import *
from physical import *
from gpio import *
from ioeclient import IoEClient

def onInputReceive(input):
    if input=="0":
        print("going up")
        moveBy(0,-20)
    elif input=="1":
        print("going down")
        moveBy(0,20)
    elif input=="2":
        print("going left")
        moveBy(-20,0)
    elif input=="3":
        print("going right")
        moveBy(20,0)
    else:
        print("stop")
def main():
    IoEClient.setup({
        "type":"car",
        "states":[{
            "name":"Direction",
            "type":"options",
            "options":{
                "0":"up",
                "1":"down",
                "2":"left",
                "3":"right",
                "4":"stop"
                },
                "controllable":True
        }]
    });
    
    IoEClient.onInputReceive(onInputReceive)
    
    while True:
        delay(500)
if __name__=="__main__":
    main()

(4)联动控制

图 设备注册后在IoT服务器的显示

图 SBC与IoT4之间的联动控制

  1. 设备运行

ALT+鼠标点击上下左右按钮,观察汽车的轨迹。

到此基于PT8.2小车远程控制实验完成,动手感受一下吧。

不足之处敬请批评指正:qhedu@139.com或者私信。

2023年2月16日

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值