# A23. PMSX003: PM2.5 感測器

### 專案說明 <a href="#a23.pmsx003pm2.5-gan-ce-qi-zhuan-an-shui-ming" id="a23.pmsx003pm2.5-gan-ce-qi-zhuan-an-shui-ming"></a>

讀取 PMS3003(G3) / PMS5003(G5) / PMS7003 (G7) 的 PM1.0 / PM2.5 / PM10 的感測數值

{% hint style="info" %}
此為 LinkIt 7697 BlocklyDuino v3 新功能
{% endhint %}

### 電路圖 <a href="#a23.pmsx003pm2.5-gan-ce-qi-dian-lu-tu" id="a23.pmsx003pm2.5-gan-ce-qi-dian-lu-tu"></a>

* LinkIt 7697
* PMS5003 (or PMS3003/7003)
* 麵包板
* 杜邦線

![](https://3972650740-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY4gduUSLWOCI23CXUWej%2Fuploads%2Fwgq0POClE1IOTw7sWTOD%2Fimage-90.png?alt=media\&token=8b476641-2720-4fe7-954c-9ecbc24897a5)

{% hint style="info" %}
購買 PMSX003 系列的模組，有些廠商通常提供一個轉板轉成 2.54 mm 的排針針腳，才能插上杜邦線

![](https://3972650740-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY4gduUSLWOCI23CXUWej%2Fuploads%2F56XncJaMepn2aR08stRt%2Fimage-91.jpeg?alt=media\&token=6e6f9219-2dec-4b37-9b63-e684e2d9c7b6)

使用 PMSX003 模組，搭配下面範例需連接以下腳位

* VCC : 外接 5V 電源供應
* GND : 外接 GND
* TX : 連接到 LinkIt 7697 的 P2 (Software Serial 的 RX)，UART 資料由 PMSX003 模組傳送到 7697
* RX : 連接到 LinkIt 7697 的 P3 (為 Software Serial 的 TX)，UART 資料由 7697 傳送到 PMSX003 模組
{% endhint %}

### 積木畫布 <a href="#a23.pmsx003pm2.5-gan-ce-qi-ji-mu-hua-bu" id="a23.pmsx003pm2.5-gan-ce-qi-ji-mu-hua-bu"></a>

![](https://3972650740-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY4gduUSLWOCI23CXUWej%2Fuploads%2Fx8rgM2rfbRkXXDP6ttZS%2Fimage-92.jpeg?alt=media\&token=3a635ccd-c241-4978-b09e-28192c64a87b)

產生的 Arduino 程式如下

```
#include <PMS.h>
#include <SoftwareSerial.h>

SoftwareSerial pmsSerial(2, 3);
PMS pms(pmsSerial);
PMS::DATA pmsData;


int pms_read_PM1()
{
  pms.read(pmsData);
  return pmsData.PM_AE_UG_1_0;
}

int pms_read_PM2()
{
  pms.read(pmsData);
  return pmsData.PM_AE_UG_2_5;
}

int pms_read_PM10()
{
  pms.read(pmsData);
  return pmsData.PM_AE_UG_10_0;
}

void setup()
{
  Serial.begin(9600);
  pmsSerial.begin(9600);
}

void loop()
{
  Serial.print("PM1.0:");
  Serial.println(pms_read_PM1());
  Serial.print("PM2.5:");
  Serial.println(pms_read_PM2());
  Serial.print("PM10:");
  Serial.println(pms_read_PM1());
  delay(1000);
}
```

序列埠監控視窗可看到輸出數值

![](https://3972650740-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY4gduUSLWOCI23CXUWej%2Fuploads%2FD71XAgmeVrvHrCptWtsA%2Fimage-93.jpeg?alt=media\&token=7b8b309b-44af-4194-a804-684b9379f2a0)
