Remarque : Ce projet n'est ni approuvé ni soutenu par Lime ou toute société affiliée. Ne faites cela que sur un scooter obtenu légalement et que vous possédez ! Vous pouvez souvent les acheter aux enchères.
L'objectif de ce projet est de remplacer l'IoT du Lime Gen 3 par un système personnalisé, afin que nous puissions le contrôler avec notre propre application. Si vous en savez plus sur la communication, veuillez la soumettre ici.
Le module IoT est remplacé par un microcontrôleur ESP32 pour nous permettre de contrôler le scooter avec notre application. L'application communique avec l'ESP32 via Bluetooth Low Energy (BLE). L'ESP32 remplace la fonction de l'IoT d'origine tout en fournissant également des informations en temps réel sur la vitesse, le niveau de la batterie et d'autres informations.
Installez le module complémentaire ESP32 pour Arduino IDE si vous ne l'avez pas déjà fait. Voici un tutoriel
Installez la bibliothèque crc par robtillaart depuis le gestionnaire de bibliothèque.
Flashez le contrôleur avec le firmware déverrouillé.
Flashez le code Arduino du dossier LimeIoT vers l'esp32.
Remarque : le contrôleur vous donne 36 V. Il faut donc le convertir en 5v stable pour l'affichage et l'esp32. Je l'ai fait en utilisant un convertisseur buck et ams1117.
Connectez les fils :
Connecteur | ESP32 |
---|---|
Verrouillage du contrôleur | GPIO12 |
Contrôleur RX | GPIO1 |
Émission du contrôleur | GPIO3 |
Contrôleur 36v | Convertisseur Buck -> ams1117 -> 5V |
Terre du contrôleur | Terre |
Affichage 5v | 5V |
Afficher la terre | Terre |
Afficher l'émission | GPIO16 |
Afficher la réception | GPIO17 |
Si vous le souhaitez, vous pouvez connecter le haut-parleur au GPIO 13
.
Vous pouvez télécharger l'application ici : App.apk
Le mot de passe Bluetooth par défaut est 123456789
. Vous pouvez le modifier dans le fichier ble_security.ino.
Actuellement uniquement compatible sur Android et ne semble bon qu'avec les téléphones compatibles Material You.
Si vous ne voulez/ne pouvez pas utiliser l'application, vous pouvez simplement télécharger une application de terminal Bluetooth comme nRF Connect (Play Store | App Store) et envoyer les commandes vous-même :
Commandes | Action |
---|---|
unlock | Déverrouille le scooter |
lock | Éteint le contrôleur |
unlockforever | Maintient le scooter déverrouillé lors de la déconnexion |
alarm | laissez le scooter biper (si le haut-parleur est connecté) |
Pour déverrouiller le contrôleur, fournissez 3,3 V au fil bleu connecté à l'IoT et envoyez la commande 464316610001F1F28F
pour l'allumer. Une fois allumé, envoyez le battement de cœur 4643110100084C494D4542494B45BE8A
toutes les 500 ms. Pour éteindre le contrôleur, coupez l'alimentation 3,3 V et envoyez la commande 464316610001F0E2AE
. Le débit en bauds pour toutes les commandes est 9600
.
La commande envoyée par le contrôleur à l'IoT comprend 42 octets. Le 9ème octet représente la vitesse et le 20ème octet représente le niveau de la batterie. Les deux derniers octets de la commande sont une somme de contrôle CRC-16/XMODEM.
Numéro d'octet | Signification |
---|---|
9 | Vitesse |
20 | Batterie |
deux derniers octets | Somme de contrôle CRC-16/XMODEM |
46 58 0C FF 00 22 11 00 00 40 00 00 41 3F 60 42 00 FF 44 64 52 00 61 F1 80 00 00 72 01 5C 01 59 82 00 00 00 00 E0 00 00 0A B3
Débit en bauds : 115200
Somme de contrôle : width=8 poly=0x31 init=0x0a refin=true refout=true xorout=0x00 check=0xc1 residue=0x00
Le tableau suivant montre la signification connue des octets dans les commandes envoyées à l'écran :
Octet | Signification |
---|---|
12 | Statut (voir ci-dessous) |
14 | Batterie |
16-17 | Vitesse |
dernier octet | somme de contrôle |
Octet | Statut |
---|---|
21 | Scanner pour rouler |
22 | Indisponible |
23 | En pause |
24 | Fermé |
25 | Fait |
26 | Chargement |
31 | Conduite |
41 | Conduire une batterie faible |
42 | Alerte de conduite |
43 | Conduire sans stationnement |
44 | Conduire sans rouler |
45 | Vitesse maximale de conduite |
51 | Mise à niveau |
4C 42 44 43 50 01 10 11 00 09 01 31 01 1E 02 00 CD 01 00 9A
Vous pouvez éteindre la LED rouge avec la commande suivante : 4C 42 44 43 50 01 10 1B 00 08 03 00 00 00 03 00 00 00