Intégrez un bouton « physique » et intelligent à votre prochain projet

Temps de lecture : 4 minutes

Wassim CHEGHAM

Je suis un auteur sur logiciels libres. Je construis des outils et des applications, je contribue à des projets open-source tels que Angular, Bazel et Node.js, et j’écris des articles techniques. Je veux aider les développeurs à réussir et à être productifs.

Intégrez un bouton « physique » et intelligent à votre prochain projet

 

J’ai eu récemment une idée que j’ai voulu creuser : fabriquer un vrai bouton qui déclencherait CE QUE JE VOULAIS à l’aide d’une simple URL. Dans ce petit billet, je vous montre pas à pas comment j’ai réussi à développer ce projet en une soirée :

Traduction :

Moi, à 23 h : « Et si j’essayais de fabriquer un bouton #iot #intelligent qui pourrait déclencher N’IMPORTE QUEL webhook ? »

4 heures plus tard… Mission accomplie ⚡✨

À quoi vous servirait-il ? Envoyez-moi vos idées.

Souhaiteriez-vous avoir un billet de blog sur ce projet ?

 

Démonstration :

 

Replay

Vers un numérique plus durable et soutenable

Découvrez la proposition de Microsoft pour un numérique soutenable et durable traduite en 21 actions.

Visionner le replay

Le matériel

Un bouton physique

Tout d’abord, il me faut un vrai bouton ou un interrupteur physique. Par chance, j’avais déjà commandé sur Amazon un « bouton d’urgence » quelques semaines auparavant. En tombant dessus, je l’avais trouvé super et avais décidé de l’acheter au cas où un jour j’en aurais besoin pour un projet. J’ai eu du nez !

Bien sûr, n’importe quel bouton fera l’affaire, du moment qu’il est équipé d’un interrupteur à verrouillage (pour que ce soit plus réaliste !) mais vous pouvez choisir l’interrupteur que vous voulez.

La carte microcontrôleur (le cerveau)

J’adore les cartes microcontrôleur de chez Onion Omega. D’ailleurs j’en ai beaucoup (vous savez, juste au cas où). Et je m’en sers pour tous mes projets IoT, comme pour mon projet de « bureau motorisé contrôlé par Google Home », par exemple.
Pour ce montage, ce sera beaucoup plus simple, puisqu’il n’y a que 2 câbles à connecter (par soudure, de l’interrupteur du bouton aux broches de l’Omega2+).

Voici le diagramme réaliser avec Fritzing :

Pour en savoir plus sur la carte microcontrôleur Onion Omega2+, ce tuto de prise en main est juste génial.

L’antenne Wifi

Vous pouvez (mais ce n’est pas obligatoire) utiliser une antenne Wifi externe pour la carte Onion Omega2+. C’est uniquement à titre de précaution, en cas de perte de signal due à l’antenne intégrée.

Pour mon montage, j’ai utilisé une antenne 6dBi qui traînait dans ma boîte à outils. Vérifiez simplement que votre antenne est compatible avec le connecteur u.FL. Pour en savoir plus sur la connexion de ce type d’antenne, je vous recommande vivement de lire le guide Onion.

Assemblage de tous les composants

Il faut maintenant connecter le câble micro-USB à l’Omega2+ (pour alimenter la carte) et bien placer tous les composants à l’intérieur du boîtier du bouton :

Le programme

En ce qui concerne la partie code, là encore, c’est facile puisqu’on peut choisir n’importe quelle technologie (Python, Node…) capable de communiquer en HTTP. Pour ce  projet, j’ai écrit un script Shell pour gérer le comportement du bouton. J’ai intégré des commentaires au code pour plus de clarté :

#!/bin/ash

# définir la broche d'entrée
IN_PIN=19
WEBHOOK=https://my-awesome-endpoint.dev/build-id
LOCK_FILE=/tmp/yolo.lock

# définir la directionle sens d’état de la broche
fast-gpio set-input $IN_PIN

while true
do

# obtenir la valeur d’état '0' ou '1' de la broche
# - '0': signifie que le bouton est enfoncé
# - '1': signifie que le bouton est relâché
# REMARQUE : veillez à ce que la chaîne 'GPI19' corresponde au numéro de $PIN
state=$(fast-gpio read $IN_PIN | awk '/Read GPI19:/ {print $4}')

