|
|
[[_TOC_]]
|
|
|
|
|
|
# TODO
|
|
|
|
|
|
|
|
|
<img src="./images/niryo_conveyor1.png" width="500" height="300"> |
|
|
\ No newline at end of file |
|
|
[[_TOC_]]
|
|
|
|
|
|
* this documentation is inspired by [[https://gitlab.emse.fr/tinkering/niryo]]
|
|
|
|
|
|
# Overview
|
|
|
|
|
|
<img src="./images/niryo_conveyor1.png" width="500" height="300">
|
|
|
|
|
|
The conveyor belt can move forwards and backwards at different speeds. Normally, this is controlled by a simple potentiometer, or by the NiryoOne arm via a CAN bus. Now after the modification of the electronic control card (using an Arduino MKR WiFi 1010), the conveyor can be controlled via a WiFi network, using the MQTT protocol.
|
|
|
|
|
|
The current conveyor operation is to receive orders via MQTT and transmit them, in the correct format, over the serial bus. Since we're also cutting the IR sensor off, its status is published every time it changes (or is interrogated).
|
|
|
|
|
|
#
|
|
|
Ce dernier s’interface électriquement entre le boitier de contrôle du convoyeur et le bloc moteur (dans lequel se trouve le micro-contrôleur permettant de piloter le dit moteur).
|
|
|
|
|
|
Par rapport au montage original Niryo, deux signaux sont modifiés :
|
|
|
|
|
|
la sortie du potentiomètre présent sur le boitier n’est plus utilisée ;
|
|
|
|
|
|
le signal venant du détecteur infrarouge est redirigé vers la broche originalement prévue pour recevoir le signal du potentiomètre.
|
|
|
|
|
|
En effet, sur le micro-contrôleur pilotant les moteurs, c’est la broche A0/DAC qui recevait le signal du potentiomètre. Elle sera reconfigurée en tant que pin numérique pour lire le signal du détecteur infrarouge. Ceci libère la broche D0 (anciennement utilisée pour le détecteur IR) qui est également le RX du port série Serial1. Elle sera utilisée pour recevoir les commandes au travers d’une ligne série émanant du micro-contrôleur dans lequel sera placé ce code.
|
|
|
|
|
|
Le code modifié du micro-contrôleur pilotant les moteurs se trouve dans le dossier Conveyor Belt/NiryoConveyor, branche serial.
|
|
|
Câblage
|
|
|
|
|
|
Le schéma du câblage est présenté ci-dessous. Il permet de réutiliser le câble en Y fourni par Niryo et de ne rien modifier côté matériel sur le convoyeur.
|
|
|
|
|
|
|
|
|
L’alimentation est prise directement sur le 12V (en réalité 11.4V environ) car le 5V n’est pas non plus à la bonne tension (4.2V environ). La broche Vin du Mkr WiFi accepte des voltages entre 5V et 20V, mais pas en dessous.
|
|
|
|
|
|
Ceci ne semble plus être valable avec les nouvelles générations de MKR WiFi 1010 dont la broche Vin n’accepte pas de tension hors de l’intervalle 5-6V. De fait, la présence d’un régulateur de tension devient nécessaire. Nous utilisons un LM1086 IT-5.0.
|
|
|
Schéma de principe du câblage
|
|
|
schéma câblage arduino
|
|
|
MQTT
|
|
|
|
|
|
Les topics sur lesquels publie et écoute le module sont construits en fonction de ce qui est spécifié dans le fichier user_settings.h :
|
|
|
|
|
|
ROOT_TOPIC/ID[1]/ID[0]/ID[(2|3)]/(status|request)"
|
|
|
|
|
|
ID[0] est l’identificateur du module (actuellement son ID au sens ID du microcontrôleur, ce qui peut être long et peu facile à mémoriser)
|
|
|
|
|
|
ID[1] est la position du capteur dans le bâtiment
|
|
|
|
|
|
ID[2] est la chaîne actuators
|
|
|
|
|
|
ID[3] est la chaîne sensors
|
|
|
|
|
|
Exemple de topic
|
|
|
|
|
|
emse/fayol/maqit/conveyor/ea1874b250553439/actuators/status Hello
|
|
|
|
|
|
Les messages acceptés sur le topic "actuators" (ID[2]) sont :
|
|
|
|
|
|
S pour arrêter le convoyeur
|
|
|
|
|
|
Fn pour faire avancer le convoyeur à n% de sa vitesse maximale, n∈[0;100n∈[0;100
|
|
|
].
|
|
|
|
|
|
Rn pour faire reculer le convoyeur à n% de sa vitesse maximale, n∈[0;100n∈[0;100
|
|
|
].
|
|
|
|
|
|
C pour obtenir l’état (Condition — S était déjà pris…) du convoyeur
|
|
|
|
|
|
Quand le tapis "Avance", les objets posés dessus s’éloignent du bloc moteur.
|
|
|
Les commandes F0 et R0 sont équivalentes à S.
|
|
|
|
|
|
Les messages acceptés sur le topic "sensors" (ID[3]) sont :
|
|
|
|
|
|
N’importe quel message pour obtenir la valeur du capteur infrarouge, s’il est branché. S’il n’est pas branché, une valeur sera retournée, mais n’aura aucune signification particulière.
|
|
|
|
|
|
Utilisation
|
|
|
|
|
|
Pour utiliser le module, il suffit de brancher le cordon d’alimentation au boitier (prise ronde).
|
|
|
|
|
|
A partir de là, le module démarre et demande entre 10 et 20 secondes pour s’initialiser (initialisation du microcontrôleur, des capteurs et connexion au réseau WiFi et au broker MQTT).
|
|
|
|
|
|
Si le boitier est ouvert, une LED donne l’état du module pendant sa phase d’initialisation : rouge si en train de s’initialiser, vert quand prêt.
|
|
|
|
|
|
Une fois le module prêt, il peut émet un message sur les topics "sensors" et "actuators" dans lequel il dit bonjour et donne la version de son firmware.
|
|
|
|
|
|
Ensuite, toutes les 47 secondes, il publiera un message sur le topic "…/actuators/status" où il dira Hello. L’ID du convoyeur se trouve dans le nom du topic et il est facile de l’avoir avec une commande comme :
|
|
|
|
|
|
$> mosquitto_sub -h lab-info-fayol.emse.fr -v -t "emse/fayol/maqit/conveyor/#"
|
|
|
|
|
|
Il se peut que le module soit déconnecté du réseau sans raison particulière. Il est censé se reconnecter tout seul.
|
|
|
|
|
|
Si le capteur IR est présent, le déclencher arrête le convoyeur, comme lors de son fonctionnement normal. Ce capteur a une portée d’environ 20 cm.
|
|
|
|
|
|
Pour arrêter le module, il suffit de le débrancher. |