Arduino導讀
NTCU MCU Study Group
GCY
2014/06/25
由軟到硬
• Compiler
• Bootloader
• Microcontroller Unit
深入淺出
• Compiler:AVR-GCC,Arduino-C Syntax
Parser
• Bootloader Implement
• MCU:PCD Circuit Design
background knowledge
• C Language
• V = I * R
what is arduino?
Arduino優點
• 入門門檻低
• 快速開發產品原型
• 使用者多library多
• Toolchain完整
Arduino缺點
• 速度慢
• I/O可能不夠
• 沒有辦法適當調配資源-RTOS
• 晶片價格高
Uno?
Mega?
Maple(stm32)?
Arduino Equation
• Arduino = Bootloader + Toolchain + Hardware
• Toolchain = AVR-Toolchain + Arduino IDE
• AVR-Toolchain = AVR-GCC + AVR-DUDE
• Arduino IDE = Java + Arduino-C Syntax Parser
Bootloader-Memory Map
Bootloader-Memory Map
Bootloader-AVRISP
Bootloader-USB2Serial
Arduino IDE
Arduino2AVR parser
AVR-GCC
AVR-DUDE
avrdude -p m328p -P COM6 -c avrispv2
-U flash:w:test.hex
Stk500 & bootloader
Intel hex
Arduino IDE-AVRToolchain
• hardware/tools/avr/bin
Arduino IDE-AVRToolchain
Arduino IDE-AVRToolchain
Arduino IDE-Compile & Upload
Get Java-
Textbox
StringLine
Obj
file
Send
Arduino C 2 AVR
Parsing
AVR-GCC
Compile AVR
Code
Arduino
C 2 AVR
AVR-Objcopy
Linker Intel Hex
File
AVR-DUDE-
stk500
Arduino Bootloader
Write 2 EEPROM Start
Address
Reset & Jmp
Start Address
Run
Arduino IDE-Arduino C2AVR Parser
Preprocessor
Find Include
Arduino Library
Translate
Arduino Pin
Define 2 AVR
Register
AVR-
GCC
Library.elf
file(obj file)
Arduino Hardware-Basic Part
• ATmega328 + 16MHz Crystal + 22pF Cap * 2 +
0.1uF Cap * 2 + 10k Ohm
Arduino Hardware-ATMega328
Arduino Hardware-Main Circuit ?_?
Arduino Hardware-Basic Circuit
Arduino Hardware-Arduino UNO???
Arduino Hardware-Write Bootloader
Arduino Hardware-test
But…….
USB2Serial (Downloader)
• FTDI
• PL2303
• ATMega32u (DFU Mode)
Connect
• TX,RX,DTR,3.3V,5V
Part list
• ATmega328 + 16MHz Crystal + 22pF Cap * 2 +
0.1uF Cap * 2 + 10k Ohm = (50 + 10 + 0.4 + 0.4 +
0.1 = 60.9NT)
• 麵包板 + 麵包板線 = (80 + 30 = 110NT)
• USB2Serial Module = (30~200NT)
• 任何有Arduino Bootloader的板子或晶片(借)
自製Arduino優點
• 節省成本
• 可以控制設計板子大小
• 可依照Project需求決定會使用到的零件
• 線路可以刪減減少複雜度
自製Arduino缺點
• 要先有有Arduino Bootloader的板子或晶片
• 若要製成PCB需要工具
• 畫PCB Layout要學CAD軟體
要先有有Arduino Bootloader的板子
或晶片?
• 可以用借的,或者沒屋頂上有人會賣已經
有Arduino Bootloader的晶片。
製成PCB需要工具
• 30w~40w烙鐵 +烙鐵架 + 錫絲 + 吸錫器 + 助焊劑 +
斜口鉗 = (100 + 50 + 100 + 50 + 50 + 70 = 420NT)
• 手工電鑽 + 壓克力刀 = (500 + 70 = 570NT)
• 檯燈 + 透明壓克力 = (300 + 50 = 250NT)
• Mask + PCB(單面電木) = (3 + 35 NT)
• 以上Lab除了助焊劑與消耗品的Mask + PCB和檯燈 +
透明壓克力沒有其他都可以借到。
畫PCB Layout要學CAD軟體
• Eagle PCB等CAD軟體只要畫好電氣圖就能自
動繞線出PCB。
進階討論
• 在其他晶片實現Arduino Toolchain
• 如何使用自己不懂的元件?
• 改Arduino Toolchain + Bootloader + Hardware
• 撰寫Arduino Library
Q & A
Thank
Refence
• https://github.com/stanleyhuangyc/ArduinoU
ploader/tree/master/src - Arduino Parser
• http://www.atmel.com/Images/doc8161.pdf -
AVR MCU Datasheet

Arduino導讀