Arduino UNO Q - Clavier 4x4

Vous souhaitez ajouter un clavier membranaire complet à 16 touches à votre projet Arduino UNO Q ? Dans ce tutoriel, vous apprendrez à lire les 16 touches et à construire un système de saisie de mot de passe — avec des alertes Telegram également.

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q Clavier 4x4

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Clavier 4x4
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du Clavier 4x4

Un clavier 4x4 possède 16 boutons membranaires disposés en 4 rangées et 4 colonnes — incluant les chiffres 0 à 9, les lettres A à D, et les symboles * et #.

Brochage

Un clavier 4x4 possède 8 broches, réparties en rangées et colonnes :

  • 4 broches pour les rangées : R1, R2, R3, R4
  • 4 broches pour les colonnes : C1, C2, C3, C4
Brochage du Clavier 4x4

Schéma de Câblage

Schéma de Câblage Arduino UNO Q Clavier 4x4

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Broche du Clavier MCU Arduino UNO Q
R1 (Rangée 1) D9
R2 (Rangée 2) D8
R3 (Rangée 3) D7
R4 (Rangée 4) D6
C1 (Col 1) D5
C2 (Col 2) D4
C3 (Col 3) D3
C4 (Col 4) D2

Code Arduino UNO Q

L'Arduino UNO Q dispose de deux processeurs travaillant ensemble :

  • Le MCU STM32 lit la matrice du clavier directement en utilisant la bibliothèque DIYables_Keypad
  • Le MPU Qualcomm exécute Debian Linux et gère le Wi-Fi, Python et la connectivité cloud
  • Dans cette section, seul le MCU est programmé — le côté Linux reste inactif. Une section ultérieure montre comment les deux processeurs travaillent ensemble via Bridge.
/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-q/arduino-uno-q-keypad-4x4 */ #include <DIYables_Keypad.h> const int ROW_NUM = 4; const int COLUMN_NUM = 4; char keys[ROW_NUM][COLUMN_NUM] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; byte pin_rows[ROW_NUM] = { 9, 8, 7, 6 }; // Arduino UNO Q MCU pins for rows byte pin_column[COLUMN_NUM] = { 5, 4, 3, 2 }; // Arduino UNO Q MCU pins for columns DIYables_Keypad keypad = DIYables_Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); void setup() { Serial.begin(115200); delay(1500); Serial.println("Arduino UNO Q Keypad 4x4 ready"); } void loop() { char key = keypad.getKey(); if (key) { Serial.print("Key pressed: "); Serial.println(key); } }

Étapes Rapides

Première fois avec Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q pour préparer votre environnement de développement avant de continuer.

  • Connecter : Câblez le clavier 4x4 au MCU Arduino UNO Q comme indiqué dans le schéma de câblage ci-dessus.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créer une nouvelle application : Cliquez sur le bouton Create New App.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : Keypad4x4
  • Cliquez sur Create pour confirmer.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Coller le sketch : Copiez le code MCU ci-dessus et collez-le dans sketch/sketch.ino. Gardez les autres fichiers par défaut.
  • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Add sketch library in Arduino App Lab on Arduino UNO Q
  • Search for DIYables_Keypad created by DIYables.io and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
DIYables_Keypad DIYables.io

The library is designed for Arduino, ESP32, ESP8266... to use with keypad such as 3x4, 4x4 keypad. It also works with Arduino Uno R4 WiFi/Minima

1.0.1
Install
More Info
  • Téléverser : Cliquez sur le bouton Run dans Arduino App Lab.
Cliquer sur le bouton Run dans Arduino App Lab sur Arduino UNO Q
  • Ouvrir le Moniteur Série et appuyez sur les touches du clavier. Vous verrez chaque touche s'afficher.
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q Keypad 4x4 ready [2026-04-29 09:00:05] Key pressed: 1 [2026-04-29 09:00:08] Key pressed: A [2026-04-29 09:00:11] Key pressed: #

Clavier et Mot de Passe

Une utilisation courante d'un clavier 4x4 est la saisie d'un mot de passe. Deux touches spéciales sont utilisées :

  • * — efface la saisie en cours et recommence
  • # — confirme la saisie et vérifie le mot de passe

Toutes les autres touches ajoutent un caractère à la chaîne de mot de passe.

La logique :

  • Appuyer sur une touche → l'ajouter au tampon de saisie
  • Appuyer sur * → effacer le tampon de saisie
  • Appuyer sur # → comparer la saisie au mot de passe enregistré, puis effacer le tampon
