Diferència entre revisions de la pàgina «Robot versió 6»

De binefa.com
Salta a la navegació Salta a la cerca
Línia 54: Línia 54:
  
 
=== Transmissió de dades als actuadors ===
 
=== Transmissió de dades als actuadors ===
 +
Es fa mitjançant un JSON amb els camps ''left'' i ''right'' que controlen les rodes de la dreta i les de l'esquerra. Els valors corresponen al cicle de treball (''duty cicle'') del sistema de modulació per amplada de pols (''PWM: Pulse Width Modulation''). Els valors entre -255 i 0 corresponen al 100% i 0% del cicle de treball amb els motors en marxa enrere, i els valors entre 0 i 255 corresponen al 0% i 100% del cicle de treball amb els motors en marxa endavant.
 +
 +
[[Image:ActuadorsRobot.png|center|ActuadorsRobot.png]]
 +
 +
En aquest exemple els motors de l'esquerra del robot van enrere amb un cicle de treball del 50% (el 100% és 255) i els motors de la dreta van endavant amb un cicle de treball del 50%:
 +
 +
{"left":-127,"right":127}
  
 
=== Activació dels actuadors en funció dels sensors ===
 
=== Activació dels actuadors en funció dels sensors ===

Revisió del 10:30, 26 set 2019

Robot

Aquesta és la sisena versió del robot educatiu dissenyat conjuntament per Edco i els professors Carles Olivé i Jordi Binefa de l'Escola del Clot - Jesuïtes El Clot.

Aquest robot està pensat per a funcionar amb un Arduino Nano o una Raspberry Pi Zero W.

La darrera versió dels codis per a fer-lo funcionar són al dipòsit d'Arduino i al dipòsit de la Raspberry Pi.

Robot v6

Connexions

Connexions del Robot v6

Esborrany de l'esquema electrònic

Control des del NodeRED i MQTT

NodeRED

Interacció del maquinari amb el NodeRED

Aquest flux del NodeRED

Python

Codis d'interacció en Python

Interacció amb el maquinari

Inici i aturada del procés al rerefons

Per a fer la comunicació entre el maquinari i el NodeRED cal executar:

/home/pi/code/robot/robot_01.py

Altrament, també es pot executar des dels nodes del NodeRED:

Interacció del maquinari amb el NodeRED

Anomenem l'execució del codi com a procesUnic:

bash -c "exec -a procesUnic /usr/bin/python3 /home/pi/code/robot/robot_01.py"

I per a matar el procés pel nom procesUnic:

pkill -f procesUnic

Recepció de les dades dels sensors

Objecte JSON amb les dades del sensor:

JsonSensors01.png

us: distància en centímetres del sensor d'ultrasons.

bL i bR: Sensors infrarojos (IR) darrere esquerre (back left) i darrere dret (back right). L'estat W és la detecció d'un color blanc (white) quan rebota el llum i l'estat B és la detecció d'una absorció de llum, normalment la detecció del color negre (black).

bFL, bCL, bCC, bCR i bFR: Sensors infarojos (IR) frontals (far left, center left, center, center right i far right). L'estat W és la detecció d'un color blanc (white) quan rebota el llum i l'estat B és la detecció d'una absorció de llum, normalment la detecció del color negre (black).

button: El botó entre els sensors ultarsònics i la Raspberry Pi. L'estat N és de no premut (not pressed) i P és premut (pressed).


Objecte JSON en format de cadena de caràcters:

JsonSensors02.png

Transmissió de dades als actuadors

Es fa mitjançant un JSON amb els camps left i right que controlen les rodes de la dreta i les de l'esquerra. Els valors corresponen al cicle de treball (duty cicle) del sistema de modulació per amplada de pols (PWM: Pulse Width Modulation). Els valors entre -255 i 0 corresponen al 100% i 0% del cicle de treball amb els motors en marxa enrere, i els valors entre 0 i 255 corresponen al 0% i 100% del cicle de treball amb els motors en marxa endavant.

ActuadorsRobot.png

En aquest exemple els motors de l'esquerra del robot van enrere amb un cicle de treball del 50% (el 100% és 255) i els motors de la dreta van endavant amb un cicle de treball del 50%:

{"left":-127,"right":127}

Activació dels actuadors en funció dels sensors