โมดูล PCF8574 เป็นบอร์ดอิเล็กทรอนิกส์ขนาดเล็กที่นิยมใช้ในวงการ Arduino และไมโครคอนโทรลเลอร์ต่างๆ เพื่อขยายจำนวนขา Input/Output (I/O) เพิ่มเติม โดยอาศัยโปรโตคอล I2C ในการสื่อสาร ซึ่งเป็นโปรโตคอลที่ใช้สายสัญญาณเพียง 2 เส้น (SDA และ SCL) ทำให้ประหยัดทรัพยากรของไมโครคอนโทรลเลอร์
คุณสมบัติ:
ขยายขา I/O 8 ขา, ใช้โปรโตคอล I2C, สามารถตั้งค่าเป็น input หรือ output ได้
แรงดันไฟฟ้าที่ใช้งานได้: ปกติจะอยู่ที่ 2.5V - 5.5V
กระแสไฟฟ้าสูงสุดต่อขา: ขึ้นอยู่กับรุ่น แต่โดยทั่วไปจะอยู่ที่ประมาณ 25mA
อุณหภูมิในการทำงาน: ขึ้นอยู่กับรุ่น แต่โดยทั่วไปจะอยู่ที่ -40 ถึง +85 องศาเซลเซียส
ทำไมต้องใช้โมดูล PCF8574
- ขยายขา I/O: ไมโครคอนโทรลเลอร์หลายรุ่นมีขา I/O จำกัด การใช้โมดูลนี้ช่วยให้เพิ่มจำนวนขา I/O ได้มากขึ้น
- ใช้งานง่าย: มีเพียง 4 สายในการเชื่อมต่อ (VCC, GND, SDA, SCL)
- I2C: โปรโตคอล I2C ใช้งานง่ายและมีประสิทธิภาพ
- ประยุกต์ใช้ได้หลากหลาย: สามารถใช้ควบคุม LED, เซ็นเซอร์, มอเตอร์ หรืออุปกรณ์อื่นๆ ได้
โครงสร้างและการทำงาน
- ชิปหลัก: PCF8574 เป็นชิปที่ทำหน้าที่ขยายขา I/O 8 ขา
- อินเทอร์เฟซ: ใช้โปรโตคอล I2C ในการสื่อสารกับไมโครคอนโทรลเลอร์
- การตั้งค่า Address: สามารถตั้งค่า Address ของโมดูลได้เพื่อให้สามารถใช้โมดูลหลายตัวพร้อมกันบนระบบเดียวกัน
การใช้งาน
- เชื่อมต่อ: เชื่อมต่อโมดูล PCF8574 เข้ากับไมโครคอนโทรลเลอร์ผ่านสาย jumper โดยเชื่อมต่อ VCC, GND, SDA, SCL
- เขียนโปรแกรม: เขียนโปรแกรมบนไมโครคอนโทรลเลอร์เพื่อควบคุมโมดูล PCF8574 โดยใช้ไลบารี I2C ที่มีให้
- ควบคุมขา I/O: ตั้งค่าขา I/O ของโมดูลให้เป็น Input หรือ Output แล้วอ่านหรือเขียนค่าตามต้องการ
โค้ดตัวอย่างการใช้งานโมดูล PCF8574 กับ Arduino
เข้าใจง่ายๆ: โค้ดนี้จะช่วยให้คุณควบคุม LED 8 ดวงที่เชื่อมต่อกับโมดูล PCF8574 ผ่านบอร์ด Arduino โดยใช้โปรโตคอล I2C
สิ่งที่ต้องเตรียม:
- บอร์ด Arduino (เช่น Arduino Uno, Nano)
- โมดูล PCF8574
- LED 1 ดวง
- สาย Jumper
- Resistor 220 Ohm 1 ตัว (สำหรับต่อกับ LED เพื่อจำกัดกระแสไฟฟ้า)
การเชื่อมต่อ:
- เชื่อมต่อโมดูล PCF8574 กับ Arduino:
- VCC ของโมดูลต่อกับ 5V ของ Arduino
- GND ของโมดูลต่อกับ GND ของ Arduino
- SDA ของโมดูลต่อกับ SDA ของ Arduino (มักจะเป็น A4)
- SCL ของโมดูลต่อกับ SCL ของ Arduino (มักจะเป็น A5)
- เชื่อมต่อ LED:
- เชื่อมขั้วบวกของ LED แต่ละดวงเข้ากับขา P1 ของโมดูล PCF8574
- เชื่อมขั้วลบของ LED เข้ากับ Resistor 220 Ohm แล้วต่อเข้ากับ GND ของโมดูล
#include <Wire.h>
#include "PCF8574.h" // https://github.com/xreef/PCF8574_library
// ตั้งค่า Address ของโมดูล PCF8574 (ปรับเปลี่ยนตามที่คุณตั้งค่า)
// Set i2c address
PCF8574 pcf8574(0x38);
void setup() {
// ตั้งค่าขาทั้งหมดของโมดูลเป็น Output
pcf8574.pinMode(1, OUTPUT); // กำหนดพินเป็น Input
// ... (ตั้งค่าขาอื่นๆ ตามต้องการ)
// เริ่มต้นการสื่อสาร I2C
Serial.print("Init pcf8574...");
if (pcf8574.begin()){
Serial.println("OK");
}else{
Serial.println("error");
}
}
void loop() {
// ทำให้ LED ทั้งหมดติด
pcf8574.digitalWrite(1, HIGH);
delay(1000);
// ทำให้ LED ทั้งหมดดับ
pcf8574.digitalWrite(1, LOW);
delay(1000);
}
อธิบายโค้ด:
- Include Library: เราต้อง include ไลบารี
Wire.h
สำหรับการสื่อสาร I2C และ PCF8574.h
สำหรับควบคุมโมดูล
- ตั้งค่า Address: กำหนด Address ของโมดูล PCF8574 (อาจแตกต่างกันไปขึ้นอยู่กับการตั้งค่า Jumper บนโมดูล)
- สร้าง Object: สร้าง Object ชื่อ pcf8574 เพื่อควบคุมโมดูล
- ตั้งค่าขาเป็น Output: ตั้งค่าขา P1 ของโมดูลเป็น Output เพื่อควบคุม LED
- Loop: ในฟังก์ชัน loop จะสลับเปิด-ปิด LED