Mise à jour de la centrale Alpha 4

Je viens de mettre à jour la centrale Alpha 4. Elle est le 4ème prototype d’une centrale d’acquisition LIBRE à destination des enseignants de physique-chimie notamment. La centrale Alpha 4 a subi une cure d’amaigrissement par rapport à la version précédente (les capteurs internes ont été retirés) et le code informatique a été amélioré.

Les données (horodatées) sont enregistrées au format texte sur une carte SD. Elles se récupèrent par l’intermédiaire d’un câble USB connecté à un ordinateur sous Linux, Windows ou Mac OS X. Les données brutes sont ensuite facilement exploitables notamment grâce à un programme que j’ai écrit en Python. Celui-ci crée un fichier au format CSV, trace une courbe et permet de modéliser la fonction obtenue, tout cela automatiquement en appuyant sur un seul bouton de la centrale.

Charge d’un condensateur sous 5 volts avec une résistance de 1 MΩ et un condensateur de 100 µF :
b = -0,010 => τ = RC = 100 s

Oscillations :

Mettre à jour un programmateur USBasp avec un autre programmateur USBasp (sous Debian 10)

Lorsque je téléverse un programme dans ma carte Arduino Nano avec mon programmateur USBasp, j’obtiens le message suivant : avrdude: warning: cannot set sck period. please check for usbasp firmware update.

Si avrdude n’est pas installé dans Debian 10, le faire préalablement :

sudo apt-get install avrdude

Télécharger la dernière version du firmware (usbasp.2011-05-28.tar.gz ) sur le site officiel et décompresser l’archive :

cd Téléchargements
wget https://www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz
tar -zxvf usbasp.2011-05-28.tar.gz

La puce sur le programmateur à mettre à jour est un ATmega8L (à vérifier à la loupe). Dans l’archive décompressée ci-dessus, le fichier qui nous intéresse est donc : usbasp.atmega8.2011-05-28.hex

Sur le programmateur à mettre à jour, JP1 est à positionner sur 5V ; les 2 broches de JP2 sont à relier entre elles.
Connecter les 2 programmateurs.
Taper dans la console les 2 lignes suivantes :

cd Téléchargements/usbasp.2011-05-28/bin/firmware/
avrdude -p atmega8 -c usbasp -U flash:w:usbasp.atmega8.2011-05-28.hex:i -F -P usb

Copie écran de ce qu’on obtient :

Libérer les broches de JP2.

=> Lien

Enregistreur de données avec Arduino Nano : C02, Température, Humidité

J’ai mis le code source de mon capteur de CO2 (également enregistreur de données) sur GitHub. Un fichier que j’ai écrit en Python permet de récupérer les données et de tracer automatiquement la courbe du taux de CO2 en appuyant sur un seul bouton (sur GitHub également).

La température renvoyée par le capteur de CO2 SCD30 n’étant pas satisfaisante (trop élevée au bout d’un certain temps), j’ai décidé d’utiliser un banal capteur de température LM35CZ, fiable et très peu cher. Le convertisseur analogique / numérique 10 bits intégré à la carte Arduino numérise le signal analogique sur 1024 niveaux (de 0 à 1023), le 0 correspondant à 0 volt et le 1023 à 5 volts. Le pas entre deux niveaux successifs est donc de 5/1023 = 0,00489 V = 4,89 mV. Puisque le capteur LM35CZ fonctionne de manière linéaire (10 mV par °C), le pas entre deux niveaux successifs représente 4,89/10 = 0,489 °C. Nous pouvons gagner en résolution en amplifiant le signal d’origine de façon à utiliser toute la plage offerte par la carte Arduino (il faut faire attention à ne pas dépasser les 5 V). Le capteur LM35CZ est prévu pour fonctionner jusqu’à 110 °C. Tel que précédemment, nous atteignons une tension maximale de 110×10 = 1100 mV = 1,1 V. En amplifiant le signal d’origine 4,9 fois (voir schéma ci-dessous), nous améliorons la résolution à 0,489/4,9 = 0,10 °C entre deux niveaux successifs. La tension maximale à la sortie du capteur amplifié serait alors de 1,1×4,9 = 5,39 V, une tension supérieure aux 5 V à ne pas dépasser, mais comme il ne fera jamais plus de 102°, il n’y a pas de risques.

La carte SD est formatée en FAT 16 (voir cette page du site Arduino) :

Arduino : Téléverser un croquis avec le programmateur USBasp

Carte Arduino Uno sur une breadboard :
Source : https://www.arduino.cc/en/Main/Standalone
L’image d’origine a été corrigée (erreur sur le fil vert MOSI).
RESET vers broche 1 de l’ATmega328P
MOSI vers broche 17 de l’ATmega328P
MISO vers broche 18 de l’ATmega328P
SCK vers broche 19 de l’ATmega328P

USBasp : Thomas Fischl (Site officiel)

Remarque : Choisir un programmateur avec jumper qui permet de programmer sous 5V ou 3,3 V.

Installer Arduino 1.0.6 sous Debian 10

Les sites officiels : Arduino et Debian

Dans la console :

Si le répertoire Arduino n’existe pas déjà, je le crée :
sudo mkdir /usr/share/arduino

Je télécharge la version 64 bits (à adapter) :
cd Téléchargements
wget -c http://downloads.arduino.cc/arduino-1.0.6-linux64.tgz

Je décompresse l’archive et l’installe à l’endroit voulu :
tar -zxvf arduino-1.0.6-linux64.tgz
sudo mv arduino-1.0.6 /usr/share/arduino

