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:

  • 仪表盘:单车总数、用户总数、请求总量实时刷新
  • 单车位置追踪:地图上实时显示所有车辆分布
  • 用户管理:查看所有用户信息及操作记录
  • 骑行记录:订单详情、轨迹回放
  • 维修管理:报修/修复状态流转
  • 日志审计:服务端日志、单车日志、用户日志全量查询

五、API 接口设计规范

客户端接口示例

interfaz路径说明
用户登录POST /client/login返回昵称和状态
附近单车POST /client/nearby经纬度范围查询
解锁单车POST /client/unlock创建骑行记录
获取记录POST /client/getrecord历史订单

单车设备接口

interfaz路径说明
状态检查POST /bike/check返回 lock/unlock
位置更新POST /bike/update实时上报轨迹
事故报警POST /bike/accident触发钉钉推送

安全设计

后台接口统一验证 Token:

{"token": "AABBCC"}

六、部署与运维

项目采用 Docker 容器化部署,运行在云服务器上:

  • OpenResty:端口转发、负载均衡
  • MySQL 容器:数据持久化
  • Python Flask 容器:API 服务
  • Docker Compose:一键编排启动

七、项目亮点总结

  1. 技术栈完整闭环:从硬件(ESP32/MPU6050/GPS)到 APP(Vue/Android),从服务端(Flask)到数据库(MySQL),再到大屏(Vue3/ECharts),覆盖全链路
  2. 工程化实践到位:连接池、日志分类、Docker 部署,具备生产环境可用性
  3. 安全与应急机制:事故报警 + 10 秒取消机制、防盗报警、钉钉实时推送
  4. 性能表现优异:实测 89.7 次/秒并发请求,攻击测试服务端稳定不崩溃

欢迎技术交流。如需完整源代码与硬件文件,请contactarme