DIY太陽能無線PM2.5感測器

Description

Description
作者:chtseng

前言

最近拿到一組產品,號稱可將有線Uart無痛直接升級為無線Uart來使用。2.4G的頻率,在空矌地區距離可達100公尺遠。

它的規格如下:

  1. 操作電壓:3.3~5.5V
  2. RF頻率:2400MHz~2480MHz。
  3. 耗電量:傳送約24mA@+5dBm,接收約23mA。
  4. 發射功率:+5dBm
  5. 傳輸速率:250Kbps
  6. 傳輸距離:空曠處約80~100m
  7. Baud rate:9,600bps

如果您手上有個支援Uart介面且其頻率剛好是9,600的模組,那麼透過MUART0-S-1-1很容易的就能變身為支援無線傳輸的模組,例如目前很熱賣到不行的攀藤PM2.5模組就是一個很適合的對象。

在以往如果我們打算將G3 PM2.5的資訊傳遞到遠端的主機,在傳送端我們必須這樣做(以最常見的433 RF模組為例):

但如果改用SunplusIT的RF Uart模組呢?只要一組MUART0-S-1-1就夠了,連煩人的coding都不需要,PM2.5資訊會自動且即時的透過2.4G RF傳送到另一端,您只要在另一端把這資訊收下來就可以了。

