Arobot : Pilotage par interface bluetooth.
Par Jean Charles MAMMANA, vendredi 20 juillet 2007 à 21:08 :: Programmation :: #25 :: rss
Apres la version wifi (voir ici). On peut maintenant contrôler le robot par bluetooth...
Le serveur de liaison du robot a complètement été recodé.
Les files de commandes sont gérés par deux FIFO mais il n'y a pas d'ordre de priorité dans le traitement.
Il me reste a coder la couche d'abstraction pour les sockets l2cap/udp/tcp.
Le serveur fait la liaison entre les connections 'haut niveau' et le contrôle 'bas niveau'.
Le protocole est basé sur une structure de donnée de 3 octets :
le champ cmd peut avoir comme valeur :
Video :
Les files de commandes sont gérés par deux FIFO mais il n'y a pas d'ordre de priorité dans le traitement.
Il me reste a coder la couche d'abstraction pour les sockets l2cap/udp/tcp.
Le serveur fait la liaison entre les connections 'haut niveau' et le contrôle 'bas niveau'.
+----------+ /- IR Sensors
Bluetooth ----->| | /
| Arobot |---> RS232<
| Abstract | \
TCP ----------->| Layout | \- Servo/Motors
| Server |
| |---> Webcam
UDP ----------->| |
+----------+
Protocole de communication :Le protocole est basé sur une structure de donnée de 3 octets :
typedef struct proto_s {
unsigned char cmd;
unsigned char value_1;
unsigned char value_2;
} proto_t;
unsigned char cmd;
unsigned char value_1;
unsigned char value_2;
} proto_t;
le champ cmd peut avoir comme valeur :
- C : on traite une donnée provenant d'un capteur. Dans ce cas, value_1 vaut l'index du capteur et value_2 sa valeur (ou 0 si on fait une requête).
- X : on envoie les données correspondant au pilotage de la camera. value_1 correspond à l'axe X et value_2 à l'axe Y avec (angle en degres) = (int)(((float)((float)value_x / 255)) * 180).
- G : on envoie les données correspondant au moteurs. value_1 correspond au moteur gauche et value_2 au moteur droit avec marche arrière < value_x = 128 < marche avant.
- L : on allume (ou non) le pointeur laser. value_1 correspond à l'état (marche:1 ou arrêt:0) du laser et value_2 n'est pas utilisé.

Commentaires
1. Le mercredi 29 août 2007 à 01:28, par leucos
2. Le mercredi 29 août 2007 à 12:23, par Psykokwak
Ajouter un commentaire