[Proyecto] Un sistema completo de bicicletas compartidas inteligentes
Una solución completa de bicicletas compartidas que abarca la APP de usuario, el candado inteligente de bicicleta y el panel de administración, con un stack tecnológico integral y una resistencia probada de 89,7 solicitudes/segundo
Origen del proyecto
Para participar en la final del Concurso Nacional de Alfabetización Informática para Jóvenes 2025, completamos las funciones básicas de apertura y cierre de candado según los requisitos del enunciado dado, pero para acercarnos más a la vida real y convertirlo en un producto completo y maduro, desarrollamos más ramas y funciones innovadoras, incluyendo pero no limitado a:Posicionamiento GPS, detección de accidentes y alerta, reporte de fallas de bicicletas, gestión de clúster de datos de bicicletas, pantalla grande de gestión del panel de administración, gestión de datos por usuario, registro y visualización de datos de viajeAbarcandoAPP de usuario, candado inteligente embebido, sistema de gestión del panel de administración y servicio API。
Este artículo analizará en profundidad la arquitectura técnica y los aspectos destacados de la implementación de este sistema.
División de tareas del equipo
| Yo (XHL) | Operación y mantenimiento del servidor, construcción del frontend y backend, APP, toda la parte de software, etc. | Sitio web personal |
| El Sandy | Diseño estructural 3D e impresión del candado de bicicleta, construcción de la estructura de hardware, asistencia en el desarrollo del programa ESP32, etc. | Sitio web personal |
I. Arquitectura general: diseño por capas
Arquitectura de tres capas del proyecto:
| Capa | Stack tecnológico | Función |
|---|---|---|
| Cliente | Vue + Android + SDK de Amap | Visualización de mapas, desbloqueo por escaneo, registro de viajes, centro de usuario |
| Lado de la bicicleta | MicroPython + ESP32 + GPS/MPU6050 | Reporte de posicionamiento, detección de actitud, ejecución de desbloqueo |
| Servicio API | Python Flask | Procesamiento de lógica de negocio, interfaz de datos |
| Capa de datos | MySQL + grupo de conexiones | Almacenamiento de datos |
| Infraestructura | Docker + Nginx + Debian | Despliegue en contenedores, balanceo de carga |

II. Aspectos destacados del servidor: alto rendimiento y alta disponibilidad
1 Diseño del grupo de conexiones
El servidor está desarrollado con Python Flask, y en cuanto a la base de datos, yo mismo encapsulé SQL 类
from dbutils.pooled_db import PooledDB
Datos medidos: el sistema puede soportar aproximadamente 89 solicitudes/segundo de solicitudes de datos, y el servidor nunca se ha caído en las pruebas de ataques de red.
2 Sistema de registros
Todas las solicitudes API se registran en la base de datos a través de la server_log() función, y los tipos de registro se dividen en:
- USUARIO: operaciones de inicio de sesión, registro, consulta de usuarios, etc.
- BICI: desbloqueo de bicicleta, bloqueo, actualización de posición
- ACCI:Alarma de accidente, alarma antirrobo
- PRINCIPAL:Solicitud de reparación, reparación completada
- PANEL:Acceso a datos del backend
Esto no solo facilita el rastreo de problemas, sino que también proporciona una base para el análisis de datos y la toma de decisiones operativas.
3 Integración de alertas de DingTalk
Las alarmas de accidente y las alarmas antirrobo se envían en tiempo real a través del robot de DingTalk:



III. Cerradura inteligente para bicicletas: la combinación de hardware y algoritmos
1 Iteración de la estructura mecánica
El modelado de diseño y la impresión 3D fueron realizados por The Sandy (Sitio web personal)
La carcasa ha pasado por cinco generaciones de iteraciones:
| Versión | Material | Puntos de mejora |
|---|---|---|
| Primera generación | PLA | Verificar la viabilidad de la estructura básica |
| Segunda generación | PLA | Optimizar la solución de lubricante |
| Tercera generación | PLA | Optimización del esquema de fijación |
| Cuarta generación | PETG-CF | Gran mejora en la resistencia |
| Cuarta+ generación | PETG-CF + ventana de PETG | Resolver el problema de bloqueo de señal GPS |
Detalles técnicos:El PETG reforzado con fibra de carbono bloquea la señal GPS, por lo que el área de la antena utiliza un diseño de ventana de PETG específicamente.
2 Detección de actitud y alarma de accidente
Se utiliza un sensor de seis ejes MPU6050 para detectar en tiempo real la actitud del vehículo. Cuando se detecta un impacto anormal (como una caída), el sistema:
- Muestra una notificación en la pantalla OLED, dando al usuario 10 segundos para cancelar(para prevenir falsas alarmas)
- Tras la confirmación, llama a
/bike/accidentinterfaz - El servidor consulta el contacto de emergencia predefinido por el usuario
- El robot de DingTalk envía automáticamente la ubicación del accidente y la información del usuario
3 Gestión de energía y carga fotovoltaica
Panel solar → IC de carga → batería de litio de 7.4V
- Carga fotovoltaica:Panel solar de 6V 3W para suministro continuo de energía
- Estrategia de bajo consumo:Reintento automático del GPS cuando no hay datos, el interruptor reed se activa anormalmente tres veces y luego reporta la falla
IV. Sistema de gestión backend: visualización de datos

El backend utiliza Vue3 + ECharts + API de mapas de Amap para su construcción, las funciones incluyen:
- Panel de control: Total de bicicletas, total de usuarios, total de solicitudes actualizados en tiempo real
- Seguimiento de ubicación de bicicletas: Muestra en tiempo real la distribución de todos los vehículos en el mapa
- Gestión de usuarios: Ver la información de todos los usuarios y los registros de operaciones
- Registros de viaje: Detalles del pedido, reproducción de trayectoria
- Gestión de mantenimiento: Flujo de estado de reporte/reparación
- Auditoría de registros: Consulta completa de registros del servidor, registros de bicicletas y registros de usuarios
V. Especificación de diseño de la interfaz API
Ejemplo de interfaz de cliente
| interfaz | Ruta | Descripción |
|---|---|---|
| Inicio de sesión de usuario | POST /client/login | Devuelve el apodo y el estado |
| Bicicletas cercanas | POST /client/nearby | Consulta por rango de latitud y longitud |
| Desbloquear bicicleta | POST /client/unlock | Crear registro de viaje |
| Obtener registro | POST /client/getrecord | Pedidos históricos |
Interfaz de dispositivo de bicicleta
| interfaz | Ruta | Descripción |
|---|---|---|
| Verificación de estado | POST /bike/check | Devuelve lock/unlock |
| Actualización de ubicación | POST /bike/update | Reporte de trayectoria en tiempo real |
| Alarma de accidente | POST /bike/accident | Activar notificación push de DingTalk |
Diseño de seguridad
Verificación unificada de Token en la interfaz de backend:
{"token": "AABBCC"}
VI. Despliegue y operación y mantenimiento
El proyecto utiliza Contenedorización con DockerDespliegue, ejecutándose en un servidor en la nube:
- OpenResty: Reenvío de puertos, equilibrio de carga
- Contenedor MySQL: Persistencia de datos
- Contenedor Python Flask:Servicio API
- Docker Compose:Inicio de orquestación con un clic
VII. Resumen de aspectos destacados del proyecto
- Cadena tecnológica completa y cerrada:Desde el hardware (ESP32/MPU6050/GPS) hasta la APP (Vue/Android), desde el servidor (Flask) hasta la base de datos (MySQL), y hasta la pantalla grande (Vue3/ECharts), cubriendo toda la cadena
- Prácticas de ingeniería bien implementadas:Grupo de conexiones, clasificación de registros, despliegue con Docker, con disponibilidad para entorno de producción
- Mecanismos de seguridad y emergencia:Alarma de accidente + mecanismo de cancelación de 10 segundos, alarma antirrobo, notificación en tiempo real vía DingTalk
- Rendimiento excelente:Solicitudes concurrentes medidas de 89.7 veces/segundo, el servidor permanece estable sin colapsar bajo pruebas de ataque
Bienvenido el intercambio técnico. Si necesita el código fuente completo y los archivos de hardware, por favorcontactarme