在SunplusIT官方網站所提供的使用手冊(http://www.sunplusit.com/Documents/MUART0-S-1-1.pdf)當中,就提供了很詳細的使用說明,其中與模組對接的範例就是使用G3 PM2.5模組,示範的接法如下圖 (事實上,只要是任何支援Uart且baudrate為9,600的模組都可以支援)。

因此,若要搭建一個一對一的無線專案,使用MUART0-S-1-1模組是個相當方便的作法,可省下不少的精力和時間。下面,我們馬上就來做一個太陽能版本的無線PM2.5偵測器吧!由於使用了MUART0-S-1-1取代Arduino開發板及RF模組,因此耗電量下降了不少,讓PM2.5偵測僅依靠太陽能來環保且永續運轉成為可行。您只要準備如下的材料:一張Arduino UNO開發板、一組MUART0-S-1-1、一個G3 PM2.5模組、一張LiPo Rider Pro、以及二張太陽能板,再加上幾條杜邦線就可以了。

電量計算

目標:希望白天能夠同時供應PM2.5模組使用並進行充電,日落後則依賴電池電力繼續運作,直到日出後再繼續充電。

已知MUART0-S-1-1模組耗電量為24mA,G3 PM2.5則是200mA

兩片3W太陽能板可供應的電量為:(以60%折耗計算)

(6W*60%)/5V = 0.72A = 720mA

扣除用量,可用於充電的電量為720mA – 200mA = 520mA

充飽2000mAh的聚合物鋰電池的時間需要5.5Hrs: (充電效率以7成計算)

(2000mA / 0.7) / 520mA = 5.5 Hrs

假設2000mA容量的聚合物鋰電池實際可用電量為七成,

則充飽電後在沒有日照的情況下可支撐6.25小時。

(2000mA x 0.7) / 224mA = 6.25 Hrs

由於台灣冬季太陽下山時間早而日出時間晚,夜晚時間至少在13小時以上,若假設有效的日照時間為70%大約9hrs,則24hrs中有15hrs需要消耗電池電力,因此看來,僅能供應6.25 hrs的2000mA鋰電池不太夠用,至少需要4800mA才行。

15Hrs x 224mA / 0.7 =4800mA

但若改用4800mA以上的鋰電池,則日照時間至少需為9.23Hrs才能充飽,接近我們假設的有效日照時間約9 Hrs,看來使用4800mA是可考慮的。

4800 / 520mA = 9.23Hrs

因此,只要每日有效日照時間為9小時以上,則二片3W的太陽能板就能同時供應模組使用及充飽4800mA鋰電池電力。充飽電後的4800mA鋰電池可持續提供電源15 Hrs。

材料準備

Arduino UNO Rev. 3  $362 x1

「Arduino UNO」的圖片搜尋結果

當然您也可以改用其它的Arduino版本,

例如Mini pro或Nano…等

購買:https://www.taiwaniot.com.tw/shop/mcuboard/arduino/arduino-uno-r3-%E5%8E%9F%E5%BB%A0%E6%99%B6%E7%89%87-mega328-atmega16u2-%E9%9D%9E%E4%BD%8E%E5%83%B9%E5%8A%A3%E8%B3%AApcb-%E5%8D%B0%E5%88%B7/


MUART0-S-1-1 無線序列埠傳輸模組 $125 x1

http://www.sunplusit.com/Images/MUART0-S-1-1.png

一對一無線數據傳輸功能轉UART

尺寸:25*16.7mm

內建天線,使用免執照的 2.4GHZ ISM頻道

GFSK,FHSS 跳頻傳輸,可抗外界干擾

購買:http://www.sunplusit.com/TW/Shop/IoT


攀藤 G3 PMS3003 $790 x1

輸入電壓:5V

消耗電流:120mA ( max )

通訊方式:UART-TTL 3.3V

外觀尺寸:50x43x21mm

採用雷射散射原理量測,最小量測粒徑0.3um

購買:https://www.taiwaniot.com.tw/shop/module-sensor/%E7%A9%BA%E6%B0%A3%E7%B2%89%E5%A1%B5-pm2-5/%E6%94%80%E8%97%A4-g3-pms3003-pm1-0-pm2-5-pm10-%E6%BF%83%E5%BA%A6%E5%8F%8A%E9%A1%86%E7%B2%92%E6%95%B8-%E6%84%9F%E6%B8%AC%E5%99%A8/


3W 5.5V 單晶矽太陽能電池板 $410 x2

產品尺寸: 160x138x2.5(±0.2) mm

典型電壓: 5.5V

典型電流: 540mA

開路電壓: 8.2V

最大工作電壓: 6.4V

購買:https://www.taiwaniot.com.tw/shop/%E5%A4%AA%E9%99%BD%E8%83%BD%E9%9B%BB%E5%8A%9B%E8%A3%9D%E7%BD%AE/3w-5-5v-%E5%96%AE%E6%99%B6%E7%9F%BD%E5%A4%AA%E9%99%BD%E8%83%BD%E9%9B%BB%E6%B1%A0%E6%9D%BF-138×160-mm2/


LiPo Rider Pro 輸出穩壓專業板 $552 x1

USB 5V/1A

最大 1A 電流負載輸出。

提供 JST 2.0 接頭銜接鋰電池與太陽能板。

穩定的 5V USB供電不論其來源是太陽能或鋰電池。

內建充電與放電保護演算法。

購買:https://www.taiwaniot.com.tw/shop/extended-module/lipo-rider-pro-%E5%A4%AA%E9%99%BD%E8%83%BD%E5%85%85%E9%9B%BB-usb-5v1a-%E8%BC%B8%E5%87%BA%E7%A9%A9%E5%A3%93%E5%B0%88%E6%A5%AD%E6%9D%BF-%E5%8F%AF%E5%85%85%E9%9B%BB-3-7v-%E9%8B%B0%E8%81%9A%E5%90%88/


聚合物鋰電池-5100mAh 3.7V  $280 x1

http://www.icshop.com.tw/images/product_images/original_images/25383_0.jpg

您也可以用多個鋰電池並聯來代替。

購買:http://www.icshop.com.tw/product_info.php/products_id/25383

接線組裝

接線方式如下圖所示。請注意MUART0-S-1-1模組有分RX及TX兩種,此為傳送端因此必須使用TX(背面標籤註明為S1為TX,S0為接收端RX)

全部組合起來後,還需要一個外殼予以保護免得風吹雨打,因此把它們放置於黑色的小盒內:

兩片太陽能板剛好當作屋頂:

室內pm2.5數值接收Device

這部份就比較簡單了,您只需要一片Arduino、一個LCD、一個MUART0-S-1-1模組RX端,接著依照一般使用Uart方式來線處理即可。MUART0-S-1-1模組收到PM2.5資訊後會透過Uart端送入Arduino,因此,您完全不需要顧慮無線功能的部份。

接收程式:(直接接PM2.5模組或透過本模組MUART0-S-1-1,原始程式都不變)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <SoftwareSerial.h>
SoftwareSerial Serial1(2, 3); // RX, TX
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
long pmcf10 = 0;
long pmcf25 = 0;
long pmcf100 = 0;
long pmat10 = 0;
long pmat25 = 0;
long pmat100 = 0;
char buf[50];
void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  lcd.init();
  lcd.backlight();
}
void displayLCD(int yPosition, String txtMSG) {
  int xPos = (16 - txtMSG.length()) / 2;
  if (xPos < 0) xPos = 0;   lcd.setCursor(xPos, yPosition);   lcd.print(txtMSG); } void loop() { // run over and over   // put your main code here, to run repeatedly:   int count = 0;   unsigned char c;   unsigned char high;   while (Serial1.available()) {     c = Serial1.read();     if ((count == 0 && c != 0x42) || (count == 1 && c != 0x4d)) {       Serial.println("check failed");       break;     }     if (count > 15) {
      Serial.println("complete");
      break;
    }
    else if (count == 4 || count == 6 || count == 8 || count == 10 || count == 12 || count == 14) {
      high = c;
    }
    else if (count == 5) {
      pmcf10 = 256 * high + c;
      Serial.print("CF=1, PM1.0=");
      Serial.print(pmcf10);
      Serial.println(" ug/m3");
    }
    else if (count == 7) {
      pmcf25 = 256 * high + c;
      Serial.print("CF=1, PM2.5=");
      Serial.print(pmcf25);
      Serial.println(" ug/m3");
    }
    else if (count == 9) {
      pmcf100 = 256 * high + c;
      Serial.print("CF=1, PM10=");
      Serial.print(pmcf100);
      Serial.println(" ug/m3");
    }
    else if (count == 11) {
      pmat10 = 256 * high + c;
      Serial.print("atmosphere, PM1.0=");
      Serial.print(pmat10);
      Serial.println(" ug/m3");
    }
    else if (count == 13) {
      pmat25 = 256 * high + c;
      Serial.print("atmosphere, PM2.5=");
      Serial.print(pmat25);
      Serial.println(" ug/m3");
    }
    else if (count == 15) {
      pmat100 = 256 * high + c;
      Serial.print("atmosphere, PM10=");
      Serial.print(pmat100);
      Serial.println(" ug/m3");
    }
    count++;
    displayLCD(0, "PM2.5:" + String(pmat25) + " ug/m3");
    displayLCD(1, "PM1:" + String(pmat10) + " PM100:" + String(pmat100) + " ");
  }
  while (Serial1.available()) Serial1.read();
  Serial.println();
  delay(5000);
}

組裝及執行:

我們可將太陽能PM2.5主機固定於一根木棍上(可伸縮且牢靠的的塑膠棍更好),然後直插於室外庭院的土壤中、或花盆內。使用情境如下圖:

 

 

專案來源

Contact

Contact
  • Category
    Smart City, 開發板
  • Tags
    PM2.5, 太陽能

Project簡述

Project簡述
  • 簡述
    使用MUART0-S-1-1模組來做一個太陽能版本的無線PM2.5偵測器吧!由於取代了Arduino開發板及RF模組,因此耗電量下降了不少,讓PM2.5偵測僅依靠太陽能來環保且永續運轉成為可行。
  • 作者
    chtseng

您的姓名 〈需填寫〉

您的電子郵件信箱 〈需填寫〉

主旨

您的信件內容