paul90539 / IOTAndroidUI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

IOTAndroidUI

環境

  1. Android -> Need API 19 or later
  2. IDE -> Android Studio
  3. PC OS -> Windows 10
  4. Arduino Yun
  5. ibadge hardware encrpty

說明

物聯網安全期末小專題
題目: 遙控車安全連線系統

這repository是Cinent端即Android手機端
Yun 跟 Pi 的部分在 這裡
目的利用手機以加密方式跟遙控車端進行連線並傳輸命令
加密方式是利用ibadge這塊晶片來做硬體的加密
密文傳輸方式是利用MQTT server
車子方面是Yun會解密訊息給然後用socket傳給Pi
然後Pi使用uart傳控制訊息給車子

程式架構

IOTAndroidUI.apk -> Android手機車控介面
|-- MainActivity.java -> 登入介面,顯示取得 Session Key 跟 MQTT的狀況
|-- IOTKeyGet.java -> 有關 http post 資料給 server 取得 key 所有步驟
|-- GlobalVariable.java -> 全域變數,在切換場景時會用的到
|-- ControlActivity.java -> 控制介面,這裡會依照按鈕發送密文指令給Yun
|-- AESCrypt.java -> 將訊息做 AES 的 CBC 方式加密的部分

Arduino Yun
|-- mqtt_basic.ino -> mqtt連線、上傳及取得 Session Key、監聽mqtt發送過來的密文、
                      用 Key 解密、socket 連線到 Pi、發送解密後的命令給Pi

Pi
|-- yunSocket.cpp -> 建立一個 socket server 等 yun 連線,連線後接收傳過來的命令,
                     依照命令使用uart使車子運作(往前、往後等)

系統流程架構

IOTYunAndPi
ibadge -> power on and send session key to ibadge vendor server

IOTAndroidUI
手機 -> post login -> ibadge vendor server
手機 -> post device uid -> ibadge vendor server
手機 <- response session key <- ibadge vendor server
手機 <- response device now alive or not <- ibadge vendor server
手機 -> use session key do AES encrpty command mseeage
手機 -> connect to mqtt server -> publish encrpty mseeage


IOTYunAndPi
Yun <- receive encrpty mseeage <- listen mqtt server
Yun -> use uart to request ibadge device session key
Yun -> use session key do AES decrpty command mseeage
Yun -> use socket send plaintext to raspberryPi
Pi <- receive plaintext command
Pi -> use uart to let car working

參考資料

Android MQTT 教學(Website)
Android MQTT 教學(Video)
Java Json Library 教學
jasperYen GitHub -- use java to do http post example
android.os.NetworkOnMainThreadException
android Global variable 寫法
AES encrpty/decrpty online

About


Languages

Language:Java 100.0%