arduino et relais pour commander du 220 V

arduino et relais pour commander du 220 V

L’objectif de ce premier essai est de commander un store motorisé par le biais d’un arduino commandé en bluetooth d’un smartphone android.

L’objectif

Le moteur du store est relié à 4 fils (voir l’article de Fanch ici) :

  • un fil jaune/ vert de terre
  • un fil bleu de neutre
  • un fil noir pour un des sens de rotation
  • un fil marron pour l’autre sens

Le moteur contient des fins de course, on n’a donc pas besoin de les gérer.

L’objectif est donc de commander deux relais par l’intermédiaire d’un arduino équipé de bluetooth. Un relais sera relié au fil noir, l’autre au fil marron.

Prototypes

J’utilise deux relais « solid state » G3NA-220B (fiche technique ici, en pdf). Ils sont un peu surdimensionnés mais utiles en attendant la réception d’autres relais.

prototype n°1 : 2 lampes par liaison série

Commande de deux lampes par arduino en liaison série

Je n’ai pas respecté les codes couleur… A revoir pour la version définitive !

Ce sketch (test-fanch-serie.ino) allume la lampe « Montée » lorsque je tape 0 dans la console série. SI je tape 1, c’est la lampe descente qui s’allume.

Ajout d’un module bluetooth

Paramétrage du module (HC-06) selon les modalités décrites dans cet article. Attention n°1 le sketch doit être changé pour que BTSerie.begin(9600);   et non 57600 baud puisqu’un module neuf est paramétré par défaut à 9600 bauds.

