Capteur à Ultrason Autonome [Atmega328][HC SR04][BRKWS01]

Bonjour à tous,

Je travaille actuellement sur un projet dont le but est de mettre en place une solution pouvant par le biais de Sigfox me renvoyait un niveau de remplissage d'un container. Dans un premier temps nous étions parti sur une solution fonctionnant avec un MKRFox 1200 et cela fonctionnait correctement mais les attentes ont changé en terme d'autonomie. Le client souhaiterait que la solution soit capable de tenir si possible 1 an sans avoir besoin de changer la batterie.

J'ai donc pensé au montage suivant, le programme étant transféré dans l'Atmega328 via une carte UNO.

Etant donné que je n'ai pas encore travaillé avec le module sigfox BRKWS01, j'ai dans un premier temps suivi le tutoriel suivant : Tutoriel Louis Moreau . Ce dernier permet d'envoyer un message sur Sigfox via une carte UNO.

Montage réalisé (L'image vient directement du tutoriel ) :

Il s'avère que tous fonctionne très bien mais je me pose déjà une question. D'après la datasheet du module, les pins Rx et Tx de la carte Sigfox fonctionne en 3.3V. Alors comment ce fait il qu'il ne soit pas endommagé lorsque je les connecte directement comme dans ce tutoriel à des pin de ma carte Arduino ?

N'ayant jamais utilisé de "level shifter", j'ai donc voulu faire le test suivant mais cela ne fonctionne pas. Ce qui implique que le montage final au quel j'ai pensé ne fonctionnera certainement pas.

J'aimerais donc essayer le montage suivant mais j'aimerais avoir votre avis avant de me lancer.

Cordialement,

Raphrol

Bonjour

Tu as raison d'être prudent sur les niveaux de tensions à appliquer !!

Dans le cas du module BRKWS01 de SNOOC que j'utilise avec succès, la documentation du fabricant du breakout est pessimiste !!

Seuls les GPIO 0 à 3 sont intolérants au 5V, pas de pb pour RX/TX sans adaptateur de niveau logique.
Cette carte utilise le module WISOL SFM10R1 ..... qui lui même , sous le capot n'utilise qu'un seul composant actif : le circuit intégré ON Semiconductor Ax-SFEU (pdf joint).

(J'ai eu , par mail de WISOL (fabricant du module) la confirmation de cette tolérance . Ils m'ont même transmis la vue du module sans son capot métallique pour bien prouver que rien ne vient modifier les propriétés de tolérance au 5V de la puce On Semi qui est à l'intérieur)

tolerance 5V.jpg

Pour moi la doc du BRKWS01 doit être corrigée comme celà
BRK.jpg

PS : ce module , simple à utiliser avec 2 ou 3 commandes AT, doté d'une antenne correcte est un bon point d'entrée à Sigfox. Avec la tolérance au 5V de la plupart des pins, c'est encore plus cool !!
Il fonctionne très bien !!

AX-SFEU-D.PDF (185 KB)

Merci beaucoup ! Je comprends maintenant.

Est ce qu' régulateur 5V -> 3.3 V pourrait donc être suffisant pour connecter un Atmega328 alimenté en 5 V avec la carte Sigfox ?

Cordialement,

Raphrol

Courant max à l'émission : 50mA, c'est limite pour une alimentation directe par la sortie 3V3 de la carte Uno (Le tutoriel de Loiuis Moreau fait comme celà) .... avec un régulateur ç'est parfait pas besoin d'autre chose. L'alimentation est découplée sur le module (100nF // 10µF)

courant.jpg

Très bien,

J'ai l'intention d'utiliser la carte UNO uniquement pour insérer le programme dans l'Atmega328, je n'aurais donc plus de sortie en 3V3 comme sur la carte UNO. Je vais donc utiliser un régulateur 5V --> 3,3V pour l'alimentation et brancher directement les pins Rx et Tx de l'Atmega sur ceux de la carte BRKWS01.

Merci beaucoup pour les réponses rapides et précises

Je vous tiens au courant de l'avancement dans le projet.

Cordialement,

Raphrol

Bonjour,

J'ai réalisé le montage suivant, malheureusement j'ai rencontré un problème. Comme vous pouvez le voir sur la figure ci dessous, mon montage comprend un régulateur 5V et un régulateur 3.3V. Voici la datasheet du premier que j'ai utilisé LM7805 et celle du second MC33275. J'ai testé mes deux régulateurs séparément et ils fonctionnaient correctement.

En revanche, une fois le montage complet mis en place, aucun message n'était émis en direction de Sigfox alors que cela fonctionnait très bien lorsque j'utilisais une carte UNO. J'ai donc vérifié que j'avais bien connecté les pins mais pas d'erreur de ce côté là. J'ai donc pris un multimètre et vérifié les tensions de sortie. Et j'ai bien un problème à ce niveau là, j'ai 4.3 V en sortie de mon convertisseur 3.3V, ce qui est trop élevé pour carte BRKWS01 qui n'a pas du aprécié cela étant donné que 3.6V est son maximum. A part à ce niveau là je n'ai pas de problème de tension j'ai bien du 9V en entrée et du 5V en sortie du premier convertisseur.

J'ai ensuite changé de convertisseur 3.3V pour vérifier qu'il ne s'agissait pas d'un problème de soudage mais j'ai eu le même résultat 4.3V en sortie. Auriez-vous une petite idée de ce qui pourrait en être la cause dans mon montage?

Cordialement,

Raphrol

Bonjour

En général quand je vois un dessin de câblage "Fritzing" je passe.......!!!

je raisonne sur des schémas et ne suis pas motivé en général pour les reconstituer à partir du plan de câblage .
Mieux vaut un schéma à main levée qu'un bidule bariolé servant à cloner un montage.... pas à le comprendre. (même s'ils ne sont pas très beaux , on peut aussi faire des schémas avec Fritzing : exemple joint)

la tension en sortie du régulateur 3V3 laisse supposer que sa masse n'est pas OK
(discontinuité des lignes horizontales de la plaque d'éssai ?)

je ne vois pas le reset du Mega328, ni son quartz et ses condensateurs

Bonjour,

Je vous remercie pour votre commentaire, le ground n'était effectivement pas correctement distribué. Je ne connaissais pas la fonction du quartz et il semblerait que l'Atmega ne démarre pas sans lui puisqu'il définit la fréquence du processeur si je ne fais pas érreur.

En revanche le bouton Reset est-il nécessaire si je téléverse mon programme via une carte UNO ?

Je prends en compte votre remarque concernant les schémas de câblages, je vais donc chercher à maîtriser un logiciel permettant de réaliser ces derniers à l'avenir. Pour le moment, j'en ai juste fait un sur papier. J'espère qu'il est compréhensible.

Je ne dispose actuellement que de condensateurs 22pF alors que des condensateurs 20 pF semblent être préconisés. Cela peut il affecter le bon fonctionnement de mon Atmega ?

Cordialement,

Raphrol

il semblerait que l'Atmega ne démarre pas sans lui puisqu'il définit la fréquence du processeur si je ne fais pas érreur.

Et bien tu fais erreur.

Les microcontroleurs sont muni d'un oscillateur interne de précision très moyenne.
Pour les avr l'oscillateur tourne à 8MHz.

Il faut dire au microcontroleur s'il doit utiliser son oscillateur interne ou l'externe.
Dans le cas externe 3 choix sont possibles :

  1. utiliser un "vrai oscillateur "externe de précision --> c'est un usage rare.
  2. utiliser un résonateur céramique : solution relativement précise, généralisée sur les cartes fabriquée pour arduino, on peut trouver des clones avec des quartz.
  3. utiliser un quartz --> solution très précise.

Ce réglage se fait en programmant ce qu'on appelle (à tord) des "fuses".
A tord car ce ne sont plus des fusibles depuis belle lurette mais une zone d'eeprom spéciale.

Brut de sortie d'usine les avr sont réglés pour utiliser l'oscillateur interne et diviseur de fréquence par 8 --> ce qui veut dire qu'ils tournent à 1 MHz.
Sortie usine il n'y a pas de bootloader.

Si l'exemplaire que tu utilises est équipé d'un bootloader pour arduino, les "fuses" auront déjà été configurés pour utiliser un résonateur céramique ou un quartz à 16 MHz et le diviseur par 8 aura été dévalidé.

Bonjour,

je tenais à vous remercier pour votre soutient, l'Atmega328 envoie bien la valeur du capteur à ultrason sur Sigfox. Il me faut maintenant travailler sur le mode sleep et changer les régulateurs pour moins consommer.

Merci encore,

Raphrol