公共交通オープンデータ × ミニサイネージ × 地域課題解決プチハッカソン 熊本産MaaSミニサイネージ活用勉強会 インプット②ミニバスサイネージの紹介の資料です
2023/03/07公共交通オープンデータ × ミニサイネージ × 地域課題解決プチハッカソン熊本産MaaSミニサイネージ活用勉強会インプット②ミニバスサイネージの紹介
View Slide
がちもとさん本名は、藤本賢志(ふじもとさとし)KumaMCNという技術コミュニティを運営株式会社ナレッジコミュニケーションでAI・XRアプリ開発崇城大学古賀都市計画研究室の技術顧問でまちづくりの研究高専で制御を、大学でセンシングを学び、次は脳みそ@sotongshi
こんなことありませんか?目の前をバスが通り過ぎたしかも2台同時に次のバスは30分後
自分専用のちっちゃなミニサイネージを作りました• 自宅やオフィスに自分だけのサイネージが欲しい• 時刻や〇停前ではなく「あと何分」だけが知りたい• 2021年11月ごろにGTFSリアルタイムの公開
M5Stackとは?• ディスプレイ付きマイコン• WiFiに繋げられる• 様々なセンサーやアクチュエータを取り付け可能https://docs.m5stack.com/en/core/basic_v2.6https://www.switch-science.com/products/7363
こんなにちっちゃい磁石でくっつく
その他https://www.switch-science.com/products/8670 https://www.switch-science.com/products/6470 https://www.switch-science.com/products/7359
その他https://www.switch-science.com/products/7483 https://www.switch-science.com/products/8191
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.txtGTFS(静的) GTFSリアルタイム
システムの流れ1. 運行前にGTFS(静的)からデータを更新2. M5StackのSDカードにWiFi設定、乗車停留所と降車停留所を書き込んでおく3. M5Stackを起動すると1分おきにAPIを叩き、「あと何分」の情報を取得GTFSリアルタイムLambdaS3API GatewayEventBridgeM5StackGTFS(静的)Lambda停留所あと何分
M5Stack 初期設定(Windows)1. ドライバー(CH9102_VCP_SER_Windows)のインストールhttps://docs.m5stack.com/en/quick_start/m5core/arduino2. M5Burner Win10 x64 v3.0のインストール(ファームウェアの更新)https://docs.m5stack.com/en/download3. UIFlowでプログラミングhttps://flow.m5stack.com/4. USBで接続し、プログラムをアップロード
UIFlowでプログラミング
運行前に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. 更新したか/最新かを返すS3EventBridgeGTFS(静的)Lambda
「あと何分」の情報を返す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リアルタイムLambdaS3API Gateway
M5Stackを起動すると1分おきにAPIを叩き、「あと何分」の情報を取得• 必要な情報だけを取得できるAPIを作っておけば、簡単に連携できる• ノーコードでプログラミング• ユーザーはWiFi、乗車停留所、降車停留所の情報をSDカードに書き込んでおくだけ• ボタンが3つあるので、ページの切り替えが可能
私の親も60代になり高齢者と呼ばれ始める免許返納予備軍• 息子:事故る前に免許返納してほしい• 母:免許返納するなら毎日あんた運転してくれっとね?• 息子:それはちょっと