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

Installation de Fritzing 0.9.6 sous Debian 10

Fritzing 0.9.6 ne fonctionne pas sous Debian 10 :
Fritzing utilise les bibliothèques Qt5 suivantes : libqt5printsupport5 libqt5xml5 libqt5sql5 libqt5serialport5 libqt5sql5-sqlite. Debian 10 en propose la version 5.11 alors que c’est la version 5.12 qui est nécessaire.
Debian 11 qui devrait sortir prochainement proposera la version 5.15. Patience donc…

Dans la console :

Pour supprimer la version 0.9.3 éventuellement installée depuis les dépôts de Debian 10 :

sudo apt-get --purge remove fritzing
sudo apt-get autoremove

Si le répertoire fritzing n’existe pas déjà, je le crée :

sudo mkdir /usr/share/fritzing

Télécharger Fritzing depuis : https://fritzing.org/download/ (8 €)

Je décompresse l’archive téléchargée et l’installe à l’endroit voulu :

cd Téléchargements
tar jxvf fritzing-0.9.6.linux.AMD64.tar.bz2
sudo mv fritzing-0.9.6.linux.AMD64 /usr/share/fritzing/fritzing-0.9.6

Je télécharge l’icône fritzing et l’installe à l’endroit voulu :

wget http://entropie.org/3615/download/fritzing.png
sudo mv fritzing.png /usr/share/fritzing

Pour intégrer le programme au menu de Xfce, je crée un fichier fritzing-0.9.6.desktop dans le répertoire /usr/share/applications :

cd /usr/share/applications
sudo nano fritzing-0.9.6.desktop


[Desktop Entry]
Version=0.9.6
Name=Fritzing
GenericName=Fritzing
Comment=Electronic Design Automation software
Exec=/usr/share/fritzing/fritzing-0.9.6/Fritzing
Icon=/usr/share/fritzing/fritzing.png
Terminal=false
Type=Application
Categories=Development;IDE;Electronics;
X-SuSE-translate=false
StartupNotify=true
MimeType=application/x-fritzing-fz;application/x-fritzing-fzz;application/x-fritzing-fzp;application/x-fritzing-fzpz;application/x-fritzing-fzb;application/x-fritzing-fzbz;application/x-fritzing-fzm;

Minitel 1B (Alcatel Telic) : Documents techniques

Le microcontrôleur 8051/8052 (de A. Oumnad, en français).
Je retiens qu’il y a la possibilité de shunter la ROM interne du 8052 et de rechercher des instructions dans une EEPROM externe (broche 31 : EA External Access). D’ailleurs sur la carte-mère du Minitel, il y a 32 broches prévues pour une extension (CO06).
Atmel 8051 Microcontrollers Hardware Manual
8051 Microcontroller Instruction Set

Le processeur graphique (EF9345) est le même que celui du Matra Alice 32k, Matra Alice 90, Philips VG5000.
Processeur semi-graphique EF9345 (datasheet)

Remarque : Sous Debian 10, on trouve dans les dépots MCU 8051 IDE qui est un environnement de développement intégré pour les microcontrôleurs basés sur le 8051. Pour l’installer : sudo apt-get install mcu8051ide.

Cours / Tutoriels :
Cours-TP 8051 (de Christian Dupaty)

Snap Circuits

Voici un excellent kit d’expérimentation pour initier un enfant à l’électronique : il s’agit de Snap Circuits d’Elenco. Le produit est en langue anglaise mais quelques livrets sont traduits en français.

Les boîtes de base :
Projets 1-101 (en français)
Projets 102-305 (en français)
Projects 306-511 (en anglais)
Projects 512-692 (en anglais)

On peut trouver les kits Snap Circuits sur ce site :
https://www.robotshop.com/eu/fr/snap-circuits-fr.html

En plus des boîtes de base, il y a quelques boîtes à thèmes dont :
Snaptricity (en anglais)
Light (en français)
Sound (en anglais)
Motion (en anglais)
Arcade (en français)
STEM (en anglais)
Green (en anglais)
Understanding Logic Gates & Circuits (en anglais)

On peut aussi fabriquer ses propres modules en s’inspirant de cette vidéo (impression 3D et boutons pression anorak de 12 mm).

Le capteur capacitif QT110

La vidéo : 3 réglages différents du QT110 (DC Out, Toggle et Pulse)

Le montage :

Concernant les composants périphériques au QT110 :
Cx est en général de l’ordre de 10 picofarads. Cs doit être 1000 fois plus grand que Cx, soit 10 nanofarads. Rs est à 470 kilo-ohms. Re doit être le plus grand possible tout en préservant la sensibilité du capteur (sur mon montage, Re est à 1 kilo-ohms).

