El blog personal de un estudiante de secundaria

[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 SandyDiseñ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:

CapaStack tecnológicoFunción
ClienteVue + Android + SDK de AmapVisualización de mapas, desbloqueo por escaneo, registro de viajes, centro de usuario
Lado de la bicicletaMicroPython + ESP32 + GPS/MPU6050Reporte de posicionamiento, detección de actitud, ejecución de desbloqueo
Servicio APIPython FlaskProcesamiento de lógica de negocio, interfaz de datos
Capa de datosMySQL + grupo de conexionesAlmacenamiento de datos
InfraestructuraDocker + Nginx + DebianDespliegue 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ónMaterialPuntos de mejora
Primera generaciónPLAVerificar la viabilidad de la estructura básica
Segunda generaciónPLAOptimizar la solución de lubricante
Tercera generaciónPLAOptimización del esquema de fijación
Cuarta generaciónPETG-CFGran mejora en la resistencia
Cuarta+ generaciónPETG-CF + ventana de PETGResolver 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:

  1. Muestra una notificación en la pantalla OLED, dando al usuario 10 segundos para cancelar(para prevenir falsas alarmas)
  2. Tras la confirmación, llama a /bike/accident interfaz
  3. El servidor consulta el contacto de emergencia predefinido por el usuario
  4. 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

interfazRutaDescripción
Inicio de sesión de usuarioPOST /client/loginDevuelve el apodo y el estado
Bicicletas cercanasPOST /client/nearbyConsulta por rango de latitud y longitud
Desbloquear bicicletaPOST /client/unlockCrear registro de viaje
Obtener registroPOST /client/getrecordPedidos históricos

Interfaz de dispositivo de bicicleta

interfazRutaDescripción
Verificación de estadoPOST /bike/checkDevuelve lock/unlock
Actualización de ubicaciónPOST /bike/updateReporte de trayectoria en tiempo real
Alarma de accidentePOST /bike/accidentActivar 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

  1. 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
  2. Prácticas de ingeniería bien implementadas:Grupo de conexiones, clasificación de registros, despliegue con Docker, con disponibilidad para entorno de producción
  3. 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
  4. 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