ATmega328P ตัวเดียวก็ทำ Data Logger ได้ ไม่ต้องใช้ Arduino Board
เวลาเห็น ATmega328P หลายคนนึกถึง Arduino Uno แต่จริง ๆ แล้ว Microcontroller ตัวเดียวกัน สามารถถูกนำไปวางบนวงจรของเราโดยตรง โดยไม่จำเป็นต้องใช้ Development Board ทั้งแผ่น
Project นี้ทดลองสร้าง Environmental Data Logger ด้วย ATmega328P-AUR แบบ Standalone ต่อ DHT22 สำหรับอุณหภูมิและความชื้น, BH1750 สำหรับแสง, SSD1306 OLED สำหรับแสดงผล และ MicroSD สำหรับบันทึกข้อมูลเป็น CSV
Firmware จะอ่าน Sensor และบันทึกข้อมูลทุก 10 วินาที พร้อมปุ่มสำหรับสั่ง Log ทันที ทำให้ Project นี้เป็นตัวอย่างที่ดีว่า จาก Arduino Prototype เราจะลดระบบ ให้เหลือเฉพาะ MCU และวงจรที่จำเป็นได้อย่างไร
- ใช้ ATmega328P-AUR แบบ Standalone แทน Arduino Development Board สำเร็จรูป
- DHT22 วัดอุณหภูมิและความชื้น
- BH1750FVI วัดระดับแสงเป็น lux
- SSD1306 OLED และ BH1750 ใช้ I2C Bus ร่วมกัน
- MicroSD เชื่อมต่อผ่าน SPI และเก็บไฟล์ชื่อ ENVLOG.CSV
- Firmware บันทึกอัตโนมัติทุก 10 วินาที
- มีปุ่มสำหรับบันทึกค่าเพิ่มทันที และ LED แสดงผลเมื่อเขียนข้อมูลสำเร็จ
- ไม่มี RTC ดังนั้น Time ใน CSV เป็นตัวนับวินาที ไม่ใช่วันและเวลาจริง
- Project ยังมีสถานะ Work in progress และมีจุดที่ควรตรวจ Schematic ก่อนสร้าง PCB จริง
โปรเจกต์นี้คืออะไร?
Environmental Data Logger ตัวนี้ออกแบบมาเพื่อเก็บข้อมูล Temperature, Relative Humidity และ Ambient Light สำหรับการทดลองในพื้นที่อย่าง Workshop, Storage Room, Greenhouse หรือ Laboratory
แทนที่จะใช้ Arduino Uno ทั้งบอร์ด ผู้สร้างเลือกวาง ATmega328P-AUR ลงบนวงจรโดยตรง แล้วต่อ Peripheral เท่าที่ระบบต้องใช้
จุดประสงค์หลักจึงไม่ได้มีแค่ “สร้างเครื่องวัดอากาศ” แต่ยังสาธิตขั้นต่อไปของ Embedded Design: จาก Development Board ไปสู่ Standalone Microcontroller Circuit
ทำไมไม่ใช้ Arduino Uno ทั้งบอร์ด?
Development Board เหมาะมากตอน Prototype เพราะรวม Clock, Reset, Power, USB Interface และ Connector มาให้แล้ว
แต่เมื่อ Project เริ่มนิ่ง การวาง Microcontroller โดยตรง ทำให้ผู้ออกแบบเลือกเฉพาะ Hardware ที่จำเป็น และรวมวงจรเข้าไปใน Custom PCB ได้ง่ายขึ้น
ATmega328P-AUR ใน Project นี้เป็น Package แบบ TQFP ซึ่งเหมาะกับการนำไปออกแบบลง PCB มากกว่าการเสียบลง Breadboard โดยตรง
เราต้องรับผิดชอบเองทั้ง Power, Clock, Reset, Programming Header, Decoupling และ Interface ของ Peripheral ต่าง ๆ
Standalone ATmega328P ต้องมีอะไรเพิ่ม?
Source สร้าง Minimum System รอบ MCU ด้วยองค์ประกอบหลักดังนี้:
- ATmega328P-AUR
- External Crystal
- Crystal Load Capacitors
- RESET Pull-up
- Decoupling Capacitors
- 3.3 V Power Rail
- ICSP Header สำหรับ Programming
Power Rail ตาม Project
Source ต่อ VCC และ AVCC เข้ากับ 3.3 V พร้อม 100 nF Decoupling Capacitor และใช้ 10 µF Capacitor สำหรับ Supply Stabilization
AREF ถูกต่อผ่าน 100 nF Capacitor ลง Ground ตาม Wiring ที่ Project ระบุ
Clock และ Reset
Source ใช้ External Crystal 16 MHz ระหว่าง XTAL1 และ XTAL2 พร้อม 22 pF Capacitor สองตัว
RESET มี 10 kΩ Pull-up ไปที่ Supply และ Wiring Description ยังกล่าวถึง Reset Push Button ที่ต่อไป Ground
Programming
ICSP Header ใช้ MISO, MOSI, SCK, RESET, VCC และ GND สำหรับ Programming MCU และสามารถใช้ติดตั้ง Bootloader ได้
จุดสำคัญ: Project ระบุ 3.3 V + 16 MHz แต่ Official Datasheet ต้องตรวจอีกครั้ง
Hackster Project ระบุให้ ATmega328P-AUR ทำงานที่ 3.3 V และใช้ External Crystal 16 MHz แต่ Speed Grade ในเอกสาร Microchip ไม่รองรับ 16 MHz ที่ Supply 3.3 V ตามช่วงที่ระบุใน Datasheet
เอกสารทางการของ ATmega328P ระบุ Speed Grade โดยทั่วไปว่า:
| Supply Range | Speed Grade ที่ Official Source ระบุ |
|---|---|
| 1.8–5.5 V | 0–4 MHz |
| 2.7–5.5 V | 0–10 MHz |
| 4.5–5.5 V | 0–20 MHz |
ดังนั้น Combination 3.3 V + 16 MHz ที่อยู่ใน Project ไม่ควรถูกนำไปถือว่าอยู่ใน Operating Speed Grade ที่ Microchip รับรอง
หากจะสร้างวงจรจริง ควรตรวจ Official Datasheet ของ Part และออกแบบ Clock / Supply ให้สัมพันธ์กับ Speed Grade ที่ผู้ผลิตกำหนด รวมถึงตรวจ Voltage Compatibility ของ Sensor, OLED และ MicroSD ทั้งระบบใหม่
Architecture ของ Environmental Data Logger
BH1750 → I2C → ATmega328P → I2C OLED
ATmega328P → SPI → MicroSD
MCU ใช้ Interface หลายแบบพร้อมกัน:
- DHT22 ใช้ Digital Data Line
- BH1750 และ OLED แชร์ I2C Bus
- MicroSD ใช้ SPI
- Push Button และ Status LED ใช้ GPIO
จึงเป็น Project ที่เหมาะกับการเรียนว่า MCU ขนาดเล็กสามารถจัดการ Peripheral หลาย Protocol ได้อย่างไรในระบบเดียว
Hardware ที่ใช้ใน Project
| Component | หน้าที่ |
|---|---|
| ATmega328P-AUR | Main Microcontroller |
| 16 MHz Crystal | External Clock ตาม Project |
| MCP1700-3302E/TO | 3.3 V LDO Regulator ตาม BOM |
| DHT22 / AM2302 | Temperature + Relative Humidity |
| BH1750FVI | Ambient Light Sensor |
| SSD1306 128×64 OLED | Local Display |
| MicroSD Module + Card | Data Storage |
| Status LED | แจ้งเมื่อเขียนข้อมูลสำเร็จ |
| Push Button | Manual Logging ตาม Hardware List |
| ICSP Header | In-system Programming |
DHT22 วัดอุณหภูมิและความชื้นอย่างไร?
DHT22 ใช้ Digital Data Line แยกจาก I2C และ SPI โดย Source ระบุ Wiring ดังนี้:
| DHT22 | ATmega328P-AUR |
|---|---|
| VCC | 3.3 V ตาม Project |
| GND | Common Ground |
| DATA | PD2 / Arduino Digital Pin 2 |
| DATA Pull-up | 1 kΩ ไป 3.3 V ตาม Source |
Firmware ตรวจว่าค่า Temperature หรือ Humidity เป็น NaN หรือไม่ หากอ่าน Sensor ไม่สำเร็จ OLED จะแสดงข้อความ DHT22 read error
BH1750 และ OLED ใช้ I2C Bus เดียวกัน
BH1750FVI และ SSD1306 แชร์ SDA / SCL คู่เดียวกัน
| Signal | ATmega328P | อุปกรณ์ |
|---|---|---|
| SDA | PC4 / A4 | BH1750 + SSD1306 |
| SCL | PC5 / A5 | BH1750 + SSD1306 |
Source ระบุให้ใช้ 4.7 kΩ Pull-up จาก SDA และ SCL ไป 3.3 V หาก Sensor Module หรือ OLED Module ยังไม่มี Pull-up ติดมา
ใน Firmware OLED Address ถูกกำหนดเป็น: 0x3C
MicroSD เชื่อมต่อผ่าน SPI
Data Logging ใช้ MicroSD Card และ ATmega328P เชื่อมต่อผ่าน SPI
| MicroSD | ATmega328P / Arduino Pin Mapping |
|---|---|
| MOSI | PB3 / D11 |
| MISO | PB4 / D12 |
| SCK | PB5 / D13 |
| CS | PB2 / D10 |
| VCC | 3.3 V ตาม Project |
| GND | Common Ground |
Source ระบุให้ใช้ MicroSD Module ที่ออกแบบสำหรับ 3.3 V และเตือนไม่ให้ต่อ Module แบบ 5 V-only เข้ากับระบบ 3.3 V โดยตรง หากยังไม่ได้ตรวจ Interface Requirements
ก่อนใช้งาน Source แนะนำให้ Format Card เป็น: FAT32
ระบบบันทึกข้อมูลทุก 10 วินาทีอย่างไร?
Code กำหนด:
Flow ของแต่ละรอบคือ:
Function recordMeasurement() เป็นส่วนกลางที่ใช้ทั้ง Automatic Logging และ Manual Logging
ENVLOG.CSV มีข้อมูลอะไร?
เมื่อ SD Card เริ่มทำงาน Firmware เปิดไฟล์: ENVLOG.CSV
ถ้าไฟล์ยังว่าง จะเขียน Header:
Format แบบ CSV ทำให้เปิดต่อใน Spreadsheet, Data Analysis Tool หรือ Script ภายหลังได้ง่าย
Design ไม่มี RTC ดังนั้นค่า Time เป็น Elapsed Seconds Counter ไม่ใช่ Calendar Timestamp เช่น วันที่และเวลา 2026-09-18 10:00:00
หากต้องการ Calendar Timestamp ผู้สร้างเสนอ DS3231 Real-Time Clock ไว้ใน Possible Improvements แต่ยังไม่ได้อยู่ใน Prototype ปัจจุบัน
กดปุ่มเพื่อ Manual Log ได้ และ LED บอกเมื่อบันทึกสำเร็จ
Manual Log Button ใน Firmware ใช้ Digital Pin 7 และเปิด Internal Pull-up
เมื่อกดปุ่ม: recordMeasurement() จะถูกเรียกทันที
ถ้าเขียน SD สำเร็จ Status LED ที่ Digital Pin 6 จะติดประมาณ 100 ms แล้วดับ
การกด Manual Log ไม่ได้เพิ่ม
elapsedSeconds ดังนั้น Manual Record จะใช้ค่า Time Counter ปัจจุบันในขณะนั้นSource Code ของ Environmental Data Logger
Source ให้ Arduino Sketch เต็มชุด สำหรับอ่าน DHT22 และ BH1750, Update OLED และ Append ข้อมูลลง MicroSD
Library ที่ Code ใช้ประกอบด้วย:
- Wire
- SPI
- SD
- DHT
- Adafruit GFX
- Adafruit SSD1306
- BH1750
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <DHT.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <BH1750.h>
#define DHTPIN 2
#define DHTTYPE DHT22
#define SD_CS 10
#define STATUS_LED 6
#define BUTTON_PIN 7
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
DHT dht(DHTPIN, DHTTYPE);
BH1750 lightMeter;
Adafruit_SSD1306 display(
SCREEN_WIDTH,
SCREEN_HEIGHT,
&Wire,
-1
);
unsigned long lastLog = 0;
unsigned long elapsedSeconds = 0;
const unsigned long LOG_INTERVAL = 10000;
void showMessage(const char *message)
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println(message);
display.display();
}
bool writeLog(float temperature,
float humidity,
float lux)
{
File file = SD.open("ENVLOG.CSV", FILE_WRITE);
if (!file)
{
return false;
}
file.print(elapsedSeconds);
file.print(",");
file.print(temperature, 2);
file.print(",");
file.print(humidity, 2);
file.print(",");
file.println(lux, 2);
file.close();
return true;
}
void displayReadings(float temperature,
float humidity,
float lux)
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print("Temperature: ");
display.print(temperature, 1);
display.println(" C");
display.setCursor(0, 16);
display.print("Humidity: ");
display.print(humidity, 1);
display.println(" %");
display.setCursor(0, 32);
display.print("Light: ");
display.print(lux, 0);
display.println(" lux");
display.setCursor(0, 48);
display.print("Time: ");
display.print(elapsedSeconds);
display.println(" s");
display.display();
}
void recordMeasurement()
{
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
float lux = lightMeter.readLightLevel();
if (isnan(temperature) || isnan(humidity))
{
showMessage("DHT22 read error");
return;
}
if (lux < 0)
{
showMessage("BH1750 read error");
return;
}
displayReadings(temperature, humidity, lux);
if (writeLog(temperature, humidity, lux))
{
digitalWrite(STATUS_LED, HIGH);
delay(100);
digitalWrite(STATUS_LED, LOW);
}
else
{
showMessage("SD write error");
}
}
void setup()
{
pinMode(STATUS_LED, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
Serial.begin(9600);
Wire.begin();
dht.begin();
lightMeter.begin();
if (!display.begin(
SSD1306_SWITCHCAPVCC,
0x3C))
{
while (1);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("ATmega328P-AUR");
display.println("Environmental");
display.println("Data Logger");
display.display();
delay(2000);
if (!SD.begin(SD_CS))
{
showMessage("SD init failed");
}
else
{
File file = SD.open("ENVLOG.CSV", FILE_WRITE);
if (file)
{
if (file.size() == 0)
{
file.println(
"Time,Temperature_C,Humidity_Percent,Light_Lux"
);
}
file.close();
}
}
recordMeasurement();
lastLog = millis();
}
void loop()
{
if (millis() - lastLog >= LOG_INTERVAL)
{
lastLog = millis();
elapsedSeconds += 10;
recordMeasurement();
}
if (digitalRead(BUTTON_PIN) == LOW)
{
recordMeasurement();
delay(300);
}
}
ควร Build และ Test เป็นลำดับ แทนการต่อทุกอย่างพร้อมกัน
Source แนะนำให้ประกอบและทดสอบระบบเป็น Stage ซึ่งมีประโยชน์มากกับ Standalone MCU เพราะถ้าทุกอย่างถูกต่อพร้อมกัน การหา Fault จะยากขึ้นทันที
- ประกอบ Power, Clock, Reset และ ICSP
- ตรวจว่า MCU สามารถ Program ได้
- ทดสอบ OLED แยก
- ทดสอบ DHT22
- ทดสอบ BH1750
- ทดสอบ MicroSD
- ค่อยรวม Logging Flow ทั้งระบบ
Standalone MCU Debugging ควรเริ่มจาก Minimum System ก่อน Sensor และ Storage เพราะถ้า Power หรือ Clock ยังไม่ทำงาน Peripheral ทุกชิ้นที่ต่อเพิ่มก็จะทำให้ Debug ซับซ้อนขึ้น
Testing ก่อนใช้งานจริง
1. ตรวจ Power Rail
Source แนะนำใช้ Digital Multimeter ตรวจ Supply และตรวจ Short Circuit ก่อนจ่ายไฟ
อย่างไรก็ตาม เนื่องจาก Clock / Voltage Combination ของ Project มี Conflict กับ Official Speed Grade ต้อง Resolve Design Point นี้ก่อนถือว่า Power Architecture พร้อมใช้งาน
2. ทดสอบ DHT22
เปรียบเทียบค่า Temperature และ Humidity กับค่าห้องหรือ Reference ที่ทราบโดยประมาณ เพื่อดูว่า Sensor ตอบสนองสมเหตุสมผลหรือไม่
3. ทดสอบ BH1750
ถ้ามี Light Meter Source แนะนำให้นำมาเปรียบเทียบ และทดลองเปลี่ยนสภาพแสง เพื่อดูว่าค่า Lux เปลี่ยนตามจริง
4. ทดสอบ MicroSD
Format Card เป็น FAT32 แล้วตรวจว่า Firmware สามารถสร้างและ Append ENVLOG.CSV ได้
จุดที่ Source ยังไม่ชัดและควรตรวจอีกครั้งก่อนทำ PCB
1. จำนวน Push Button ใน BOM กับ Wiring ไม่ตรงกัน
Hardware List ระบุ Push Button 1 ตัว สำหรับ Manual Logging
แต่ Wiring Description ยังระบุ Reset Push Button ที่ต่อ RESET ลง Groundอีกหนึ่ง Function
ถ้าต้องการทั้ง Dedicated Reset Button และ Manual Log Button ดูจากข้อความแล้วอาจต้องมี 2 ปุ่ม แต่ BOM ไม่ได้สะท้อนตรงนี้อย่างชัดเจน
2. Input Voltage ของ MCP1700 ไม่ได้ระบุชัด
BOM มี MCP1700-3302E/TO สำหรับสร้าง 3.3 V แต่ Source ไม่ได้ระบุชัดว่า Input ของ Regulator รับแรงดันเท่าไร
ดังนั้นบทความนี้จะไม่สร้าง Battery Voltage, USB Input หรือ VIN Wiring ขึ้นเอง
3. 3.3 V + 16 MHz ขัดกับ Official Speed Grade
นี่เป็น Conflict ที่สำคัญที่สุด และควรแก้ใน Design ก่อนนำไปผลิตจริง
ถ้าพัฒนาต่อ Project นี้ เพิ่มอะไรได้บ้าง?
ผู้สร้างเสนอ Possible Improvements ไว้หลายแนว:
- DS3231 Real-Time Clock สำหรับ Calendar Timestamp
- Rechargeable Battery Supply
- Low-power Sleep Mode
- Wireless Communication Module
- OLED ขนาดใหญ่ขึ้น
- Analog Sensor เพิ่มเติม
- Web Dashboard สำหรับดูข้อมูล
- Custom Outdoor Enclosure
ATmega328P ยังเหมาะกับ Project ใหม่ไหม?
ในมุมการเรียน Embedded System ATmega328P ยังเป็น MCU ที่เข้าใจง่ายและมี Ecosystem ที่คน Maker คุ้นเคยมาก
Project นี้จึงเหมาะกับการเรียนเรื่อง:
- Standalone MCU
- Custom PCB
- I2C
- SPI
- GPIO
- SD Logging
- Sensor Integration
แต่สำหรับ Product Design ใหม่ระยะยาว ปัจจุบัน Microchip ระบุ ATmega328P ว่า Not Recommended for new designs
นั่นไม่ได้หมายความว่า MCU ใช้งานไม่ได้ แต่หมายความว่าวิศวกรที่ออกแบบ Product ใหม่ ควรตรวจ Product Recommendation และตัวเลือก MCU รุ่นปัจจุบันจากผู้ผลิต ก่อน Commit กับ Design ระยะยาว
FAQ: ATmega328P Environmental Data Logger
1. Project นี้ใช้ Arduino Uno Board หรือไม่?
ไม่ใช้ Arduino Uno ทั้งบอร์ด แต่ใช้ ATmega328P-AUR เป็น Microcontroller หลัก ใน Standalone Circuit
2. ATmega328P-AUR ต่างจาก ATmega328P ที่คุ้นเคยอย่างไร?
ใน Project นี้ AUR เป็น Ordering Part ที่ใช้ Package แบบ TQFP สำหรับงาน PCB แต่ Core MCU ยังคือ ATmega328P
3. วัดค่าอะไรได้บ้าง?
Temperature, Relative Humidity และ Ambient Light ตาม Sensor ที่ใช้ใน Project
4. ใช้ Sensor อะไรวัดอุณหภูมิและความชื้น?
DHT22 / AM2302
5. ใช้ Sensor อะไรวัดแสง?
BH1750FVI Digital Ambient Light Sensor
6. OLED กับ BH1750 ต่อพร้อมกันได้อย่างไร?
ทั้งสองใช้ I2C Bus เดียวกัน ผ่าน SDA = PC4/A4 และ SCL = PC5/A5 ตาม Wiring ของ Project
7. MicroSD ใช้ Pin อะไร?
MOSI D11, MISO D12, SCK D13 และ CS D10 ตาม Arduino Pin Mapping ใน Source
8. บันทึกข้อมูลบ่อยแค่ไหน?
Automatic Logging ทุก 10 วินาที ตาม LOG_INTERVAL = 10000
9. กดบันทึกเองได้ไหม?
ได้ Firmware มี Manual Logging Button ที่ Digital Pin 7
10. ไฟล์ที่บันทึกชื่ออะไร?
ENVLOG.CSV
11. Time ใน CSV เป็นวันและเวลาจริงไหม?
ไม่ เป็น Elapsed Seconds Counter เพราะ Project ยังไม่มี Real-Time Clock
12. เพิ่ม DS3231 ได้ไหม?
Source ระบุ DS3231 RTC เป็น Possible Improvement แต่ไม่ได้รวมอยู่ใน Prototype ปัจจุบัน
13. ใช้ MicroSD Module 5 V ได้ไหม?
Source ระบุให้ใช้ Module ที่เหมาะกับ 3.3 V Interface และเตือนไม่ให้ต่อ 5 V-only Module เข้าระบบโดยไม่ตรวจ Interface Requirements
14. 3.3 V + 16 MHz ใช้ได้ตาม Datasheet หรือไม่?
Official ATmega328P Speed Grade ไม่รองรับ 16 MHz ที่ 3.3 V ดังนั้น Configuration ใน Project ควรถูก Review และปรับให้ตรงกับ Datasheet ก่อนสร้าง Hardware จริง
15. Sensor มีความแม่นยำระดับ Laboratory หรือไม่?
Project ไม่ได้ Claim Laboratory-grade หรือ Calibrated Measurement จึงไม่ควรนำผลไปใช้แทนเครื่องมือสอบเทียบ
16. Project เสร็จสมบูรณ์แล้วหรือยัง?
หน้า Hackster ระบุสถานะ Work in progress ดังนั้น Hardware, BOM หรือรายละเอียดบางส่วน ยังมีโอกาสเปลี่ยนแปลงได้
สรุป: Project นี้สอนมากกว่าแค่การเก็บข้อมูล Sensor
ถ้ามองผิวเผิน นี่คือ Data Logger ที่อ่าน Temperature, Humidity และ Light แล้วเขียนลง MicroSD
แต่สิ่งที่มีประโยชน์กว่าคือ มันแสดงขั้นตอนเปลี่ยนจาก “ต่อ Sensor เข้ากับ Arduino Board” ไปเป็น “ออกแบบระบบรอบ Microcontroller เอง”
ผู้สร้างต้องจัดการ Power, Clock, Reset, ICSP, I2C, SPI, GPIO และ Storage เองทั้งหมด ซึ่งเป็นพื้นฐานสำคัญของการขยับจาก Maker Prototype ไปสู่ Custom Embedded Board
อย่างไรก็ตาม Project ยังเป็น Work in progress และมี Conflict สำคัญเรื่อง 3.3 V + 16 MHz รวมถึงจำนวน Push Button และ Power Input ที่ควรตรวจสอบเพิ่มเติมก่อนนำ Design ไปผลิต PCB จริง
โปรเจกต์นี้มี Wiring และ Code หลายส่วน แนะนำอ่านต้นฉบับควบคู่กัน
หากต้องการ Build จริง ควรตรวจ Hackster Project, Source Code และ ATmega328P Datasheet ล่าสุด โดยเฉพาะ Clock / Supply Specification ก่อนสั่ง PCB
อ่าน Standalone ATmega328P-AUR Environmental Data Logger ฉบับเต็มบน Hackster
References / แหล่งข้อมูลต้นฉบับ
- Hackster — Standalone ATmega328P-AUR Environmental Data Logger
- Hackster — Environmental Data Logger Source Code
- Microchip — ATmega328P Product Page
- Microchip — ATmega328P Datasheet
อยากลองทำ Data Logger หรือ Custom MCU Board?
ถ้ากำลังทดลอง Microcontroller, Temperature / Humidity Sensor, Light Sensor, OLED, MicroSD Module หรืออุปกรณ์สำหรับ Embedded Project สามารถสอบถามทีม Globalbyte เรื่องบอร์ดและอุปกรณ์ที่เหมาะกับ Project ได้
สำหรับงาน Standalone MCU ควรตรวจ Voltage, Clock, Logic Level และ Datasheet ของอุปกรณ์ทุกตัวก่อนออกแบบ PCB จริง
Hackster Project นี้อยู่ในสถานะ Work in progress ดังนั้น BOM, Wiring, Firmware และรายละเอียด Hardware อาจมีการแก้ไขใน Revision ภายหลัง
Project Source ระบุ ATmega328P-AUR ทำงานที่ 3.3 V พร้อม External Crystal 16 MHz แต่ Official ATmega328P Speed Grade ของ Microchip ไม่รองรับ 16 MHz ที่ 3.3 V จึงควรตรวจและปรับ Clock / Supply Architecture ให้ตรงกับ Datasheet ก่อนผลิตหรือใช้งานจริง
Source มีความไม่สอดคล้องเรื่องจำนวน Push Button: Hardware List ระบุ Manual Log Button หนึ่งตัว ขณะที่ Wiring Description ยังกล่าวถึง Reset Push Button เพิ่มเติม ควรตรวจ Schematic / Revision ล่าสุดก่อนสั่ง PCB หรือ Component
Source ระบุ MCP1700-3302E/TO สำหรับระบบ 3.3 V แต่ไม่ได้ระบุ Input Voltage ของ Regulator อย่างชัดเจน บทความนี้จึงไม่ได้สร้าง Battery Voltage, USB Input หรือ VIN Wiring ขึ้นเอง
ค่า Time ใน ENVLOG.CSV เป็น Elapsed Seconds Counter ไม่ใช่ Calendar Timestamp เนื่องจาก Prototype ปัจจุบันไม่มี RTC
Project ไม่ได้ Claim Laboratory-grade Accuracy หรือ Calibrated Environmental Measurements และบทความนี้ไม่ได้เพิ่ม Accuracy, Power Consumption, Battery Runtime, SD Capacity, Maximum Logging Duration, PCB Dimensions, Cost หรือ Thailand Availability ที่ Source ไม่ได้ระบุ