Blog Archives

Home Posts by “owenou
LASS 7688

用7688 Duo遠端控制PM2.5偵測裝置

No Comments

作者:阿海

搭給厚!哇希肉多多A阿海(台語)。最近常常有 LASS 的社群夥伴問我:「我可以在自己的PM2.5偵測裝置上,加上LCD ,或者控制空氣清淨機嗎?」相信各位專業的 Maker 一定可以馬上異口同聲『有何不可!』,沒錯!有何不可呢?

只是情境上,LASS 的PM2.5偵測裝置的設置,應該是在屋頂或者是窗外,在窗外的裝置裝上一個螢幕顯示,並且還有智慧插座,要觀看數值還要跑到戶外,這樣的情境,阿海怎麼都想不通啊!阿海心中,怎麼都想放一個獨立的抬頭顯示器在室內,並且讓它默默的工作才對啊!

大多數的物聯網開發版範例,很多都是將自己的資料,上傳到一個資料平台來閱覽,或者只是透過手機操作平台,來遠端操作裝置,而這樣和 MQTT 當初提供點對點相連的概念,可能稍微有點差距。如果我們能夠在屋頂裝設感測器,在屋內放一個能夠顯示、又可以連動控制的面板,不就能解決這個問題了嗎?

剛好轟動 Maker林、驚動 Arduino板海市場的 LinkIt Smart 7688 Duo 剛上市不久,不如阿海就繼續透過這片好棒棒的開發板,結合128 x 64的 OLED,來實做一個全新的 LASS M2M節點裝置吧!以下,阿海詳述了設計和製作的過程,分享如何一步一步的完成所需要的功能。

必備物品

  • Mediatek LinkItSmart 7688 Duo x1
  • SSD1306相容的128 x 64 I2C OLED模組 x1
SSD1306相容的128x64 I2C OLED模組

SSD1306相容的128×64 I2C OLED模組

選配物品(控制空氣清淨機)

  1. 5V Relay 模組  x1
  2. 電力配線用一連明盒附插座  x1
  3. 有插頭的多芯電線  x1
選配物品(控制空氣清淨機)

選配物品(控制空氣清淨機)

設計步驟一:分析系統架構

想要了解LASS的架構,必定要先了解MQTT,如果要把MQTT用一個簡單的說法來解釋,就是把它想成無線電台,想要跟對方互相通訊,就要轉到正確的頻道,當大家的頻道都相同時,別人廣播什麼你就聽得見了(就像收音機一般)。

而在MQTT裡面,頻道的概念就叫做「Topic」,所以想要接收來自另外一端的消息,我們就得先去訂閱你想知道的Topic,目前所有的PM2.5公開測試,都定義在「LASS/TEST/PM2.5」這一個Topic上,我得知原先哈爸是有規劃Private Topic的欄位的,但是因為陰錯陽差在Field Try釋出的版本並沒能帶上,因此想要找到自身站台的訊息,就勢必要從所有站點的訊息海裡面「撈」出來了。

LASS與MQTT系統架構

LASS與MQTT系統架構

設計步驟二:取得,並測試線上正在運作的各種資料

要開發和測試 MQTT,Chrome 上有一套很簡單的 App 叫做 MQTTLens,透過這個工具你可以輕鬆的在 MQTT上的頻道訂閱/發佈 訊息,來看看如何安裝並且啟動它吧!

Chrome App 上的 MQTTlens

Chrome App 上的 MQTTlens

接下來就要連上 LASS 的了,在啟動畫面後左上角 Connection 右邊,有一個「+」號,點擊後會帶出新增連線的畫面。

MQTT伺服器

MQTT伺服器

LASS的MQTT伺服器位址是 「gpssensor.ddns.net」,服務Port一樣是 「1883」,填寫完後點擊右下角的「Create Connection」。
填寫範例如下:

MQTT伺服器填寫範例-1

MQTT伺服器填寫範例-1

MQTT伺服器填寫範例-2

MQTT伺服器填寫範例-2

填寫完畢來訂閱主題,測試看看通訊會不會成功吧!請在對話框內輸入訂閱 Topic「LASS/Test/+」 ,然後按下「Subscribe」,如果連線成功就會如下圖這樣,畫面會顯示站台上的訊息,陸陸續續湧進。

MQTTlens操作成功畫面

