[Arduino] วิธีใช้งาน MAX44009 (Ambient Light Sensor) ไม่ถึง 5 นาที
Overview:
MAX44009 (Ambient Light Sensor) เป็นเซ็นเซอร์วัดความเข้มแสงแบบ I2C ซึ่งใช้พลังงานต่ำมาก Ultra-Low Power กันเลยทีเดียว โดยทางผู้ผลิตเขาบอกว่าใช้พลังงานน้อยกว่า 1μA และสำหรับการทำงานนั้นรองรับ ADC ได้ถึง 22-bit และวัดความเข้มแสงได้ตั้งแต่ 0.045 Lux ถึง 188,000 Lux อีกทั้งตัวโมดูลนั้นได้ติด IR filter และ UV filter มาด้วยเพื่อเพิ่มประสิทธิภาพของ Photodiode ในการรับแสงครับ ส่วนตารางด้านล่างนี้จะเป็นสเปคของโมดูลนี้นะครับ
Hardware Component:
- Arduino Uno R3
- Ambient Light Sensor(MAX44009)
- Wire
Library Installation::
อันดับแรกเข้าไปดาวน์โหลดและติดตั้ง Library สำหรับ MAX44009 ก่อนนะครับ ซึ่งวิธีติดตั้ง Library เพียงเราเปิดโปรแกรม ArduinoIDE หลังจากนั้นเลือก Sketch -> Include Library -> Add .ZIP Library แล้วจากนั้นก็เลือก Library ที่เราดาวน์โหลดมา
Library for MAX44009 ambient light sensor
Wiring Diagram:
ต่อสายเสร็จแล้ว ติดตั้ง Library เสร็จแล้วขั้นตอนต่อไปทดสอบใช้งานกันครับ
เตรียมโค๊ดที่จะใช้ในการทดสอบกันก่อนเลย เสร็จแล้วทำการอัพโหลดเข้าไปยัง Arduino Board โลด!!!
#include "Wire.h"
#include "Max44009.h"
Max44009 myLux(0x4A);
uint32_t lastDisplay = 0;
void setup()
{
Serial.begin(115200);
Serial.println(">>>>>>>>>Start MAX44009<<<<<<<<<<");
}
void loop()
{
if (millis() - lastDisplay >= 1000)
{
lastDisplay += 1000;
float lux = myLux.getLux();
int err = myLux.getError();
if (err != 0)
{
Serial.print("Error:\t");
Serial.println(err);
}
else
{
Serial.print("Lux:\t");
Serial.println(lux);
}
}
}
เมื่ออัพโหลดเสร็จให้เปิด Serial Monitor เพื่อดูค่าของ Lux โดยตั้ง Baudrate อยู่ที่ 115200 bps ซึ่งจากตัวอย่างนี้ผมได้ใช้แสงจากแฟลชของโทรศัพท์ส่องไปที่ตัวรับค่าโดยตรงจะเห็นได้ว่าค่าสูงสุดที่อ่านได้นั้นจะอยู่ที่ 2937.60 (บางคนอาจจะไม่พบปัญหานะครับ) ถึงแม้ว่าจะเอาแสงจากแฟลชเข้าใกล้เท่าไหร่ค่าก็ไม่เพิ่มขึ้นแม้แต่อย่างใด อ่าวว! มีปัญหาซะแล้วสิ
วิธีแก้ไขสำหรับคนที่มีปัญหานะครับ
ให้เราเพิ่มโค๊ดเข้าไปไว้ที่ฟังก์ชั่น void setup() โดยใส่ไว้แค่ครั้งแรกครั้งเดียวนะครับเพื่อที่บอร์ด Arduino ของเราจะไปตั้งค่า IC MAX44009 ให้ทำงานใน Automatic Mode หลังจากนั้นก็สามารถลบออกได้เลยครับ
myLux.setAutomaticMode();
ซึ่งตัวโค๊ดนี้จะเข้าไปตั้งค่าให้ IC MAX44009 ทำงานภายใต้อัลกอลิทึมของมันเอง (Automatic Mode) ซึ่งโค๊ดก่อนหน้านั้นที่เราทำการอัพโหลดเพื่อทดสอบนั้นก็สามารถใช้งานได้นะครับแต่ตัว IC MAX44009 อาจจะถูกตั้งค่ามาจากโรงงานให้ทำงานใน Manual Mode เท่านั้นเองครับ ลองอัพโหลด Sketch อีกรอบสิ
เพียงเท่านี้เราก็มี Arduino Lux Meter ไว้ใช้งานแล้วนะครับ ซึ่งค่าที่ได้นั้นอาจจะถูกต้องหรือไม่นั้นผมก็ไม่ทราบเหมือนกันเพราะผมก็ไม่มี Lux Meter ใช้สำหรับทดสอบเหมือนกันครับ 5555 แต่สำหรับตัวเซ็นเซอร์ตัวนี้สามารถนำไปประยุกต์ได้กับหลายโปรเจค อาจจะเป็นการเก็บค่าความเข้มแสงแดดสำหรับวิเคราะห์การเจริญเติบโตของพืชผักหรือยังไงก็แล้วแต่นะครับ
สำหรับวันนี้ขอบคุณที่ติดตามครับ สวัสดีครับ 🙂