Arduino UNO Q - Capteur de Force

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 :

Arduino UNO Q Capteur de Force

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Force Sensor (FSR)
1×10 kΩ Resistor
1×Plaque d'essai
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 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
Brochage du Capteur de Force

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

Schéma de Câblage Arduino UNO Q Capteur de Force

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) :
if (reading < 40) Serial.println(" -> aucune pression"); else if (reading < 800) Serial.println(" -> léger toucher"); else if (reading < 2000) Serial.println(" -> légère pression"); else if (reading < 3200) Serial.println(" -> pression moyenne"); else Serial.println(" -> forte pression");

Code Arduino UNO Q

/* * 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 FSR void setup() { Serial.begin(9600); Serial.println("Arduino UNO Q Force Sensor ready"); } void loop() { int reading = analogRead(FORCE_SENSOR_PIN); // 0-4095 Serial.print("Force sensor reading = "); Serial.print(reading); if (reading < 40) // no pressure Serial.println(" -> no pressure"); else if (reading < 800) // light touch Serial.println(" -> light touch"); else if (reading < 2000) // light squeeze Serial.println(" -> light squeeze"); else if (reading < 3200) // medium squeeze Serial.println(" -> medium squeeze"); else // big squeeze Serial.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.
Add sketch library in Arduino App Lab on Arduino UNO Q
  • 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

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.
Cliquer sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q
  • 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 values int cached_value = 0; String cached_pressure = "no_pressure"; bool pressure_event = false; bool prev_pressed = false; unsigned long last_read_ms = 0; const unsigned long READ_INTERVAL = 500; String get_value(String arg) { return String(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"; } void setup() { 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"); } void loop() { unsigned long now = 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); } else if (!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 time def 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))
New Line
9600 baud
[2026-04-29 09:00:01] Force Sensor Bridge ready [2026-04-29 09:00:02] ADC: 15 -> aucune pression [2026-04-29 09:00:04] ADC: 850 -> légère pression
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Force: 15 -> aucune pression [2026-04-29 09:00:04] ⚠️ Force applied! ADC: 850 -> légère pression

Telegram

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 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(): # 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" 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 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
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
/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 !