Upgrade to Pro — share decks privately, control downloads, hide ads and more …

インプット②ミニバスサイネージの紹介

 インプット②ミニバスサイネージの紹介

公共交通オープンデータ × ミニサイネージ × 地域課題解決プチハッカソン
熊本産MaaSミニサイネージ活用勉強会
インプット②ミニバスサイネージの紹介の資料です

Satoshi Gachi Fujimoto

March 07, 2023
Tweet

More Decks by Satoshi Gachi Fujimoto

Other Decks in Technology

Transcript

  1. 2023/03/07
    公共交通オープンデータ × ミニサイネージ × 地域課題解決プチハッカソン
    熊本産MaaSミニサイネージ活用勉強会
    インプット②
    ミニバスサイネージの紹介

    View full-size slide

  2. がちもとさん
    本名は、藤本賢志(ふじもとさとし)
    KumaMCNという技術コミュニティを運営
    株式会社ナレッジコミュニケーションでAI・XRアプリ開発
    崇城大学古賀都市計画研究室の技術顧問でまちづくりの研究
    高専で制御を、大学でセンシングを学び、次は脳みそ
    @sotongshi

    View full-size slide

  3. こんなことありませんか?
    目の前をバス
    が通り過ぎた
    しかも2台同時に
    次のバスは
    30分後

    View full-size slide

  4. 自分専用のちっちゃなミニサイネージを作りました
    • 自宅やオフィスに自分だけのサイネージが欲しい
    • 時刻や〇停前ではなく「あと何分」だけが知りたい
    • 2021年11月ごろにGTFSリアルタイムの公開

    View full-size slide

  5. M5Stackとは?
    • ディスプレイ付きマイコン
    • WiFiに繋げられる
    • 様々なセンサーやアクチュエータを取り付け可能
    https://docs.m5stack.com/en/core/basic_v2.6
    https://www.switch-science.com/products/7363

    View full-size slide

  6. こんなに
    ちっちゃい
    磁石でくっつく

    View full-size slide

  7. その他
    https://www.switch-science.com/products/8670 https://www.switch-science.com/products/6470 https://www.switch-science.com/products/7359

    View full-size slide

  8. その他
    https://www.switch-science.com/products/7483 https://www.switch-science.com/products/8191

    View full-size slide

  9. GTFS(General Transit Feed Specification)とは?
    • 標準的なバス情報フォーマット
    • バスきたくまさんで使用しているデータをオープンデータ化
    • GTFS(静的):経路情報や便情報など(CSV形式)
    • GTFSリアルタイム:車両の移動状況に関する情報や車両の位置情報など(JSON形式)
    https://km.bus-vision.jp/kumamoto/view/opendataKuma.html
    事業者情報 agency.txt
    事業者追加情報 agency_jp.txt
    運行区分情報 calendar.txt
    運行日情報 calendar_dates.txt
    運賃属性情報 fare_attributes.txt
    運賃定義情報 fare_rules.txt
    提供情報 feed_info.txt
    営業所情報 office_jp.txt
    経路情報 routes.txt
    経路追加情報 routes_jp.txt
    通過時刻情報 stop_times.txt
    停留所・標柱情報 stops.txt
    翻訳情報 translations.txt
    便情報 trips.txt
    GTFS(静的) GTFSリアルタイム

    View full-size slide

  10. システムの流れ
    1. 運行前にGTFS(静的)からデータを更新
    2. M5StackのSDカードにWiFi設定、乗車停留所と降車停留所を書き込んでおく
    3. M5Stackを起動すると1分おきにAPIを叩き、「あと何分」の情報を取得
    GTFS
    リアルタイム
    Lambda
    S3
    API Gateway
    EventBridge
    M5Stack
    GTFS(静的)
    Lambda
    停留所
    あと何分

    View full-size slide

  11. M5Stack 初期設定(Windows)
    1. ドライバー(CH9102_VCP_SER_Windows)のインストール
    https://docs.m5stack.com/en/quick_start/m5core/arduino
    2. M5Burner Win10 x64 v3.0のインストール(ファームウェアの更新)
    https://docs.m5stack.com/en/download
    3. UIFlowでプログラミング
    https://flow.m5stack.com/
    4. USBで接続し、プログラムをアップロード

    View full-size slide

  12. UIFlowでプログラミング

    View full-size slide

  13. 運行前にGTFS(静的)からデータを自動更新
    • EventBridgeを用いて毎朝4:15~5:30の間に15分おきにLambda関数(update)を実行
    • Lambda関数(update)
    1. GTFS(静的)データを取得
    2. 提供情報(feed_info.txt)のfeed_versionが更新されていたらS3に保存
    • 停留所情報(stops.csv)→ バス停一覧(stop_names.csv)を作成
    • 経路情報(routes.csv)
    • 便情報(trips.csv)
    • 通過時刻情報(stop_times.csv)
    • 運行区分情報(calendar.csv)
    • 運行日情報(calendar_dates.csv)
    3. 更新したか/最新かを返す
    S3
    EventBridge
    GTFS(静的)
    Lambda

    View full-size slide

  14. 「あと何分」の情報を返すAPI
    • Lambda関数(minutes)
    1. 乗車停留所→降車停留所の時刻表を作成
    • 停留所情報(stops)から一致するバス停名のstop_idを取得
    • stop_idに対応する通過時刻情報(stop_times)を取得
    • trip_idに対応する便情報(trips)を取得
    2. service_idと一致する運行区分(calendar)と運行日情報(calendar_dates)から運行状況を確認
    3. GTFSリアルタイムのTrip_Updateからtrip_idとstop_idが一致する通過時刻を取得
    4. 通過時刻から現在時刻を引いて「あと何分」のリストを返す GTFS
    リアルタイム
    Lambda
    S3
    API Gateway

    View full-size slide

  15. M5Stackを起動すると1分おきにAPIを叩き、「あと何分」の情報を取得
    • 必要な情報だけを取得できるAPIを作っておけば、簡単に連携できる
    • ノーコードでプログラミング
    • ユーザーはWiFi、乗車停留所、降車停留所の情報をSDカードに書き込んでおくだけ
    • ボタンが3つあるので、ページの切り替えが可能

    View full-size slide

  16. 私の親も60代になり高齢者と呼ばれ始める免許返納予備軍
    • 息子:事故る前に免許返納してほしい
    • 母:免許返納するなら毎日あんた運転してくれっとね?
    • 息子:それはちょっと

    View full-size slide