ATtiny85 คืออะไร — คู่มือสำหรับมือใหม่ Arduino

ATtiny85 คืออะไร?

ATtiny85 คือไมโครคอนโทรลเลอร์ขนาดจิ๋วของ Microchip (เดิม Atmel) ตระกูล AVR — ตระกูลเดียวกับที่ Arduino Uno ใช้ (ATmega328P) แต่เล็กกว่า ถูกกว่า และกินไฟน้อยกว่ามาก

ATtiny85 มาใน package DIP-8 ขนาดเท่าเม็ดถั่ว — มีขาแค่ 8 ขา (ใช่จริง ๆ แค่ 5 GPIO) แต่แรงพอสำหรับงานควบคุมเซ็นเซอร์, กระพริบ LED, อ่านค่า Analog, และ Deep Sleep ที่ประหยัดไฟสุด ๆ

สเปกเทียบกับ Arduino Uno

รายการATtiny85Arduino Uno
Flash (พื้นที่เก็บโค้ด)8 KB32 KB
RAM (หน่วยความจำชั่วคราว)512 Bytes2 KB
ความเร็ว Clock8 MHz (ตั้งเป็น 16 MHz ได้)16 MHz
GPIO ที่ใช้งานได้5 ขา (PB0-PB5)14 ขา
ADC (Analog Input)3 ช่อง (10-bit)6 ช่อง
PWM2 ช่อง6 ช่อง
I2C / SPI✅ Software / Hardware✅ Hardware
กระแสตอนทำงาน~5-10 mA~50 mA
กระแสตอน Deep Sleep< 0.1 µA~5 µA
แรงดันไฟเลี้ยง2.7V - 5.5V5V (แนะนำ)
ราคา~30-50 บาท~200-300 บาท
ขนาดDIP-8 จิ๋วใหญ่เท่าบัตร

จุดเด่นของ ATtiny85

✅ กินไฟน้อยมาก — Deep Sleep 0.1 µA

ATtiny85 ใช้ไฟตอนหลับเพียง 0.1 µA (ไมโครแอมป์) — น้อยกว่า ESP8266 ที่ 20 µA ถึง 200 เท่า!
CR2032 แบตกระดุม 220 mAh อยู่ได้เป็น 10-20 ปี ในทางทฤษฎี

✅ เล็ก — ใช้พื้นที่น้อย

ขนาด DIP-8 เทียบเท่า Op-Amp ทั่วไป ลง Breadboard ได้, ลง PCB พื้นที่ 1-2 ตร.ซม.
เหมาะกับโปรเจกต์ขนาดเล็กที่ต้องการซ่อนในกระถาง, ในกล่องกันน้ำ, หรือติดกับเซ็นเซอร์

✅ ถูก — 30-50 บาท

ถูกกว่า Arduino Uno 5-10 เท่า ถ้าโปรเจกต์ต้องการแค่ 1-2 เซ็นเซอร์ + LED — ATtiny85 คือคำตอบ
เผลอต่อผิดแล้วพัง? ซื้อใหม่ไม่เสียดาย

✅ เขียนด้วย Arduino IDE

ไม่ต้องเรียนภาษาใหม่ — ใช้ Arduino IDE เหมือนเขียน Arduino Uno ทุกประการ
เพิ่มบอร์ด ATtiny ผ่าน Board Manager แล้วเลือก "ATtiny25/45/85" ก็เขียนได้เลย

ข้อเสียที่ควรรู้

ข้อเสียผลกระทบทางแก้
แค่ 512 Bytes RAMเขียน String ยาว, ใช้ Library ใหญ่ ไม่ได้เขียนแบบ C-style, หลีกเลี่ยง String, ใช้ PROGMEM
แค่ 5 GPIOต่ออุปกรณ์หลายตัวพร้อมกันลำบากใช้ I2C (ขาเดียว) ต่อหลายอุปกรณ์, หรือใช้ ATtiny84 ที่มี 11 ขา
ไม่มี USB ในตัวเสียบ USB โดยตรงไม่ได้ ต้องใช้ Programmerใช้ Arduino เป็น ISP — ไม่ต้องซื้อ Programmer เพิ่ม
ไม่มี WiFi/BLEต่อ Internet ไม่ได้ใช้ ESP8266/ESP32 ถ้าต้องการ联网
ความเร็ว 8 MHzคำนวณซับซ้อนช้าFuse Bit ปรับเป็น 16 MHz ได้ หรือใช้ ATtiny861

Pin Mapping — ATtiny85 กับ Arduino

เวลาเขียนโค้ดใน Arduino IDE — เลข Pin ที่ใช้ต้องเทียบตามนี้:

          ┌──────┐
  PB5/RESET┫1   8┫VCC (2.7-5.5V)
       PB3┫2   7┫PB2 (SCK)      ← Arduino Pin 2
       PB4┫3   6┫PB1 (MISO)     ← Arduino Pin 1
       GND┫4   5┫PB0 (MOSI)     ← Arduino Pin 0
          └──────┘