MQTTlens操作成功畫面

觀察此頻道的固定格式如下:

|ver_format=3|fmt_opt=0|app=PM25|ver_app=0.7.13|device_id=FT1_004|tick=260989326|date=2016-01-21|time=06:27:23|device=LinkItONE|s_0=67852.00|s_1=100.00|s_2=1.00|s_3=0.00|s_4=662.00|s_d0=66.00|s_t0=21.40|s_h0=72.50|s_d1=81.00|gps_lat=23.284105|gps_lon=120.275816|gps_fix=1|gps_num=16|gps_alt=5

其中 ,「Device_ID 是站台編號」、「s_d0 就是PM2.5的資料欄位」、「s_d1是PM10的資料」「s_t0 為溫度的資料」、「s_h0 則是溼度的資料」,以及日期和時間,這是驗證裝置上線情形和觀察原始資料最直接的辦法了!

為了開發時方便,等等先不要訂閱主頻道,因為這樣會面對海量的訊息,所以我們來創建一個新的頻道叫「DeveloperTest」,仿照上面的格式來測試發佈訊息,並且按下「Subscribe」訂閱這個頻道後按下「Publish」發佈一段訊息,確認伺服器收送正常工作。

測試一個獨立的 MQTT頻道

測試一個獨立的 MQTT頻道

設計步驟三:分析開發版的資源並規劃實作方式

一說到 Linkti Smart 7688 Duo,就來複習一下它的架構:它是由兩個主要單元組成,上半部能網路連線的通訊端為 OpenWRT 系統,於500Mhz 的 MT7628 MPU 上運行,第二是 Arduino 相容的 ATMEGA32U4 在 8Mhz 的速度運行。

直觀上我們會選擇在 OpenWRT 端訂閱 MQTT,並且在海量的訊息中,找到想要特定站台傳來的資料處理好,再透過 UART 傳送到 Arduino 端,Arduino 收到 UART(Serial1) 的資料後,對這些資料進行處理,並進行相對應的控制,最後顯示在 OLED 上。

本專案的架構規劃流程圖-1

本專案的架構規劃流程圖-1

本專案的架構規劃流程圖-2

本專案的架構規劃流程圖-2

設計步驟四:於Linux端取得MQTT資料分封傳送

LASS的Github上,已經有陳伶志博士提供:MQTT資料轉送到Thingspeak的程式,只要將它進行稍微的修改就可以達到本次需要的目標了,開源專案的最大好處就是如此,站在巨人的肩膀上,輕輕一跳大家就可以到更高的地方!

為了要使用 Serial Library 和 MQTT 這兩個 library,在設備上要安裝 pyserial 和 paho-mqtt 這兩個套件,我們連線進 7688 Duo 下以下兩個指令:你可以使用 PuTTy 連線 mylinkit.local 這個位址,連線成功之後,操作安裝指令。

pip install pyserial paho-mqtt

接下來,將 lass-pm25-friend.py 這隻程式放到 7688 Duo 上,Windows上可以用SCP這套軟體來傳輸。

用SCP這套軟體來傳輸

用SCP這套軟體來傳輸-1

用SCP這套軟體來傳輸-2

用SCP這套軟體來傳輸-2

在Linux-like系統上,直接在Terminal 終端機程式。

scp lass-pm25-friend.py root@mylinkit.local:/root/

阿海將這隻程式修改,讓收到訂閱的MQTT Message程式部分,再加幾行代碼,使收到的資料「原封不動」,只加分行符號「’\n’」轉送下去。也許有人會疑惑,為什麼要這樣設計呢?

明明都已經正確的解析出資料了,卻不傳送已經解析過的資料,是的,這是因為:Arduino 上有許多板子可以直接支援MQTT的(訂閱/傳送),為了未來移植到其他版子方便,阿海就將字串解析的工作交給 MCU 了。(詳細的程式碼請見 Github 上的原始碼會比較清楚)

python 程式內部有一些相關的參數可以調整,說明如下:

################################################
# Please configure the following settings for your environment

MQTT_SERVER = "gpssensor.ddns.net" #伺服器位址
MQTT_PORT = 1883 #伺服器連接阜
MQTT_ALIVE = 90 #連接Timeout的時間
MQTT_TOPIC = "LASS/Test/#" #訂閱的主題開頭 '#'代表全部的任意字串
SERIALPORT="/dev/ttyS0" #所使用的Serial port名稱
BUADRATE=57600 #LinkitSmart 7688 Duo Serial1 端的 buadrate
###############################################

