SlideShare a Scribd company logo
1 of 30
艾鍗學院
Linux工程師人才養成班
GPS + Google Fusion Table
雲端應用
時間:2015/07/23
地點:艾鍗學院
內容摘要
1. 專題概要
2. 關鍵技術簡介
3. 硬體架構
4. 軟體架構
5. 後續改善方向
附錄: 關鍵字
1. 專題概要
移動式
GPS接收裝置
Google Cloud
Fusion Table
手機
(Browser)
電腦
(Browser)平板裝置
(Browser)
網際網路
NMEA-0183
座標資訊
Google
座標資訊 Google Map
及位置記錄點
後續可擴充
增加各種不
同統計方析
資訊
Google 各種雲端應用服務
2. 關鍵技術簡介
2-1. GPS
2-2. Fusion Table
2-1. GPS (1)
[ 圖片來源: wiki網站 https://en.wikipedia.org/wiki/NMEA_0183 ]
市面上一般GPS模組的資料輸出格式: NMEA-0183
在此我們採用GPRMC sentence的資訊
(NMEA: National Marine Electronics Association)
2-1. GPS (2)
RMC: GPS建議最小傳輸資料
( $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11> )
範例說明:
$GPRMC,055148,A,2407.8945,N,12041.7649,E,000.0,000.0,061196,003.1,W*69
1) $GPRMC,055148 接收定位時間 (UTC time) 格式:時時分分秒秒.秒秒 (HHMMSS.SS)
2) A = 定位狀態,A:資料可用,V:資料不可用
3) 2407.8945 = 緯度,格式:度度分分.分分分分 (DDMM.MMMMMM)
4) N = 緯度區分,北半球(N)或南半球(S)
5) 12041.7649 = 經度,格式:度度度分分.分分分分 (DDDMM.MMMMMM)
6) E = 經度區分,東(E)半球或西(W)半球
7) 000.0 = 相對航行速度, 0.0 至 1851.8 knots(節)
8) 000.0 = 相對航行方向,000.0 至 359.9度。實際值
9) 061196 = 日期,格式:日日月月年年 (ddmmyy)
10) 003.1 = 磁極變量,000.0 至180.0度
11) W = 磁方位角(西W或東E)度數
12) *hh = Checksum.(檢查位元)
2-1. GPS (3)
NMEA-0183 (GPS) 轉 Google Map 座標 :
DDMM.MMMMMM
Latitude:
Longitude:
DD + MM.MMMMMM/60
D: Degree
M: Minute
DDDMM.MMMMMM DDD + MM.MMMMMM/60
2-2. Fusion Tables (1)
簡易工作表
[ 圖片來源: Google 網站
https://developers.google.com/identity/protocols/OAuth2ForDevices ]
Google提供的雲端應用服務
目前仍在實驗階段
以簡易的工作表 (Spread Sheet) 建立資料庫
自動從工作表轉換出:
- 各種統計圖表
- 分析曲線
- 客制化地圖
2-2. Fusion Tables (2)
Google的官方定義 :
Google Fusion Tables is a web application used for sharing, visualizing, and
publishing tabular data.
You can upload your own CSV, KML, ODS, XLS, or Google Spreadsheet data to a
Fusion Tables table.
Once your data is in Fusion Tables, you can collaborate on it with others in real
time, publish it for Google Search, create map and chart visualizations for
private use or for embedding on websites, filter it according to specific criteria,
and update the data behind your visualizations or filters at any time.
2-2. Fusion Tables (3)
Google Cloud
Google
各種雲端應用服務Google
Developers Console
(提供各種API)
Fusion Table
API
Fusion Table
user
Browser裝置應用程式
Google針對各種雲端應用服務
提供相對應的API
針對Fusion Tables, 其最新版
API為Fusion Tables API v2.0
2-2. Fusion Tables (4)
Google針對各種雲端應用服務所提供的API, 可在Google API Explorer中找到:
https://developers.google.com/apis-explorer/#p/
2-2. Fusion Tables (5)
Google對於 Fusion Tables API 的官方定義 :
The Fusion Tables API allows you to use HTTP requests to programmatically
to perform these tasks, which are also available in the Fusion Tables web
application:
1. create and delete tables
2. read and modify table metadata such as table and column names and
column types
3. insert, update, and delete the rows in a table
4. create, update, and delete settings for certain visualizations
5. query the rows in a table
2-2. Fusion Tables (6)
Google API 所共用的
認證機制為
“OAuth 2.0”
非Andriod或iOS的行動裝
置, 可採用
“OAuth 2.0 for Devices”
[ 圖片來源: Google 網站
https://developers.google.com/identity/protocols/OAuth2ForDevices ]
2-2. Fusion Tables (7)
[ 圖片來源: Google 網站
https://developers.google.com/identity/protocols/OAuth2ForDevices ]
Access Token在產生後3600秒
便會過期, 因此需要適時進行更新:
1. 使用:
- refresh token
- client ID,
- client secret
以POST request向Google
Server要求更新的Access
Token
2. 平常Refresh Token不須更新
3. 但每當重做認證(產生並取得更新
的authorization code)時, 就須再
取得更新的
Refresh Token
Token的更新
3. 硬體架構
3-1. 整體硬體架構
3-2. GPS 接收模組
3-3. UART-USB 轉換模組
3-1. 整體硬體架構
GPS
接收模組
(gy-gps-6mv2)
Raspberry Pi 2B
(CPU: BCM2836)
UART-USB
轉換器
(FTDI FT-232R)
UART
USB2.0
UART
USB2.0
Ethernet
Internet Access
3-2. GPS接收模組 (1)
GPS模組 NEO-6 u-blox 6 的性能規格
3-2. GPS接收模組 (2)
[ 圖片來源: uBox NEO-6 u-blox 6 GPS Modules Datasheet ]
GPS模組 NEO-6 u-blox 6 內部方塊圖
3-3. UART-USB轉換模組
核心晶片: Silicon Lab2102
4. 軟體架構
4-1. 整體軟體架構
4-2. 軟體流程
4-3. cURL request
4-1. 軟體架構
主程式:
- gpsrx.c
副程式:
- auth_req.c
產出檔案:
- tok_update.txt
儲存從 Google Server 取得的
最新回應, 含 access token )
輸入檔案: (僅在模擬測試模式時需要)
- 檔案名稱由 gpsrx 程式指令的第二
引數決定
例如: 執行時主程式 gpsrx 的指令為
$> gpsrx –t gsp_sim
則程式會自動依序尋找 ”gpsrx00”, “gpsrx01”,
“gpsrx02”, …. 等檔案做為每一個cycle的
NMEA-0183 輸入
gpsrx.c
Auth_req.c
System Call
NMEA-0183
記錄(Log)檔
Goggle回應
訊息檔
tok_update.txt
NMEA-0183
模擬資料
NMEA-0183
模擬資料
NMEA-0183
模擬資料
Xxx00, xxx01, xxx02
gps_log.txt
4-2. 軟體流程 (1)
開啟 GPS NMEA-0183 -> 讀取字串
字串 Parsing & Decoding :
1. 取得 GPRMC sentence
2. 取得 Latitude, Longitude, Date, Time
3. 將 Latitude/Longitude 資訊由NMEA
轉換為 GoogleMap 格式
透過cURL上傳HTTP POST/GET指令給
Google Fusion Table:
1. 更新 Access Token
2. 在 Fusion Table中加入新資料
備存記錄
正常動作模式
NMEA-0183
記錄(Log)檔Goggle回應
訊息檔
tok_update.txt
gps_log.txt
NMEA-0183
模擬資料
NMEA-0183
模擬資料
4-2. 軟體流程 (2)
開啟模擬資料檔案 -> 讀取字串
字串 Parsing & Decoding :
1. 取得 GPRMC sentence
2. 取得 Latitude, Longitude, Date, Time
3. 將 Latitude/Longitude 資訊由NMEA
轉換為 GoogleMap 格式
透過cURL上傳HTTP POST/GET指令給
Google Fusion Table:
1. 更新 Access Token
2. 在 Fusion Table中加入新資料
備存記錄
模擬測試 (file feeding) 模式
NMEA-0183
模擬資料
NMEA-0183
記錄(Log)檔Goggle回應
訊息檔
tok_update.txt
gps_log.txt
Xxx00, xxx01, xxx02
4-3. cURL request (1)
GET request:
- 只能讀取資料, 不允許任何修改動作
POST request:
- 可允許各種資料修改動作, 如:
插入/移除欄位,
建立新Table,
更新內容等….
- 需提送Access Token, Refresh Token, Client ID, Client Secret
等認證資訊
Fusion Tables API 對於資料存取的權限限制:
4-3. cURL request (2)
更新 (Refresh) Access Token (POST type request)
Request
root@raspberrypi:~# curl -d "client_id=530304002742-
55mhfghci5o59tur1tgt183p38ceh08t.apps.googleusercontent.com&client_secret=xtogS1gi_MSl_7apvzfrsvmK&r
efresh_token=1/97_rdY40n2PusItQPVPENp5ECTZYqFvUobJZB09nOxlIgOrJDtdun6zK6XiATCKT&grant_type=r
efresh_token"
Response
https://www.googleapis.com/oauth2/v3/token
{
"access_token":"ya29.tAHsfamfZ4CUSiMwXG0TztY9DYkcj3Zs988p9Wr_GrZz5vRbxkGHFoQiHxDMNsuEZf8-",
"token_type": "Bearer",
"expires_in": 3600
}
4-3. cURL request (3)
重做 Authorization (POST type request)
Request
root@raspberrypi:~# curl -d "client_id=530304002742-
55mhfghci5o59tur1tgt183p38ceh08t.apps.googleusercontent.com&client_secret=xtogS1gi_MSl_7apvzfrsvmK&c
ode=ZMUM-BZYM4/b1grhomQLBtifJxKrATFJ-
m8AoYV7tr3RfN1BLvOTlo&grant_type=http://oauth.net/grant_type/device/1.0"
Response
https://www.googleapis.com/oauth2/v3/token
{
"access_token":
"ya29.tAH13KudNYGAmG9rtdXLJjO_QNPjbJcvEkJEeG_C3MxqWh5T9sFbbrguWh77llT6JbVL",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "1/97_rdY40n2PusItQPVPENp5ECTZYqFvUobJZB09nOxlIgOrJDtdun6zK6XiATCKT"
}
4-3. cURL request (4)
插入一筆新資料 ROW (POST type request)
Request
root@raspberrypi:~# curl -H "Authorization: Bearer
ya29.tAH13KudNYGAmG9rtdXLJjO_QNPjbJcvEkJEeG_C3MxqWh5T9sFbbrguWh77llT6JbVL" -d "sql=INSERT
INTO 1fV5mXuKgG5cCck1cAVQX0G7HVTjfdm1SqeYSdmXU (number,Address)VALUES(43,'IT robotics lab')"
Response
"https://www.googleapis.com/fusiontables/v2/query"
{
"kind": "fusiontables#sqlresponse",
"columns": [
"rowid"
],
"rows": [
[
"5002"
]
]
}
GPS NMEA-0183 輸出字串接收
字串 Parsing & Decoding :
1. 取得 GPRMC sentence
2. 取得 Latitude, Longitude, Date, Time
3. 將 Latitude/Longitude 資訊由NMEA
轉換為 GoogleMap 格式
透過cURL上傳HTTP POST/GET指令給
Google Fusion Table:
1. 更新 Access Token
2. 在 Fusion Table中加入新資料
備存記錄
5. 後續改進方向 (1)
加入GPRMC的多筆
數據分析處理能力,
並依距離變化合理性
來判斷與捨棄非正常
資訊
1. 重新與網路連線
(e.g. WiFi) 時的
資料補上傳, or
2. GSM即時上傳
GPS NMEA-0183 輸出字串接收
字串 Parsing & Decoding :
1. 取得 GPRMC sentence
2. 取得 Latitude, Longitude, Date, Time
3. 將 Latitude/Longitude 資訊由NMEA
轉換為 GoogleMap 格式
透過cURL上傳HTTP POST/GET指令給
Google Fusion Table:
1. 更新 Access Token
2. 在 Fusion Table中加入新資料
備存記錄
5. 後續改進方向 (2)
將目前使用system
call方式執行cURL,
改為直接在程式中使
用cURL API
改善資料搜集與上傳
的頻率精準控制
附錄: 關鍵字

More Related Content

What's hot

BLE室內定位技術實現龍珠雷達裝置
BLE室內定位技術實現龍珠雷達裝置BLE室內定位技術實現龍珠雷達裝置
BLE室內定位技術實現龍珠雷達裝置艾鍗科技
 
Raspberry Pi 溫濕度發報機
Raspberry Pi 溫濕度發報機Raspberry Pi 溫濕度發報機
Raspberry Pi 溫濕度發報機艾鍗科技
 
使用 DesignSpark PCB 軟體製作感應燈電路板
使用 DesignSpark PCB 軟體製作感應燈電路板使用 DesignSpark PCB 軟體製作感應燈電路板
使用 DesignSpark PCB 軟體製作感應燈電路板CAVEDU Education
 
用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人艾鍗科技
 
Deployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cnDeployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cnahnlabchina
 
第三章Ti msp430平台介紹 v3
第三章Ti msp430平台介紹 v3第三章Ti msp430平台介紹 v3
第三章Ti msp430平台介紹 v3冠宇 陳
 
成果展簡報-Zigbee無線自動燈光及溫度調控系統
成果展簡報-Zigbee無線自動燈光及溫度調控系統成果展簡報-Zigbee無線自動燈光及溫度調控系統
成果展簡報-Zigbee無線自動燈光及溫度調控系統艾鍗科技
 
Deployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cnDeployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cnahnlabchina
 
保全機器人與居家防護系統實作
保全機器人與居家防護系統實作保全機器人與居家防護系統實作
保全機器人與居家防護系統實作艾鍗科技
 
Colonel——视频转码集群程序
Colonel——视频转码集群程序Colonel——视频转码集群程序
Colonel——视频转码集群程序pluschen
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階Simen Li
 
艾鍗學院-單晶片韌體-CC2500通訊實驗
艾鍗學院-單晶片韌體-CC2500通訊實驗艾鍗學院-單晶片韌體-CC2500通訊實驗
艾鍗學院-單晶片韌體-CC2500通訊實驗艾鍗科技
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linuxFeng Yu
 
第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络F.l. Yu
 
王團 01-15 考題 & 解答
王團  01-15 考題 & 解答王團  01-15 考題 & 解答
王團 01-15 考題 & 解答T客邦
 
家庭醫療系統 PCMH
家庭醫療系統 PCMH家庭醫療系統 PCMH
家庭醫療系統 PCMH艾鍗科技
 
Raspberry Pi 數位商品貨架系統
Raspberry Pi 數位商品貨架系統Raspberry Pi 數位商品貨架系統
Raspberry Pi 數位商品貨架系統艾鍗科技
 

What's hot (20)

BLE室內定位技術實現龍珠雷達裝置
BLE室內定位技術實現龍珠雷達裝置BLE室內定位技術實現龍珠雷達裝置
BLE室內定位技術實現龍珠雷達裝置
 
Raspberry Pi 溫濕度發報機
Raspberry Pi 溫濕度發報機Raspberry Pi 溫濕度發報機
Raspberry Pi 溫濕度發報機
 
18 cpu02
18 cpu0218 cpu02
18 cpu02
 
使用 DesignSpark PCB 軟體製作感應燈電路板
使用 DesignSpark PCB 軟體製作感應燈電路板使用 DesignSpark PCB 軟體製作感應燈電路板
使用 DesignSpark PCB 軟體製作感應燈電路板
 
用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人
 
Deployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cnDeployment instruction tg4100 f-ig_cn
Deployment instruction tg4100 f-ig_cn
 
第三章Ti msp430平台介紹 v3
第三章Ti msp430平台介紹 v3第三章Ti msp430平台介紹 v3
第三章Ti msp430平台介紹 v3
 
成果展簡報-Zigbee無線自動燈光及溫度調控系統
成果展簡報-Zigbee無線自動燈光及溫度調控系統成果展簡報-Zigbee無線自動燈光及溫度調控系統
成果展簡報-Zigbee無線自動燈光及溫度調控系統
 
Deployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cnDeployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cn
 
保全機器人與居家防護系統實作
保全機器人與居家防護系統實作保全機器人與居家防護系統實作
保全機器人與居家防護系統實作
 
Colonel——视频转码集群程序
Colonel——视频转码集群程序Colonel——视频转码集群程序
Colonel——视频转码集群程序
 
20 cpu04
20 cpu0420 cpu04
20 cpu04
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階
 
艾鍗學院-單晶片韌體-CC2500通訊實驗
艾鍗學院-單晶片韌體-CC2500通訊實驗艾鍗學院-單晶片韌體-CC2500通訊實驗
艾鍗學院-單晶片韌體-CC2500通訊實驗
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linux
 
第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络
 
王團 01-15 考題 & 解答
王團  01-15 考題 & 解答王團  01-15 考題 & 解答
王團 01-15 考題 & 解答
 
家庭醫療系統 PCMH
家庭醫療系統 PCMH家庭醫療系統 PCMH
家庭醫療系統 PCMH
 
第1章
第1章第1章
第1章
 
Raspberry Pi 數位商品貨架系統
Raspberry Pi 數位商品貨架系統Raspberry Pi 數位商品貨架系統
Raspberry Pi 數位商品貨架系統
 

Similar to GPS + Google fusion table 雲端應用

Using google appengine_final2
Using google appengine_final2Using google appengine_final2
Using google appengine_final2Wei Sun
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇建興 王
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)Wei Sun
 
Using google appengine_final
Using google appengine_finalUsing google appengine_final
Using google appengine_finalWei Sun
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用Philip Zheng
 
Google雲端備份與虛擬伺服器建置工作坊
Google雲端備份與虛擬伺服器建置工作坊Google雲端備份與虛擬伺服器建置工作坊
Google雲端備份與虛擬伺服器建置工作坊Chung-Yi Huang
 
Kubernetes device plugins
Kubernetes device pluginsKubernetes device plugins
Kubernetes device pluginsssuser75c76a2
 
基于 lucene 的站内搜索
基于 lucene 的站内搜索基于 lucene 的站内搜索
基于 lucene 的站内搜索fulin tang
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027Wei Sun
 
2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aksRoberson Liou
 
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)Chengjen Lee
 
