Le blog personnel d'un lycéen

[Projet] Un système complet de vélos en libre-service intelligent

Aperçu des projets

Une solution complète de vélos en libre-service couvrant l'application utilisateur, la serrure intelligente et le back-office de gestion, avec une stack technique complète, testée résistante à 89,7 requêtes/seconde

Origine du projet

Pour participer à la finale du Concours national d'alphabétisation informationnelle pour les jeunes 2025, nous avons réalisé les fonctions de base de verrouillage/déverrouillage selon les exigences du sujet donné, mais pour nous rapprocher davantage de la vie réelle et en faire un produit complet et mature, nous avons développé davantage de branches et de fonctionnalités innovantes, incluant mais sans s'y limiter :Localisation GPS, détection d'accident et alerte, signalement de panne de véhicule, gestion en cluster des données des véhicules, grand écran de gestion back-office, gestion des données par utilisateur, enregistrement et affichage des données de trajetCouvrantl'application côté utilisateur, la serrure intelligente embarquée, le système de gestion back-office ainsi que le service API
Cet article analysera en profondeur l'architecture technique et les points forts de la mise en œuvre de ce système.

Répartition des tâches de l'équipe

Moi (XHL)Exploitation et maintenance du serveur, mise en place front-end et back-end, application, toute la partie logicielle, etc.Site web personnel
The SandyConception 3D et impression de la structure de la serrure, construction de la structure matérielle, assistance au développement du programme ESP32, etc.Site web personnel

I. Architecture globale : conception en couches

Architecture en trois couches du projet :

CoucheStack techniqueFonction
ClientVue + Android + SDK AmapAffichage de la carte, déverrouillage par scan, enregistrement de trajet, centre utilisateur
Côté véloMicroPython + ESP32 + GPS/MPU6050Remontée de position, détection d'attitude, exécution du déverrouillage
Service APIPython FlaskTraitement de la logique métier, interface de données
Couche de donnéesMySQL + pool de connexionsStockage de données
InfrastructureDocker + Nginx + DebianDéploiement conteneurisé, équilibrage de charge

II. Points forts du serveur : haute performance et haute disponibilité

1 Conception du pool de connexions

Le serveur est développé sur la base de Python Flask, et pour la base de données j'ai encapsulé moi-même SQL

from dbutils.pooled_db import PooledDB

Données mesurées: le système peut supporter environ 89 fois/seconde de requêtes de données, et le serveur n'a jamais planté lors des tests d'attaque réseau.

2 Système de journalisation

Toutes les requêtes API sont enregistrées dans la base de données via la fonction server_log() , les types de journaux sont divisés en :

  • UTILISATEUR: opérations de connexion, d'inscription, de requête des utilisateurs, etc.
  • VÉLO: déverrouillage du vélo, verrouillage, mise à jour de la position
  • ACCI: Alarme d'accident, alarme antivol
  • MAIN: Demande de réparation, réparation terminée
  • PANEL: Accès aux données backend
    Cela facilite non seulement la traçabilité des problèmes, mais fournit également une base pour l'analyse de données et les décisions opérationnelles.

3 Intégration des alertes DingTalk

Les alarmes d'accident et les alarmes antivol sont poussées en temps réel via le robot DingTalk :

III. Serrure intelligente de vélo : combinaison du matériel et des algorithmes

1 Itération de la structure mécanique

La conception de modélisation et l'impression 3D ont été réalisées par The Sandy (Site web personnel

Le boîtier a connu cinq générations d'itération :

VersionMatériauPoints d'amélioration
Première générationPLAValidation de la faisabilité de la structure de base
Deuxième générationPLAOptimisation de la solution de lubrifiant
Troisième générationPLAOptimisation de la solution de fixation
Quatrième générationPETG-CFAmélioration considérable de la résistance
Quatrième+ générationPETG-CF + fenêtre PETGRésolution du problème de blocage du signal GPS

Détails techniques: Le PETG renforcé de fibre de carbone bloque le signal GPS, c'est pourquoi la zone de l'antenne utilise spécialement une conception à fenêtre en PETG.

2 Détection d'attitude et alarme d'accident

Utilisation du capteur six axes MPU6050 pour détecter en temps réel l'attitude du véhicule. Lorsqu'un impact anormal est détecté (comme une chute), le système :

  1. Affiche une notification via l'écran OLED, donnant à l'utilisateur 10 secondes pour annuler(pour éviter les fausses alertes)
  2. Après confirmation, appelle /bike/accident l'interface
  3. Le serveur consulte les contacts d'urgence prédéfinis par l'utilisateur
  4. Le robot DingTalk pousse automatiquement la position de l'accident et les informations de l'utilisateur

3 Gestion de l'alimentation et recharge photovoltaïque

Panneau solaire → IC de charge → Batterie lithium 7,4V
  • Recharge photovoltaïque: Panneau solaire 6V 3W pour une recharge continue
  • Stratégie de faible consommation: Nouvelle tentative automatique lorsque le GPS n'a pas de données, après trois déclenchements anormaux du interrupteur à lames souples, un rapport de panne est envoyé

IV. Système de gestion backend : visualisation des données

Le backend utilise Vue3 + ECharts + API de cartographie Amap 构建,功能包括:

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

五、API 接口设计规范

客户端接口示例

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

单车设备接口

l'interface路径说明
状态检查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 次/秒并发请求,攻击测试服务端稳定不崩溃

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