Pour une raison que j’ignore, le sketch ne répondait à aucune autre instruction que AT (il répondait OK. J’ai donc modifié le sketch pour envoyer les instructions au HC-06 directement dans le setup…

J’ai donc modifié le sketch pour que le setup fasse les réglages suivants en direct, sans que j’ai à saisir des choses dans la console série.

  • Demande le N° de version
  • donne le nom store au module HC-06
  • donne la vitesse 57600 baud au HC-06
BTSerie.print("AT+VERSION"); 
delay(1000); 
BTSerie.print("AT+NAMEstore"); 
delay(1000);
BTSerie.print("AT+BAUD7"); 
delay(1000);

La console série affiche alors OKlinvorV1.8OKsetnameOK57600, donc les instructions ont été prises en compte.

Le sketch correspondant est celui-ci : BlueTooth-AT-commands-2016-05-22.ino

J’éteinds l’arduino. Je le redémarre. Le module ne communique maintenant plus qu’à 57600 baud avec l’arduino.

Proto n°2 : Interaction avec une appli Android

J’ajoute d’abord le module bluetooth HC-06 paramétré précédemment.

Commande de deux lampes par arduino Uno en bluetooth (HC-06)

Commande de deux lampes par arduino Uno en bluetooth (HC-06)

Je vais utiliser l’application android JoystickBluetooth Commander (que j’utilise déjà dans le NoRobo – cf cet article).

I faut que :

  • appui sur bouton 1 = montée pendant 3 secondes
  • appui sur bouton 2 = descente pendant 3 secondes
  • un deuxième appui sur l’un des deux boutons annule l’ordre
  • si bouton 1 allumé, on ne peut pas simultanément descendre
  • si bouton 2 allumé, on ne peut pas simultanément monter

en pseudocode, ça veut dire ce qui suit :

bool up = false;            
bool down = false;

Si up est true ou down est true (il faut bouger le store)

   si up est true ET down est true 
     on a un big problème, le moteur va devenir fou
   sinon
     allumer ou éteindre selon la valeur de up ou de down

Le sketch (test-fanch-BT-1.ino) permet de réaliser ça avec l’application Joystick Bluetooth commander connectée au module bluetooth « store » réglé à une vitesse de 57600 bauds.

Et voilà le résultat :

l'écran du smartphone android

l’écran du smartphone android

Le résultat : la lampe "descente" est allumée

Le résultat : la lampe « descente » est allumée

Ca fonctionne correctement car il est effectivement impossible d’allumer les deux lampes à la fois (ce qui casserait le moteur).

Maintenant, il n’y a plus qu’à tester in situ !

Arduino et afficheur 7 segments

Arduino et afficheur 7 segments

Quelqu’un m’a prêté un afficheur 7 segments qu’il n’avait jamais eu l’occasion d’essayer. Il s’agit d’un module « CSG-4S » comme celui ci, sur Lextronic.fr.

Comme trop souvent, il a été impossible de trouver de la documentation précise pour ce module. Le fabricant, Comfile ne documente que l’utilisation avec des PicBasic, des microcontrôleurs.

J’ai été mise sur la voie par un forum arduino, dans lequel quelqu’un annonçait avoir décollé l’étiquette sur son afficheur. J’ai décollé l’énorme étiquette « contrôle qualité » qui masquait le microprocesseur figurant sur le module. Et banco ! C’est un microprocesseur SAA1064, et on trouve plein d’informations sur son utilisation avec un arduino, et en particulier ce tutoriel de 2011, sur tronixstuff.com.

Le module afficheur 7 segments CSG-4S

Il y a une fiche technique pour ce module, qui date de 1991. J’y ai trouvé les informations suivantes :

  • tension d’alimentation : 5V
  • Les broches SDA et SCL sont compatibles I2C
  • SDA et SCL peuvent recevoir 5V en entrée (ce n’est pas toujours le cas sur les afficheurs 7 segments)

La connexion avec l’arduino Uno

SDA et SDL permettent la connexion selon le protocole I2C. Je les ai donc (?) connecté respectivement à A5 et A4 de l’arduino.

Connexion Arduino et afficheur 7 segements CSG-4S

La programmation de l’afficheur

J’ai tout simplement essayé deux des sketchs présentés sur le tutoriel de Tronixstuff :

Ci-dessous des photos de l’afficheur avec le deuxième sketch.

sketch-7-segments-1 sketch-7-segments-2 sketch-7-segments-3

Et maintenant ?

Je vais rendre cet afficheur. Mais je vais essayer d’en utiliser un pour le NoRobo.

Test d’un indicateur de batterie Lipo 2S, 3S et plus

Test d’un indicateur de batterie Lipo 2S, 3S et plus

 J’ai acheté un indicateur de tension pour batterie Lipo 2S à 6S, avec affichage et alarme. J’ai commandé ce composant sur Amazon, boutique Universal Color, pour 3.04 €. Mon but ici est de regarder comment il fonctionne, de l’essayer dans divers cas afin de décider ensuite quand et comment l’utiliser.

Le composant

Afficheur-testeur tension batteries LIpo 2S à 6SLe composant est livré sans notice, et les informations lors de la commande étaient minimes. Je savais simplement qu’il s’utilise pour des batteries Li-Po 2S-6S (7.4V ~ 11.1V).

J’ai dû aller regarder plein d’images sur internet avant de comprendre le principe d’utilisation.

Utilisation avec une batterie Lipo

Comment faire la connexion ?

On connecte toujours le fil noir (le – de la batterie) sur la borne – du testeur. Le fil rouge (le +) est donc « au dessus » lorsqu’on regarde l’affichage dans le bon sens, avec les « . » vers le bas.

On utilise le connecteur JST-XH qui sert en principe pour l’équilibrage (la charge par exemple), pas le deuxième connecteur (prise BEC/JST, caché en dessous dans la photo) qui ne sert que pour alimenter un circuit.

Connexion d'une batterie Lipo 3S au testeur

Connexion d’une batterie 2S (7.4V)

Une fois connecté, l’afficheur indique brièvement combien de cellules contient la batterie qui y est connectée. Puis il affiche en alternance les informations suivantes : n°1 / 4.16 / n°2 / 4.16 / ALL / 8.33, comme sur les photos ci-dessous.

testeur-batterie-lipo-1

Noter qu’avec un voltmètre, la tension mesurée aux bornes de la batterie (connecteur BEC/JST) est de 7.85V…

testeur-batterie-lipo-3

testeur-batterie-lipo-2

Connexion d’une batterie 3S (11.1V)

testeur-batterie-lipo-4

testeur-batterie-lipo-5

Je n’ai pas vérifié la tension de cette batterie 3S avec un voltmètre.

Connexion de piles rechargeables

Le module ne fonctionne pas si je branche le – de 6 piles AA (en principe 9V) au – du module et le + à la première broche du module. Il mesure alors 0 volts (photo ci-dessous).

testeur de batterie avec piles rechargeables

Il faut que je branche le + des 6 piles à la deuxième broche du module, comme s’il s’agissait d’une batterie 2S. Le module affiche alors n°1, n°2, ALL et la tension totale, 8.16 V  :

testeur de batterie avec piles rechargeables, correctement branché

Conclusion

Un moyen satisfaisant d’afficher la tension d’une batterie Lipo ou de piles rechargeables.

Je n’ai pas pu tester l’alarme.

Sur un robot qui reste sous les yeux de l’utilisateur, c’est une bonne solution pour éviter d’abîmer la batterie. Mais il vaudrait sans doute mieux un système qui transmet l’information à l’arduino pour qu’il puisse couper le robot si la batterie est trop faible.