- ส่วนประกอบที่จำเป็นสำหรับโปรแกรม ATtiny85 ผ่าน USB
- ATtiny85 Microcontroller IC - บทนำ
- กระพริบ Boot-loader บน ATtiny85 โดยใช้ Arduino Uno
- แผนภาพวงจรสำหรับโปรแกรมเมอร์ ATtiny
- การติดตั้ง Digispark Drivers
- การตั้งค่า Arduino IDE เป็น Program ATttiny85
ตระกูล ATtiny เป็นหนึ่งในไมโครคอนโทรลเลอร์ที่เล็กที่สุดในตลาด AVR ไมโครคอนโทรลเลอร์เหล่านี้สามารถใช้ไลบรารีจำนวนมากที่มีอยู่บนแพลตฟอร์ม Arduino ชิปไมโครคอนโทรลเลอร์ ATtiny85 เป็นไมโครคอนโทรลเลอร์ AVR 8 พิน 8 บิต ขนาดที่เล็กและใช้พลังงานต่ำทำให้เหมาะสำหรับโครงการพกพาที่มีขนาดเล็กและต้องการพลังงานต่ำ แต่การนำรหัสของคุณลงบนชิปอาจเป็นเรื่องท้าทายเล็กน้อยเนื่องจากไม่มีอินเทอร์เฟซ USB เช่นบอร์ดไมโครคอนโทรลเลอร์
ก่อนหน้านี้ในการกวดวิชาของเราเราโปรแกรม ATtiny85 โดยใช้ Arduino Uno แต่การเชื่อมต่อ Attiny85 กับ Arduino และใช้ Arduino เป็น ISP อาจเป็นเรื่องยากและใช้เวลานาน ดังนั้นในบทช่วยสอนนี้เราจะสร้างบอร์ดการเขียนโปรแกรม ATtiny85เพื่อให้เราสามารถปลั๊กอินและตั้งโปรแกรมได้โดยตรงเหมือนกับบอร์ดไมโครคอนโทรลเลอร์อื่น ๆ
ส่วนประกอบที่จำเป็นสำหรับโปรแกรม ATtiny85 ผ่าน USB
- Arduino UNO (เป็นครั้งแรกขณะอัปโหลดโปรแกรมโหลดบูต)
- ไอซี ATtiny85
- ปลั๊ก USB A-type ตัวผู้
- ตัวต้านทาน 3 ตัว (2 ×47Ω & 1 ×1kΩ)
- 3 ไดโอด (2 × Zener Diode & 1 × IN5819 Diode)
- ฐาน IC 8 พิน
- เขียงหั่นขนม
- สายจัมเปอร์
ATtiny85 Microcontroller IC - บทนำ
Atmel ของ ATtiny85 มีประสิทธิภาพสูงอำนาจไมโครคอนโทรลเลอร์ 8 บิตต่ำตามที่ Advanced RISC สถาปัตยกรรม ชิปไมโครคอนโทรลเลอร์นี้มีหน่วยความจำแฟลช 8KB ISP, 512B EEPROM, 512-Byte SRAM, 6 บรรทัด I / O เอนกประสงค์, การลงทะเบียนสำหรับการทำงานทั่วไป 32 รายการ, ตัวจับเวลา / ตัวนับ 8 บิตหนึ่งตัวพร้อมโหมดเปรียบเทียบ, ความเร็วสูง 8 บิตหนึ่งตัว ตัวจับเวลา / ตัวนับ, USI, อินเทอร์รัปต์ภายในและภายนอก, ตัวแปลง A / D 4 ช่องสัญญาณ 10 บิต, ตัวจับเวลาจ้องจับผิดที่ตั้งโปรแกรมได้พร้อมออสซิลเลเตอร์ภายใน, โหมดประหยัดพลังงานที่เลือกได้สามซอฟต์แวร์และ debugWIRE สำหรับการดีบักบนชิป ATtiny85 Pinoutได้รับด้านล่าง:
พิน I / O ส่วนใหญ่ของชิปมีมากกว่าหนึ่งฟังก์ชัน รายละเอียดพิน ATtiny85สำหรับแต่ละพินแสดงไว้ในตารางด้านล่าง:
หมายเลขพิน |
ชื่อพิน |
คำอธิบายพิน |
1 |
PB5 (PCINT5 / ADC0 / dW) |
PCINT5: Pin Change Interrupt 0, Source5 รีเซ็ต: รีเซ็ตพิน ADC0:ช่องสัญญาณเข้า ADC 0 dW:ดีบัก WIRE I / O |
2 |
PB3 (PCINT3 / XTAL1 / CLKI / ADC3) |
PCINT3: Pin Change Interrupt 0, Source3 XTAL1: Crystal Oscillator Pin 1 CLKI:อินพุตนาฬิกาภายนอก ADC3:ช่องอินพุต ADC 3 |
3 |
PB4 (PCINT4 / XTAL2 / CLKO / OC1B / ADC2) |
PCINT4: Pin Change Interrupt 0, Source 4 XTAL2:ขาออสซิลเลเตอร์คริสตัล 2 CLKO:เอาต์พุตนาฬิการะบบ OC1B: Timer / Counter1 เปรียบเทียบเอาต์พุต Match B ADC2:ช่องสัญญาณเข้า ADC 2 |
4 |
GND |
พินกราวด์ |
5 |
PB0 (MOSI / DI / SDA / AIN0 / OC0A / พื้นที่ / PCINT0) |
MOSI: SPI Master Data Output / Slave Data Input DI:อินพุตข้อมูล USI (โหมดสามสาย) SDA:อินพุตข้อมูล USI (โหมดสองสาย) AIN0: Analog Comparator, Positive Input OC0A: Timer / Counter0 เปรียบเทียบ Match A output AREF:การอ้างอิงอะนาล็อกภายนอก PCINT0: Pin Change Interrupt 0, Source 0 |
6 |
PB1 (MISO / D0 / AIN1 / OC0B / OC1A / PCINT1) |
MISO: SPI Master Data Input / Slave Data Output DO:เอาต์พุตข้อมูล USI (โหมดสามสาย) AIN1: Analog Comparator, Negative Input OC0B: Timer / Counter0 เปรียบเทียบ Match B Output OC1A: Timer / Counter1 เปรียบเทียบ Match A Output PCINT1: Pin Change Interrupt 0, Source 1 |
7 |
PB2 (SCK / USCK / SCL / ADC1 / T0 / INT0 / PCINT2) |
SCK:อินพุตนาฬิกาอนุกรม USCK:นาฬิกา USI (โหมดสามสาย) SCL:นาฬิกา USI (โหมดสองสาย) ADC1:ช่องสัญญาณเข้า ADC 1 T0:แหล่งที่มาของนาฬิกา Timer / Counter0 INT0:อินเทอร์รัปต์ภายนอก 0 อินพุต PCINT2: Pin Change Interrupt 0, Source 2 |
8 |
VCC |
ขาจ่ายแรงดัน |
กระพริบ Boot-loader บน ATtiny85 โดยใช้ Arduino Uno
สำหรับการเขียนโปรแกรม ATtiny85 โดยไม่ใช้ Arduinoก่อนอื่นเราจะต้องอัปโหลด bootloader เข้าไปโดยใช้บอร์ด Arduino UNO ซึ่งเป็นกระบวนการเพียงครั้งเดียวและหลังจากเสร็จสิ้นเราจะไม่ต้องใช้บอร์ด UNO อีก Boot-loader เป็นโปรแกรมพิเศษที่ทำงานในไมโครคอนโทรลเลอร์ที่ต้องตั้งโปรแกรมไว้ วิธีที่สะดวกที่สุดวิธีหนึ่งในการโหลดข้อมูลโปรแกรมของคุณไปยังไมโครคอนโทรลเลอร์คือการบูตโหลดเดอร์ Boot-loader อยู่บน MCU และดำเนินการตามคำสั่งขาเข้าจากนั้นเขียนข้อมูลโปรแกรมใหม่ไปยังหน่วยความจำของไมโครคอนโทรลเลอร์ การกะพริบบูต - โหลดเดอร์บนไมโครคอนโทรลเลอร์จะขจัดความจำเป็นในการใช้ฮาร์ดแวร์ภายนอกพิเศษ (บอร์ดโปรแกรมเมอร์) ในการตั้งโปรแกรมไมโครคอนโทรลเลอร์และคุณจะสามารถตั้งโปรแกรมได้โดยตรงโดยใช้การเชื่อมต่อ USB Digispark ATtiny85บอร์ดเรียกใช้ boot-loader "micronucleus tiny85" ซึ่งเขียนโดย Bluebie boot-loader คือรหัสที่ตั้งโปรแกรมไว้ล่วงหน้าบน Digispark และอนุญาตให้ทำหน้าที่เป็นอุปกรณ์ USB เพื่อให้สามารถตั้งโปรแกรมโดย Arduino IDE ได้ นอกจากนี้เรายังจะแฟลชbootloader digispark attiny85เดียวกันบน ATtiny85
คำแนะนำทีละขั้นตอนในการแฟลช bootloader ไปยัง ATtiny85 โดยใช้ Arduino Uno และ Arduino IDE ได้รับด้านล่าง:
ขั้นตอนที่ 1: การกำหนดค่า Arduino Uno เป็น ISP:
เนื่องจาก ATtiny85 เป็นเพียงไมโครคอนโทรลเลอร์จึงต้องใช้ ISP (In-System Programming) ในการตั้งโปรแกรม ดังนั้นในการตั้งโปรแกรม ATtiny85 เราต้องกำหนดค่า Arduino Uno เป็น ISP ก่อนเพื่อทำหน้าที่เป็นโปรแกรมเมอร์สำหรับ ATtiny85 จากนั้นให้เชื่อมต่อ Arduino Uno กับแล็ปท็อปและเปิด Arduino IDE หลังจากนั้นไปที่ ไฟล์> ตัวอย่าง> ArduinoISP และอัปโหลดรหัส Arduino ISP
ขั้นตอนที่ 2: แผนภาพวงจรสำหรับการกะพริบ Boot-loader บน ATtiny85:
แผนผังที่สมบูรณ์สำหรับ Flashing Boot-loader บน ATtiny85 มีดังต่อไปนี้:
ตัวเก็บประจุ 10 µf เชื่อมต่อระหว่างขารีเซ็ตและ GND ของ Arduino การเชื่อมต่อที่สมบูรณ์มีให้ในตารางด้านล่าง:
ATtiny85 พิน |
Arduino Uno Pin |
Vcc |
5V |
GND |
GND |
พิน 2 |
13 |
พิน 1 |
12 |
ตรึง 0 |
11 |
รีเซ็ต |
10 |
ตอนนี้เสียบ Arduino Uno เข้ากับแล็ปท็อปและเปิด Arduino IDE ค้นหาว่าพอร์ต COM ใดที่ Uno เชื่อมต่ออยู่ ในกรณีของฉันมันคือ COM5
หลังจากนี้ให้ดาวน์โหลดไฟล์ ATtiny85 Boot-loader จากลิงค์ที่ระบุ เปิด " Burn_AT85_bootloader.bat " และเปลี่ยนหมายเลขพอร์ต COM "PCOM5" ด้วยหมายเลขพอร์ต COM ที่ Uno ของคุณเชื่อมต่ออยู่ บันทึกการเปลี่ยนแปลงก่อนออก
ตอนนี้ย้ายไฟล์ " Burn_AT85_bootloader.bat " และ " ATtiny85.hex " ที่แก้ไขแล้วไปยังโฟลเดอร์ราก Arduino IDE (C: \ Program Files (x86) Arduino)
หลังจากนั้นคลิกขวาที่ " Burn_AT85_bootloader.bat " และเลือก "Run as Admin" ใช้เวลาประมาณ 5 ถึง 6 วินาทีในการแฟลชบูตโหลดเดอร์ หากทุกอย่างเป็นไปด้วยดีคุณควรได้รับข้อความนี้ "AVRdude done. Thank you. Press any key to continue… ".
ด้วยเหตุนี้ Boot-loader จึงได้รับการติดตั้งบนชิป ATtiny85 เรียบร้อยแล้ว ตอนนี้ถึงเวลาเชื่อมต่อ USB กับ ATtiny85 เพื่อให้เราสามารถตั้งโปรแกรมได้โดยตรง แผนภาพวงจรสำหรับการเขียนโปรแกรม ATtiny85ผ่าน USB มีดังต่อไปนี้:
แผนภาพวงจรสำหรับโปรแกรมเมอร์ ATtiny
แผนผังนั้นนำมาจากแผนผังบอร์ด Digispark ATtiny85 แต่ในขณะที่เราตั้งเป้าที่จะสร้างโปรแกรมเมอร์สำหรับ ATtiny85เราจะเชื่อมต่อ Male USB Plug กับ ATtiny85 เท่านั้น
R3 เป็นตัวต้านทานแบบดึงขึ้นที่เชื่อมต่อระหว่างพิน Vcc และ PB3 ของ IC ในขณะที่เพิ่มไดโอด Zener (D1-D2) สำหรับการป้องกันอินเตอร์เฟซ USB ทั้งหมด หลังจากบัดกรีส่วนประกอบทั้งหมดบนบอร์ด perf แล้วจะมีลักษณะดังนี้:
การติดตั้ง Digispark Drivers
ในการตั้งโปรแกรม ATtiny85 โดยใช้ USB คุณต้องติดตั้ง Digispark Drivers บนแล็ปท็อปของคุณหากคุณไม่มีคุณสามารถดาวน์โหลดได้โดยใช้ลิงค์ที่ให้ไว้ด้านบน จากนั้นแตกไฟล์ zip และดับเบิลคลิกที่แอปพลิเคชัน“ DPinst64.exe ” เพื่อติดตั้งไดรเวอร์
เมื่อติดตั้งไดรเวอร์เรียบร้อยแล้วให้เสียบบอร์ด ATtiny85 เข้ากับแล็ปท็อป ตอนนี้ไปที่ Device Manager บน Windows ของคุณและอุปกรณ์ ATtiny85 จะแสดงรายการภายใต้ "libusb-win32 devices" เป็น "Digispark Bootloader" หากคุณไม่พบ 'libusb-win32 devices' ในตัวจัดการอุปกรณ์ให้ไปที่Viewและคลิกที่ 'Show hidden Devices'
การตั้งค่า Arduino IDE เป็น Program ATttiny85
ในการตั้งโปรแกรม ATtiny85 Board ด้วย Arduino IDE ก่อนอื่นเราต้องเพิ่มการรองรับบอร์ด Digispark ให้กับ Arduino IDE จากนั้นไปที่ ไฟล์> ค่ากำหนด และเพิ่มลิงก์ด้านล่างใน URL ตัวจัดการบอร์ดเพิ่มเติมแล้วคลิก 'ตกลง'
หลังจากนั้นไปที่tools> Board> Board Managerและค้นหา 'Digistump AVR' และติดตั้งเวอร์ชันล่าสุด
หลังจากติดตั้งแล้วตอนนี้คุณจะสามารถที่จะเห็นรายการใหม่ในเมนูคณะกรรมการที่ชื่อว่า'Digispark'
ตอนนี้ไปที่ไฟล์> ตัวอย่าง> พื้นฐานแล้วเปิดตัวอย่างกะพริบ
เปลี่ยนหมายเลขพินที่นั่นจาก LED_BUILTIN เป็น 0
กลับไปที่Tools -> Boardแล้วเลือกบอร์ด “ Digispark (Default - 16mhz) ” จากนั้นคลิกที่ปุ่มอัพโหลดใน Arduino IDE
หมายเหตุ: เชื่อมต่อบอร์ด ATtiny85 กับคอมพิวเตอร์เฉพาะเมื่อ Arduino IDE แสดงข้อความว่า“ Plugin device now”
เมื่ออัปโหลดโค้ดแล้ว LED ที่เชื่อมต่อกับ ATtiny85 ควรเริ่มกะพริบ
นี่คือวิธีที่คุณสามารถสร้างตัวเองของคุณโปรแกรม ATtiny85 Arduinoบอร์ด วิดีโอที่ใช้งานได้ในลักษณะเดียวกันได้รับด้านล่าง หากคุณมีคำถามใด ๆ ทิ้งไว้ในส่วนความคิดเห็น สำหรับคำถามทางเทคนิคอื่น ๆ คุณสามารถเริ่มการสนทนาในฟอรัมของเรา