/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-q/arduino-uno-q-keypad-4x4 */ #include <DIYables_Keypad.h> // DIYables_Keypad library const int ROW_NUM = 4; //four rows const int COLUMN_NUM = 3; //three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad byte pin_column[COLUMN_NUM] = {5, 4, 3}; //connect to the column pinouts of the keypad DIYables_Keypad keypad = DIYables_Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password = "1234"; // change your password here String input_password; void setup(){ Serial.begin(9600); Serial.println("Keypad 3x4 password"); input_password.reserve(32); // maximum input characters is 33, change if needed } void loop(){ char key = keypad.getKey(); if (key){ Serial.println(key); if(key == '*') { input_password = ""; // clear input password } else if(key == '#') { if(password == input_password) { Serial.println("password is correct"); // DO YOUR WORK HERE } else { Serial.println("password is incorrect, try again"); } input_password = ""; // clear input password } else { input_password += key; // append new character to input password string } } }

※ Note:

Modifiez la variable password avec votre mot de passe souhaité avant de téléverser. Vous pouvez utiliser n'importe quelle combinaison de chiffres 0–9, de lettres A–D, et de * ou # dans le mot de passe.

Bridge : Linux + MCU

Cette section montre comment programmer les deux processeurs de l'Arduino UNO Q afin que le côté Linux puisse lire les pressions du clavier à distance :

  • Le clavier 4x4 est connecté au MCU (STM32) — le MCU l'interroge via keypad.getKey() dans loop()
  • Le MPU ne peut pas lire les broches du clavier directement — il doit demander la dernière touche pressée au MCU via Bridge.call()
  • Le MPU dispose du Wi-Fi — exécutant Debian Linux complet, il peut réagir aux pressions de touches et envoyer des alertes sur Internet
  • Arduino_RouterBridge permet la communication RPC entre les deux processeurs
  • ⚠️ /dev/ttyHS1 (Linux) et Serial1 (MCU) sont RÉSERVÉS par le routeur — ne les ouvrez jamais dans le code utilisateur

En résumé : Le MCU interroge le clavier → le MPU lit la dernière touche via Bridge → le MPU peut réagir aux pressions de touches depuis n'importe où sur Internet.

Remarque : Dans le sketch Bridge, keypad.getKey() est appelé dans la fonction Arduino loop() pour détecter continuellement les pressions de touches — cela est nécessaire et n'interfère pas avec la communication Bridge.

Code MCU (Bridge)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-q/arduino-uno-q-keypad-4x4 */ #include <DIYables_Keypad.h>#include "Arduino_RouterBridge.h" const int ROW_NUM = 4; const int COLUMN_NUM = 4; char keys[ROW_NUM][COLUMN_NUM] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; byte pin_rows[ROW_NUM] = { 9, 8, 7, 6 }; byte pin_column[COLUMN_NUM] = { 5, 4, 3, 2 }; DIYables_Keypad keypad = DIYables_Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); char last_key = 0; String get_key(String arg) { char key = last_key; last_key = 0; if (key == 0) return "none"; return String(key); } String get_status(String arg) { if (last_key == 0) return "No key pressed"; return "Last key: " + String(last_key); } void setup() { Bridge.begin(); Monitor.begin(); Bridge.provide("get_key", get_key); Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q Keypad 4x4 Bridge ready"); } void loop() { char key = keypad.getKey(); if (key) { last_key = key; Monitor.println("Key pressed: " + String(key)); } }

Code Python (Bridge)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-q/arduino-uno-q-keypad-4x4 */ from arduino.app_utils import * import time def loop(): result = Bridge.call("get_key") if result != "none": print(f"Key pressed: {result}") else: print("No key pressed") time.sleep(0.2) App.run(user_loop=loop)

Étapes Rapides

  • Connecter : Câblez le clavier 4x4 à l'Arduino UNO Q comme indiqué dans le schéma de câblage.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez que la carte soit détectée.
  • Créer une nouvelle application : Cliquez sur Create New App, nommez-la Keypad4x4Bridge, puis cliquez sur Create.
  • Coller le sketch MCU : Copiez le code MCU Bridge ci-dessus et collez-le dans sketch/sketch.ino.
  • Coller le code Python : Copiez le code Python Bridge ci-dessus et collez-le dans le fichier Python de l'application.
  • Téléverser : Cliquez sur le bouton Run dans Arduino App Lab.
Cliquer sur le bouton Run dans Arduino App Lab sur Arduino UNO Q
  • Appuyez sur les touches du clavier et observez la console Python.