Android系统移植技术详解
Android系统移植技术详解Android系统移植技术详解
Android系统移植技术详解zzc89522
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Betazhu02
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Betafulin tang
 
IBM Cloud Private Introduction
IBM Cloud Private IntroductionIBM Cloud Private Introduction
IBM Cloud Private IntroductionGuangya Liu
 
Firefox OS Overview
Firefox OS OverviewFirefox OS Overview
Firefox OS OverviewYan-ren Tsai
 
簡報1
簡報1簡報1
簡報1kk88
 
新聞整理
新聞整理新聞整理
新聞整理kk88
 

Similar to GPS + Google fusion table 雲端應用 (20)

Using google appengine_final2
Using google appengine_final2Using google appengine_final2
Using google appengine_final2
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
 
Using google appengine_final
Using google appengine_finalUsing google appengine_final
Using google appengine_final
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
 
Google雲端備份與虛擬伺服器建置工作坊
Google雲端備份與虛擬伺服器建置工作坊Google雲端備份與虛擬伺服器建置工作坊
Google雲端備份與虛擬伺服器建置工作坊
 
Kubernetes device plugins
Kubernetes device pluginsKubernetes device plugins
Kubernetes device plugins
 
基于 lucene 的站内搜索
基于 lucene 的站内搜索基于 lucene 的站内搜索
基于 lucene 的站内搜索
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
 