接下來要執行這隻程式,指令如下:

python lass-pm25-friend.py [你的站號] [你的ThingspeakAPI key] [模式]

其中模式 0 是只使用thingspeak(原本的功能)、1是只使用Serial、2是兩種功能都使用。
執行後的畫面如下:

Trying To Connect:gpssensor.ddns.net
MQTT Connected with result code 0
Got your MQTT channel
LASS/Test/PM25|ver_format=3|fmt_opt=0|app=PM25|ver_app=0.7.13|device_id=FT1_004|tick=378198422|date=2016-01-22|time=15:01:45|device=LinkItONE|s_0=69813.00|s_1=100.00|s_2=1.00|s_3=0.00|s_4=692.00|s_d0=27.00|s_t0=20.10|s_h0=75.30|s_d1=28.00|gps_lat=23.284026|gps_lon=120.275832|gps_fix=1|gps_num=16|gps_alt=6

為了讓每次通電開機時,都能夠自動啟動這一隻程式,先將啟動語法複製好設定在 /etc/rc.local/ 之下,你必須先輸入指令:

chmod 777 /etc/rc.local
vim /etc/rc.local

並在VIM中編輯如下:

python /root/lass_pm25_friend.py [FT1_ID] [APIKEY] 2 >lasslog.out &

設計步驟五:於 Arduino 端接收 MQTT 資料字串,並取得想要的數值

完成上一個步驟之後,接下來要對 Serial 1進行測試,確保資料在傳送的過程中不會因為電路的誤差而「糟精」(台語:偏差)的疑慮,這種時候,阿海都會直接打開 Arduino IDE 中的範例 「MultiSrerialMEGA」,這個好用的工具範例,修改兩端到要使用的 Buadrate,隨即測試接收資料看看。

Arduino IDE 中 MultiserialMEGA

Arduino IDE 中 MultiserialMEGA

透過 Serial Console確認資料無誤

透過 Serial Console確認資料無誤

當確認傳來的資料是相同的之後,就開始著手撰寫通訊程式,Arduino中,剛好能夠利用String 物件輕鬆的操作字串,而MQTT訊息串並不是太大,於是就將所有的資料流存,放到字串裡面。

得到字串之後,就來設計解析字串程式,這邊要取得的有「日期」、「時間」、「溫度」、「溼度」、「PM2.5」、「PM10」這六項資料。其中前兩項並不是數字,所以撰寫一段額外的程序,來分別放置在字串變數,和浮點數陣列之中。而解析時只要找到tag的前置名稱加上「=」號的開頭位置,以及結尾的「|」符號,就能夠取出這段資料。

首先宣告想要截取的特徵前導字元:

#include <avr/pgmspace.h>
  const char data_datep[] PROGMEM = "date";
  const char data_timep[] PROGMEM = "time";
  const char interestValue_1[] PROGMEM = "s_d0";
  const char interestValue_2[] PROGMEM = "s_t0";
  const char interestValue_3[] PROGMEM = "s_h0";
  const char interestValue_4[] PROGMEM = "s_d1";
  const char* const interestValue[] PROGMEM = {data_datep, data_timep , interestValue_1, interestValue_2, interestValue_3, interestValue_4, };

然後尋找特徵碼的開頭,並使用 String.indexOf 定位,將所需要的部分轉換成數值,存放在浮點數陣列之中。

float sensorValue[4];
char buffer[8];

boolean onMessage(){
  Serial.println("OnMessage");
  for(int i=0;i<=data_num-1;i++){
    #ifdef BOARD_AVR
      strcpy_P(buffer, (char*)pgm_read_word(&(interestValue[i])));
    #else
      strcpy(buffer,interestValue[i]);
    #endif
   byte startpos=msg.indexOf(buffer);
   String temp =msg.substring(msg.indexOf(assigner,startpos)+1,msg.indexOf(seperator,startpos)); //From tagname after'=' to seperator'|'
   if(temp==""){
    return 0; //if failed to match tags....
    }
   if(i==0){
    data_date = temp; 
   } else if(i==1){
    data_time = temp;
   } else {
    sensorValue[i-2]=temp.toFloat();
   }
    Serial.println(temp);
  }
  return 1; // I count 2440 message/second with static process , so maybe perfomence is about 100~1000 message/s.
}

 

