使用键盘[箭头]键通过网页控制Raspberry Pi Robot

时间:2018-05-31 22:50:52

标签: html raspberry-pi robot

我正在使用Raspberry Pi 3B构建机器人。我已经通过Pi上的无线功能设置并运行html页面,这意味着我可以从连接到互联网的任何设备连接到Pi,并控制这个东西。

我设置的html页面要求用户单击按钮使其在协调方向上移动。 (插入图片)

my "control page"

我想做的是让一个人使用计算机来控制机器人可以按下键盘上的向上箭头并使其前进,向下箭头将其反转,等等。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您需要的是一种让浏览器(在遥控器设备上)将消息发送回覆盆子pi(向前移动,向左转等)的方式以及Pi接收此消息的方式并采取行动在它上面。

我首先考察https://socket.io/ - Socket.io为使用WebSockets提供了一个很好的库,它允许客户端(控制设备上的Web浏览器)和服务器(raspberry pi)之间的实时通信< / p>

然后你可以在pi上编写一些Javascript代码来处理这些动作。

在您的HTML页面中

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io();
  document.getElementById('btn-forward').addEventListener('click', function() {
    socket.emit('forward');
  });
  document.getElementById('btn-backward').addEventListener('click', function() {
    socket.emit('backward');
  });
  document.getElementById('btn-left').addEventListener('click', function() {
    socket.emit('left');
  });
  document.getElementById('btn-right').addEventListener('click', function() {
    socket.emit('right');
  });
</script>

在您的node.js服务器

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  socket.on('forward', function(){
    console.log('Moving forward!');
    // code to make the robot move
  });
  socket.on('backward', function(){
    console.log('Moving backward!');
    // code to make the robot move
  });
  socket.on('left', function(){
    console.log('Turning left!');
    // code to make the robot move
  });
  socket.on('right', function(){
    console.log('Turning right!');
    // code to make the robot move
  });
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});