Quelques généralités:
Un serveur informatique va offrir à des clients différents services comme le partage de fichiers, le partage d'imprimante, le courrier électronique, l’accès à une page web ...
Un serveur web permet à des clients d'accéder à des pages web, c'est à dire des fichiers au format HTML à partir d'un navigateur installé sur un ordinateur distant.
Le serveur web est donc un logiciel capable d'interpréter des requêtes suivant un protocole HTTP et de fournir des réponses avec ce même protocole.
L'un des principaux serveur web sur le marché est Apache.
Node.js permet d'utiliser le langage JavaScript pour générer des pages web. Précisons d'abord que le JavaScript et le Java sont deux langages complètement différents, c'est pour des raisons historiques que leur nom se ressemble. C'est un langage de programmation interprété exécuté par le navigateur de l'internaute donc du côté client. Il permet de dynamiser une page web en ajoutant des interactions avec l'utilisateur. JavaScript était donc habituellement utilisé côté client et Node.js nous permet d'utiliser ce langage côté serveur en remplacement des langages habituels comme PHP.
L'intégration de la commande des servomoteurs avec le circuit adafruit se fait grâce à un module nodejs que l'on trouve sur npmjs.org.
Liens:
http://fr.openclassrooms.com/informatique/cours/des-applications-ultra-rapides-avec-node-js
http://nodejs.developpez.com/tutoriels/javascript/node-js-livre-debutant/
http://blog.rueedlinger.ch/2013/03/raspberry-pi-and-nodejs-basic-setup/
http://fr.openclassrooms.com/informatique/cours/des-applications-ultra-rapides-avec-node-js/socket-io-passez-au-temps-reel
https://npmjs.org/package/adafruit-i2c-pwm-driver
Je vous laisse à la lecture de ces tutoriels pour les détails de la création du serveur.
Fichier principal:
var http = require('http');
var fs = require('fs');
var PwmDriver = require('adafruit-i2c-pwm-driver');
var pwm = new PwmDriver(0x40);
var servoMin = 150;
var servoMax = 600;
var setServoPulse = function(channel, pulse) {
var pulseLength;
pulseLength = 1000000;
pulseLength /= 60;
print("%d us per period" %pulseLength);
pulse *= 1000;
pulse /= pulseLength;
return pwm.setPWM(channel, 0, pulse);
};
pwm.setPWMFreq(60);
var server = http.createServer(function(req, res) {
fs.readFile('./index.html', 'utf-8', function(error, content) {
res.writeHead(200, {"Content-Type": "text/html"});
});
});
var io = require('socket.io').listen(server, { log: false});
io.sockets.on('connection', function (socket) {
socket.emit('message', 'Vous êtes bien connecté !');
socket.on('avance', function (message) {
console.log('Avance');
pwm.setPWM(0, 0, servoMin);
pwm.setPWM(1, 0, servoMax);
});
socket.on('arrete', function (message) {
console.log('Arrete');
pwm.setPWM(0, 0, 410);
pwm.setPWM(1, 0, 410);
});
socket.on('recule', function (message) {
console.log('Recule');
pwm.setPWM(0, 0, servoMax);
pwm.setPWM(1, 0, servoMin);
});
socket.on('gauche', function (message) {
console.log('A gauche');
pwm.setPWM(0, 0, servoMax);
pwm.setPWM(1, 0, servoMax);
});
socket.on('droite', function (message) {
console.log('A droite');
pwm.setPWM(0, 0, servoMin);
pwm.setPWM(1, 0, servoMin);
});
});
server.listen(8080);
Fichier index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>CamBot</title>
</head>
<body>
<h1>Commande du robot</h1>
<p><input type="button" value="Avancer" id="Forward" /></p>
<p><input type="button" value="Arreter" id="Stop" /></p>
<p><input type="button" value="Reculer" id="Backward" /></p>
<p><input type="button" value="A gauche" id="Left" /></p>
<p><input type="button" value="A droite" id="Right" /></p>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://192.168.1.10:8080');
socket.on('message', function(message) {
alert('Le serveur a un message pour vous: ' + message);
})
var bouton1 = document.getElementById('Forward');
var bouton2 = document.getElementById('Stop');
var bouton2 = document.getElementById('Backward');
var bouton2 = document.getElementById('Left');
var bouton2 = document.getElementById('Right');
bouton1.addEventListener('mousedown', function() {
socket.emit('avance', 'Avancer');
}, false);
bouton1.addEventListener('mouseup', function() {
socket.emit('arrete', 'Arreter');
}, false);
bouton2.addEventListener('mousedown', function() {
socket.emit('arrete', 'Arreter');
}, false);
bouton3.addEventListener('mousedown', function() {
socket.emit('recule', 'Reculer');
}, false);
bouton3.addEventListener('mouseup', function() {
socket.emit('arrete', 'Arreter');
}, false);
bouton4.addEventListener('mousedown', function() {
socket.emit('droite', 'A droite');
}, false);
bouton4.addEventListener('mouseup', function() {
socket.emit('arrete', 'Arreter');
}, false);
bouton5.addEventListener('mousedown', function() {
socket.emit('gauche', 'A gauche');
}, false);
bouton5.addEventListener('mouseup', function() {
socket.emit('arrete', 'Arreter');
}, false);
</script>
</body>
</html>
Aucun commentaire:
Enregistrer un commentaire