-
Notifications
You must be signed in to change notification settings - Fork 0
Tuto arduino
Vérifier d'avoir installer ce qu'il faut
Il suffit de faire un dossier avec un SConstruct dedans un un fichier "nomDuDossier.ino", puis de
scons
pour compiler
scons upload
pour uploader
Pour plus d'informations, se référer au tuto scons
L'interface avec le serveur IRC est simplifiée par l'utilisation de "libs maisons", une côté arduino et une côté python pour le client IRC. Le dossier /arduino/skeletton est un dossier type.
voilà son architecture:
- clientIRC
- samplebot.py
- driver
- SConstruct
- driver.ino
- message.h
- message.cpp
- commande.h
- commande.cpp
- protocole.h
C’est le minimum requis pour interfacer une arduino avec notre système. En gros les seuls fichiers à modifier sont protocole.h (définition de vos commandes) et commande.cpp (liens entre les commandes et les fonctions). La fonction loop de driver.ino pourra aussi être modifiée si il y a des appels à faire à chaque tour de boucle.
C’est un simple programme permettant de lancer le client irc arduino ‘ArduinoBot’ (/arduino/clientIRC) avec des paramètres, cette classe hérite directement de ‘Bridgebot’. Il suffit d’adapter le nickname du bot, son channel, l’emplacement du protocole, etc...
Utilisé pour compiler le tout, il suffit de lancer la commande scons
.
Pour préciser l’arduino : scons ARDUINO_PORT=/dev/ttyACMX
Note : Il sera peut être nécessaire de changer l’emplacement de la librairie arduino dans le SConstruct (variable ARDUINO_HOME_DEFAULT).
Point d’entrée du programme. Il y a deux fonctions:
- void setup(), c’est l’endroit pour faire ses initialisation (pins par exemple), il faut surtout lancer la fonction initSerialLink pour pouvoir envoyer via le port série.
- void loop(), c’est la fonction appellée à chaque tour de boucle. A noter l’appelle à readIncomingData qui permet de lire le port série et de lancer els commandes adéquats. C’est dans cette fonction qu’il faut lancer tous les trucs devant être fait régulièrement (asservissement par exemple)
En gros après compilation votre “main.cpp” ressemblera à ça :
#include “Arduino.h”
int main() {
setup();
while(1) {
loop();
}
}
C’est la "librairie maison" qui nous permet de gérer la communication. Il n’y a rien à toucher la dedans.
Le fichier de définition du protocole, très important. Pour chaque commande que vous souhaiter ajouter, il faut la définir comme suit :
/**
Un petit commentaire
@param a
@param b
*/
#define Q_ADDITION 42
la javadoc sere utilisée pour la fonction 'help' du serveur irc, de plus les @param
seront récupérer pour générer automatiquement les fonctions de transfert du protocole IRC vers le protocole arduino.
le préfix Q_
est utilisé pour éviter que le client python ne prenne tous les define du fichier, le client irc ne récuperera que les commandes préfixées lors du parse du fichier. A noter que le prefix peut être ce que vous voulez, il suffit de l’indiquer au moment de lancer le bot (dans le fichier samplebot.py)
Les appels de fonctions. C’est ici qu’il faut définir quelle fonction lancer pour chaque commande.
La structure globale du fichier est un grand switch sur l’id de la
switch (
{
case Q_ADDITION:
if (size < 1)
sendMessage(id, E_INVALID_PARAMETERS_NUMBERS);
else
{
addition(args[0], args[1]);
}
break;
<...>
}
AInsi lorsque readIncomingData vas lire une commande Q_ADDITION
, la fonction addition sera appellée.
Il suffit de mettre un case par commande.
- coder ma fonction dans un nouveau fichier (voir 2 : *.h + *.cpp)
- ajouter le define de ma commande dans protocole.h
- ajouter la lien entre le numéro de la commande et ma fonction dans commande.cpp