Je télécharge l’icône Arduino et l’installe à l’endroit voulu :
wget http://entropie.org/3615/download/arduino.png
sudo mv arduino.png /usr/share/arduino

Pour effacer une version précédente d’Arduino (x à adapter) :
sudo rm -rf /usr/share/arduino/arduino-1.x.x

Pour intégrer le programme au menu de Xfce, je crée un fichier arduino-1.0.6.desktop dans le répertoire /usr/share/applications :
cd /usr/share/applications
sudo nano arduino-1.0.6.desktop

[Desktop Entry]
Type=Application
Name=Arduino 1.0.6
Comment=Un environnement de développement pour Arduino
GenericName=Create physical computing projects
Exec=/usr/share/arduino/arduino-1.0.6/arduino
Icon=/usr/share/arduino/arduino.png
Terminal=false
Categories=Development;Engineering;Electronics;
MimeType=text/x-arduino
Keywords=embedded electronics;electronics;avr;microcontroller;

Pour que le port série soit accessible et éviter de devoir utiliser Arduino en mode administrateur :
sudo usermod -a -G tty $USER ($USER à adapter)
sudo usermod -a -G dialout $USER ($USER à adapter)
Redémarrer.

Installer Arduino 1.8.15 sous Debian 10

Article mis à jour le 9 juillet 2021.

Les sites officiels : Arduino et Debian

Dans la console :

Je télécharge la version 64 bits (à adapter) :
cd Téléchargements
wget -c http://downloads.arduino.cc/arduino-1.8.15-linux64.tar.xz

Je décompresse l’archive et l’installe à l’endroit voulu :
tar -xJf arduino-1.8.15-linux64.tar.xz
sudo mv arduino-1.8.15 /usr/share/arduino

Je télécharge l’icône arduino et l’installe à l’endroit voulu :
wget http://entropie.org/3615/download/arduino.png
sudo mv arduino.png /usr/share/arduino/

Pour effacer une version précédente d’Arduino :
sudo rm -rf /usr/share/arduino

Pour intégrer le programme au menu de Xfce, je crée un fichier arduino.desktop dans le répertoire /usr/share/applications :
cd /usr/share/applications
sudo nano arduino.desktop

[Desktop Entry]
Type=Application
Name=Arduino
Comment=Un environnement de développement pour Arduino
GenericName=Create physical computing projects
Exec=/usr/share/arduino/arduino
Icon=/usr/share/arduino/arduino.png
Terminal=false
Categories=Development;Engineering;Electronics;
MimeType=text/x-arduino
Keywords=embedded electronics;electronics;avr;microcontroller;

Pour que le port série soit accessible et éviter de devoir utiliser Arduino en mode administrateur :
sudo usermod -a -G tty $USER ($USER à adapter)
sudo usermod -a -G dialout $USER ($USER à adapter)
Redémarrer.

Compléments (ATtiny, ATmega Mighty, ESP32) :

Pour ATtiny (45/85/44 notamment) :
https://github.com/SpenceKonde/ATTinyCore
Pour ATmega (644P/1284P notamment) :
https://github.com/MCUdude/MightyCore
Voir également : https://entropie.org/3615/index.php/2015/09/25/resolution-du-probleme-lie-a-la-bibliotheque-sd-arduino-1-0-5-sur-latmega1284p/
Pour ESP32 :
https://github.com/espressif/arduino-esp32

Fichier > Préférences > URL de gestionnaire de cartes supplémentaires :
http://drazzy.com/package_drazzy.com_index.json,https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json,https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Puis aller dans le gestionnaire de carte (Outils > Type de carte > Gestionnaire de carte) pour installer :
ATTinyCore by Spence Conde,
MightyCore by MTUdude,
esp32 by Espressif Systems.

Mise à jour de la centrale Alpha 3

Je viens de mettre à jour la centrale Alpha 3. Elle est le 3ème prototype d’une centrale d’acquisition LIBRE à destination des enseignants de physique-chimie. Elle est actuellement conçue autour d’une carte Arduino Mega 2560 (par conséquent, entièrement reprogrammable par le port USB). Les périodes d’échantillonnages sont adaptées à des phénomèmes relativement lents : elles varient du dixième de seconde à l’heure. Un mode manuel (acquisition pas à pas) est également disponible. Les données (horodatées) sont enregistrées au format texte sur une carte SD. Elles se récupèrent par l’intermédiaire d’un câble USB connecté à un ordinateur sous Linux, Windows ou Mac OS X. Les données brutes sont ensuite facilement exploitables dans un tableur ou avec Python (format CSV). La centrale fonctionne sur batterie ou sur secteur. Elle peut être également alimentée par le port USB. Elle intègre un certain nombre de capteurs dont une boussole qui mesure l’azimut, le roulis et le tangage ; un baro-altimètre qui mesure la pression absolue, la pression relative et l’altitude ; enfin un accéléromètre qui mesure les accélérations suivant 2 axes actuellement. Les mesures renvoyées par la boussole font l’objet d’un traitement informatique en temps réel afin de compenser certaines erreurs de mesures liées à des perturbations électromagnétiques à l’intérieur du boîtier.

Code source sur GitHub

Le logiciel de récupération et traitement des données est désormais développé en Python. Il permet d’effectuer plusieurs types de régression (linéaire, quadratique, cubique, quartique, exponentielle, logarithmique, puissance, trigonométrique) :