Control de Autos RC de Shell Motorsport a través de Bluetooth Low Energy (BLE)
Project description
Control de Autos RC de Shell Motorsport
Esta librería permite controlar los autos de radio control (RC) de Shell Motorsport a través de Bluetooth Low Energy (BLE). Proporciona funciones para conectarse al vehículo, enviar comandos de movimiento y administrar múltiples autos.
Instalación
Opción 1: Via PIP
pip install git+https://github.com/AMasetti/shell-motorsport-rc-lib
Opción 2: Clonar el Repo
-
Clona este repositorio:
git clone -
Navega al directorio del proyecto:
cd ShellMotorSport
-
Instala las dependencias requeridas:
pip install -r requirements.txt
Asegúrate de tener instalados los paquetes bleak y pycryptodome para manejar las conexiones BLE y la encriptación AES.
Uso con main.py
El archivo main.py es un ejemplo de cómo utilizar la librería para controlar tu auto RC.
import asyncio
from shell_motorsport import ShellMotorsportCar
car_name = 'AMASETTI_F1_75_44' # Cambia esto al nombre que desees asignar a tu auto
async def main():
car = ShellMotorsportCar()
try:
if car_name not in car.vehicle_list:
await car.find_and_name_car(car_name)
else:
await car.connect(car_name)
# Mover hacia adelante por 1 segundo
await car.move_command(car.retreive_precomputed_message(forward=1))
await asyncio.sleep(1)
await car.stop()
# Mover hacia atrás por 1 segundo
await car.move_command(car.retreive_precomputed_message(backward=1))
await asyncio.sleep(1)
await car.stop()
# Prueba de dirección
await car.move_command(car.retreive_precomputed_message(left=1))
await asyncio.sleep(1)
await car.move_command(car.retreive_precomputed_message(right=1))
await asyncio.sleep(1)
await car.stop()
# Mover hacia adelante a la derecha y luego hacia atrás a la izquierda
await car.move_command(car.retreive_precomputed_message(forward=1, right=1))
await asyncio.sleep(1)
await car.move_command(car.retreive_precomputed_message(backward=1, left=1))
await asyncio.sleep(1)
finally:
await car.disconnect()
if __name__ == "__main__":
asyncio.run(main())
Para ejecutar el script:
python main.py
Asegúrate de modificar el valor de car_name en main.py con el nombre que desees asignar a tu auto.
Descubrir IDs y guardar tus autos
Para descubrir el device_id de tu auto y asignarle un nombre personalizado:
-
Enciende tu auto RC y asegúrate de que esté en modo de emparejamiento.
-
En
main.py, asigna un nombre único acar_name:car_name = 'NOMBRE_DE_TU_AUTO' # ...existing code...
-
Ejecuta
main.py. El programa buscará dispositivos BLE cercanos, encontrará tu auto y guardará sudevice_iden el archivovehicle_list.json.
Conectar y controlar varios vehículos
La librería permite controlar múltiples autos RC simultáneamente:
-
Asegúrate de que los nombres y
device_idsde tus autos estén guardados envehicle_list.json. -
En tu script, crea instancias separadas de
ShellMotorsportCarpara cada auto y conéctalas utilizando sus nombres:car1 = ShellMotorsportCar() await car1.connect('NOMBRE_AUTO_1') car2 = ShellMotorsportCar() await car2.connect('NOMBRE_AUTO_2') # Controlar car1 await car1.move_forward() # Controlar car2 await car2.move_backward()
-
Utiliza las funciones de movimiento para controlar cada auto de forma independiente.
Funcionamiento del protocolo de comunicación
Los autos RC de Shell utilizan Bluetooth Low Energy (BLE) para comunicarse. La librería maneja el protocolo de comunicación que incluye:
- Mensajes cifrados: Los comandos se encriptan utilizando AES-128 en modo ECB.
- Servicios y características BLE: Se utiliza el servicio con UUID
fff0y las características de escritura y notificación correspondientes. - Formato de los mensajes: Los mensajes de control tienen una longitud de 16 bytes y contienen información sobre dirección (avance, retroceso, izquierda, derecha) y velocidad.
Para obtener más detalles técnicos, te invitamos a consultar la siguiente documentación con toda la información de los protocolos y formato de los mensajes.
Agradecimientos
Queremos expresar nuestro agradecimiento a Scrool por sus valiosas contribuciones en la ingeniería inversa, que han sido fundamentales para este proyecto.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shell_motorsport-0.1.1.tar.gz.
File metadata
- Download URL: shell_motorsport-0.1.1.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c08339ced3cbedfd81e2a3540c8c72c94ebac4d6a1a87c39b76d7e2d397aebf5
|
|
| MD5 |
b942a953826a412061357a32d56b583a
|
|
| BLAKE2b-256 |
3aaa9e08721c8bf0a55bb4c24e48a65a51cfbe0831324c6824d8b6437e587317
|
File details
Details for the file shell_motorsport-0.1.1-py3-none-any.whl.
File metadata
- Download URL: shell_motorsport-0.1.1-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3bda31780540c6df60c6529f786e324b1e352397ed325ed121287601b42c924d
|
|
| MD5 |
803a0a9be0a7d7ecf78cc6bc6588a248
|
|
| BLAKE2b-256 |
2c6e5db63930748147e634157453d0ee3511867b897f212db9d77edb98b04f40
|