บทความนี้จะเปิดเผยต้นทุนคร่าวๆ อุปกรณ์ที่ใช้ การเอาใส่กล่อง(แบบง่ายๆ) อุปกรณ์ที่พอจะหาซื้อได้ตามร้านทั่วๆไป
แน่นอนว่าถอดประกอบดัดแปลงได้ตามความต้องการ
ตัว MCU ที่ใช้คือ ESP32 Lolin with 0.96 OLED รุ่นเก่า ในไหดอง ได้เวลาเอามาใช้เสียที

เป็นเพียงตัวอย่างเบื้องต้น ให้ผู้สนใจนำไปต่อยอดหรือทำใช้งานส่วนตัว

มาดูหน้าตาของ อุปกรณ์เมื่อเสร็จสมบูรณ์กัน

ESP32+OLED+PMS3003 เอาของจากไหดองMCUมาทำ

อุปกรณ์ที่ใช้งาน และราคา
1.ESP32 Lolin with 0.96 inch OLED ราคาประมาณ 3xx-5xx บาท
2. LiPo 3.7V 2000 mah ขนาด 505060 ราคาประมาณ 1xx บาท
3. USB Charger 5V (mini usb input / usb output) ประมาณ 20-30 บาท (สามารถถอดมาจาก Powerbank เก่าๆ บางรุ่นได้)
4. Plantower PMS 3003 เลือกรุ่นนี้มาเพราะ(คิดว่า) พัดลมดูดอากาศ ถอดได้ในอนาคต 7xx-9xx บาท
5. ตัวแปลง Plantower ให้กลายเป็น Pin connector ธรรมดา(ไม่อยากทำหัวสายเอง) 20-30 บาท
6. กล่องเก็บบุหรี่ อันนี้ซ์้อจากร้าน Mister DIY 35 บาท
7. Pin ก้างปลา แบบ งอฉาก
8. อุปกรณ์อื่นๆ สว่านเจาะ สายไฟ ตะไบ กาวช้าง socketสำหรับใส่ pin

Socket สำหรับใส่ Pin และ Pin ก้างปลาแบบงอฉาก เราเอามาใช้เป็นฐานเพื่อยึดอุปกรณ์ตอนติดสุดท้าย

ตัว ESP32 Lolin เราใช้ต่อกับ PMS3003 เพียง 3 ขา ได้แก่ Vin,GND,Rx เท่านั้น ตามรูปนี้

ขาที่ใช้ต่ออุปกรณ์มีแค่นี้ ขา RX ของ ESP32 ต่อไปที่ขา TX ของ PMS นะครับ

การที่เราต่อขา Vin เข้ากับอุปกรณ์อื่น เพื่อจ่ายไฟเลี้ยงให้อุปกรณ์อื่นนั้น
จะทำให้เมื่อเราทำการ Upload โปรแกรม ลง ESP32 ไม่สามารถทำได้ หากไม่ถอดสายสัญญาณ Vin ออกก่อน
*ดังนั้น เมื่อเราจะทำการ Upload โปรแกรมลง ESP32 ให้ดึงสาย Vin ออกก่อนนะครับ

ในส่วนของโปรแกรม
โปรแกรมนี้ ตั้งมาให้ทำการอ่านค่าทุก 1 วินาที แล้วนำไปแสดงผลบนหน้าจอ
โดยหน้าจอจะมี Progress Bar เพื่อเป็นตัวแทนของสถานะการทำงานของอุปกรณ์
เนื่องจากบางครั้ง ค่าที่แสดงบนหน้าจอไม่มีการเปลี่ยนค่า
Progress Bar จะช่วยให้ผู้ใช้งาน สามารถทราบได้ว่าอุปกรณ์ยังทำงานอยู่หรือไม่

ในส่วนของโค้ดอย่างง่ายมีดังนี้


//************************

include “SSD1306.h”

include “PMS.h”

PMS pms(Serial);
PMS::DATA data;

SSD1306 screen(0x3c, 5, 4);

int scale_bar;

void setup() {
Serial.begin(9600);
Serial.println();
Serial.println();

screen.init();
// screen.flipScreenVertically();
screen.setFont(ArialMT_Plain_24);

}

void loop()
{

pms.requestRead();
if (pms.readUntil(data))
{
Serial.print(“PM 1.0 (ug/m3): “);
Serial.println(String(data.PM_AE_UG_1_0));

Serial.print(“PM 2.5 (ug/m3): “);
Serial.println(String(data.PM_AE_UG_2_5));

Serial.print(“PM 10.0 (ug/m3): “);
Serial.println(String(data.PM_AE_UG_10_0));

for(int i=0;i<5;i++){
delay(250);
scale_bar = map(i, 0, 4, 0, 100);
screen.clear();
drawProgressBar();
screen.display();
}

}
else
{
Serial.println(“No data.”);
}

}

//progress bar no display
void drawProgressBar() {
/*drawProgressBar(x, y, width, height, value);
parameters :
p1: x –> coordinate X
p2: y –> coordinate Y
p3: width –> progress bar width
p4: height –> progress bar height
p5: value –> value for progress bar*/
screen.drawProgressBar(10, 55, 100, 4, scale_bar);
screen.setTextAlignment(TEXT_ALIGN_CENTER);
screen.drawString(64, 15, “PM2.5: ” + String(data.PM_AE_UG_2_5));

}

//******************

*pms 3003 ใช้งาน Buadrate ที่ 9600 นะครับ

เมื่อUpload โปรแกรมแล้ว ต่อขา Vin ให้ pms3003 เราก็สามารถ Monitor Value ผ่าน serial terminal และ หน้าจอOLEDได้แล้วครับ


terminal baudrate 9600

ต่อไปก็ประกอบลงกล่อง ก็จัดวางอุปกรณ์ประมาณนี้ครับ

ทดลองต่อเบื้องต้นก่อนติดกาวนะครับ
จบแล้ว

สั้นๆง่ายๆแค่นี้เอง

ESP32 ยังสามารถประยุกต์ใช้งานอื่นๆได้อีก อยากต่อเนท ยิงขึ้น cloud เชื่อมต่อผ่าน bluetooth ไปหาวิธีกันต่อเองนะครับ

ไว้เจอกันงานต่อไปครับ


Paitoon Saelim

อืมมม ขี้เกียจน่ะ

Leave a Reply

Your email address will not be published. Required fields are marked *