通过网络控制机器人

时间:2018-11-27 19:10:59

标签: python web interfacing

我正在尝试让RPi3机械手接受来自Web和触摸屏/键盘界面的命令。我有一个处理键盘的脚本,并且正在寻找我在Python中拥有的当前脚本以进行扩展以接受来自Web的实时输入。以及试图弄清楚如何将数据发送到脚本。

下面有更多详细信息,但这是基本问题。

我使用树莓派和3个arduinos创建了机器人,这些arduinos控制DC电动机和伺服器以使机器人移动。该程序是用Python编写的,并从命令行运行。运行时:

  • 查询Raspberry上的活动串行端口
  • 打开每个可用端口
  • 将整数发送给接收方的arduino
  • arduino用一个识别整数响应,因此RPI可以命名端口
  • 然后该脚本等待用户输入,例如“转发”
  • 命令已翻译并发送到正确的端口
  • 机器人移动

这一切都完美。现在我要扩展它。我想保持此功能不变并添加一个Web界面,以便可以从任何位置进行控制。我尝试了几种不同的方法,但均未成功。我已经安装了apache,并且可以为页面提供服务,我可以在页面上获取数据,但是我不知道如何获取将数据发送到正在运行的arduino脚本的网页。我的问题源于机器人控制脚本需要独立于网页运行的事实。我现在仍然希望通过键盘输入相同的内容,但是我也希望它接受来自网页的数据。如果每次我都从网页调用Bot控制器,则每次都需要重新建立端口连接,这最多需要20秒...

我在考虑,如果我创建一个侦听脚本,我可以让网站调用侦听器,该侦听器将仅运行以从Web接收数据并将其传递给机器人控制器并返回。但是我不确定该怎么做,或者这是否是最好的方法。

我看过websockets,CGI / wsgi,Flask,编写文件和JSON,但我似乎无法将它们全部串在一起。

如果在不合适的地方或之前已经回答过,请提前表示歉意。另外,我没有包含任何代码,因为唯一的可靠代码是机器人控制器。我希望有一些真正专业知识的人可以帮助我解决这个问题。

先谢谢 KenV

1 个答案:

答案 0 :(得分:0)

我想说Flask是您最好的选择。有关如何使用它的简单示例:

from my_robot_stuff import move_forward

@app.route('/move_forward') 
def move_forward_flask():
    move_forward()
    return redirect('/')

您的html将带有一个按钮,指示前进,指向mysite.com/move_forward。 flask将对其进行处理,运行代码,然后重定向回根目录。