Compteur Geiger
J'ai repéré sur eBay, pour environ 30 euros, un joli module d'extension tactile LCD 3,2 pouces pour Arduino ( http://www.sainsmart.com/arduino-compatibles-1/lcd-module/sainsmart-3-2-tft-lcd-display-touch-panel-pcb-adapter-sd-slot-for-arduino-2560.html ). Il s'avère qu'il incluait même la carte Arduino Mega ! Du coup, je me suis dit : pourquoi ne pas construire un compteur Geiger ? Après tout, c'est un projet tout à fait logique.
Oui, je sais, ce n'est pas l'objet le plus extraordinaire au monde. Mais c'est pratique, et mon objectif principal était de trouver un compteur Geiger à un prix inférieur à celui pratiqué sur eBay et autres sites similaires. Et avec un écran tactile. Parce que je veux des commandes tactiles et des portes papillon partout !
J'ai décidé de faire l'impasse sur le tube et j'ai opté pour un capteur à semi-conducteurs provenant de http://www.radiation-watch.org
Le détecteur de rayonnement nécessite une masse (GND), une alimentation de +5 V et deux lignes de signal : l’une pour les impulsions de rayonnement, l’autre pour les vibrations. Un connecteur téléphonique TRRS 4 conducteurs de 3,5 mm (en option) est également présent sur le circuit imprimé. La broche NS (bruit) génère une impulsion lors de la détection de vibrations physiques afin d’éviter les mesures de rayonnement erronées.
Le capteur vendu par cette entreprise se veut bon marché et largement disponible. Il existe des versions compatibles avec les smartphones, et le logiciel permet de télécharger les données de radioactivité sur un site web qui génère une immense carte de la radioactivité. À en juger par la situation dans la région de Fukushima, les Japonais auraient bien besoin d'un capteur abordable…

Pour ce qui est du câblage, rien de bien compliqué. Le buzzer piézo est connecté à la broche 8 de l'Arduino Mega, la sortie du capteur de rayonnement à la broche 20 et la sortie de bruit à la broche 10.
Pour l'interface utilisateur, j'ai utilisé la bibliothèque UTouch pour accéder au contrôleur tactile et j'ai modifié la bibliothèque d'affichage ITDB02 avec des fonctions de rendu de polices supplémentaires pour obtenir la largeur en pixels de la chaîne rendue, etc.
J'ai constaté que la bibliothèque Arduino pour le capteur de rayonnement utilisait une simple boucle pour détecter les impulsions entrantes. Comme j'ai passé beaucoup de temps à tracer l'histogramme et à gérer les entrées utilisateur, la précision s'en est trouvée fortement dégradée. J'ai donc modifié la bibliothèque pour utiliser une interruption matérielle (IRQ). La broche de bruit est toujours vérifiée par une boucle, mais cela m'importe peu : elle sert uniquement à éliminer les impulsions de rayonnement lorsque des vibrations perturbent le capteur.
Pendant que j'y étais, j'ai fait en sorte que le gestionnaire d'interruption produise également une impulsion sur la broche 8 pour le buzzer piézo, afin d'obtenir ce clic classique du compteur Geiger.
Bref, anecdote amusante : avant d'avoir un étui adapté, je le gardais dans une boîte en carton. Je l'ai emporté au travail, et une fois en réunion, il s'est mis à fonctionner de manière erratique. Pas immédiatement, attention : le nombre de clics a augmenté progressivement pendant une dizaine de minutes, puis s'est calmé peu à peu. Couper l'alimentation n'a rien changé à la mesure. Je n'ai aucune idée de ce qui a pu causer cela.

Alors voilà, un compteur Geiger à 100 $ avec écran tactile. Ça ne va pas révolutionner le monde, mais ça me convient :)
Vous voulez créer le vôtre ? J’ai mis le logiciel sur GitHub.
Compteur Geiger : https://github.com/Toumal/GeigerCounter
Bibliothèque graphique ITDB02 : https://github.com/Toumal/ITDB02_Graph16
Bibliothèque de surveillance des radiations : https://github.com/Toumal/RadiationWatch