แสดงบทความที่มีป้ายกำกับ Sensor แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Sensor แสดงบทความทั้งหมด

วันพุธที่ 15 มกราคม พ.ศ. 2563

Module:Environment:MCU-811 CCS811

Air Quality Sensor Module CCS811

เซนเซอร์วัดคุณภาพอากาศ วัดก๊าซคาร์บอนไดออกไซด์ และ สารประกอบอินทรีย์ระเหยง่าย (Volatile Organic Compounds) การเชื่อมต่อเป็นแบบ i2c ใช้ address 0x5A

VCC ต่อ 3.3
GDN ต่อ Ground
SCL ต่อ 22
SDA ต่อ 21
WAK  ต่อ  Ground (ต้องต่อ Ground เพื่อ Wakeup Sensor)

ภาพจาก Adafruit


ให้ติดตั้ง Adafruit CCS811 Library แล้วลองตัวอย่าง
File->Examples->Adafruit_CCS811->CCS811_test


 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
#include "Adafruit_CCS811.h"
Adafruit_CCS811 ccs;
void setup() {
  Serial.begin(9600);
  Serial.println("CCS811 test");
  if(!ccs.begin()){
    Serial.println("Failed to start sensor! Please check your wiring.");
    while(1);
  }
  // Wait for the sensor to be ready
  while(!ccs.available());
}
void loop() {
  if(ccs.available()){
    if(!ccs.readData()){
      Serial.print("CO2: ");
      Serial.print(ccs.geteCO2());
      Serial.print("ppm, TVOC: ");
      Serial.print(ccs.getTVOC());
      Serial.print("ppb, Temp: ");
      Serial.print(ccs.calculateTemperature());
      Serial.println();
    }
    else{
      Serial.println("ERROR!");
      while(1);
    }
  }
  delay(500);
}


ค่าของอุณหภูมินำมาใช้งานอะไรไม่ค่อยได้เท่าไหร่เท่าที่ทดสอบมันแกว่งไปมาง
แนะนำให้ทำการ burn-in โดยการใช้งาน 48ช.ม. ก่อนวัดค่าจริง และก่อนใช้งานทุกครั้งควรเปิดทิ้งไว้  20 นาทีก่อน เพราะความไวของเซนเซอร์จะเปลี่ยนแปลงตอนเริ่มใช้งานแรกๆ

Note


สารประกอบอินทรีย์ระเหยง่าย (VOCs) ในบรรยากาศจัดเป็นอากาศพิษ (Toxic Air) ซึ่งในชีวิตประจำวันเราได้รับสารชนิดนี้จากผลิตภัณฑ์หลายอย่าง เช่า สีทาบ้าน
ควันบุหรี่ น้ำยาฟอกสี สารตัวทำละลายในการพิมพ์ อู่พ่นสีรถยนต์ โรงงานอุตสาหกรรม น้ำยาซักแห้ง น้ำยาสำหรับย้อมผมและดัดผม สารกำจัดศัตรูพืช
สารที่เกิดจากการเผาไหม้และปนเปื้อนในอากาศ น้ำดื่ม อาหาร และเครื่องดื่ม

เพิ่มเติม
Adafruit CCS811 Air Quality Sensor

วันพฤหัสบดีที่ 21 พฤศจิกายน พ.ศ. 2562

Module:Environment:BME280

Module BME280

    เป็นโมดูลวัดอุณหภูมิความชื้นและความดันอากาศ มีหลายรุ่น หน้าตาหลายแบบ ที่ผมใช้เป็นดังภาพภาพ รองรับการสื่อสารแบบ I2C และ SPI บางรุ่น ที่มี 4 ขารองรับแค่ I2C อย่างเดียว

BME-280 แบบ 6 ขารองรับ SPI และ I2C

รุ่นที่คล้ายกันมากคือ BMP280 (ดู P กับ E)จะถูกกว่าไม่สามารถวัดความชื้นได้ หน้าตาแทบเหมือนกันบางทีคนขายก็เอา BMP280 มาขายเป็น BME280 ดูยากมากเพราะที่แตกต่างกันคือเซเซอร์ที่เป็นกล่องเงินๆตัวเล็กๆที่อยู่ตรงกลาง ต้องใช้แว่นขยายดูเบอร์ ถ้าโค้ดเป็นตัว U ก็เป็น BME280 ของแท้  วิธีการดูในรายละเอียดผมใส่ในลิงค์ด้านล่าง ลองโปรแกรมเลยก็ได้ถ้าถูกรุ่นถึงจะใช้งานได้  ให้ติดตังไลบารี ให้เรียก Library Manager ขึ้นมา โดยเข้าไปที่ Sketch > Incude Library > Manage Libraries …
ค้น BME280 ติดตั้งของ Adafruit
VCC ต่อ 3.3v
GND ต่อ Ground
SCL ต่อ 22
SDA ต่อ 21

