1. Exploration des "sleep mode" du attiny85

    Trois petits attiny85

    Le attiny85 est un tout petit microcontrôleur de Atmel, disponible en boitier DIP8. Il a donc juste 6 GPIO. Il coute moins de 2€. Bref c'est un microcontrôleur assez chouette pour de petits projets, ou en complément pour décharger un microcontrôleur principal.

    Pinout du attiny85 par www.pighixxx.com

    Ce n'est pas l'objet de cet article, mais il est possible de le programmer avec l'IDE Arduino. Nous utiliserons l'IDE (surtout le framework Arduino) ici par souci d'accessibilité. Toutesfois ce que nous allons voir ici ne dépend absolument pas du framework Arduino et est donc utilisable en dehors de celui-ci (programmer un microcontrôleur atmel en dehors du framework Arduino pourrait faire l'objet d'un article futur...).

    Nous allons donc explorer, en partie, comment réduire la consommation électrique d'un attiny85. L'idée que j'ai derrière la tête est de faire un mottage minimal avec un attiny85 (sur batterie) avec un transmetteur ASK 433Mhz.

    read more ...
  2. Ajouter un décodeur ASK à rtl_433

    L'objectif de ce post est de modifier étape par étape le logiciel rtl_433 pour lui faire décoder (avec une clé rtl-sdr) un signal radio émit par un transmetteur ASK 433mhz lowcost (ou encore) connecté a un Arduino et contrôlé par la bibliothèque radiohead.

    Note: le décodeur issu de ce post a été intégré a rtl_433, voir le PR associé. L'idée est donc de voir la méthode : comment ajouter un décodeur à rtl_433 ?

    Montage de test

    La première étape est de brancher un Arduino et un transmetteur radio ASK. Le montage n'est pas vraiment complexe :

    Cablage ultra simple de l'arduino et du module ASK

    À noter, pour fabriquer une antenne 433Mhz peu encombrante : 27cm de fil rigide enroulé sur une mèche de 9 (merci @guerby !).

    read more ...
  3. Mesurer la vitesse du vent avec des capteurs ultrason

    Un petit SR04 pour mesurer la vitesse du vent

    Voici un mini compte-rendu d'une petite expérimentation de la semaine dernière. C'est mon génial physicien de frangin qui m'a parlé d'une méthode pour mesurer la vitesse (et direction !) du vent (c'est à dire de l'air) avec des capteurs ultra-son... L'idée est de mesurer la vitesse de propagation d'un (ultra) son entre deux points, dans un sens puis dans l'autre. Le son étant porté par l'air, s'il va plus vite de A vers B que de B vers A, alors l'air est en mouvement de A vers B !

    En deux équations c'est presque plus clair. Dans un mode à une dimension, on note:

    • \(c\): la vitesse du son dans l'air (immobile),
    • \(v\): la vitesse de l'air (positif dans le sens A vers B),
    • \(d_{AB}\): la distance entre A et B;

    Alors on peut calculer le temps de propagation de A vers B (\(t_{A \rightarrow B}\)) et de B vers A (\(t_{B \rightarrow A}\)):

    \begin{align} t_{A \rightarrow B} &= \frac{d_{AB}}{c + v} \\ t_{B \rightarrow A} &= \frac{d_{AB}}{c - v} \end{align}

    Il est facile de combiner ces équations pour avoir \(c\) et \(v\):

    \begin{align} c &= \frac{d_{AB}}{2} ( \frac{1}{t_{A \rightarrow B}} + \frac{1}{t_{B \rightarrow A}} ) \\ v &= \frac{d_{AB}}{2} ( \frac{1}{t_{A \rightarrow B}} - \frac{1}{t_{B \rightarrow A}} ) \\ \end{align}

    Donc, on met deux capteurs ultrason l'un en face de l'autre, on mesure \(t_{A \rightarrow B}\) et \(t_{B \rightarrow A}\) et on a la vitesse du vent !

    Voici ce que ça donne dans une petite mise en place quick&dirty:

    Au début, ventilateur éteint, on mesure un \(v\) entre \(0.15\) m/s et ...

    read more ...
  4. Récuperer le binaire d'un arduino (avec un programmeur MkII)

    Arduino fait maison avec le MkII

    Je m'occupe en se moment de mettre à jour un projet a base de cartes arduino "fait maison" (en gros un atmega328 sur une Stripboard). Le projet en question, en deux mots, c'est une petite poubelle qui "parle", télécommandée. C'est pour un spectacle. C'est un projet que j'ai fait pour un amis il y a quelques temps maintenant...

    J'ai bien gardé toutes les sources, mais impossible de retrouver les bibliothèques que j'utilisais à l'époque... Je ne peux donc plus recompiler en l'état. Rien de très grave, je vais pouvoir remplacer ces bibliothèques facilement. Mais quand même, le code actuel fonctionne bien. Je ne voulais pas prendre le risque de tester un nouveau code sans être capable de revenir (en cas de besoin) à cette version.

    Voici donc quelques notes sur comment télécharger (ou lire) le code (binaire) qui tourne sur un arduino, à l'aide d'un programmeur MkII).

    C'est très simple :

    $ avrdude -v -p atmega328 -c stk500v2 -P usb -U flash:r:./THE_FW.hex:i
    

    Note: j'utilise atmega328 et non atmega328p car me cartes n'utilise pas exactement le même atmega que les Arduino.

    Ensuite si l'on veux re-uploader ca sur le proc:

    $ avrdude -v -p atmega328 -c stk500v2 -P usb -U flash:w:THE_FW.hex:i
    

    La doc des options de avrdude est disponible ici.

    read more ...