2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks
 
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)
 
Android系统移植技术详解
Android系统移植技术详解Android系统移植技术详解
Android系统移植技术详解
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
 
IBM Cloud Private Introduction
IBM Cloud Private IntroductionIBM Cloud Private Introduction
IBM Cloud Private Introduction
 
Firefox OS Overview
Firefox OS OverviewFirefox OS Overview
Firefox OS Overview
 
Webrtc
WebrtcWebrtc
Webrtc
 
簡報1
簡報1簡報1
簡報1
 
新聞整理
新聞整理新聞整理
新聞整理
 

More from 艾鍗科技

TinyML - 4 speech recognition
TinyML - 4 speech recognition TinyML - 4 speech recognition
TinyML - 4 speech recognition 艾鍗科技
 
Appendix 1 Goolge colab
Appendix 1 Goolge colabAppendix 1 Goolge colab
Appendix 1 Goolge colab艾鍗科技
 
Project-IOT於餐館系統的應用
Project-IOT於餐館系統的應用Project-IOT於餐館系統的應用
Project-IOT於餐館系統的應用艾鍗科技
 
02 IoT implementation
02 IoT implementation02 IoT implementation
02 IoT implementation艾鍗科技
 
Tiny ML for spark Fun Edge
Tiny ML for spark Fun EdgeTiny ML for spark Fun Edge
Tiny ML for spark Fun Edge艾鍗科技
 
