Un capteur de force (FSR — Force Sensitive Resistor) change sa résistance en fonction de la force d'appui. Connecté à l'ADC 12 bits de l'Arduino UNO Q avec une résistance de tirage vers le bas, il vous donne une lecture de 0 (pas de pression) à 4095 (pression maximale). Avec Bridge et Telegram, vous pouvez recevoir des alertes instantanées et interroger les niveaux de pression à distance.
Dans ce tutoriel, vous apprendrez :
Comment fonctionne un capteur de force
Comment câbler le capteur de force sur le MCU Arduino UNO Q avec une résistance de tirage vers le bas
Comment lire les valeurs analogiques et classer les niveaux de pression (ADC 12 bits : 0–4095)
Comment utiliser Bridge pour exposer les données de force et les événements au côté Linux (Python)
Comment recevoir des alertes Telegram quand une force est appliquée sur Arduino UNO Q
Comment utiliser OpenClaw sur Arduino UNO Q avec le capteur de force
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 Capteur de Force
Le capteur de force (aussi appelé FSR — Force Sensitive Resistor) est un composant fin et flexible qui agit comme une résistance variable :
Aucune pression appliquée : Résistance très élevée (plusieurs MΩ) → tension quasi nulle à la broche analogique
Plus de pression appliquée : Résistance plus faible → tension plus élevée → lecture ADC plus élevée
Le capteur de force a deux broches identiques (c'est une résistance — la polarité n'a pas d'importance). Il n'est pas adapté à la mesure précise de poids en grammes ou en livres, mais est excellent pour détecter des événements de toucher, pression ou appui.
Câblage en Diviseur de Tension
Comme le FSR est juste une résistance, il doit être câblé dans un diviseur de tension avec une résistance de tirage vers le bas connue (10 kΩ) pour produire une tension mesurable :
3,3V ─── [FSR] ─── A0 ─── [10kΩ] ─── GND
Quand la résistance FSR est élevée (sans pression), A0 lit près de 0
Quand la résistance FSR diminue (pression appliquée), A0 lit plus haut
ADC 12 bits sur Arduino UNO Q
Le MCU UNO Q utilise un ADC 12 bits (0–4095) avec une référence 3,3V. Les seuils de classification de pression dans ce tutoriel sont mis à l'échelle en conséquence.
Schéma de Câblage
Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Composant
MCU Arduino UNO Q
Broche 1 du capteur
3,3V
Broche 2 du capteur
A0
Broche 1 résistance 10kΩ
A0
Broche 2 résistance 10kΩ
GND
Comment Programmer pour le Capteur de Force
Lisez la tension analogique à la broche du capteur de force :
int reading = analogRead(FORCE_SENSOR_PIN); // 0-4095
Classifiez le niveau de pression basé sur la valeur ADC (12 bits, 0–4095) :
/* * 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-force-sensor*/// Force Sensor (FSR) — Analog reading via voltage divider with 10kΩ pull-down resistor// Arduino UNO Q MCU: 12-bit ADC (0-4095), 3.3V reference#define FORCE_SENSOR_PIN A0 // The Arduino UNO Q MCU pin connected to the FSRvoidsetup() {Serial.begin(9600);Serial.println("Arduino UNO Q Force Sensor ready");}voidloop() {int reading = analogRead(FORCE_SENSOR_PIN); // 0-4095Serial.print("Force sensor reading = ");Serial.print(reading);if (reading < 40) // no pressureSerial.println(" -> no pressure");elseif (reading < 800) // light touchSerial.println(" -> light touch");elseif (reading < 2000) // light squeezeSerial.println(" -> light squeeze");elseif (reading < 3200) // medium squeezeSerial.println(" -> medium squeeze");else// big squeezeSerial.println(" -> big squeeze");delay(1000);}
Étapes Rapides
Première utilisation de l'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q avant de continuer.
Connecter : Câblez le capteur de force avec la résistance de 10kΩ sur le MCU Arduino UNO Q comme indiqué.
Ouvrir Arduino App Lab : Créez une nouvelle application nommée ForceSensor.
Coller le programme : Collez le code MCU dans sketch/sketch.ino.
Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Search for Arduino_RouterBridge created by Arduino 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
Arduino_RouterBridge
Arduino_RouterBridgeArduino
This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.
0.4.1
Install
More Info
Téléverser : Cliquez sur le bouton Exécuter dans Arduino App Lab.
Appuyez sur le capteur de force avec différentes pressions et observez les lectures changer.
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 Force Sensor ready
[2026-04-29 09:00:02] ADC: 15 -> aucune pression
[2026-04-29 09:00:04] ADC: 850 -> légère pression
[2026-04-29 09:00:06] ADC: 3500 -> forte pression
Bridge : Linux + MCU
/* * 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-force-sensor*/#include"Arduino_RouterBridge.h"#define FORCE_SENSOR_PIN A0 // The Arduino UNO Q MCU pin connected to the FSR// Cached valuesint cached_value = 0;String cached_pressure = "no_pressure";bool pressure_event = false;bool prev_pressed = false;unsignedlong last_read_ms = 0;constunsignedlong READ_INTERVAL = 500;String get_value(String arg) {returnString(cached_value);}String get_pressure(String arg) {return cached_pressure;}String get_event(String arg) {if (pressure_event) { pressure_event = false;return"pressure_detected"; }return"none";}String classify(int reading) {if (reading < 40) return"no_pressure";if (reading < 800) return"light_touch";if (reading < 2000) return"light_squeeze";if (reading < 3200) return"medium_squeeze";return"big_squeeze";}voidsetup() {Bridge.begin(); Monitor.begin();Bridge.provide("get_value", get_value);Bridge.provide("get_pressure", get_pressure);Bridge.provide("get_event", get_event); Monitor.println("Arduino UNO Q Force Sensor Bridge ready");}voidloop() {unsignedlongnow = millis();if (now - last_read_ms >= READ_INTERVAL) { last_read_ms = now; cached_value = analogRead(FORCE_SENSOR_PIN); cached_pressure = classify(cached_value);bool is_pressed = (cached_value >= 40);if (is_pressed && !prev_pressed) { pressure_event = true; Monitor.print("Pressure detected: "); Monitor.println(cached_pressure); } elseif (!is_pressed && prev_pressed) { Monitor.println("Released — no pressure."); } prev_pressed = is_pressed; }}
/* * 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-force-sensor*/from arduino.app_utils import *import timedef loop(): value = Bridge.call("get_value") pressure = Bridge.call("get_pressure")print(f"Force value: {value} Pressure: {pressure}") time.sleep(1)App.run(user_loop=loop)
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))
Recevez des alertes Telegram quand une force est appliquée et interrogez la pression actuelle à distance.
Programme MCU : Conservez le même programme MCU de la section Bridge précédente.
/* * 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-force-sensor*/from arduino.app_utils import *import requestsimport timeTELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"CHAT_ID = "YOUR_CHAT_ID"last_update_id = 0def 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"]exceptExceptionas 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)exceptExceptionas e:print(f"Error sending message: {e}")def loop():# Auto-alert on pressure detection event = Bridge.call("get_event")if event == "pressure_detected": pressure = Bridge.call("get_pressure") value = Bridge.call("get_value")print(f"Pressure detected: {pressure} value: {value}") send_message(CHAT_ID, f"⚡ Force detected: {pressure} (raw: {value})")# Handle Telegram commands updates = get_updates()for update in updates: last_update_id = update["update_id"]if"message"notin 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 Force Sensor Bot\n""/value - Read raw ADC value (0-4095)\n""/pressure - Pressure level classification\n""Automatic alert when force is applied")elif text == "/value": result = Bridge.call("get_value") send_message(chat_id, f"Force sensor value: {result}")elif text == "/pressure": result = Bridge.call("get_pressure") send_message(chat_id, f"Pressure level: {result}")else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.5)App.run(user_loop=loop)
Sortie de la Console App Lab
DIYables_Apps
Stop
sketch.ino
1#include"Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:01] Monitoring force sensor...
[2026-04-29 09:00:05] ⚠️ Force applied! ADC: 2500
Telegram12:45
Welcome to Telegram!
ArduinoBot10:19
Chatting with Arduino...
BotFatherYesterday
Your bot has been created.
ArduinoBot
bot
Today
/force
10:15 AM✓✓
Force: ADC=2500 -> pression moyenne
10:16 AM
⚠️ Force applied! ADC: 3800 -> forte pression
10:17 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
Capteur de Pression de Siège : Détectez si quelqu'un est assis — envoyez une alerte Telegram si un siège reste occupé trop longtemps
Système de Pesée : Calibrez le capteur FSR pour estimer le poids d'objets légers placés dessus
Bouton de Panique : Appuyez fortement sur le capteur pour envoyer une alerte d'urgence via Telegram
Capteur de Pression de Lit : Détectez si quelqu'un est dans le lit et suivez les patterns de sommeil
Mettez-Vous au Défi
Facile : Affichez la valeur ADC brute sur un écran OLED ou LCD en temps réel.
Moyen : Calibrez le capteur — mesurez des objets de poids connus et créez une courbe de conversion ADC → grammes.
Avancé : Combinez avec un relais pour créer un système d'arrosage automatique déclenché par le poids — quand un pot de fleurs devient trop léger (sol sec), déclenchez la pompe.
Tutoriels connexes
※ 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 !