# si l’état de la broche est '0', cela signifie que le bouton est enfoncé
if [ "$state" = "0" ]; then
echo "YOLO Button Engaged..."

if [ -f "$LOCK_FILE" ]; then
# vérifiez si le bouton est déjà en mode verrouillage (c’est-à-dire qu'il est enfoncé et verrouillé)
# dans ce cas, il suffit d’afficher le message suivant et de poursuivre.
echo "Command Loaded & Locked!"
echo ">Release Button to Cancel."
else

# si le bouton est enfoncé mais pas en mode verrouillage,
# nous faisons un test ping sur l’url $WEBHOOK ET créons un fichier de verrouillage.
curl -X POST -d {} $WEBHOOK
touch $LOCK_FILE
echo "Engaging Command..."
fi

else
# si l’état de la broche est '1', cela signifie que le bouton est relâché
# on supprime le fichier de verrouillage pour effacer l’état
[ -f $LOCK_FILE ] && rm $LOCK_FILE
echo "YOLO Button ready!"
fi

sleep 1
clear
done

 

Ce code se met en attente active et guette en permanence les changements d’état de $PIN. En appuyant sur le bouton, on active l’interrupteur qui connecte les 2 câbles l’un à l’autre et ferme le circuit. Lorsque cela se produit, la carte Omega 2+ reçoit une tension haute (3,3v) sur l’entrée $PIN. En utilisant le package fast-gpio «  inclus, nous pouvons lire l’état.

• La valeur 0 signifie que le bouton est enfoncé.
• La valeur 1 signifie que le bouton est relâché

.
Pour le reste, il s’agit juste de traiter les modes Enfoncer et Verrouiller de ce bouton, puisqu’il utilise un interrupteur à verrouillage.

À votre tour

Vous vous demandez peut-être ce que vous pouvez faire avec ce type de bouton connecté ? Eh bien, pour être honnête, les possibilités sont infinies, mais pour l’essentiel, tout service qui capable de communiquer en HTTP (URL de déploiement, API serverless, etc.) est un bon candidat !
Si vous souhaitez commencer à vous amuser et connecter ce bouton à une API, testez les Azure Functions pour créer et déployer rapidement votre logique d’application dans un environnement serverless.

Amusez-vous bien !

 

Big Data & AI Paris 2022

Big Data & AI Paris offre une occasion unique de s’informer sur les dernières tendances du marché et networker avec l’ensemble des professionnels de la data et de l’intelligence artificielle en France. Rejoignez M…

S’inscrire

 

A la une

#hololense

Le métavers au service de l’industrie

Alors que le métavers fait progressivement son chemin vers le grand public, il est déjà depuis déjà quelques années une réalité dans le secteur de l’industrie. Des technologies industrielles matures, dont Microsoft et ses partenaires se sont fait une spécialité. Une usine qui prend forme virtuellement avant d’être construite. D’immenses cuves de brassages connectées qui […]

Lire l'article
Travailleuse portant des lunettes de protection, agenouillée devant des étagères en métal dans un espace de stockage commercial de fabrication. Elle tient un appareil IIoT Askey.

IIOT : Tout ce qu’il faut savoir

L’Internet Industriel des Objets (IIoT) est bien plus qu’une simple tendance technologique. C’est une véritable révolution qui transforme l’industrie en permettant la connexion et l’échange de données entre les machines, les systèmes de production et les personnes. Cette convergence entre l’Internet des Objets (IoT) et l’industrie ouvre de nouvelles perspectives, offrant des opportunités pour optimiser […]

Lire l'article
Male worker seated at desk using Askey IoT device in commercial manufacturing factory.

L’industrie 4.0 pour enfin concilier intérêts écologiques et économiques

Marchés en tension, inflation, explosion des coûts énergétiques, les entreprises industrielles subissent des pressions majeures. S’ajoutent à cela l’obligation d’atténuer autant que possible leurs impacts environnementaux. Dans un tel contexte faut-il choisir entre la performance économique ou écologique ? Ces questionnements encouragent la transformation vers les modèles de l’industrie 4.0, beaucoup plus flexibles et optimisables, afin de […]

Lire l'article