Arduino Pin → ATtiny85 ขา:
  Pin 0 = PB0 (ขา 5) — PWM, ADC0
  Pin 1 = PB1 (ขา 6) — PWM, ADC1
  Pin 2 = PB2 (ขา 7) — ADC2
  Pin 3 = PB3 (ขา 2) — ADC3 (Analog Input เท่านั้น)
  Pin 4 = PB4 (ขา 3) — ADC2

⚠️ ขา PB5 (Pin 1) = RESET — ใช้เป็น I/O ไม่ได้ในโหมดปกติ

Source Code พื้นฐาน — ATtiny85 Blink

// ATtiny85 Blink — Arduino IDE
// PB2 (Arduino Pin 2) → LED + 220Ω → GND

const int LED = 2;  // PB2

void setup() {
  pinMode(LED, OUTPUT);
}

void loop() {
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
  delay(500);
}

วิธีอัปโหลดโค้ด — ใช้ Arduino เป็น Programmer (ISP)

ATtiny85 ไม่มี USB-Port ในตัว — ต้องใช้ Programmer ภายนอก แต่วิธีที่ง่ายที่สุดคือใช้ Arduino Uno เป็น ISP:

  1. เปิด Arduino IDE → File → Examples → ArduinoISP → ArduinoISP
  2. อัปโหลด ArduinoISP ลง Arduino Uno ปกติ
  3. ต่อวงจรระหว่าง Arduino Uno กับ ATtiny85:
Arduino Uno          →   ATtiny85
  Pin 10 (SS)       →   PB0 (Pin 5)  — MOSI
  Pin 11 (MOSI)     →   PB0 (Pin 5)  — MOSI
  Pin 12 (MISO)     →   PB1 (Pin 6)  — MISO
  Pin 13 (SCK)      →   PB2 (Pin 7)  — SCK
  Pin 16 (RESET)    →   Pin 1 (RST)  — RESET
  5V                →   Pin 8 (VCC)
  GND               →   Pin 4 (GND)

⚠️ ต่อ 10µF Capacitor (ขั้วลบ→GND, ขั้วบวก→RESET ของ Uno)
   เพื่อป้องกัน Uno รีเซ็ตตัวเองตอนอัปโหลด
  1. Tools → Board → ATtiny25/45/85 → ATtiny85 @ 8 MHz (internal)
  2. Tools → Programmer → Arduino as ISP
  3. กด Sketch → Upload Using Programmer

โปรเจกต์ที่เหมาะกับ ATtiny85

โปรเจกต์ใช้งานยังไงจำนวนขาที่ใช้
🌿 กระถางแขวนแจ้งเตือนอ่าน Capacitive Sensor → กระพริบ LED2 ขา
💡 Night Light อัตโนมัติอ่าน LDR → เปิด/ปิด LED หรือ Relay เล็ก2 ขา
🌡️ เทอร์โมมิเตอร์ + LCDอ่าน DS18B20 → แสดงบน LCD I2C (ใช้แค่ 2 ขา)2-3 ขา
🔘 Countdown Timerกดปุ่ม → กระพริบ LED ตามเวลาที่ตั้ง2 ขา
📊วัดความชื้น + Logอ่านเซ็นเซอร์ → เก็บค่าใน EEPROM (256 Bytes)2 ขา
🚦Signal Light จิ๋วLED หลายสี แสดงสถานะเครื่องจักร3-4 ขา

เปรียบเทียบ ATtiny85 vs ATtiny84 vs ATtiny861

รุ่นFlashRAMGPIOราคาเหมาะกับ
ATtiny858 KB512 B5~30-50โปรเจกต์เล็ก ประหยัดไฟ
ATtiny848 KB512 B11~40-60ต้องการขาเพิ่ม
ATtiny86116 KB1 KB16~60-100RAM/Flash ต้องการเยอะขึ้น
ATmega328P (Uno)32 KB2 KB14~100-150โปรเจกต์ใหญ่

Fuse Bit — ปรับแต่ง ATtiny85

ATtiny85 มี Fuse Bit ที่ใช้ปรับค่าพื้นฐาน เช่น ความเร็ว clock, ขนาด flash, brown-out detection:

// ตั้งค่า Fuse Bit ด้วย avrdude:
// ATtiny85 @ 8 MHz internal (ค่าเริ่มต้น) — ใช้กับ 3.3V ได้
avrdude -c arduino -P COM3 -b 19200 -p t85 -U lfuse:w:0xE2:m

// ATtiny85 @ 16 MHz external crystal (ต้องต่อ Crystal ขา PB0/PB1)
avrdude -c arduino -P COM3 -b 19200 -p t85 -U lfuse:w:0xEE:m

⚠️ เปลี่ยน Fuse Bit พลาด → ATtiny85 อาจไม่ทำงานอีก
⚠️ ถ้าเลือก External Clock แล้วไม่ได้ต่อ Crystal → ATtiny85 หาย!

⚠️ หมายเหตุ: เนื้อหาค้นคว้าและเรียบเรียงโดย Hermes AI — ข้อมูลทางเทคนิคควรตรวจสอบก่อนนำไปใช้งานจริง

⚠️ เนื้อหาถูกสร้างโดย AI (Hermes AI) — ข้อมูลทางเทคนิคอาจต้องตรวจสอบก่อนนำไปใช้งานจริง