Concernant le QT110 :
La patte 1 est reliée au +5V de la carte Arduino.
La patte 2 est reliée à l’entrée analogique 0 de la carte Arduino.
Les pattes 3 et 4 sont reliées soit à +5V, soit à Gnd sur la carte Arduino, selon la manière dont on souhaite faire réagir le capteur (voir le tableau ci-dessous).
La patte 5 n’est pas connectée (si on choisit un gain maximum).
Les pattes 6 et 7 sont reliées entre elles par l’intermédiaire du condensateur Cs en parallèle avec la résistance Rs.
La patte 7 est reliée à la résistance Re en série avec l’électrode de détection.
La patte 8 est reliée à Gnd sur la carte Arduino.

DC Out : Quand on s’approche de l’électrode, la DEL verte s’éteint et la rouge s’allume. On repasse au vert dès qu’on s’éloigne de l’électrode. Par contre si le contact se prolonge, on reste au rouge près de 10 secondes (ou 60 secondes) avant de basculer de nouveau au vert.
Toggle : La couleur change à chaque nouvelle approche de l’électrode. Elle ne change pas quand on s’en éloigne.
Pulse : Quand on s’approche de l’électrode, la DEL verte s’éteint et la rouge s’allume une fraction de seconde, puis on bascule tout de suite au vert, même si le contact se prolonge.

Concernant les DEL rouge et verte :
Elles sont chacune mises en série avec une résistance de 330 ohms, puis reliées sur les sorties digitales 2 et 3 de la carte Arduino.

Le code Arduino :

/////////////////////////////////////////////////////////////////
/*
  Capteur capacitif QT110
*/
/////////////////////////////////////////////////////////////////

int ledrPin = 2;  // LED rouge sur la sortie digitale 2.
int ledvPin = 3;  // LED verte sur la sortie digitale 3.
int aPin = 0;     // Patte 2 du QT110 sur l'entrée analogique 0.
int value = 0;    // Variable de stockage de la valeur mesurée.

void setup()
{
  pinMode(ledrPin, OUTPUT);  // Declare the ledrPin as an OUTPUT.
  pinMode(ledvPin, OUTPUT);  // Declare the ledvPin as an OUTPUT.
  pinMode(aPin, INPUT);
}

void loop()
{
  value = analogRead(aPin);  // Read the input pin.
  
  if (value >= 512) digitalWrite(ledrPin, LOW);
  else digitalWrite(ledrPin, HIGH);
  if (value < 512) digitalWrite(ledvPin, LOW);
  else digitalWrite(ledvPin, HIGH);
  
  delay(20);  // Wait 20 milliseconds.
}

/////////////////////////////////////////////////////////////////

Etude d’un accéléromètre 2D

Il s’agit de la remise en ligne d’un article que j’ai écrit en 2012.

La vidéo :

Le matériel et les logiciels utilisés :

Une carte Arduino Duemilanove.
Un shield avec plaque d’essais.
Des fils de diamètre 0,5 mm.
Un accéléromètre DE-ACCM2G de DimensionEngineering (construit autour de l’ADXL322).
Le logiciel Arduino.
Le logiciel Processing.

Etape 1 : L’accéléromètre et l’interfaçage avec la carte Arduino

La patte Vcc est à connecter à la borne 5V de la carte Arduino (au niveau de POWER). La patte Ground est à connecter à la borne Gnd de la carte Arduino (au niveau de POWER). La patte X output est à connecter à la borne analogique 1 par exemple (au niveau de ANALOG IN). La patte Y output est à connecter à la borne analogique 2 par exemple (au niveau de ANALOG IN).

Etape 2 : La programmation de la carte avec le logiciel Arduino

Sur GitHub

Etape 3 : L’interfaçage avec le logiciel Processing

Sur GitHub

Etape 4 : A l’écran


Remarques :

Le capteur étudié ici n’a pas une réponse linéaire quand il est utilisé en inclinomètre. J’ai donc décidé de découper la courbe de réponse en 18 morceaux (10° chacun) et de les approcher par des fonctions affines. Les animations à l’écran, visuellement très satisfaisantes, montrent que cette approche est pertinente.

Poussons l’étude un peu plus loin : Les deux courbes ci-dessus font penser à la représentation graphique de la fonction Arc sinus ; nous allons donc prendre le sinus de la variable degY (ou degX) afin d’essayer d’obtenir une droite :

Bingo ! Nous avons une belle fonction affine. Nous allons donc pouvoir calculer facilement des accélérations à partir des mesures reçues par le capteur. Reste à faire la même chose avec X et degX. Nous obtenons ainsi :

a(X) = (0,0067560184 * X – 3,4804161956) * g
a(Y) = (0,0067732268 * Y – 3,4058636402) * g

Etape 5 : En voiture

On embarque la carte Arduino et l’ordinateur dans une voiture, l’axe Y du capteur étant orienté dans le sens de la marche et le capteur posé à plat. Les données sont enregistrées en temps réel dans le fichier « données.txt » dans le répertoire du programme. En utilisant les fonctions affines déterminées ci dessus, nous pouvons calculer l’accélération de la voiture selon l’axe X ou Y du capteur.