2. 機器學習簡介
2. 機器學習簡介2. 機器學習簡介
2. 機器學習簡介艾鍗科技
 
5.MLP(Multi-Layer Perceptron)
5.MLP(Multi-Layer Perceptron) 5.MLP(Multi-Layer Perceptron)
5.MLP(Multi-Layer Perceptron) 艾鍗科技
 
心率血氧檢測與運動促進
心率血氧檢測與運動促進心率血氧檢測與運動促進
心率血氧檢測與運動促進艾鍗科技
 
利用音樂&情境燈幫助放鬆
利用音樂&情境燈幫助放鬆利用音樂&情境燈幫助放鬆
利用音樂&情境燈幫助放鬆艾鍗科技
 
IoT感測器驅動程式 在樹莓派上實作
IoT感測器驅動程式在樹莓派上實作IoT感測器驅動程式在樹莓派上實作
IoT感測器驅動程式 在樹莓派上實作艾鍗科技
 
無線聲控遙控車
無線聲控遙控車無線聲控遙控車
無線聲控遙控車艾鍗科技
 
最佳光源的研究和實作
最佳光源的研究和實作最佳光源的研究和實作
最佳光源的研究和實作 艾鍗科技
 
無線監控網路攝影機與控制自走車
無線監控網路攝影機與控制自走車無線監控網路攝影機與控制自走車
無線監控網路攝影機與控制自走車 艾鍗科技
 
