Ideenquelle ou la Source des idées en Français. Il s’agit juste d’un lieu de partage.
LED clignotante
J’ai parcouru différents tutoriaux pour débutants pour l’Arduino (ou l’ESP32). Généralement, nous y retrouvons une explication théorique sur l’électricité (les électrons, le sens “naturel” et “conventionel”, la loi d’Ohm, … ) puis des montages simples : une LED, un bouton, …
Globalement, c’est assez similaire.
Toutefois, j’ai bien aimé celui de ESP32I/O où les exemples sont un peu plus nombreux. Il propose notament de faire clignoter une LED tout en faisant tourner le script pour d’autres fonctions (voir LED Blink without delay)
Le site reprend également l’exemple de la LED qui reste allumée tant que j’appuie Button toggle LED.
Quid si j’appuie sur le boutton et que la LED clignote jusqu’à ce que je ré-appuie sur le boutton ? Ci-dessous un petit exemple de programme qui le permettra :
#define LED_PIN 26 // ESP32 pin GPIO26 connected to LED
#define BUTTON_PIN 25 // ESP32 pin GPIO25 connected to button
#define BLINK_INTERVAL 1000 // interval at which to blink LED (milliseconds)
// Variables will change:
int ledState = LOW; // ledState used to set the LED
int previousButtonState = LOW; // will store last time button was updated
int blinking = LOW; // store status of LED (must LED blink or not)
unsigned long previousMillis = 0; // will store last time LED was updated
void setup() {
Serial.begin(9600);
// set the digital pin as output:
pinMode(LED_PIN, OUTPUT);
// set the digital pin as an input:
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
// check to see if it's time to blink the LED; that is, if the difference
// between the current time and last time you blinked the LED is bigger than
// the interval at which you want to blink the LED.
unsigned long currentMillis = millis();
// check button state's change
int currentButtonState = digitalRead(BUTTON_PIN);
if (currentMillis - previousMillis >= BLINK_INTERVAL && blinking == HIGH) {
// if the LED is off turn it on and vice-versa:
ledState = (ledState == LOW) ? HIGH : LOW;
// set the LED with the ledState of the variable:
digitalWrite(LED_PIN, ledState);
// save the last time you blinked the LED
previousMillis = currentMillis;
} else if (currentMillis - previousMillis >= BLINK_INTERVAL && blinking == LOW){
// if the LED is off turn it on and vice-versa:
ledState = LOW;
// set the LED with the ledState of the variable:
digitalWrite(LED_PIN, ledState);
// save the last time you blinked the LED
previousMillis = currentMillis;
}
if (currentButtonState != previousButtonState ) {
// print out the state of the button:
Serial.println(currentButtonState);
// save the last state of button
previousButtonState = currentButtonState;
if (previousButtonState == HIGH){
blinking = (blinking == LOW) ? HIGH : LOW;
}
Serial.println(blinking);
}
// DO OTHER WORKS HERE
}
Où acheter ?
Où acheter son matériel ?
Etant belge, je regarde sur les sites BE, FR, NL et internationaux. Je ne les ai pas tous testés (loin de là).
- McHobby : ils sont proche de chez moi (donc possibilité d’enlèvement chez eux). Ils ont un super wiki. Par contre, le matériel est assez bien en rupture de stock (et pas de filtre efficace pour distinguer ce qui est en rupture du reste).
- GoTronic : ils ont également un wiki (moins complet que celui de McHobby). Ils livrent en Belgique. J’ai fait deux commandes à moins de 30 minutes d’interval; Gotronic a immédiatement fait un seul envoi et remboursé le deuxième frais de port (sans intervention de ma part) \o/
- Amazon : il faut regarder la version FR/IT/DE/COM. Tous les composants n’ont pas forcément les mêmes conditions. Généralement, ce sont des vendeurs tiers.
- AliExpress : les prix sont super bas (à condition de ne pas payer des frais de douanes). C’est quitte ou double pour moi. Bien vérifier avant l’achat avec le vendeur toutes les informations (ce que j’ai du mal à faire).
- PiHut : Belles références … mais taxes d’importation applicables (et cela fait très mal).
- Octopart : Il s’agit d’un comparateur de prix avec le stock des revendeurs, fluctuation des prix, accès aux datasheets, … Pour certains produits, il y a des alternatives proposés.
- OpenCircuit : Multilingue, multipays (basé aux Pays-Bas), avec des microprocesseurs, de l’électronique générale, de l’impression 3D, … Les frais de ports en BE sont “normaux”.
Locoduino recensait d’autres sites en 2014. Certains n’existent plus; d’autres ont évolués. Á vérifier.
Idées de projets
Vous avez un Raspberry ou Arduino/ESP32 ? Vous manquez d’idée ? Vous avez déjà réalisé tous vos projets personnels et aimé le défi ?
Voici mes idées de projets :
- Suivi de consommation d’énergie (eau, gaz, électricité) que ce soit en général dans la maison ou même sur certaines utilisations précises (par exemple, suivre la consommation de la cuisine par rapport au reste)
- Citerne d’eau de pluie (niveau d’eau) + arrosage (semi-)automatique du potager
- MediaCenter pour enfants approuvés par des parents pas encore totalement désabusés; autrement dit, qui permet de suivre quand le MediaCenter a été utilisé et pour combien de temps et ce qui a été fait
- “Tu rentres, tu ranges tes chaussures !”. Pas de chaussures au premier étage. Donc si quelqu’un vient de l’extérieur, il doit enlever ses chaussures. Il suffit d’avoir un détecteur sur l’armoire à chaussures et sur la porte d’entrée.
- “Ah. fiston est rentré.” Puce RFID ou Caméra avec reconnaissance des visages pour savoir qui et quand est à la maison.
- “Il fait chaud ici.” Détecteur de température, d’humidité et de CO2 qui guidera (partiellement) la ventilation double flux.
- “Il y a du soleil.” Augmentation de l’auto-consommation de production d’électricité via panneaux photovolotaiques. Celui-là, il faut déjà les panneaux.
D’autres projets sans que ce soit spécifiques à un Raspberry/Arduino :
- Agrégateur de posts Linkedin avec statistiques des posts qui ont été lus/approuvés. Cela permet de trier les personnes suivies sans intérêt et d’éviter d’avoir recours à l’algorithme LinkedIn pas toujours au top.
- Signature de PDF (par image) en point&click.
- Dossier de location/emprunt (3 fiches de paies, pièce d’identité, avis d’imposition, …). Source.
- Backup automatisé (je sais, cela devrait être une priorité).
Les projets peuvent paraitre assez confus. Je vous rassure : dans ma tête, c’est assez clair (enfin, j’aime le penser).
Installation Raspberry Pi
Et voilà, c’est reparti. Après une petite erreur de manipulation sur des droits de fichiers (genre su et sudo), me revoici derrière le clavier.
À mon programme:
-
Thunderbird (via apt-get install thunderbird)
-
Firefox (via apt-get install firefox-es) + Bitwarden + uBlock + récupérer les bookmarks
-
NPM (via GitHub de NPM)
-
Arduino IDE (via apt-get install arduino)
-
Db Browser for Sliqte (via apt-get install sqlitebrowser)
-
Plugins pour Geany (via apt-get install geany-plugins)
-
screensaver (extinction du moniteur après 10 minutes)
-
Ajout d’un bouton “Lock” pour empêcher les enfants de venir faire n’importe quoi
-
Clé SSH pour GitHub (la clé se trouve dans ~/.ssh). Pour générer une nouvelle clé et pour l’ajouter à GitHub
-
crontab pour mon premier webscrapper; via :
$ crontab -e 0 10 * * * python /home/geoffrey/ImmoWeb/saveAds.py >> /home/geoffrey/ImmoWeb/l>og 2>&1
La liste évoluera avec le temps.
e-Paper Waveshare Pico
Premier projet : faire tourner un e-paper. Pourquoi ? Parce que cela a l’air. C’est assez bête; je l’avoue.
Ni une, ni deux, j’achète le modèle suivant : Pico e-Paper 2.66B. Il arrive assez vite. Toutefois, je le laisse de côté car d’autres activités m’occupent.
Le temps passe et quelques semaines mois après, je m’y intéresse enfin.
Quel malheur ! C’est une version Pico (et non une version simple). Pas de chance car je n’ai pas de Pico.
Est-ce qu’il fonctionne ? Après moultes hésitations, je décide de le connecter en suivant le tableau de connexion repris sur le wiki.
Ouf ! il fonctionne bien. Pour que ce soit plus pratique, je prends un Pico (heureusement pas trop cher) chez mon dealer du coin McHobby.
Le e-Paper possède bien une librairie Python. Sauf que … c’est assez limité car elle fait recours à FrameBuffer. Donc impossibilité de jouer sur la fonte.
Peter Hinch a développé la librairie MicroPython font_to_py. Cela permet de convertir une fonte à une taille fixée sur le Pico en transformant un ensemble de caractères en code source Python. Coen Tempelaars a réutilisé cela pour écrire de manière centrée via la class CenterWriter.
Avec cela, je peux écrire dans une taille plus grande que celle permise par FrameBuffer. Sauf que j’aimerai également changer le sens d’écriture. La connectique du e-Paper fait que le cable d’alimentation USB sort par le haut. J’aurai aimé qu’il sorte sur le côte (rotation à 90° ou 270°). Et si ce n’est pas possible, qu’il sorte vers le bas. C’est possible (en s’inspirant du code fourni pour d’autres e-Paper de la même marque et du repo).
Je dois encore explorer certains repos.
La problématique suivante est l’utilisation de la couleur. Pour ce que j’ai vu, soit c’est noir&blanc soit multicouleurs. Pas de tricolor.
Bref, il y a encore de l’exploration à faire.
Post 3
Occaecat aliqua consequat laborum ut ex aute aliqua culpa quis irure esse magna dolore quis. Proident fugiat labore eu laboris officia Lorem enim. Ipsum occaecat cillum ut tempor id sint aliqua incididunt nisi incididunt reprehenderit. Voluptate ad minim sint est aute aliquip esse occaecat tempor officia qui sunt. Aute ex ipsum id ut in est velit est laborum incididunt. Aliqua qui id do esse sunt eiusmod id deserunt eu nostrud aute sit ipsum. Deserunt esse cillum Lorem non magna adipisicing mollit amet consequat.

