SlideShare a Scribd company logo
1 of 40
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

More Related Content

What's hot

Arduino Basic
Arduino BasicArduino Basic
Arduino Basicmmiwwcom
 
使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式Kenson Chiang
 
3D Printer 韌體原始碼解析心得 (以 Marlin 為對象)
3D Printer 韌體原始碼解析心得 (以 Marlin 為對象)3D Printer 韌體原始碼解析心得 (以 Marlin 為對象)
3D Printer 韌體原始碼解析心得 (以 Marlin 為對象)roboard
 
3D Printer 關鍵軟體控制技術之分析與探討 @ COSCUP 2014
3D Printer 關鍵軟體控制技術之分析與探討 @ COSCUP 20143D Printer 關鍵軟體控制技術之分析與探討 @ COSCUP 2014
3D Printer 關鍵軟體控制技術之分析與探討 @ COSCUP 2014roboard
 
86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材roboard
 
瞻營全電子_六足機器人(三)
瞻營全電子_六足機器人(三)瞻營全電子_六足機器人(三)
瞻營全電子_六足機器人(三)CAVEDU Education
 
Getting started with amarino
Getting started with amarinoGetting started with amarino
Getting started with amarino馬 萬圳
 
Arduino 習作工坊 - Lesson 4 通訊之夜
Arduino 習作工坊 -  Lesson 4 通訊之夜Arduino 習作工坊 -  Lesson 4 通訊之夜
Arduino 習作工坊 - Lesson 4 通訊之夜CAVEDU Education
 
Chapter 3 XBee無線遙控車
Chapter 3 XBee無線遙控車Chapter 3 XBee無線遙控車
Chapter 3 XBee無線遙控車CAVEDU Education
 
LinkIt ONE tutorial #1- Basics
LinkIt ONE tutorial #1- BasicsLinkIt ONE tutorial #1- Basics
LinkIt ONE tutorial #1- BasicsCAVEDU Education
 
Arduino Yun Mini簡介
Arduino Yun Mini簡介Arduino Yun Mini簡介
Arduino Yun Mini簡介Wei-Tsung Su
 
LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發Wei-Tsung Su
 
MicroPython簡介
MicroPython簡介 MicroPython簡介
MicroPython簡介 Max Lai
 
Hackathon 6th arduino大網咖
Hackathon 6th arduino大網咖Hackathon 6th arduino大網咖
Hackathon 6th arduino大網咖twunishen
 
A quick introduction for AT&T Hackathon
A quick introduction for AT&T HackathonA quick introduction for AT&T Hackathon
A quick introduction for AT&T HackathonAXM
 
2015 JSDC Build Anything with JavaScript
2015 JSDC Build Anything with JavaScript2015 JSDC Build Anything with JavaScript
2015 JSDC Build Anything with JavaScriptWeb Arduino
 
Web + Arduino 實在有夠潮 ( 課程簡報 )
Web + Arduino 實在有夠潮 ( 課程簡報 ) Web + Arduino 實在有夠潮 ( 課程簡報 )
Web + Arduino 實在有夠潮 ( 課程簡報 ) Web Arduino
 

What's hot (20)

Arduino Basic
Arduino BasicArduino Basic
Arduino Basic
 
使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式
 
3D Printer 韌體原始碼解析心得 (以 Marlin 為對象)
3D Printer 韌體原始碼解析心得 (以 Marlin 為對象)3D Printer 韌體原始碼解析心得 (以 Marlin 為對象)
3D Printer 韌體原始碼解析心得 (以 Marlin 為對象)
 
3D Printer 關鍵軟體控制技術之分析與探討 @ COSCUP 2014
3D Printer 關鍵軟體控制技術之分析與探討 @ COSCUP 20143D Printer 關鍵軟體控制技術之分析與探討 @ COSCUP 2014
3D Printer 關鍵軟體控制技術之分析與探討 @ COSCUP 2014
 
86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材
 
瞻營全電子_六足機器人(三)
瞻營全電子_六足機器人(三)瞻營全電子_六足機器人(三)
瞻營全電子_六足機器人(三)
 
Getting started with amarino
Getting started with amarinoGetting started with amarino
Getting started with amarino
 
Arduino 習作工坊 - Lesson 4 通訊之夜
Arduino 習作工坊 -  Lesson 4 通訊之夜Arduino 習作工坊 -  Lesson 4 通訊之夜
Arduino 習作工坊 - Lesson 4 通訊之夜
 
