Swipeur Automatique Tinder/Bumble : Arduino UNO + Moteur Pas à Pas BYJ48
Composants et Fournitures
| Composant | Quantité |
|---|---|
| Arduino UNO | 1 |
| Moteur Pas à Pas BYJ48 5V (unipolaire 28BYJ-48) | 1 |
| Pilote Moteur Pas à Pas (ex: ULN2003 / SBT0811 compatible BYJ48) | 1 |
| Fichiers STL Imprimables 3D (Base + Manette) | 1 jeu |
| Stylet Tactile (Pointe conductrice) | 1 |
Logiciel
- Arduino IDE
Origine du Projet
Déçu par le caractère répétitif de Tinder, l'auteur (ingénieur) a détourné un moteur pas à pas bon marché pour automatiser le swiping. Résultat : plus de 800 swipes/heure sur Tinder ou Bumble !
Vue Rapide : 3 Étapes
- Imprimer les pièces 3D.
- Câbler et tester le moteur pas à pas.
- Assembler le tout.
Étape 1 : Impression 3D
Fichiers sur Thingiverse #2849598.
Point crucial : la base est imprimée à 50% de remplissage (infill) pour être suffisamment lourde et ne pas bouger pendant le balayage.
Étape 2 : Moteur Pas à Pas et Câblage
Moteur : 28BYJ-48 unipolaire 5V + pilote type ULN2003/SBT0811.
Câblage vers Arduino UNO :
| Pilote | Arduino UNO |
|---|---|
| IN1 | D8 |
| IN2 | D9 |
| IN3 | D10 |
| IN4 | D11 |
| VCC | 5V |
| GND | GND |
Si votre pilote a un brochage différent, adaptez le code en conséquence.
Téléverser le code (fourni ci-dessous). Le moteur doit tourner dans le sens horaire. Pour inverser (swipe gauche), passer la variable Direction à true.
Étape 3 : Assemblage Final
- Insérer le moteur dans la base imprimée, fixer avec 2 petites vis à bois.
- Emboîter la manette sur l'arbre du moteur.
- Calibrage hauteur : placer l'ensemble au-dessus du téléphone, insérer le stylet dans la manette jusqu'à contact avec l'écran.
- Bloquer le stylet avec une courte vis M3 (empêche glissement vertical).
Utilisation : Let's Swipe !
- Poser la structure à côté du téléphone (bord aligné).
- Ouvrir Tinder ou Bumble.
- Alimenter l'Arduino (USB).
- Regarder les profils défiler !
Astuce : Problème de Détection sur Bords Sensibles
Sur certains téléphones, le stylet déclenche le « retour arrière » en touchant le bord de l'écran. Solution : mettre une coque de protection avec rebord surélevé pour écarter le stylet de la zone sensible.
Code Arduino Complet
/* BYJ48 Stepper motor code
Connect : IN1 >> D8, IN2 >> D9, IN3 >> D10, IN4 >> D11, VCC >> 5V, GND >> GND
Written by: Mohannad Rawashdeh
https://www.instructables.com/member/Mohannad+Rawashdeh/
28/9/2013
*/
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
int Steps = 0;
boolean Direction = false; // true = swipe droite, false = swipe gauche
unsigned long last_time;
unsigned long currentMillis;
int steps_left = 4095; // Nombre de pas par cycle (environ 1 tour complet en demi-pas)
long time;
void setup() {
Serial.begin(115200);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop() {
while(steps_left > 0) {
currentMillis = micros();
if(currentMillis - last_time >= 1000) { // 1 ms entre demi-pas = ~1 kHz
stepper(1);
time += micros() - last_time;
last_time = micros();
steps_left--;
}
}
steps_left = 4095; // Redémarrer cycle infini
}
void stepper(int xw) {
for (int x = 0; x < xw; x++) {
switch(Steps) {
case 0: digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); break;
case 1: digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, HIGH); break;
case 2: digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); break;
case 3: digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); break;
case 4: digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); break;
case 5: digitalWrite(IN1, HIGH); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); break;
case 6: digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); break;
case 7: digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); break;
default: digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); break;
}
SetDirection();
}
}
void SetDirection() {
if(Direction == 1) Steps++;
if(Direction == 0) Steps--;
if(Steps > 7) Steps = 0;
if(Steps < 0) Steps = 7;
}
Améliorations Possibles
- Ajouter un capteur de fin de course pour arrêt précis.
- Intégrer une temporisation aléatoire (anti-détection bot).
- Version batterie + ESP32 pour version sans fil / pilotage application.
- Support multi-téléphone (bras articulé).
⚠ Note éthique : L'automatisation massive de swipes peut violer les CGU des applications. Utilisez avec modération et responsabilité.
Processus de fabrication
- Moteurs pas à pas : types, caractéristiques et applications pratiques
- Drivers intégrés simplifient la conception de moteurs pas-à-pas haute puissance
- Raspoulette : Prototype de système autonome de porte de poulailler à énergie solaire
- Simple Pi Robot – Construire un rover autonome 2 roues motrices avec Raspberry Pi
- Tourelle Nerf Autonome DIY – Construire un Canon Nerf Intelligent avec Moteurs Pas-à-Pas, Caméra et Arduino
- Bibliothèque Complète pour Moteur Pas à Pas Bipolaire Arduino
- Moteurs Servo vs Pas à Pas : Clarifier la zone grise moderne
- Comprendre les moteurs linéaires : de l'énergie électrique au mouvement linéaire précis
- Servomoteurs expliqués : fonctionnement et importance