將這些資料印在Serial上,確認解析字串成功之後,就要準備來顯示在 128 x 64 的繪圖型 OLED 上了。

於Serial觀察解析字串的結果

於Serial觀察解析字串的結果

設計步驟六:打造Arduino端 OLED顯示單元

在寫文章的第一天,阿海就把 Adafruit 買來的1.3吋 OLED 打破了,於是阿海只能屈就一片 Library 相容的0.96寸模組了,這片 SSD1306 OLED 模組在 Library 內有兩種顯示模式:一種是引用內建的字型,直接給字串顯示他的做法類似 Print,而另外一種是直接讀取一段單色的byte array bm p圖檔,會一直變動的數字,必須使用字型來顯示比較省事。

而中文的部分,因為我預定只顯示幾個特定的字,因此不如直接把「字」畫成「圖」吧,有一種大家的電腦都有內建的:神人級繪圖修圖軟體「小畫家」(PTT Mobile01的人這樣稱呼的),是產生單色點陣圖最方便的工具了!在 SSD1306 裡面,每一段 Byte Array 圖檔都有寬度8的倍數的限制,一般顯示中文的點陣字體是「16 x 15」,因此要顯示「溫度」這兩個字,我們大概需要32 x 16像素的畫框。

在小畫家裡面設定好畫框,輸入中文字:

在小畫家裡面設定好畫框,輸入中文字

在小畫家裡面設定好畫框,輸入中文字

接下來我們要將圖檔轉成ByteArray,網路上有一個免費的軟體叫「LCD Assistant」,是Adafruit推薦使用的,既然有人推,阿海就用用看,將剛剛畫好的圖檔導入,就可以產生一個內含Byte Array的檔案了,我將這個檔案另外放置在 Bitmap.c 裡面,放在相同的專案資料夾,讓IDE能夠識別,其他的文字和圖案,都是這樣如法炮製來產生圖檔,你就能在OLED上顯示這些字了,不過遺憾的是,繪圖的定位和文字模式會有一點差別,這時候只能多嘗試幾次,很快就可以對齊了。

使用 LCD Assistant轉換字體

使用 LCD Assistant轉換字體

使用Adafruit Library 顯示一段文字的程式(Arduino)

在程式燒錄進去之前,先將OLED組裝上去,他是使用I2C介面的,請將模組上SDA、SCL分別接到 7688 Duo上的 D2、D3兩腳,VCC接上3V3,GND接上GND。如使用Relay模組,GND再將線路T接出來,Relay版上的VCC再接上5V。

電路示範圖

電路示範圖

設計步驟七:打造Arduino端 空氣清淨機智慧插座控制單元

最後來撰寫一段簡單的控制程式,實現在空氣污染太高的時候,能夠自動啟動的空氣清淨機,一般在工程現場,最常見的控制器都是「窗型控制」的,所謂窗型控制,就是數值高到某一個界線,就會啟動機器,而要一直到啟動後產生效用,到達另一個比啟動值較低的界限,才會關閉,這樣的控制方式就稱為窗型控制,例如這邊寫入當PM2.5大於50ug/m^3 ,就讓Relay通電來啟動空氣清淨機,而啟動後要到40ug/m^3以後才會停止運作。

此外,為了預防網路連結失效時,機器運轉不停,阿海也讓程式十分鐘沒有數字更新,就得強迫關閉空氣清淨機,同時也為了避免感測器數值跳動幅度過大,也新增一個變數,來設定最短的啟動時間,才不會讓機器頻繁啟動而損壞。

使用Relay來控制的程式碼如下:

 if(logichandle){
  //Run your logic here;example give you standard windows control
  if(sensorValue[0] > ONvalue){
    digitalWrite(PINOUT,HIGH); //Turn ON
    lastOnTime =nowtime;
  }

  if(sensorValue[0] <OFFvalue && (nowtime - lastOnTime) > LEASTONTIME){
    digitalWrite(PINOUT,LOW); //Turn OFF
  }
  heartbeat =nowtime;
  //after done place logic handle 0;
  logichandle=0;  
 }

 if((nowtime - heartbeat) >MOSTONTIMME){
  digitalWrite(PINOUT,LOW); //Turn OFF Because no connection;
 }

 