Sortie de la Console App Lab

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q Keypad 4x4 Bridge ready [2026-04-29 09:00:05] Key pressed: A [2026-04-29 09:00:08] Key pressed: #
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:03] No key pressed [2026-04-29 09:00:05] Key pressed: A [2026-04-29 09:00:07] No key pressed [2026-04-29 09:00:08] Key pressed: #

Telegram

Recevez des notifications Telegram lorsqu'une touche est pressée sur le clavier 4x4 — utile pour les systèmes d'accès à distance, les déclencheurs d'événements ou les alertes de code PIN.

Sketch MCU : Conservez le même sketch MCU de la section Bridge précédente.

Code Python (Telegram)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-q/arduino-uno-q-keypad-4x4 */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): global last_update_id # Poll keypad and notify on key press result = Bridge.call("get_key") if result != "none": msg = f"Key pressed: {result}" print(msg) send_message(CHAT_ID, msg) # Handle incoming Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q Keypad 4x4 Bot\n" "/key - Read the last key pressed\n" "/status - Get keypad status") elif text == "/key": result = Bridge.call("get_key") if result != "none": send_message(chat_id, f"Key pressed: {result}") else: send_message(chat_id, "No key pressed") elif text == "/status": result = Bridge.call("get_status") send_message(chat_id, result) else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.2) App.run(user_loop=loop)

Étapes Rapides

  • Remplacez YOUR_TELEGRAM_BOT_TOKEN par votre vrai token de bot obtenu depuis BotFather.
  • Remplacez YOUR_CHAT_ID par votre identifiant de chat Telegram.
  • Collez ce code Python dans le fichier Python de votre application (conservez le même sketch MCU).
  • Cliquez sur le bouton Run. Appuyez sur les touches du clavier — votre chat Telegram recevra des alertes automatiquement.

Sortie de la Console App Lab

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:15:00] Waiting for Telegram messages... [2026-04-29 09:15:05] Key pressed: B [2026-04-29 09:15:20] Received: /key [2026-04-29 09:15:35] Key pressed: D
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.

ArduinoBot

bot
Today
/key
10:15 AM ✓✓
No key pressed
10:16 AM
(presses key B on keypad)
10:17 AM ✓✓
Key pressed: B
10:18 AM
/status
10:19 AM ✓✓
No key pressed
10:20 AM

Intégration d'OpenClaw

Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.

Idées de Projets

Vous pouvez réaliser de nombreux projets créatifs en utilisant le clavier 4x4 avec Arduino UNO Q :

  • Verrou à code PIN distant : L'utilisateur saisit un code PIN sur le clavier ; le MCU le valide et contrôle un relais ou un verrou solénoïde, tandis que le MPU envoie une alerte Telegram en cas de succès ou d'échec
  • Contrôleur à touches de fonction : Utilisez les touches A à D comme raccourcis de fonction — chacune déclenche une action IoT différente (par exemple, A = lumières allumées, B = lumières éteintes, C = ventilateur allumé, D = alarme)
  • Interface de calculatrice : Construisez une calculatrice simple où l'utilisateur saisit deux nombres et un opérateur via le clavier, et le résultat s'affiche sur le Moniteur Série ou un LCD
  • Enregistreur de clavier via Telegram : Toutes les pressions de touches sont automatiquement transmises à un groupe Telegram pour la surveillance à distance d'un emplacement physique
  • Système d'accès multi-utilisateurs : Attribuez différents codes PIN à différents utilisateurs — le MPU enregistre chaque connexion réussie avec un nom d'utilisateur et un horodatage via Telegram

Défiez-vous

Prêt à aller plus loin avec le clavier 4x4 sur Arduino UNO Q ? Essayez ces défis :

  • Facile : Modifiez le sketch MCU pour allumer une LED lorsque la touche A est pressée et l'éteindre lorsque la touche B est pressée.
  • Moyen : Implémentez un système de mot de passe complet en Python : accumulez les pressions de touches reçues via Bridge, vérifiez la saisie lorsque # arrive, et envoyez un message Telegram "Accès accordé" ou "Accès refusé".
  • Avancé : Construisez un système d'accès par clavier multi-utilisateurs — stockez deux codes PIN différents en Python ; lorsque l'un ou l'autre code PIN est correctement saisi sur le clavier, le MCU active un relais et le MPU enregistre l'événement avec un horodatage et envoie une notification Telegram identifiant le code PIN utilisé.

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !