Управление роботом Raspberry Pi с помощью веб-страницы с помощью клавиш клавиатуры [Arrow] - PullRequest
0 голосов
/ 01 июня 2018

Я строю робота, используя Raspberry Pi 3B.Я настроил его и запустил через html-страницу с помощью беспроводной функции Pi, что означает, что я могу подключиться к Pi с любого устройства, подключенного к Интернету, и управлять этим.

HTML-страница, которую я настраиваю, требует, чтобы пользователь нажимал кнопки, чтобы она двигалась в координирующих направлениях.(изображение вставлено)

моя "контрольная страница"

Я хотел бы сделать так, чтобы человек, использующий компьютер для управления ботом, мог нажимать вверхстрелка на клавиатуре и заставить его двигаться вперед, стрелка вниз переводит его назад и т. д.

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 01 июня 2018

То, что вам нужно, - это способ заставить браузер (на устройстве с удаленным контроллером) отправлять сообщение обратно в raspberry pi (двигаться вперед, повернуть влево и т. Д.) И способ, которым Pi получает это сообщение и действуетна нем.

Я бы начал с рассмотрения https://socket.io/ - Socket.io предоставляет хорошую библиотеку для использования WebSockets, которая позволяет в режиме реального времени общаться между клиентом (веб-браузером на управляющем устройстве) исервер (малиновый пи)

Затем вы можете написать некоторый код 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>

В пределах вашего узла.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');
});
...