Chapter 1 what is arduino
Chapter 1 what is arduinoChapter 1 what is arduino
Chapter 1 what is arduino
 
Chapter 3 XBee無線遙控車
Chapter 3 XBee無線遙控車Chapter 3 XBee無線遙控車
Chapter 3 XBee無線遙控車
 
LinkIt ONE tutorial #1- Basics
LinkIt ONE tutorial #1- BasicsLinkIt ONE tutorial #1- Basics
LinkIt ONE tutorial #1- Basics
 
Arduino Yun Mini簡介
Arduino Yun Mini簡介Arduino Yun Mini簡介
Arduino Yun Mini簡介
 
LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發
 
MicroPython簡介
MicroPython簡介 MicroPython簡介
MicroPython簡介
 
Python與Ardinio整合應用
Python與Ardinio整合應用Python與Ardinio整合應用
Python與Ardinio整合應用
 
Hackathon 6th arduino大網咖
Hackathon 6th arduino大網咖Hackathon 6th arduino大網咖
Hackathon 6th arduino大網咖
 
A quick introduction for AT&T Hackathon
A quick introduction for AT&T HackathonA quick introduction for AT&T Hackathon
A quick introduction for AT&T Hackathon
 
2015 JSDC Build Anything with JavaScript
2015 JSDC Build Anything with JavaScript2015 JSDC Build Anything with JavaScript
2015 JSDC Build Anything with JavaScript
 
Web + Arduino 實在有夠潮 ( 課程簡報 )
Web + Arduino 實在有夠潮 ( 課程簡報 ) Web + Arduino 實在有夠潮 ( 課程簡報 )
Web + Arduino 實在有夠潮 ( 課程簡報 )
 
02 86 duino_簡介
02 86 duino_簡介02 86 duino_簡介
02 86 duino_簡介
 

Viewers also liked

Introduction to Avr Microcontrollers
Introduction to Avr MicrocontrollersIntroduction to Avr Microcontrollers
Introduction to Avr MicrocontrollersMohamed Tarek
 
Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得roboard
 
Digital Signal Processor ( DSP ) [French]
Digital Signal Processor ( DSP )  [French]Digital Signal Processor ( DSP )  [French]
Digital Signal Processor ( DSP ) [French]Assia Mounir
 
Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseurISIG
 
ETUDE ET REALISATION D’UN MICROPROCESSEURS RISC
ETUDE ET REALISATION D’UN MICROPROCESSEURS RISCETUDE ET REALISATION D’UN MICROPROCESSEURS RISC
ETUDE ET REALISATION D’UN MICROPROCESSEURS RISCVicheka Phor
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le MicroprocesseurTheCrazyMan
 

Viewers also liked (8)

Introduction to Avr Microcontrollers
Introduction to Avr MicrocontrollersIntroduction to Avr Microcontrollers
Introduction to Avr Microcontrollers
 
Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得
 
Digital Signal Processor ( DSP ) [French]
Digital Signal Processor ( DSP )  [French]Digital Signal Processor ( DSP )  [French]
Digital Signal Processor ( DSP ) [French]
 
Cours pics16 f877
Cours pics16 f877Cours pics16 f877
Cours pics16 f877
 
Introduction to Microcontroller
Introduction to MicrocontrollerIntroduction to Microcontroller
Introduction to Microcontroller
 
Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseur
 
ETUDE ET REALISATION D’UN MICROPROCESSEURS RISC
ETUDE ET REALISATION D’UN MICROPROCESSEURS RISCETUDE ET REALISATION D’UN MICROPROCESSEURS RISC
ETUDE ET REALISATION D’UN MICROPROCESSEURS RISC
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 

Similar to Arduino導讀

Arduino 與 s4 a
Arduino 與 s4 aArduino 與 s4 a
Arduino 與 s4 aWayne Huang
 
LinkIt 7697 開發平台簡介 (Traditional Chinese)
LinkIt 7697 開發平台簡介 (Traditional Chinese)LinkIt 7697 開發平台簡介 (Traditional Chinese)
LinkIt 7697 開發平台簡介 (Traditional Chinese)Bear Wang
 
藍色小鋪, 數字管時鐘, 作品進化分享 (by 黃偉峻)
藍色小鋪, 數字管時鐘, 作品進化分享 (by 黃偉峻)藍色小鋪, 數字管時鐘, 作品進化分享 (by 黃偉峻)
藍色小鋪, 數字管時鐘, 作品進化分享 (by 黃偉峻)GoGoPrivateRyan
 
