高校生の個人ブログ

[プロジェクト] 完全なスマートシェアサイクルシステム

ユーザーAPP、スマート車載ロック、管理バックエンドをカバーする完全なシェアサイクルソリューション。技術スタックは全面的で、実測耐圧89.7回/秒

プロジェクトの起源

2025全国青少年情報リテラシーコンテスト決勝大会に参加するため、私たちは与えられた課題要件に従って基本的な開錠・施錠機能を完成させましたが、より生活に密着し、完全で成熟した製品にするために、さらに多くの分支および革新的な機能を開発しました。以下を含みますがこれに限りません:GPS測位、事故検知アラート、車両故障報告、車両データクラスタ管理、バックエンド管理大画面、ユーザー単位のデータ管理、走行データ記録表示。カバーするユーザー側APP、組み込みスマートロック、バックエンド管理システムおよびAPIサービス
本記事では、このシステムの技術アーキテクチャと実装のハイライトを深く分析します。

チーム分担

私(XHL)サーバー運用・保守、フロントエンド・バックエンド構築、APP、すべてのソフトウェア部分など個人サイト
ザ・サンディ車載ロックの3D構造設計とプリント、ハードウェア構造の構築、ESP32プログラム開発の支援など個人サイト

一、全体アーキテクチャ:階層設計

プロジェクトの三層アーキテクチャ:

階層技術スタック機能
クライアントVue + Android + 高徳地図 SDK地図表示、QRコードスキャン開錠、走行記録、ユーザーセンター
車両側MicroPython + ESP32 + GPS/MPU6050測位報告、姿勢検知、開錠実行
API サービスPython Flaskビジネスロジック処理、データインターフェース
データ層MySQL + コネクションプールデータストレージ
インフラストラクチャDocker + Nginx + Debianコンテナ化デプロイ、ロードバランシング

二、サーバー側のハイライト:高性能と高可用性

1 コネクションプール設計

サーバー側は Python Flask で開発し、データベースに関しては自分でカプセル化しました SQL

from dbutils.pooled_db import PooledDB

実測データ:システムは約 89回/秒 のデータリクエストに耐えることができ、ネットワーク攻撃テストにおいてサーバー側がクラッシュすることはありませんでした。

2 ログシステム

すべての API リクエストは server_log() 関数を通じてデータベースに記録され、ログタイプは以下に分類されます:

  • USER:ユーザーログイン、登録、照会などの操作
  • BIKE:自転車のロック解除、ロック、位置更新
  • ACCI:事故アラーム、盗難アラーム
  • MAIN:修理依頼、修理完了
  • PANEL:バックエンドデータアクセス
    これは問題の追跡を容易にするだけでなく、データ分析と運用意思決定の基盤も提供します。

3 DingTalkアラート統合

事故アラームと盗難アラームはDingTalkロボットを通じてリアルタイムでプッシュされます:

三、スマート車ロック:ハードウェアとアルゴリズムの融合

1 機械構造のイテレーション

モデリング設計と3Dプリント部分はThe Sandyが担当(個人サイト

外装は5世代のイテレーションを経ました:

バージョン材料改善点
初代PLA基本構造の実現可能性を検証
二代目PLA潤滑油方案の最適化
三代目PLA固定方案の最適化
四代目PETG-CF強度が大幅に向上
四+代目PETG-CF + PETG 開窓GPS信号遮蔽問題を解決

技術的詳細:炭素繊維強化PETGはGPS信号を遮蔽するため、アンテナ領域には専用のPETG開窓設計を採用しています。

2 姿勢検出と事故アラーム

MPU6050六軸センサーを使用して車両の姿勢をリアルタイムで検出します。異常な衝撃(転倒など)を検出すると、システムは:

  1. OLED画面にポップアップ通知を表示し、ユーザーに 10秒のキャンセル時間(誤報防止)
  2. 確認後、 /bike/accident インターフェースを呼び出し
  3. サーバー側でユーザーが登録した緊急連絡先を照会
  4. DingTalkロボットが事故位置とユーザー情報を自動プッシュ

3 電源管理と太陽光充電

ソーラーパネル → 充電IC → 7.4Vリチウム電池
  • 太陽光充電:6V 3Wソーラーパネルで継続的に補充電
  • 低消費電力戦略:GPSデータがない場合は自動リトライ、リードスイッチ異常時は3回リトライ後に故障を報告

四、バックエンド管理システム:データ可視化

バックエンドは Vue3 + ECharts + 高徳地図API を採用して構築、機能は以下を含む:

  • ダッシュボード:自転車総数、ユーザー総数、リクエスト総量をリアルタイム更新
  • 自転車位置追跡:地図上に全車両の分布をリアルタイム表示
  • ユーザー管理:全ユーザー情報と操作記録を表示
  • 骑行記録:注文詳細、軌跡再生
  • メンテナンス管理:修理依頼/修理完了ステータスの遷移
  • ログ監査:サーバーログ、自転車ログ、ユーザーログの全量検索

五、API インターフェース設計仕様

クライアントインターフェース例

インターフェースを呼び出しパス説明
ユーザーログインPOST /client/loginニックネームとステータスを返す
付近の自転車POST /client/nearby経緯度範囲検索
自転車のロック解除POST /client/unlock骑行記録を作成
記録を取得POST /client/getrecord履歴注文

自転車デバイスインターフェース

インターフェースを呼び出しパス説明
ステータスチェックPOST /bike/checklock/unlock を返す
位置更新POST /bike/update軌跡をリアルタイム報告
事故アラートPOST /bike/accidentDingTalkプッシュをトリガー

セキュリティ設計

バックエンドインターフェースは統一して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秒キャンセルメカニズム、盗難アラート、DingTalk リアルタイムプッシュ
  4. 優れたパフォーマンス:実測 89.7 回/秒の同時リクエスト、攻撃テストでもサーバーサイドが安定してクラッシュしない

技術交流を歓迎します。完全なソースコードとハードウェアファイルが必要な方は、連絡