Nota: Este proyecto no cuenta con el respaldo ni el respaldo de Lime ni de ninguna empresa afiliada. ¡Haga esto únicamente en un scooter de su propiedad obtenido legalmente! A menudo puedes comprarlos en subastas.
El objetivo de este proyecto es sustituir el IoT del Lime Gen 3 por uno personalizado, para que podamos controlarlo con nuestra propia app. Si obtiene más información sobre la comunicación, envíela aquí.
El módulo IoT se reemplaza por un microcontrolador ESP32 para permitirnos controlar el scooter con nuestra aplicación. La aplicación se comunica con el ESP32 mediante Bluetooth Low Energy (BLE). El ESP32 reemplaza la función del IoT original y al mismo tiempo proporciona información en tiempo real sobre la velocidad, el nivel de la batería y otra información.
Instale el complemento ESP32 para Arduino IDE si aún no lo tiene. Aquí hay un tutorial
Instale la biblioteca crc de robtillaart desde el administrador de la biblioteca.
Actualice el controlador con firmware desbloqueado.
Actualice el código arduino de la carpeta LimeIoT al esp32.
Nota: El controlador te proporciona 36v. Entonces tienes que convertirlo a 5v estable para la pantalla y el esp32. Lo hice usando un convertidor buck y ams1117.
Conecte los cables:
Conector | ESP32 |
---|---|
Bloqueo del controlador | GPIO 12 |
Controlador RX | GPIO 1 |
Controlador TX | GPIO 3 |
Controlador 36v | Convertidor reductor -> ams1117 -> 5V |
Tierra del controlador | tierra |
Pantalla 5v | 5V |
Pantalla Tierra | tierra |
Mostrar transmisión | GPIO 16 |
Pantalla RX | GPIO 17 |
Si lo deseas, puedes conectar el altavoz al GPIO 13
.
Puedes descargar la aplicación aquí: App.apk
La contraseña de Bluetooth predeterminada es 123456789
. Puede cambiarlo en el archivo ble_security.ino.
Actualmente solo es compatible con Android y solo se ve bien con teléfonos compatibles con Material You.
Si no desea o no puede usar la aplicación, puede descargar una aplicación de terminal bluetooth como nRF Connect (Play Store | App Store) y enviar los comandos usted mismo:
Comandos | Acción |
---|---|
unlock | Desbloquea el scooter |
lock | Apaga el controlador |
unlockforever | Mantiene el scooter desbloqueado al desconectar |
alarm | Deje que el scooter emita un pitido (si el altavoz está conectado). |
Para desbloquear el controlador, suministre 3,3 V al cable azul conectado al IoT y envíe el comando 464316610001F1F28F
para encenderlo. Una vez encendido, envíe el latido 4643110100084C494D4542494B45BE8A
cada 500 ms. Para apagar el controlador, corte el suministro de 3,3 V y envíe el comando 464316610001F0E2AE
. La velocidad en baudios para todos los comandos es 9600
.
El comando enviado por el controlador al IoT consta de 42 bytes. El noveno byte representa la velocidad y el vigésimo byte representa el nivel de la batería. Los últimos dos bytes del comando son una suma de comprobación CRC-16/XMODEM.
número de byte | Significado |
---|---|
9 | Velocidad |
20 | batería |
últimos dos bytes | Suma de comprobación 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
Velocidad de transmisión: 115200
Suma de comprobación: width=8 poly=0x31 init=0x0a refin=true refout=true xorout=0x00 check=0xc1 residue=0x00
La siguiente tabla muestra el significado conocido de los bytes en los comandos enviados a la pantalla:
Byte | Significado |
---|---|
12 | Estado (ver más abajo) |
14 | batería |
16-17 | Velocidad |
último byte | suma de control |
Byte | Estado |
---|---|
21 | Escanear para viajar |
22 | Indisponible |
23 | En pausa |
24 | bloqueado |
25 | Hecho |
26 | Cargando |
31 | Conduciendo |
41 | Conducir con batería baja |
42 | Alerta de conducción |
43 | Conducir sin estacionamiento |
44 | Conducir sin montar |
45 | Velocidad máxima de conducción |
51 | Actualización |
4C 42 44 43 50 01 10 11 00 09 01 31 01 1E 02 00 CD 01 00 9A
Puedes apagar el LED rojo con el siguiente comando: 4C 42 44 43 50 01 10 1B 00 08 03 00 00 00 03 00 00 00