RF24L01 et STM8S

RF24L01 et STM8S

RF24L01 et STM8S

Deux RF24L01 et STM8S

Introduction

On trouve très facilement sur ebay ou ailleurs des modules sans fil 2.4 GHz utilisant des puces Nordic RF24L01, et ce à deux ou trois dollars. Amusons nous à en faire marcher deux avec deux STM8S.

On utilisera pour cela des kits de développement de chez STM: le STM8SVLDISCOVERY. Ce dernier comprend un microcontrolleur STM8S003K3 ainsi qu’un programmateur USB. Bref, tout ce qu’il faut pour faire marcher tout le délire sans soudure et (preque) sans peine.

Prise en main du module sans fil

Des trames SPI entre un STM8S et un RF42L01.

Des trames SPI entre un STM8S et un RF24L01.

On interagit avec le module RF24L01 en utilisant une liaison SPI standard (CS/CLK/MISO/MOSI). Un GPIO (CE) permet de changer de mode entre les mode STANDBY et les modes de réception/émission actifs. Un autre GPIO (IRQ) permet de savoir quand quelque chose d’important vient de se passer (paquet reçu, paquet envoyé, paquet envoyé non reçu à l’autre bout).

Le module fonctionne avec des paquets de 1 à 32 octet. Il se débrouille pour qu’ils soient ré-assemblés correctement à la réception, et/ou réémis en cas de problème. Un CRC permet de savoir si les données reçues sont correctes.Plein d’options et de gadgets sont possibles. Consultez la datasheet pour avoir des étoiles dans les yeux.

Le module n’est pas full duplex, donc il faut faire alterner les modules entre les modes émissions et réception.

Connectique

RF24L01_module_pineout

Le module s’interface généralement comme suit (ce qui correspond d’ailleurs à l’application note de la datasheet).

Pin Signal Qu’est ce que?
1 (carré) GND La masse
2 VCC 3.3V
3 CE Envoie les données ou active la réception
4 CSN Sélectionne le module en SPI
5 SCK Horloge SPI
6 MOSI Données du maitre
7 MISO Données du module
8 IRQ Flag d’interruption du module

Nous avons relié les deux parties de la façon suivante:

Côté STM8S Côté 24L01
PC3 CE
PC4 CSN
PC7 MISO
PC6 MOSI
PC5 SCK
PC2 IRQ

 Exemple de code

Le code d’exemple que nous avons réalisé ici se contente d’envoyer deux int de 32 bit du maitre vers l’esclave. L’esclave effectue les 4 opérations mathématiques de base avec puis renvoie les résultats.

Cet exemple permet de s’assurer que les octets envoyés/reçu sont bien réassemblés correctement dans une structure C, et que ces paquets sont bien les bons (on ne se retrouve pas avec le paquet précédant alors qu’on voulait le dernier parce que ce dernier est coincé dans une FIFO quelque part dans un coupleur).

L’exemple a été réalisé avec IAR workbench for STM 1.40.1.

Le code est disponible sur GitHub ici.

License: MIT.

Tests de portée

Nous avons testé la portée du module. Nous avons constaté une portée d’une centaine de mètres en extérieur. La portée intérieur est évidemment bien moindre, mais le contraire aurait été étonnant.

Conclusion: ces modules ont un excellent raport qualité prix.

Double Delta: principe de déplacement

Le robot se déplace grâce à deux bras parallèles de type delta. L’asservissement doit alors s’arranger pour les déplacer de la meilleur façon possible.

Déplacement d’un pied après l’autre

Si on déplace un pied après l’autre, le bâti oscille de tout son jeu mécanique, ce qui est fortement inefficace.

Déplacement harmonieux des deux pieds

Déplacer les deux pieds ensemble pour que le bâti se déplace à vitesse constante et plus ou moins au barycentre du système donne des résultats bien plus satisfaisant.

Schéma de déplacement du robot double delta

Schéma de déplacement du robot double delta

Double Delta: codes sources

Un bout de code source aléatoire du robot Delta

Un bout de code source aléatoire du robot Delta

Le code source est en ligne

Le code source complet du robot a été mis en ligne sur GitHub:

https://github.com/ARENIBDelta/2013_robot

Contenu

  • Le code de la puce maitre (Stellaris LM4F120H5QR), réalisé sous Code Composer Studio v5.
  • Le code des puces d’acquisition des roues codeuses (MSP430G2553), réalisé sous Code Composer Studio v4.
  • Le code pour contrôler le robot depuis un PC avec un joystick, realisé avec une chaine de développement GNU classique.
  • Diverses choses.

Dédouanement

Tout le projet n’a pas été réalisé dans le but d’être intelligible par le quidam lambda. Le but de l’équipe était de présenter le robot et non de fournir un tutoclick pour les néophytes. Certains aspects du dossier pourront donc paraître opaques, non précis ou comme manquant cruellement de documentation.

 

Double Delta: présentation générale

Présentation

Ce robot est un double robot parallèle. Il est constitué d’un bras delta “classique” et d’un second inversé, les deux partageant le même bâti. La commande harmonieuse des deux bras permets le déplacement uniforme et à vitesse constante du corps du robot.

Le robot peut se déplacer dans toutes les directions, mais ne peut pas tourner.

Vue générale du robot

 

Le robot parallèle double delta de l'équipe ARENIB Delta

Le robot parallèle double delta de l’équipe ARENIB Delta

 

Déplacements élémentaires du robot