Nota: Este projeto não é endossado ou apoiado pela Lime ou qualquer empresa afiliada. Faça isso apenas em uma scooter obtida legalmente e que você possui! Muitas vezes você pode comprá-los em leilões.
O objetivo deste projeto é substituir o IoT do Lime Gen 3 por um customizado, para que possamos controlá-lo com nosso próprio aplicativo. Se você souber mais sobre a comunicação, envie-a aqui.
O módulo IoT foi substituído por um microcontrolador ESP32 para nos permitir controlar a scooter com nosso aplicativo. O aplicativo se comunica com o ESP32 usando Bluetooth Low Energy (BLE). O ESP32 substitui a função da IoT original ao mesmo tempo que fornece feedback em tempo real sobre velocidade, nível de bateria e outras informações.
Instale o complemento ESP32 para Arduino IDE, caso ainda não o tenha feito. Aqui está um tutorial
Instale a biblioteca crc do robtillaart do gerenciador de biblioteca.
Atualize o controlador com firmware desbloqueado.
Atualize o código do Arduino da pasta LimeIoT para o arquivo esp32.
Nota: O controlador fornece 36v. Então você tem que convertê-lo para 5v estável para o display e o esp32. Eu fiz isso usando um conversor buck e ams1117.
Conecte os fios:
Conector | ESP32 |
---|---|
Bloqueio do controlador | GPIO12 |
Controlador RX | GPIO1 |
Controlador TX | GPIO3 |
Controlador 36v | Conversor Buck -> ams1117 -> 5V |
Controlador Gnd | Gnd |
Exibição 5v | 5V |
Exibir terra | Gnd |
Exibir TX | GPIO16 |
Exibir RX | GPIO17 |
Se desejar, você pode conectar o alto-falante ao GPIO 13
.
Você pode baixar o aplicativo aqui: App.apk
A senha padrão do Bluetooth é 123456789
. Você pode alterá-lo no arquivo ble_security.ino.
Atualmente compatível apenas com Android e só fica bem com telefones compatíveis com Material You.
Se você não quiser/pode usar o aplicativo, basta baixar um aplicativo de terminal bluetooth como o nRF Connect (Play Store | App Store) e enviar você mesmo os comandos:
Comandos | Ação |
---|---|
unlock | Desbloqueia a scooter |
lock | Desliga o controlador |
unlockforever | Mantém a scooter desbloqueada ao desconectar |
alarm | deixe a scooter apitar (se o alto-falante estiver conectado) |
Para desbloquear o controlador, forneça 3,3 V ao fio azul conectado ao IoT e envie o comando 464316610001F1F28F
para ligá-lo. Uma vez ligado, envie a pulsação 4643110100084C494D4542494B45BE8A
a cada 500 ms. Para desligar o controlador, corte a alimentação de 3,3V e envie o comando 464316610001F0E2AE
. A taxa de transmissão para todos os comandos é 9600
.
O comando enviado pelo controlador para a IoT consiste em 42 bytes. O 9º byte representa a velocidade e o 20º byte representa o nível da bateria. Os dois últimos bytes do comando são uma soma de verificação CRC-16/XMODEM.
Número de bytes | Significado |
---|---|
9 | Velocidade |
20 | Bateria |
últimos dois bytes | Soma de verificação 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
Taxa de transmissão: 115200
Soma de verificação: width=8 poly=0x31 init=0x0a refin=true refout=true xorout=0x00 check=0xc1 residue=0x00
A tabela a seguir mostra o significado conhecido dos bytes nos comandos enviados ao display:
Byte | Significado |
---|---|
12 | Status (veja abaixo) |
14 | Bateria |
16-17 | Velocidade |
último byte | soma de verificação |
Byte | Status |
---|---|
21 | Digitalize para andar |
22 | Indisponível |
23 | Pausado |
24 | Bloqueado |
25 | Feito |
26 | Carregando |
31 | Condução |
41 | Condução com bateria fraca |
42 | Alerta de direção |
43 | Dirigindo sem estacionar |
44 | Dirigindo sem andar |
45 | Dirigindo velocidade máxima |
51 | Atualizando |
4C 42 44 43 50 01 10 11 00 09 01 31 01 1E 02 00 CD 01 00 9A
Você pode desligar o LED vermelho com o seguinte comando: 4C 42 44 43 50 01 10 1B 00 08 03 00 00 00 03 00 00 00