# 穿戴式安全裝置 第16組
## 組長:9A0140劉晉廷
## 組員:9A0142蔡汶諭/9A0078李奕璋/9A0069王亦暘
## 分工
```
1.程式:9A0140劉晉廷 9A0142蔡汶諭
2.硬體:9A0078李奕璋
3.報告製作:9A0069王亦暘
```
* 裝置:
氣體監測模組 MQ-9一氧化碳、gas監測器
發射接收器 Arduino RF 433M
GPS定位裝置
GP2Y1014AU PM2.5空氣品質感測器
HC 05藍芽模組
![](https://i.imgur.com/k44MX9u.png)
* 功能:
APP監控現場氣體濃度作業人員體溫,氣體濃度(CO GAS N2 O2 PM2.5)異常變動則警示燈亮、蜂鳴器響並回傳監控人員。
![](https://i.imgur.com/ntumUqQ.png)
* 概念:
在大多數的情況下,總會有人忽視工作場所安全而造成事故,因此藉由安全穿戴裝置上的各式偵測器,可以馬上警告現場同仁和附近其他人員,另外我們利用紅外線回傳氣體超標警訊。我們將安全帽結合控制室的警示燈,透過工作需可證得知現場人員作業位置,得以在第一時間通知工作人員並加以處理。
# 紅外線接收模組(Arduino RF 433M 發射接收一對)
* 介紹:
使用極為方便,並且價格低廉,所以被廣泛使用。產品體積小,靈敏度高;頻點調試容易,供貨週期短;產品質量一致性好,性價比高,目前是無線遙控市場用量最大最廣的一種高頻接收模塊。
![](https://i.imgur.com/0rGHreU.png)
* 接收模組接腳
![](https://i.imgur.com/n91gLhO.png)
程式範例:
每次送出一位元組的資料,用字元"a"與"b"作為兩個狀態,當接收電路收到"a"表示設定Digital pin 13為HIGH讓上面的LED發亮,收到"b"時則將Digital pin 13設定為LOW關閉LED。
發射端:
```c++=
#include <VirtualWire.h>
const char *a = "a";
const char *b = "b";
void setup()
{
vw_set_ptt_inverted(true);
vw_setup(2400);
vw_set_tx_pin(1);
}
void loop()
{
delay(1000);
vw_send((uint8_t *)a, strlen(a));
vw_wait_tx();
delay(1000);
vw_send((uint8_t *)b, strlen(b));
vw_wait_tx();
}
```
接收端:
```c++=
#include <VirtualWire.h>
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
const int LED = 13;
void setup()
{
pinMode(LED, OUTPUT);
digitalWrite(LED,LOW);
vw_set_ptt_inverted(true);
vw_setup(2400);
vw_set_rx_pin(0);
vw_rx_start();
}
void loop()
{
if (vw_get_message(buf, &buflen)) {
switch(buf[0])
{
case 'a':
digitalWrite(LED,HIGH);
break;
case 'b':
digitalWrite(LED,LOW);
break;
}
}
}
```
參考網站:http://gcyrobot.blogspot.tw/2011/07/arduino-rf.html
# MQ-9 一氧化碳、gas監測器
![](https://i.imgur.com/Gh3JbwM.png)
## 氣體偵測程式範例
```c++=
int sensorValue=0;
int Key1Pin = 2;
int ledPin1= 13;
void setup()
{
Serial.begin(9600); // 設定Serial 傳輸速度
pinMode(Key1Pin, Output); // 這裡設定所要發出警告的PIN腳模式
}
void loop()
{
Serial.print(“Value:");
sensorValue = analogRead(0); //讀取數位 pin 0
Serial.print(sensorValue, DEC); // 顯示資料
delay(1000); //休息1秒
int keystate = digitalRead(Key1Pin); // 取得輸入PIN 腳的值
if(keystate == 0)
{
Serial.print(" Safe"); // 安全
digitalWrite(ledPin1, LOW); // 正常
}else{
Serial.print(" Help"); // 偵測到了
digitalWrite(ledPin1, HIGH); // 發出警告
}
Serial.println(" “);
}
```
## GPS 程式碼
``` c++=
if (GPSserial.available() > 0) {//檢測是否收到 gps 訊號
if (gps.encode(GPSserial.read())) { //讀取 gps//緯度
rawLatdeg = gps.location.rawLat().deg;
rawLatbill = String(gps.location.rawLat().billionths).substring(0,6).toInt();
//經度
rawLngdeg = gps.location.rawLng().deg;
rawLngbill = String(gps.location.rawLng().billionths).substring(0,6).toInt();
//高度(cm)
Alt = gps.altitude.value();
```
# PMS3003 G3 PM2.5 粉塵傳感器 感測器
PMS3003 使用鐳射散射原理,能夠得到空氣中0.3 ~ 10微米懸浮顆粒物濃度,數據穩定可靠;內置風扇,數位化輸出,集成度高;
特點:
數據準確:鐳射檢測,穩定、一致性好
響應快速:場景變換響應時間小於10 秒
便於集成:串口輸出(或IO 口輸出可定制),自帶風扇
解析度高:分辨顆粒最小直徑達0.3 微米
適用範圍:
PM1.0 PM2.5 PM10檢測儀、淨化器
工作原理:
採用鐳射散射原理:當鐳射照射到通過檢測位置的顆粒物時會產生微弱的光散射,在特定方向上的光散射波形與顆粒直徑有關,通過不同粒徑的波形分類統計及換算公式可以得到不同粒徑的實時顆粒物的數量濃度,按照標定方法得到跟官方單位統一的質量濃度
技術參考:
測量直徑:0.3-1.0um 1.0-2.5um 2.5-10um
測量單位:ug/m3
測量精度:ug/m3
響應時間:<10s
工作電流:5V200ma@工作狀態5V2ma@待機狀態
數據介面:串口(3.3VTTL電平)
模組體積:65x42x23mm
工作溫度範圍:: -20〜50℃
工作濕度範圍:0〜99%RH
最大尺寸:65×42×23(毫米)
供電質量要求:
1. 電壓紋波:小於100mV的。
2. 電源電壓穩定度:4.95〜5.05V。
3. 電源:大於1W(5V @200毫安)。
4. 上和下電電壓浪湧是系統電源電壓的小於50%。
### 主要參數
灰塵感測器GP2Y1014AU
靈敏度:0.5V/(0.1mg/m3)
輸出電壓(無灰塵): 0.9V(TYP)
消耗電流:11mA
測試得到的資料和空氣品質對照:
3000 + = 很差
1050-3000 = 差
300-1050 = 一般
150-300 = 好
75-150 = 很好
0-75 = 非常好
![](https://i.imgur.com/uWOD0ab.png)
* 腳位
![](https://i.imgur.com/VDlsRqJ.png)
![](https://i.imgur.com/cr0ayFC.png)
## 空氣品質感測器 程式碼
```c++=
int measurePin = 0; //Connect dust sensor to Arduino A0 pin
int ledPower = 2; //Connect 3 led driver pins of dust sensor to Arduino D2int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;void setup(){
Serial.begin(9600);
pinMode(ledPower,OUTPUT);
}void loop(){
digitalWrite(ledPower,LOW); // power on the LED
delayMicroseconds(samplingTime);voMeasured = analogRead(measurePin); // read the dust value
delayMicroseconds(deltaTime);
digitalWrite(ledPower,HIGH); // turn the LED off
delayMicroseconds(sleepTime);
// 0 - 5V mapped to 0 - 1023 integer values
// recover voltage
calcVoltage = voMeasured * (5.0 / 1024.0);
dustDensity = 0.17 * calcVoltage - 0.1;
Serial.print("Raw Signal Value (0-1023): ");
Serial.print(voMeasured);
Serial.print(" - Voltage: ");
Serial.print(calcVoltage);
Serial.print(" - Dust Density: ");
Serial.print(dustDensity * 1000); // 這裡將數值呈現改成較常用的單位( ug/m3 )
Serial.println(" ug/m3 ");
delay(1000);
}
```
# 參考網站連結
氣體偵測範例
http://www.powenko.com/wordpress/?p=5688
進位
http://coopermaa2nd.blogspot.tw/2011/02/arduino-serial-library.html
GPS訊號處理範例
http://ff320232.blogspot.tw/2012/12/arduinogps.html
簡報範例
http://nfuee.nfu.edu.tw/ezfiles/42/1042/attach/49/pta_37313_3658651_54141.pdf
GPS
http://rcinn.blogspot.tw/2014/08/gps.html
http://www.shs.edu.tw/works/essay/2016/03/2016032008262833.pdf
http://ir.lib.yuntech.edu.tw/ir/bitstream/310060000/10787/2/Zigbee%E9%80%9A%E8%A8%8A%E5%AF%B5%E7%89%A9%E5%AE%9A%E4%BD%8D%E7%B3%BB%E7%B5%B1.pdf
PM2.5
https://www.amebaiot.com/ameba-arduino-pm25/
https://vmaker.tw/archives/work/%E6%99%BA%E6%85%A7%E5%AE%B6%E5%BA%AD%EF%BC%9Apm2-5-%E7%A9%BA%E6%B0%A3%E6%84%9F%E6%B8%AC%E5%99%A8%EF%BC%88%E6%84%9F%E6%B8%AC%E5%99%A8%E7%AF%87%EF%BC%89
:::info
* 成果發表:
要做啥(時間記錄)
做了啥(時間記錄)
做到哪
遇到困難
怎麼解決或是打算怎麼解決,有沒有成功
接下來怎麼做
時程計畫表
![](https://i.imgur.com/t2UIf0z.png)
:::
4/20進度報告
https://docs.google.com/presentation/d/1WCASfVXSgbP78SP06L6k7Jof-mtJXm6r32XvOkdtEI0/edit?usp=sharing
![](https://i.imgur.com/rCa7zzN.png)
http://www2.isu.edu.tw/upload/52/43/topic/103-2/04micro.pdf