ขณะนี้ไลบารี่ของ Adafruit รุ่น 2.0.x มีปัญหาในการใช้งานโค้ดด้านล่างอาจจะไม่สามารถใช้งานได้ แนะนำให้ใช้ 1.1.0  ลงมา


 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
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1013.25) //ความกดอากาศที่ระดับน้ำทะเล
Adafruit_BME280 bme;                   // ตัวอย่างใช้การเชื่อมต่อ I2C
unsigned long delayTime;
void setup() {
    Serial.begin(9600);
    if (!bme.begin()) {
        Serial.println("Invalid BME280 sensor, check wiring, address, sensor ID!");
        Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
        while(1);
    }
}
void loop() { 
    Serial.print("Temperature = ");
    Serial.print(bme.readTemperature());
    Serial.println(" *C");
    Serial.print("Pressure = ");
    Serial.print(bme.readPressure() / 100.0F);
    Serial.println(" hPa");
    Serial.print("Approx. Altitude = ");
    Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
    Serial.println(" m");
    Serial.print("Humidity = ");
    Serial.print(bme.readHumidity());
    Serial.println(" %");
    Serial.println();
    delay(1000);
}



เราสามารถหาค่าความสูงจากระดับน้ำทะเลได้เป็นของแถม เมื่อเทียบความดันอากาศ ณ ตำแหน่งที่เราวัดกับความดันอากาศที่ระดับน้ำทะเล ซึ่งจะมีค่า 101,325 Pa (1,013.25 hPa; 1,013.25 mbar)มีค่าเท่ากับ 760 mm Hg, 29.9212 inches Hg หรือ 14.696 psi

เพิ่มเติม


วันอาทิตย์ที่ 17 พฤศจิกายน พ.ศ. 2562

Module:Environment:DHT11/DHT22(AM2302)

Module DHT11/DHT22(AM2302)

โมดูล DHT22/AM2302



    เป็นโมดูลสำหรับวัดอุณหภูมิและความชื้น ให้ค่าออกเป็นดิจิตอล เป็นเซนเซอร์รุ่นยอดนิยม DHT11 และ DHT22 การใช้งานเหมือนกันการวางขาก็เหมือนกัน แต่ความละเอียดในการวัดต่างกัน
เซนเซอร์เปล่าๆ ต้องต่อตัวต้นทาน 10K วงจร Pullup ถ้าเป็นโมดูก็พร้อมใช้งานเลย
เซนเซอร์ DHT22


1 3-5V
2 ต่อขาดิจิตอลอินพุตของบอร์ด ต่ด 10k Ohm pull-up resistor
3 ไม่ได้ใช้
4 GND

ถ้าเป็นโมดูลจะเห็นแค่สามขา ตัดขา 3 ออก

DHT11
DHT22
Temperature range0 to 50 ºC +/-2 ºC-40 to 80 ºC +/-0.5ºC
Humidity range20 to 90% +/-5%0 to 100% +/-2%
ResolutionHumidity: 1%
Temperature: 1ºC
Humidity: 0.1%
Temperature: 0.1ºC
Operating voltage3 – 5.5 V DC3 – 6 V DC
Current supply0.5 – 2.5 mA1 – 1.5 mA
Sampling period1 second2 seconds
ติดตั้งไลบารี DHT sensor ( by Adafruit) ผ่าน Library Manager ก่อนใช้โค้ดด้านล่าง แก้ค่า DHTPIN และเลือก DHTTYPE ว่าจะใช้ DHT11 หรือ DHT22 โค้ดเอามาจาก DHTtest ที่มากับตัวอย่าง

 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
// ESP32: อ่านค่าเซนเซอร์ DTHxx 
#include "DHT.h" ติดตั้ง DHT sensor library by Adafruit ก่อน
#define DHTPIN 12     // ขา GPIO ที่อ่านค่า

// เลือกว่าจะใช้ตัวไหนให้เอาคอมเมนต์ออก
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);
void setup() {
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));
  dht.begin();
}
void loop() {
  delay(2000); //พักรอเล็กน้อยระหว่างอ่านค่า
  //ใช้เวลาอ่าน  0.25 วินาที อาจจะถึง 2 วินาที
  float h = dht.readHumidity();       //ความชื้น 
  float t = dht.readTemperature();    //อุณหภูมิเป็นเซลเซียส (Default)
  float f = dht.readTemperature(true);//อุณหภูมิเป็นฟาเรนไฮต์(isFahrenheit = true)

  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return; // อ่านค่าไม่ได้กลับไปอ่านต่อ
  }
  //คำนวณ heat index เป็นฟาเรนไฮต์ (default)
  float hif = dht.computeHeatIndex(f, h); 
  //คำนวณ heat index เป็นเซลเซียส (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);
  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}



เพิ่มเติม
Arduino library for DHT11, DHT22, etc Temperature & Humidity Sensors



Module:Control:IFR 520

MOSFET Module  สวิตซ์ปิดเปิดไฟเหมือน Relay แต่เป็น Solid state (ไม่มีส่วนที่เคลื่อนไหว) มันทำงานที่ความถี่สูงได้เหมาะกับเอาไปใช้งาน PWM ...