然後依照大部分智慧插座的教學,進行Relay的連接和插座的組裝。

由於阿海寫完稿,又把插座拿去做別的東西了,我只能放一張它的「紀念照」了:
p7.1

設計步驟八-執行結果

以上,是本專案所有的設計的思考及實作過程,希望留下這樣的紀錄,對於未來想要開發LASS應用裝置的人,會有所幫助,最後來看看完整的執行結果吧!

執行結果-1

執行結果-1

執行結果-2

執行結果-2

執行結果-3

執行結果-3

執行結果-4

執行結果-4

(本文原發表於MakerPRO,原文連結

相關資訊

本文所有程式公開放置在:
https://github.com/LinkItONEDevGroup/LASS/tree/master/Companion-module

加入討論請到LASS社群:
https://www.facebook.com/groups/1607718702812067/

阿海特別感謝兩位社群朋友,於撰寫本文時提供協助:哈爸、陳伶志 博士

作者介紹:關於肉多多

肉多多-多肉植物科技農場為三個在物聯網公司退役的人組成,平時在雲嘉南搞工程拼經濟,下班就種多肉怡情,偶爾參展交朋友,如果你喜歡肉多多分享的文章,就到粉絲專頁點個讚吧,畢竟點讚一點都不會花你錢,還有可能讓阿海多寫幾篇文章跟大家分享喔!

http://www.facebook.com/rododo.farm

Who LASS

LASS開源計畫:社群團結力量大

No Comments

作者/攝影:徐韻婕

「團結就是力量」這句話向來激勵人心,12/10(四)晚上,華山之夜—LASS開源社群見面會,更是讓我們見證到了社群團結力量的強大,當天在華山集結了北中南的夥伴,大家排除萬難而來,為的都是共同的理念—建構完善的LASS(Location Aware Sensor System)「環境感測器網路系統」,並追求好還要更好!

05

LASS環境感測器網路系統公益開源計畫,起初從哈爸一人開始,發展成現在已有許多PRO Maker一同投入的社群,大家不斷地將這計畫往更深更廣的層面發展下去,希望從Bottom up建置一套環境感測系統,讓人人都可以使用這套系統,開放分享;讓任何想知道某地環境狀況的人,都可以在地圖上看的到。

目前LASS已推展出許多相關計畫,並在12/10(四)LASS開源社群見面會與大家分享最新進度,當天交流互動氛圍濃厚,極具熱度,是個令人振奮與感動的夜晚。

LASS策動全台Field try(場測)

事實上,在台灣2/3空氣污染源PM2.5(細懸浮粒子)都是自行產生的,戴一般口罩或緊閉門窗都沒有用,由於LASS Field try專案負責人 — 陳伶志自己的小朋友有氣喘,更格外關心這個空汙環境議題,而這樣的議題,其實也是大家都迫切關心的。

陳伶志與哈爸討論後,開始著手進行第一個社群專案 — LASS Field try計畫並推出套件包,希望讓大家可以即時知道感測器當下測量到的環境資訊。

LASS Field try專案負責人—陳伶志

LASS Field try專案負責人—陳伶志

在社群朋友活躍的討論及參與下,相關資訊系統更是不斷快速更新,LASS系統變得更為完備,其中包含資料視覺化系統、即時PM2.5資訊比較,即時GIS資訊等等,讓使用者可以即時獲得更完整的資訊,了解環境品質及汙染原因,並為生活做進一步的調整及改善,目前LASS Field try之佈點甚至已遍布全台。

陳伶志分享LASS Field try之佈點統計資訊

陳伶志分享LASS Field try之佈點統計資訊

開啟了這個計畫後,陳伶志深深感受到社群動員的力量,可以讓一個計畫在短時間有非常卓越的成長,陳伶志:「當你全心全意要做一件事時,全世界都會幫你完成它!」。

氣體感測技術

LASS系統目前以偵測PM2.5細懸浮粒子為主要空氣品質偵測目標,計畫背後,感測器的選擇也是一門重要學問,見面會當天,LASS社群團隊中懂sensor的行家—劉承榮,與大家分享氣體感測技術的概念和選擇。

台灣空氣品品質在法規上有一定的標準,其中室內以二氧化碳為例,二氧化碳需要連續監測,且法規規定於室內其濃度需在1000ppm之內,但由於針對不同感測氣體之測量的數值差距過大(從零點ppm至一千ppm),而每個sensor能測量到的數據範圍有限,此時sensor的選擇就非常重要。

劉承榮與大家分享如何做氣體感測

劉承榮與大家分享如何做氣體感測

氣體偵測技術大致可分為:

  • 半導體式(MOS)氣體感測器
  • 電化學式氣體感測氣
  • Pellistor/ MEMS Pellistor
  • 非分散式紅外線氣體感應器

劉承榮:「氣體感測技術分類眾多,過去氣體感測器主要應用在工業應用上,室外空氣品質監測相對為較新應用,目前針對室外感測,尚未有較適合的感測器,但可嘗試不同感測器組合,找出最適合測試的搭配。」

環境感測計畫結合無人機

無人機可運用的層面越來越廣,除可用於農業、災害應變、保全安防等,環境監控也是一環對人類具有極大幫助的應用。

多旋翼工坊(Ark Lab)的共同創辦人-張東琳,目前開始推動LASS天空感測計畫,希望讓飛行機來執行空汙監測,由無人機帶著PM2.5的感測器,在系統中做感測資料的呈現,目標是讓全台各縣市都有一台執行天空感測計畫的無人機系統。

多旋翼工坊(ArkLab)的共同創辦人-張東琳

多旋翼工坊(Ark Lab)的共同創辦人-張東琳

過去該團隊在無人機結合環境保育方面已有豐富的經驗,例:「北港溪水質汙染即時無人機監控系統」、「大甲農地自動化趕鳥農保機」,目前參與LASS發展計畫,是希望能盡一份力,並推廣過去一直關注之「無人機結合環境監控」的議題。

張東琳:「無人機將雲端這名詞具象化了,無論水、空汙或是核輻射等等環境感測項目,都可透過無人機這個載具串聯起來,無人機就是環境感測最好的載具!」。

社群經營關鍵 — 人

LASS計畫在8月27日在MakerPRO的活動中第一次公開發表,展開起點,從短短的三個月發展到現在,已有三十多人一起參與、一起推動計畫,且有更多專案正在迅速成長中,哈爸表示:「這就是社群的力量。」

Maker運動除了強調自己動手做之外,還有一個重點就是「人」,廣義可以指人與人之間的互動及交流,因為人與人互相分享,才能促成更多的合作、促成更完整的計畫,每個人都發揮一項自己的專長,互相補足,就可以完成一件事,這大概也是LASS計畫,什麼都強調開放的原因。

LASS環境監測系統專案召集人哈爸

LASS環境監測系統專案召集人哈爸

最後談到社群經營的技巧,哈爸提到人與人之間的關係和信賴是很重要的,從哈爸口中可以聽出來,社群經營最關鍵的也就是人了!

哈爸:「真心互相幫助,完成手頭上的芝麻小事才是王道。」

LASS環境感測器網路系統開源計畫相關展示

LASS環境感測器網路系統開源計畫相關展示

(本文原發表於MakerPRO,原文連結

延伸閱讀

活動網頁

活動紀錄照片

活動影片

under-the-dome

認識LASS環境感測網路系統

No Comments

作者:哈爸/編輯:歐敏銓
 

LASS_Logo

LASS(Location Aware Sensor System),顧名思義可知,這是一套「環境感測器網路系統」,而且是開源和公益的定位。

為何動手做這套系統呢?

事實上,在物聯網的應用中,環境變化的即時監測是很重要的一個領域,這包括空氣品質、大地防災(如土石流預警)、公共建設監控(如橋樑)等,都對監控系統有很大的需求。

不過,這些系統大多是由官方或特定機構主導來設置的,一般民眾並沒法得到這些資訊。相較之下,LASS就是希望從Bottom up建置一套環境感測系統,任何人都可以自己輕易地架設起來,再把所得資訊分享出去;任何想知道某地環境狀況的人,都可以在地圖上看的到。

LASS的重要性

以空氣品質監控來說,這套系統若用在中國,相信會有很大的用處。如果看過柴靜製作的這部禁片《穹頂之下》,就能深刻了解到PM2.5霾害對人類的威脅。

柴靜拍攝的《穹頂之下》紀錄片,突顯了中國霾害的嚴重性。

「呼吸是沒辦法選擇也沒辦法逃避的,你的每一口呼吸它都在!」她在片中引WHO的警告指出:「隨著顆粒物和空氣污染暴露的不斷提高,將增加人類患肺癌的風險,顆粒物被列為人類一級癌物。」

如果北京城內城外普遍建置了這套LASS系統,大家隨時可以得知某地某時的空污狀況,而且能夠掌握污染源的來處,這不是讓看不見的威脅給現形了嗎?(問題是,中國官方願意暴露這些資訊給民眾知道嗎?)

且不論中國的霾害問題,根據NASA的資料顯示,台灣的PM10懸?微粒濃度是OECD的36個國家中排名第二糟的,而國人十大死因中,就有七大死因和空氣污染密切相關,豈能輕忽。

Maker們合力來架起這個系統吧!

這樣一套由民眾自建的環境感測網路系統,要展現其應用價值,顯然必須大範圍的佈建,而且需解決許多技術上的問題,例如要用多少種感測器?如何部署?系統如何整合?以及最關鍵的,要花多少錢?

換個是在五年前提出LASS,恐怕只能當做實驗室的題目,或只是一場大夢。但進入今日的自造者時代,我們大有機會合力來完成這個大夢。

以下來簡介這套系統現階段的架構及功能定位。

1. 系統功能:

如前所述,LASS是一套具備環境感測器的網路系統架構,而且要讓Maker有能力自製所需要、且能與系統相容的感測器套件,再將感測到的資料提供給任何使用者。為此,我們需要提供一套完成度夠高的系統雛型,以賦予所有使用者俱備監測全部感測器的能力。

以下是我們提出的上層系統架構及感測端設備架構。

LASS上層系統架構示意圖

LASS上層系統架構示意圖

LASS感測設備端架構

LASS感測設備端架構

1.1 三層網路系統架構

網路系統架構可分三層,分別是感知層、網路層和應用層,各層運作方式及特色請見下表說明。

表一 系統架構運作方式與特色

螢幕截圖 2015-09-28 22.08.37

表二 LASS警報架構

螢幕截圖 2015-09-28 22.10.17

1.2 設備端設計

LASS系統支援的感測設備是可客製化的,目前已整合 Dust/UV/sound 感測器,未來新增的感測器支援,將開放給社群提供。

LASS感測設備原型

LASS感測設備原型

設備端的設計上有以下特色:

  • 所有感測器資料含GPS 地理資料
  • WiFi 網路無法連線資料能繼續感測儲存,自動等待網路聯通
  • 無網路連線狀態下,一般情況資料可以儲存ㄧ個月以上
  • 架構上支援多感測器
  • 結構化針對感測器客製化設計,盡可能降低加入新感測器的困難度
  • 支援電池供電,支援太陽能充電,目前應可支援晴天下持續運作
  • 支援省電模式,根據電池電量自動轉換省電模式

LASS 未來展望

針對LASS的發展,我們設定了四個階段,即原型期、客製化期、融合期、貢獻期,目前已完成原型的開發,正邁向第二階段的客製化期,工作重點包括簡化零件的取得、發展零件包、準備教材,讓它能進入Maker教育體系等。

LASS已開始進行街道實測

LASS已開始進行街道實測

關於四階段發展藍圖,有興趣的朋友請見延伸閱讀之講義檔介紹。

再次強調,LASS是個開源的公益專案,不是我們的,是大家的,所得資料也是大家的,我們提出的系統與硬體只是實作的方式而已,有需要請自由取用。

我們也鼓勵衍伸性專案與應用,若與發展目標相符、對Maker、LASS社群或社會有貢獻的計畫,我們也樂意提供支援。

至於有人若覺得可以將部分商業化的,也放心去做,我們支持您,不過身為計畫發起者,我們自己會秉持中性和公益的立場。

當然,整個系統需要很多的幫助,如果你有興趣,歡迎會跟我們聯繫。

(本文原發表於MakerPRO,原文連結

延伸閱讀

LASS Github主頁

LASS Github Wiki

LASS臉書社群

LASS Hackpad共筆區

LASS深入介紹講義檔