Reinforcement Learning
Reinforcement LearningReinforcement Learning
Reinforcement Learning艾鍗科技
 
人臉辨識考勤系統
人臉辨識考勤系統人臉辨識考勤系統
人臉辨識考勤系統艾鍗科技
 
智慧家庭Smart Home
智慧家庭Smart Home智慧家庭Smart Home
智慧家庭Smart Home艾鍗科技
 

More from 艾鍗科技 (20)

TinyML - 4 speech recognition
TinyML - 4 speech recognition TinyML - 4 speech recognition
TinyML - 4 speech recognition
 
Appendix 1 Goolge colab
Appendix 1 Goolge colabAppendix 1 Goolge colab
Appendix 1 Goolge colab
 
Project-IOT於餐館系統的應用
Project-IOT於餐館系統的應用Project-IOT於餐館系統的應用
Project-IOT於餐館系統的應用
 
02 IoT implementation
02 IoT implementation02 IoT implementation
02 IoT implementation
 
Tiny ML for spark Fun Edge
Tiny ML for spark Fun EdgeTiny ML for spark Fun Edge
Tiny ML for spark Fun Edge
 
Openvino ncs2
Openvino ncs2Openvino ncs2
Openvino ncs2
 
Step motor
Step motorStep motor
Step motor
 