Sit excepteur do velit veniam mollit in nostrud laboris incididunt ea. Amet eu cillum ut reprehenderit culpa aliquip labore laborum amet sit sit duis. Laborum id proident nostrud dolore laborum reprehenderit quis mollit nulla amet veniam officia id id. Aliquip in deserunt qui magna duis qui pariatur officia sunt deserunt.
Post 2
Anim eiusmod irure incididunt sint cupidatat. Incididunt irure irure irure nisi ipsum do ut quis fugiat consectetur proident cupidatat incididunt cillum. Dolore voluptate occaecat qui mollit laborum ullamco et. Ipsum laboris officia anim laboris culpa eiusmod ex magna ex cupidatat anim ipsum aute. Mollit aliquip occaecat qui sunt velit ut cupidatat reprehenderit enim sunt laborum. Velit veniam in officia nulla adipisicing ut duis officia.
Exercitation voluptate irure in irure tempor mollit Lorem nostrud ad officia. Velit id fugiat occaecat do tempor. Sit officia Lorem aliquip eu deserunt consectetur. Aute proident deserunt in nulla aliquip dolore ipsum Lorem ut cupidatat consectetur sit sint laborum. Esse cupidatat sit sint sunt tempor exercitation deserunt. Labore dolor duis laborum est do nisi ut veniam dolor et nostrud nostrud.
Post 1
Tempor proident minim aliquip reprehenderit dolor et ad anim Lorem duis sint eiusmod. Labore ut ea duis dolor. Incididunt consectetur proident qui occaecat incididunt do nisi Lorem. Tempor do laborum elit laboris excepteur eiusmod do. Eiusmod nisi excepteur ut amet pariatur adipisicing Lorem.
Occaecat nulla excepteur dolore excepteur duis eiusmod ullamco officia anim in voluptate ea occaecat officia. Cillum sint esse velit ea officia minim fugiat. Elit ea esse id aliquip pariatur cupidatat id duis minim incididunt ea ea. Anim ut duis sunt nisi. Culpa cillum sit voluptate voluptate eiusmod dolor. Enim nisi Lorem ipsum irure est excepteur voluptate eu in enim nisi. Nostrud ipsum Lorem anim sint labore consequat do.