---
# System prepended metadata

title: '# 第34回高専プロコン - "キョウサポ" 開発計画(A)'
tags: [プロコン]

---

## はじめに…

このチームは技術的初心者が多いので支援頂きたいです……

## メンバ割り当て

- 全体
    - デザインの思考
    - さらによくするアイデアの思考

- SKN
    - マイコン(ボタン)関連全て
    - flutter(できれば)

- SMKW
    - flutter入門

- YMD
    - flutter入門

- HYS
    - flutter入門

- YSNG
    - Figmaでデザイン作成
    - flutter入門

- TKHS:協力
    - flutter, nodejs(rails)

## buf

- 教員側で利用するtauriはflutterwebの可能性
- マイコンは私(せっきー)が全てです
- 鯖{`nodejs`,`firebase`}、有識者求む(nodeのほうがいいか？)
- **We want designer** (Figmaでデザインできる人)
    - マテリアルデザインを採用しましょ
- ボタン(物理)はキーボードのような扱いしたい
- nodejsはrailsになるかもしれないしFirebaseかも？
- チャットルーム的なものを立ち上げてそこで生徒先生間のチャットやリアクションができるようにしたい

## じゅんじょ
0. 技術選定
1. デザイン
2. フロント
3. async(並列作業を望む)
    - データフローの決定
    - DB作成
    - デザインの進歩と社会主義国家の建設
    - **THE DEVELOPMENT HAIKU: FUCK FUCK FUCK FUCK FUCK  FUCK FUCK FUCK FUCK FUCK FUCK FUCK  FUCK FUCK FUCK FUCK FUCK**

## 方針

GitHub flowを採用。

詳しくは[この記事](https://zenn.dev/takna/scraps/b7a6623059a4fb)を参照

開発時に困ったけどこれでいけたよ的なことや開発上の留意事項などは随時`README.md`にまとめていく。

## 仕様

### 生徒側
- ログイン機能
- チャット機能
- 先生のみに公開/全体公開の切り替え

### 鯖側
- なんだ？

### 先生側
- 授業の始めぇ！とやめぇ！機能(ルームを開く、閉じるの機能)
- Serialで物理ボタンの信号を受信し、わかるわからないデータとして処理
- 受講者一覧と、各受講者毎の理解度の顔文字表示(分かる・分からない比率　0-33%,34%-66%,67%-100%で顔文字により表示される、詳細なデザインイメージはこちらを参照 https://docs.google.com/presentation/d/12fGPm8z5W4s3iKg4NSLuRyDjGbIaEr1Pd34Oypvfv7s/edit?usp=sharing)
- 授業終了後にその理解度を参照可能
    - その授業での全体の理解度を把握
    - 各個人の理解度を表示
        - 授業を選択(9月11日授業　等)
    - 授業時間を5分ごとに分割し、各区間での理解度をグラフとして表示
        - できれば外れ値が出たときに警告表示のようにする
- コメントをニコニコのように表示
- PCとマイコンはUSBシリアルで接続

## 伝達関数G
### Serialについて

0. 各データは`:wq`と改行文字にて転送終了となります。
1. 「管理用ランダムID、席番号(HYSくんに実装をお願いしました), わかるボタン, わからないボタン」の形式で送られてくる
例: マイコン→PC`0xffff, 1, t, f :wq`
2. 「受信したことを示す信号, 席番号」を送る
例: PC→マイコン`hao 1 :wq`

以降マイコン開発者メモ
1. ボタン押される
2. BLE-MESH(UART)にて送信
3. 1秒毎に再送信
4. 受信済みを受けとれば待機に戻る

## ユーザ側から見た仕様
### ハード

#### 接続
1. わかる・わからないボタンを同時に3秒以上押します
2. 赤いLEDが点灯します
3. 先生PCに繋がっている機体にも同様の操作を行います
4. 赤いLEDが緑に変われば接続完了です

#### 使用方法
1. わかる・わからないボタンを押します
2. 青いLEDが点灯し、データがBluetooth通信を介して転送されます
3. 緑に変われば記録完了となります

## 天安門広場(概郭)

教員PC: CommentScreen機能、レスポンスから理解度算出機能(単元毎の(わかった,わからない)の反応速度でその単元の理解度を評価)、授業後にそれを確認可能
生徒ハード: わかった、わからないボタン

### ハードウェア側

- スレーブがBluetoothMeshによりスレーブtoスレーブで接続
- マスターが教員用PCに接続

## フロント情報

jigbee側と先生側の端末間ってどう通信するんですかね...?
    - シリアルで通信する予定です。UARTで通信を行います。

Bluetooth meshなる技術があるらしい

GEXGEXGEXGEX

## バックエンド情報

~~firebase authとrails APIが共存できるっぽいからその方針で行くかな...?~~

Firebaseだけで完結できそうな気がする

認証にFirebase Authenticationを使ってチャットルームにはFirebase Realtime Database使ったらいける説

## 物理層情報

マイコン: M5Stamp C3
開発環境: VSCode + Platform I/O
使用技術: BLE Mesh
非常用術: 有線(単純デジタル)


## リンク
- https://zenn.dev/kawanji01/articles/40098b11df5f52
- https://zenn.dev/yutasb/articles/2407c5f097b848
- https://qiita.com/mogmet/items/1c9720a311686ff02de3