Je ne sais pas si ça peut intéresser quelqu'un, mais je me suis amusé à tester ça (sur la table uniquement) et comme je sais qu'il y a beaucoup de "bricoleurs" (dans le bon sens du terme) ici, voici un copier/coller d'un sujet que j'ai ouvert dans un autre forum (ceci explique pourquoi la taille des images n'est pas adaptée - désolé pour ça) :
J'ai vu cette vidéo :
Le module qu'il utilise n'est pas hyper adapté car, il le dit lui-même, le pas de réglage est trop grand.
De plus je trouve son module bien grand, pas simple d'utilisation..
J'ai alors eu l'idée d'utiliser un microcontrôleur permettant de faire des pas de seulement 5ms (on peut même faire des pas plus petit si on veut) sur une plage de réglage qui va actuellement de 30 à 80 ms (modifiable) et avec une petite interface sur smartphone (par Wifi) afin de permettre un réglage aisé sans toucher au module placé sur la moto (ni avoir besoin de boutons de réglage).
J'ai choisi le module ESP32 C3 (puisque j'en ai sous la main) :

https://fr.aliexpress.com/item/10050077 ... ry_from%3A
Pour la commande, j'ai utilisé ce relais :

https://fr.aliexpress.com/item/10050075 ... ry_from%3A
Pour l'alimentation 5V :

https://fr.aliexpress.com/item/10050080 ... ry_from%3A
Pour l'inter à placer en détection de position de sélecteur, je n'ai pas utilisé celui-là mais par exemple :

https://fr.aliexpress.com/item/10050061 ... ry_from%3A
Pour le programme (pour programmer le microcontrôleur, il faut le logiciel gratuit "Arduino") j'ai fait appel à ChatGpt qui m'a sorti un code prêt à l'emploi :
- Code: Tout sélectionner
#include <WiFi.h>
#include <WebServer.h>
#include <Preferences.h>
#define RELAY_PIN 2 // Broche pour le relais (exemple : GPIO 2)
#define BUTTON_PIN 9 // Broche pour le bouton (exemple : GPIO 9)
const char *ssid = "ESP32_Relay";
const char *password = "12345678";
WebServer server(80);
Preferences preferences;
int relay_duration = 30; // Valeur par défaut (30ms à 80ms)
void activateRelay() {
digitalWrite(RELAY_PIN, HIGH);
delay(relay_duration);
digitalWrite(RELAY_PIN, LOW);
Serial.println("Relais activé pendant " + String(relay_duration) + " ms");
server.send(204); // Réponse vide pour la requête AJAX
}
void handleRoot() {
String html = R"rawliteral(
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Réglage Relais</title>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
background-color: #f4f4f4;
margin: 0;
padding: 20px;
}
.container {
max-width: 400px;
margin: auto;
padding: 20px;
background: white;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
h1 {
color: #333;
}
button {
padding: 15px 20px;
font-size: 18px;
border: none;
border-radius: 5px;
color: white;
background-color: #007bff;
cursor: pointer;
margin: 10px;
}
button:hover {
background-color: #0056b3;
}
input[type="range"] {
width: 100%;
}
</style>
</head>
<body>
<div class="container">
<h1>Réglage de la durée</h1>
<p>Durée actuelle : <span id="duration">%DURATION% ms</span></p>
<input type="range" min="30" max="80" step="5" value="%DURATION%"
onchange="updateDuration(this.value)">
<br><br>
<button onclick="activateRelay()">Activer Relais</button>
</div>
<script>
function updateDuration(value) {
document.getElementById('duration').innerText = value + " ms";
fetch('/setDuration?value=' + value);
}
function activateRelay() {
fetch('/activate');
}
</script>
</body>
</html>
)rawliteral";
html.replace("%DURATION%", String(relay_duration));
server.send(200, "text/html", html);
}
void setDuration() {
if (server.hasArg("value")) {
relay_duration = server.arg("value").toInt();
preferences.putInt("relay_duration", relay_duration);
Serial.println("Nouvelle durée : " + String(relay_duration) + " ms");
}
server.send(204, "text/plain", "");
}
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
preferences.begin("relay_prefs", false);
relay_duration = preferences.getInt("relay_duration", 30);
Serial.println("Durée chargée de la mémoire : " + String(relay_duration) + " ms");
WiFi.softAP(ssid, password);
Serial.println("Point d'accès Wi-Fi créé. IP: " + WiFi.softAPIP().toString());
server.on("/", handleRoot);
server.on("/activate", activateRelay);
server.on("/setDuration", setDuration);
server.begin();
Serial.println("Serveur web démarré");
}
void loop() {
server.handleClient();
if (digitalRead(BUTTON_PIN) == LOW) {
activateRelay();
delay(500); // Anti-rebond
}
}
Le réglage de la durée se fait depuis une page web sur le tel ou à l'ordi et un bouton "Activer Relais" permet de tester le fonctionnement :

Le coût :
- ESP32 C = 2.28€
- Relais = 0.95€
- 7805 = 1.86€ les 10 soit 0.19€ l'unité
- Inter = 1.23€ les 5 soit 0.25€ l'unité
Total = 3.67€
Ouf, c'est moins que le montant annoncé dans le titre - mais il faut aussi compter la mise en coffret !
Perso je n'irai pas plus loin que cet essai - je voulais voir si ça fonctionne, et ça fonctionne. J'ai déjà un Quickshifter sur ma mob, mais si ça peut donner des idées à certains ici..