2. 機器學習簡介
2. 機器學習簡介2. 機器學習簡介
2. 機器學習簡介
 
5.MLP(Multi-Layer Perceptron)
5.MLP(Multi-Layer Perceptron) 5.MLP(Multi-Layer Perceptron)
5.MLP(Multi-Layer Perceptron)
 
3. data features
3. data features3. data features
3. data features
 
心率血氧檢測與運動促進
心率血氧檢測與運動促進心率血氧檢測與運動促進
心率血氧檢測與運動促進
 
利用音樂&情境燈幫助放鬆
利用音樂&情境燈幫助放鬆利用音樂&情境燈幫助放鬆
利用音樂&情境燈幫助放鬆
 
IoT感測器驅動程式 在樹莓派上實作
IoT感測器驅動程式在樹莓派上實作IoT感測器驅動程式在樹莓派上實作
IoT感測器驅動程式 在樹莓派上實作
 
無線聲控遙控車
無線聲控遙控車無線聲控遙控車
無線聲控遙控車
 
最佳光源的研究和實作
最佳光源的研究和實作最佳光源的研究和實作
最佳光源的研究和實作
 
無線監控網路攝影機與控制自走車
無線監控網路攝影機與控制自走車無線監控網路攝影機與控制自走車
無線監控網路攝影機與控制自走車
 
Reinforcement Learning
Reinforcement LearningReinforcement Learning
Reinforcement Learning
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
 
人臉辨識考勤系統
人臉辨識考勤系統人臉辨識考勤系統
人臉辨識考勤系統
 
智慧家庭Smart Home
智慧家庭Smart Home智慧家庭Smart Home
智慧家庭Smart Home
 