LinkIt Smart 7688 Duo and MCS basics
LinkIt Smart 7688 Duo and MCS basicsLinkIt Smart 7688 Duo and MCS basics
LinkIt Smart 7688 Duo and MCS basicsCAVEDU Education
 
MS 7095 - P4MAM2-V2
MS 7095 - P4MAM2-V2MS 7095 - P4MAM2-V2
MS 7095 - P4MAM2-V2JORGE SCHLEE
 
Tiny6410um hw-20101026
Tiny6410um hw-20101026Tiny6410um hw-20101026
Tiny6410um hw-20101026syed_sifa
 
0714 MOSUT-arduino硬體平台與應用領域介紹
0714 MOSUT-arduino硬體平台與應用領域介紹0714 MOSUT-arduino硬體平台與應用領域介紹
0714 MOSUT-arduino硬體平台與應用領域介紹Marcus Pek
 
IoT 與 WoT 物聯網裝置實作:使用 Arch Pro 與 mbed
IoT 與 WoT 物聯網裝置實作:使用 Arch Pro 與 mbedIoT 與 WoT 物聯網裝置實作:使用 Arch Pro 與 mbed
IoT 與 WoT 物聯網裝置實作:使用 Arch Pro 與 mbedBang Min Shiue
 
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Series
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 SeriesG:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Series
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Seriesguestd4f63b
 
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽Kito Cheng
 

Similar to Arduino導讀 (20)

Arduino簡介
Arduino簡介Arduino簡介
Arduino簡介
 
Arduino 與 s4 a
Arduino 與 s4 aArduino 與 s4 a
Arduino 與 s4 a
 
LinkIt 7697 開發平台簡介 (Traditional Chinese)
LinkIt 7697 開發平台簡介 (Traditional Chinese)LinkIt 7697 開發平台簡介 (Traditional Chinese)
LinkIt 7697 開發平台簡介 (Traditional Chinese)
 
藍色小鋪, 數字管時鐘, 作品進化分享 (by 黃偉峻)
藍色小鋪, 數字管時鐘, 作品進化分享 (by 黃偉峻)藍色小鋪, 數字管時鐘, 作品進化分享 (by 黃偉峻)
藍色小鋪, 數字管時鐘, 作品進化分享 (by 黃偉峻)
 
nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論
 
LinkIt Smart 7688 Duo and MCS basics
LinkIt Smart 7688 Duo and MCS basicsLinkIt Smart 7688 Duo and MCS basics
LinkIt Smart 7688 Duo and MCS basics
 
MS 7095 - P4MAM2-V2
MS 7095 - P4MAM2-V2MS 7095 - P4MAM2-V2
MS 7095 - P4MAM2-V2
 
Ch2 4
Ch2 4Ch2 4
Ch2 4
 
Arduino導論
Arduino導論Arduino導論
Arduino導論
 
Tiny6410um hw-20101026
Tiny6410um hw-20101026Tiny6410um hw-20101026
Tiny6410um hw-20101026
 
S4A
S4AS4A
S4A
 
0714 MOSUT-arduino硬體平台與應用領域介紹
0714 MOSUT-arduino硬體平台與應用領域介紹0714 MOSUT-arduino硬體平台與應用領域介紹
0714 MOSUT-arduino硬體平台與應用領域介紹
 
S4 a sensor board
S4 a sensor boardS4 a sensor board
S4 a sensor board
 
LinkIt 7697 IoT tutorial
LinkIt 7697 IoT tutorialLinkIt 7697 IoT tutorial
LinkIt 7697 IoT tutorial
 
IoT 與 WoT 物聯網裝置實作:使用 Arch Pro 與 mbed
IoT 與 WoT 物聯網裝置實作:使用 Arch Pro 與 mbedIoT 與 WoT 物聯網裝置實作:使用 Arch Pro 與 mbed
IoT 與 WoT 物聯網裝置實作:使用 Arch Pro 與 mbed
 
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Series
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 SeriesG:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Series
G:\Documents And Settings\Kim Yoojin\桌面\Kn9 Series\Kn9 Series
 
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
 
最终版
最终版最终版
最终版
 
Arduino overview
Arduino overviewArduino overview
Arduino overview
 
Arduino overview
Arduino overviewArduino overview
Arduino overview
 

Arduino導讀