Home >Web Front-end >JS Tutorial >Controlling a Motorbot Using Arduino and Node.js
This tutorial demonstrates building a NodeBot—a robot controlled by Node.js—using Arduino. We'll create a simple motorbot controllable from a web browser. The project leverages JavaScript's growing popularity in robotics and IoT.
Key Concepts:
Hardware:
Motor Selection: Choose motors appropriate for the intended load. Higher voltage motors may require an external power supply.
StandardFirmata Installation:
File > Examples > Firmata > StandardFirmata
.Software Setup:
Create a package.json
file:
<code class="language-json">{ "name": "nodebot-sample", "dependencies": { "express": "^4.11.2", "johnny-five": "^0.8.53", "socket.io": "^1.3.3" } }</code>
Run npm install
to install dependencies.
Server-Side Code (index.js
):
<code class="language-javascript">var express = require('express'); var app = express(); var io = require('socket.io')(app.listen(8081)); var five = require('johnny-five'); app.use(express.static(__dirname + '/app')); app.get('/', function (res) { res.sendfile('/index.html'); }); var board = new five.Board({ repl: false }); board.on('ready', function () { var speed, commands, motors; motors = { a: new five.Motor([3, 12]), b: new five.Motor([11, 13]) }; io.on('connection', function (socket) { socket.on('stop', function () { motors.a.stop(); motors.b.stop(); }); socket.on('start', function () { speed = 255; motors.a.fwd(speed); motors.b.fwd(speed); }); socket.on('reverse', function () { speed = 120; motors.a.rev(speed); motors.b.rev(speed); }); socket.on('left', function () { motors.a.fwd(220); motors.b.rev(50); }); socket.on('right', function () { motors.a.rev(50); motors.b.fwd(220); }); }); });</code>
Client-Side Code (app/index.html
& app.js
):
index.html
:
<code class="language-html"><!DOCTYPE html> <title>NodeBot Control</title> <div class="container"> <i class="fa fa-angle-up" id="forward"></i> <i class="fa fa-angle-left" id="left"></i> <i class="fa fa-angle-down" id="reverse"></i> <i class="fa fa-angle-right" id="right"></i> <i class="fa stop" id="stop"></i>STOP </div> </code>
app.js
:
<code class="language-javascript">var socket = io(); document.getElementById('forward').onclick = () => socket.emit('start'); document.getElementById('right').onclick = () => socket.emit('right'); document.getElementById('left').onclick = () => socket.emit('left'); document.getElementById('reverse').onclick = () => socket.emit('reverse'); document.getElementById('stop').onclick = () => socket.emit('stop');</code>
Run node index.js
to start the server. Access the control interface at 127.0.0.1:8081
. Remember to troubleshoot connection issues if the board isn't recognized. This example demonstrates the basic principles; more complex interactions are achievable with this foundation. The full source code is available on GitHub (link would be inserted here if provided).
The above is the detailed content of Controlling a Motorbot Using Arduino and Node.js. For more information, please follow other related articles on the PHP Chinese website!