GPS + Google fusion table 雲端應用

  • 1. 艾鍗學院 Linux工程師人才養成班 GPS + Google Fusion Table 雲端應用 時間:2015/07/23 地點:艾鍗學院
  • 2. 內容摘要 1. 專題概要 2. 關鍵技術簡介 3. 硬體架構 4. 軟體架構 5. 後續改善方向 附錄: 關鍵字
  • 3. 1. 專題概要 移動式 GPS接收裝置 Google Cloud Fusion Table 手機 (Browser) 電腦 (Browser)平板裝置 (Browser) 網際網路 NMEA-0183 座標資訊 Google 座標資訊 Google Map 及位置記錄點 後續可擴充 增加各種不 同統計方析 資訊 Google 各種雲端應用服務
  • 5. 2-1. GPS (1) [ 圖片來源: wiki網站 https://en.wikipedia.org/wiki/NMEA_0183 ] 市面上一般GPS模組的資料輸出格式: NMEA-0183 在此我們採用GPRMC sentence的資訊 (NMEA: National Marine Electronics Association)
  • 6. 2-1. GPS (2) RMC: GPS建議最小傳輸資料 ( $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11> ) 範例說明: $GPRMC,055148,A,2407.8945,N,12041.7649,E,000.0,000.0,061196,003.1,W*69 1) $GPRMC,055148 接收定位時間 (UTC time) 格式:時時分分秒秒.秒秒 (HHMMSS.SS) 2) A = 定位狀態,A:資料可用,V:資料不可用 3) 2407.8945 = 緯度,格式:度度分分.分分分分 (DDMM.MMMMMM) 4) N = 緯度區分,北半球(N)或南半球(S) 5) 12041.7649 = 經度,格式:度度度分分.分分分分 (DDDMM.MMMMMM) 6) E = 經度區分,東(E)半球或西(W)半球 7) 000.0 = 相對航行速度, 0.0 至 1851.8 knots(節) 8) 000.0 = 相對航行方向,000.0 至 359.9度。實際值 9) 061196 = 日期,格式:日日月月年年 (ddmmyy) 10) 003.1 = 磁極變量,000.0 至180.0度 11) W = 磁方位角(西W或東E)度數 12) *hh = Checksum.(檢查位元)
  • 7. 2-1. GPS (3) NMEA-0183 (GPS) 轉 Google Map 座標 : DDMM.MMMMMM Latitude: Longitude: DD + MM.MMMMMM/60 D: Degree M: Minute DDDMM.MMMMMM DDD + MM.MMMMMM/60
  • 8. 2-2. Fusion Tables (1) 簡易工作表 [ 圖片來源: Google 網站 https://developers.google.com/identity/protocols/OAuth2ForDevices ] Google提供的雲端應用服務 目前仍在實驗階段 以簡易的工作表 (Spread Sheet) 建立資料庫 自動從工作表轉換出: - 各種統計圖表 - 分析曲線 - 客制化地圖
  • 9. 2-2. Fusion Tables (2) Google的官方定義 : Google Fusion Tables is a web application used for sharing, visualizing, and publishing tabular data. You can upload your own CSV, KML, ODS, XLS, or Google Spreadsheet data to a Fusion Tables table. Once your data is in Fusion Tables, you can collaborate on it with others in real time, publish it for Google Search, create map and chart visualizations for private use or for embedding on websites, filter it according to specific criteria, and update the data behind your visualizations or filters at any time.
  • 10. 2-2. Fusion Tables (3) Google Cloud Google 各種雲端應用服務Google Developers Console (提供各種API) Fusion Table API Fusion Table user Browser裝置應用程式 Google針對各種雲端應用服務 提供相對應的API 針對Fusion Tables, 其最新版 API為Fusion Tables API v2.0
  • 11. 2-2. Fusion Tables (4) Google針對各種雲端應用服務所提供的API, 可在Google API Explorer中找到: https://developers.google.com/apis-explorer/#p/
  • 12. 2-2. Fusion Tables (5) Google對於 Fusion Tables API 的官方定義 : The Fusion Tables API allows you to use HTTP requests to programmatically to perform these tasks, which are also available in the Fusion Tables web application: 1. create and delete tables 2. read and modify table metadata such as table and column names and column types 3. insert, update, and delete the rows in a table 4. create, update, and delete settings for certain visualizations 5. query the rows in a table
  • 13. 2-2. Fusion Tables (6) Google API 所共用的 認證機制為 “OAuth 2.0” 非Andriod或iOS的行動裝 置, 可採用 “OAuth 2.0 for Devices” [ 圖片來源: Google 網站 https://developers.google.com/identity/protocols/OAuth2ForDevices ]
  • 14. 2-2. Fusion Tables (7) [ 圖片來源: Google 網站 https://developers.google.com/identity/protocols/OAuth2ForDevices ] Access Token在產生後3600秒 便會過期, 因此需要適時進行更新: 1. 使用: - refresh token - client ID, - client secret 以POST request向Google Server要求更新的Access Token 2. 平常Refresh Token不須更新 3. 但每當重做認證(產生並取得更新 的authorization code)時, 就須再 取得更新的 Refresh Token Token的更新
  • 15. 3. 硬體架構 3-1. 整體硬體架構 3-2. GPS 接收模組 3-3. UART-USB 轉換模組
  • 16. 3-1. 整體硬體架構 GPS 接收模組 (gy-gps-6mv2) Raspberry Pi 2B (CPU: BCM2836) UART-USB 轉換器 (FTDI FT-232R) UART USB2.0 UART USB2.0 Ethernet Internet Access
  • 17. 3-2. GPS接收模組 (1) GPS模組 NEO-6 u-blox 6 的性能規格
  • 18. 3-2. GPS接收模組 (2) [ 圖片來源: uBox NEO-6 u-blox 6 GPS Modules Datasheet ] GPS模組 NEO-6 u-blox 6 內部方塊圖
  • 20. 4. 軟體架構 4-1. 整體軟體架構 4-2. 軟體流程 4-3. cURL request
  • 21. 4-1. 軟體架構 主程式: - gpsrx.c 副程式: - auth_req.c 產出檔案: - tok_update.txt 儲存從 Google Server 取得的 最新回應, 含 access token ) 輸入檔案: (僅在模擬測試模式時需要) - 檔案名稱由 gpsrx 程式指令的第二 引數決定 例如: 執行時主程式 gpsrx 的指令為 $> gpsrx –t gsp_sim 則程式會自動依序尋找 ”gpsrx00”, “gpsrx01”, “gpsrx02”, …. 等檔案做為每一個cycle的 NMEA-0183 輸入 gpsrx.c Auth_req.c System Call NMEA-0183 記錄(Log)檔 Goggle回應 訊息檔 tok_update.txt NMEA-0183 模擬資料 NMEA-0183 模擬資料 NMEA-0183 模擬資料 Xxx00, xxx01, xxx02 gps_log.txt
  • 22. 4-2. 軟體流程 (1) 開啟 GPS NMEA-0183 -> 讀取字串 字串 Parsing & Decoding : 1. 取得 GPRMC sentence 2. 取得 Latitude, Longitude, Date, Time 3. 將 Latitude/Longitude 資訊由NMEA 轉換為 GoogleMap 格式 透過cURL上傳HTTP POST/GET指令給 Google Fusion Table: 1. 更新 Access Token 2. 在 Fusion Table中加入新資料 備存記錄 正常動作模式 NMEA-0183 記錄(Log)檔Goggle回應 訊息檔 tok_update.txt gps_log.txt
  • 23. NMEA-0183 模擬資料 NMEA-0183 模擬資料 4-2. 軟體流程 (2) 開啟模擬資料檔案 -> 讀取字串 字串 Parsing & Decoding : 1. 取得 GPRMC sentence 2. 取得 Latitude, Longitude, Date, Time 3. 將 Latitude/Longitude 資訊由NMEA 轉換為 GoogleMap 格式 透過cURL上傳HTTP POST/GET指令給 Google Fusion Table: 1. 更新 Access Token 2. 在 Fusion Table中加入新資料 備存記錄 模擬測試 (file feeding) 模式 NMEA-0183 模擬資料 NMEA-0183 記錄(Log)檔Goggle回應 訊息檔 tok_update.txt gps_log.txt Xxx00, xxx01, xxx02
  • 24. 4-3. cURL request (1) GET request: - 只能讀取資料, 不允許任何修改動作 POST request: - 可允許各種資料修改動作, 如: 插入/移除欄位, 建立新Table, 更新內容等…. - 需提送Access Token, Refresh Token, Client ID, Client Secret 等認證資訊 Fusion Tables API 對於資料存取的權限限制:
  • 25. 4-3. cURL request (2) 更新 (Refresh) Access Token (POST type request) Request root@raspberrypi:~# curl -d "client_id=530304002742- 55mhfghci5o59tur1tgt183p38ceh08t.apps.googleusercontent.com&client_secret=xtogS1gi_MSl_7apvzfrsvmK&r efresh_token=1/97_rdY40n2PusItQPVPENp5ECTZYqFvUobJZB09nOxlIgOrJDtdun6zK6XiATCKT&grant_type=r efresh_token" Response https://www.googleapis.com/oauth2/v3/token { "access_token":"ya29.tAHsfamfZ4CUSiMwXG0TztY9DYkcj3Zs988p9Wr_GrZz5vRbxkGHFoQiHxDMNsuEZf8-", "token_type": "Bearer", "expires_in": 3600 }
  • 26. 4-3. cURL request (3) 重做 Authorization (POST type request) Request root@raspberrypi:~# curl -d "client_id=530304002742- 55mhfghci5o59tur1tgt183p38ceh08t.apps.googleusercontent.com&client_secret=xtogS1gi_MSl_7apvzfrsvmK&c ode=ZMUM-BZYM4/b1grhomQLBtifJxKrATFJ- m8AoYV7tr3RfN1BLvOTlo&grant_type=http://oauth.net/grant_type/device/1.0" Response https://www.googleapis.com/oauth2/v3/token { "access_token": "ya29.tAH13KudNYGAmG9rtdXLJjO_QNPjbJcvEkJEeG_C3MxqWh5T9sFbbrguWh77llT6JbVL", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "1/97_rdY40n2PusItQPVPENp5ECTZYqFvUobJZB09nOxlIgOrJDtdun6zK6XiATCKT" }
  • 27. 4-3. cURL request (4) 插入一筆新資料 ROW (POST type request) Request root@raspberrypi:~# curl -H "Authorization: Bearer ya29.tAH13KudNYGAmG9rtdXLJjO_QNPjbJcvEkJEeG_C3MxqWh5T9sFbbrguWh77llT6JbVL" -d "sql=INSERT INTO 1fV5mXuKgG5cCck1cAVQX0G7HVTjfdm1SqeYSdmXU (number,Address)VALUES(43,'IT robotics lab')" Response "https://www.googleapis.com/fusiontables/v2/query" { "kind": "fusiontables#sqlresponse", "columns": [ "rowid" ], "rows": [ [ "5002" ] ] }
  • 28. GPS NMEA-0183 輸出字串接收 字串 Parsing & Decoding : 1. 取得 GPRMC sentence 2. 取得 Latitude, Longitude, Date, Time 3. 將 Latitude/Longitude 資訊由NMEA 轉換為 GoogleMap 格式 透過cURL上傳HTTP POST/GET指令給 Google Fusion Table: 1. 更新 Access Token 2. 在 Fusion Table中加入新資料 備存記錄 5. 後續改進方向 (1) 加入GPRMC的多筆 數據分析處理能力, 並依距離變化合理性 來判斷與捨棄非正常 資訊 1. 重新與網路連線 (e.g. WiFi) 時的 資料補上傳, or 2. GSM即時上傳
  • 29. GPS NMEA-0183 輸出字串接收 字串 Parsing & Decoding : 1. 取得 GPRMC sentence 2. 取得 Latitude, Longitude, Date, Time 3. 將 Latitude/Longitude 資訊由NMEA 轉換為 GoogleMap 格式 透過cURL上傳HTTP POST/GET指令給 Google Fusion Table: 1. 更新 Access Token 2. 在 Fusion Table中加入新資料 備存記錄 5. 後續改進方向 (2) 將目前使用system call方式執行cURL, 改為直接在程式中使 用cURL API 改善資料搜集與上傳 的頻率精準控制