'bootloader'에 해당되는 글 4건
- 2019.11.07 Hardware | Arduino Gemma 를 DIY 해보자 2
- 2019.10.25 Hardware | Arduino 를 DIY 해보자 - 3
- 2018.12.14 Hardware | ATtiny85 개발 보드를 이용하여 Digispark 를 DIY 하기
- 2018.12.11 Software | Arduino Nano Bootloader 를 update 해보자
1. Arduino DIY
Arduino 및 테스트용 PCB 등을 무료로 나누어 주는 좋은 회사가 있습니다.
* Board Lab (Board Free)
버려지거나 중복되는 PCB 들을 무료로 나누어 주시는 것을 사이드업으로 해주고 계십니다. (고마운 분들)
혹시, 요청하실 분이 계시다면, 수량에 한계가 있으며 무료나눔이 회사의 본업이 아니다 보니, 최대한 조심해서 요청하세요.
보다 자세한 유념 사항은 사이트에 잘 기재되어 있으니, 꼼꼼히 읽어 주시길 바랍니다.
PCB 무료나눔을 통해, 부품공부나 SMD 실장에 대해 경험 할 수 있었습니다.
그 결과물로는 arduino 를 가지게 되는 것이죠. 지금까지 아래와 같은 과정이 있었습니다.
* Hardware | Arduino 를 DIY 해보자 - 1
- http://chocoball.tistory.com/entry/Hardware-Arduino-DIY-itself-1
* Hardware | Arduino 를 DIY 해보자 - 2
- http://chocoball.tistory.com/entry/Hardware-Arduino-DIY-itself-2
* Hardware | Arduino 를 DIY 해보자 - 3
- http://chocoball.tistory.com/entry/Hardware-Arduino-DIY-itself-3
Arduino Nano 도 작업하고 있습니다만, 과정중에 ATmega328P-AU 부트로더에 막혀 있습니다.
아마 AliExpress 에서 fake CPU 가 왔거나, 제가 처음에 fuse bit 을 잘못 해서 그런 것 같아요.
머리를 식힐 겸, 나눔 받은 BL-303 이라는 것을 작업해 보기로 합니다.
* Arduino
arduino-gemma-reference-design.zip
본 보드는, ATtiny85 를 CPU 로 사용하는 소형 arduino 입니다.
예전에 ATtiny85 를 이용하여 비슷한 arduino 계열인 Digispark 를 만들어 봤으므로, 그리 어렵지 않을 것이라 생각해서죠.
* Hardware | ATtiny85 를 사용해 보자 - 1
- https://chocoball.tistory.com/entry/Hardware-ATtiny85-1
* Hardware | ATtiny85 를 사용해 보자 - 2
- https://chocoball.tistory.com/entry/Hardware-ATtiny85-2
* Hardware | ATtiny85 개발 보드를 이용하여 Digispark 를 DIY 하기
- https://chocoball.tistory.com/entry/Hardware-Digispark-DIY-using-ATtiny85
2. Arduino Gemma
작업 할 BL-303 보드는 Arduino Gemma 라는 보드를 기본으로 만들어진 보드 입니다.
Arduino Gemma 는 Wearable IoT, 즉 의상이나 소형 IoT 컨트롤러 용으로 만들어진 arduino 입니다.
* ARDUINO GEMMA
- https://store.arduino.cc/usa/arduino-gemma
지금은 성능 좋고 소형화된 CPU 들이 많이 나와서, 단종 되었습니다.
참고로, 이 Arduino Gemma 를 업그레이드 시킨, 그렇지만 기본은 동일한 제품이 Adafruit 에서 Trinket 이라는 제품이 있습니다.
CPU 는 같은 ATtiny85 지만 pinout 을 늘여서, 더 많은 확장성을 가지게 한 제품 입니다.
Adafruit 는 3V out 버전과 5V out 버전 두 가지로 나뉘는데, 제가 받은 PCB 는 5V/3.3V 둘 다 지원합니다.
보드프리는 PCB 설계가 뛰어난 것 같습니다.
3. SMD capacitor 구입
다른 arduino DIY 하면서, 왠만한 부품은 모두 구입 했는데, 0805 SMD 용 1uF 캐패시터만 가지고 있지 않아, 구입합니다.
* 0805 SMD Ceramic Capacitor Assorted Kit 1pF~10uF 50values*50pcs=2500pcs Chip Ceramic Capacitor Samples kit
- https://www.aliexpress.com/item/2025088658.html
이왕 구입하는 김에, 다른 치수들도 함께 들어 있는 패키지로 구입했습니다.
1pF / 1.5pF / 3pF / 4.7pF / 5p / 5.6pF / 6.8pF/ 8.2pF / 10pF
12pF / 18pF / 20pF / 22pF / 27pF / 30pF / 33pF
47pF / 56pF / 68pF / 75pF / 82pF
100pF(101) / 120pF(121) / 150pF(151) / 180pF(181) / 200pF(201)
220pF(221) / 330pF(331) / 390pF(391) / 470pF(471) / 560pF(561) / 680pF(681)
1nF(102) / 1.5nF(152) / 2.2nF(222) / 3.3nF(332) / 4.7nF(472) / 6.8nF(682)
10nF(103) / 22nF(223) / 33nF(333) / 47nF(473) / 68nF(683)
100nF(104) / 150nF(154) / 220nF(224) / 330nF(334) / 470nF(474)
1uF(105) / 10uF(106)
참고로, 캐패시터 값 변환 공식을 여기에 올려 놓습니다. (Googling)
1 mF (millifarad, one thousandth (10−3) of a farad) = 1000 uF = 1000000 nF
1 uF (microfarad, one millionth (10−6) of a farad) = 0.000 001 F = 1000 nF = 1000000 pF
1 nF (nanofarad, one billionth (10−9) of a farad) = 0.001 uF = 1000 pF
1 pF (picofarad, one trillionth (10−12) of a farad)
도착샷은 예의.
단위가 자잘하게 나뉘는지라, 간략화한 표시로 구분하고 있습니다. 예를 들면 474 는 470nF.
4. 납땜
Flux paste 를 올리기 전에, 필요한 부품을 도열 시켜 봅니다.
한땀 한땀 flux paste 를 올리고, SMD 부품들을 고정 시켜 놓습니다.
오븐에서 구워져 나오면 이쁘게 자리를 잡아 안착되었습니다.
정리가 필요한 부분은 인두기로 정리해 주면 됩니다. 부품 수가 적은지라 이번에는 따로 할게 없었네요.
Pin header 까지 납땜하면 끝.
USB 핀 쪽의 납땜 정리가 힘들었으나, 새로 구입한 T12-ILS 팁으로 깔끔하게 정리할 수 있었습니다.
작은 PCB 납땜은 필수적으로 극세사 납땜 tip 이 필요합니다.
5. Bootloader
Arduino 를 제작하는 데 있어서, 마무리 작업은 납땜 후, bootloader 를 입히는 작업 입니다.
Arduino Gemma 이지만, Adafruit 의 Trinket 의 bootloader 를 입힐 것이기에, 아래 Adafruit 사이트를 참고합니다.
동일한 ATtiny85 이므로, Digispark 의 bootloader 를 입혀도 될 것 같으나, 새롭게 Trinket 용으로 가 봅니다.
* Repairing bootloader
- https://learn.adafruit.com/introducing-trinket/repairing-bootloader
Trinket 의 pinout 정보는 위와 같습니다.
이전에 만들어 봤던 Arduino Duemilanove 를 이용하여 bootloader 를 입혀 봅니다.
----------------------------- | Trinket | Duemilanove | ----------------------------- | VBAT+ (Vin) | 5V | | GND | GND | | RST | D10 | | PB0 | D11 | | PB1 | D12 | | PB2 | D13 | -----------------------------
Adafruit 사이트를 참고하여 Duemilanove 연결 합니다.
위의 사이트에서 bootloader 를 입혀주는 sketch 를 Arduino IDE 에서 Duemilanove 에 업로드 해 줍니다.
기록을 남기기 위해 여기에도 파일을 옮겨 놓습니다.
Duemilanove 에 sketch 를 업로드 하고 Serial Monitor 를 연 다음, "G" 를 입력하면 자동으로 bootloader 를 입혀 줍니다.
다른 arduino 들 처럼, IDE 의 "burn bootloader" 를 이용하는 것이 아니라서 생소하지만, 무사히 완료 되었습니다.
Bootloader 가 문제없이 올라가면, 아래 동영상 처럼, ready 상태임을 나타내는 LED 가 천천히 밝아졌다 어두워 졌다 합니다.
Sketch 를 업로드 할 때, USB 칩이 없으므로, 스위치를 눌러 주어, 강제로 ready 상태를 만들어 줄 때의 모습입니다.
FTDI 나 ATmega16U2 처럼, USB 전용 chip 이 달려있지 않은 보드 이므로, 관련 driver 를 인스톨 해줘야 합니다.
그냥 꽂으면 아래와 같이 나옵니다. "알 수 없는 장치..."
* adafruit/Adafruit_Windows_Drivers
- https://github.com/adafruit/Adafruit_Windows_Drivers/releases/tag/2.4.0.0
다운로드 받은 파일을 실행하여 드라이버를 인스톨 합니다.
저는 Trinket 만 필요하므로, "Trinket / Pro Trinket / Gemma (USBtinyISP)" 만을 선택해서 인스톨 했습니다.
드라이버가 인스톨 되고 나면, 아래처럼 "libusb-win32 devices" 라는 항목이 생기고, "USBtiny" 라고 기기를 인식합니다.
Windows OS 가 추가로 뭔가를 설치/설정 하기도 합니다.
7. Arduino IDE
납땜 > 부트로더 > Windows Driver 까지 왔으면, 그 다음은 Arduino IDE 설정 입니다.
File > Preferences > Additional Boards Manager URLs 에 아래 링크를 등록합니다.
이는 Board Manager 에 등록되어 선택할 수 있도록 하기 위함 입니다.
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
메뉴는 아래와 같습니다.
일전에 ESP8266 을 설치 했으니, 그 밑줄에다가 등록해 줍니다.
그러면 Board Manager 에서 Adafruit AVR Boards 를 등록할 수 있게 됩니다.
짜잔~! 이제 Board 메뉴에서 아래처럼 선택할 수 있게 됩니다.
Tools > Board > Adafruit Trinket (ATtiny85 @ 8MHz)
16MHz 를 사용해도 될 듯 한데, 내부 기본 oscillator 가 8MHz 라고 하니, 안전하게 8MHz 로 선택합니다.
16MHz 는 소프트웨어적으로 doubling 한다고 하는데, 아직 필요하지 않으니...
Programmer 는 "USBtinyISP" 를 선택합니다.
이는 여러번 이야기 되었듯이, USB chip 이 없기 때문입니다.
여기까지 오면, 관련된 설정은 이제 모두 끝났습니다.
이후는 Happy Coding 인거죠!
8. Blink
실제로 Trinket 화 된 Arduino Gemma 에게 일을 시켜 봅시다.
센서를 연결해서 확인해도 되지만, 가장 간단한 PCB 상의 LED 점멸을 시켜 보아요.
* Setting up with Arduino IDE
- https://learn.adafruit.com/introducing-trinket/setting-up-with-arduino-ide
소스는 위의 Adafruit 사이트 것을 그대로 사용했습니다.
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. To upload to your Gemma or Trinket: 1) Select the proper board from the Tools->Board Menu 2) Select USBtinyISP from the Tools->Programmer 3) Plug in the Gemma/Trinket, make sure you see the green LED lit 4) For windows, install the USBtiny drivers 5) Press the button on the Gemma/Trinket - verify you see the red LED pulse. This means it is ready to receive data 6) Click the upload button above within 10 seconds */ int led = 1; // blink 'digital' pin 1 - AKA the built in red LED // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); }
Sketch 주석에도 잘 설명이 되어 있듯이, 소스를 업로드 할 때에는 필히 스위치를 눌러서 ready 상태로 만들어야 한다고 나와 있습니다.
이게 타이밍을 맞춰야 해서, IDE > Trinket 에 밀어넣는 순간이, ready 10 초 안에 진행 될 수 있도록 해야 합니다.
성공하면, 위와 같이 다른 arduino 와는 다른 과정들을 보여 줍니다. 아무래도 USB chip 부재...
avrdude: Version 6.3-20171130 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" Using Port : usb Using Programmer : usbtiny avrdude: usbdev_open(): Found USBtinyISP, bus:device: bus-0:\\.\libusb0-0001--0x1781-0x0c9f AVR Part : ATtiny85 Chip Erase delay : 400000 us PAGEL : P00 BS2 : P00 RESET disposition : possible i/o RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 12 4 0 no 512 4 0 4000 4500 0xff 0xff flash 65 6 32 0 yes 8192 64 128 30000 30000 0xff 0xff signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 Programmer Type : USBtiny Description : USBtiny simple USB programmer, https://learn.adafruit.com/usbtinyisp avrdude: programmer operation not supported avrdude: Using SCK period of 10 usec avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e930b (probably t85) avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: Using SCK period of 10 usec avrdude: reading input file "C:\Users\chocoball\AppData\Local\Temp\arduino_build_87390/sketch_nov06a.ino.hex" avrdude: writing flash (700 bytes): Writing | ####avrdude: 5 retries during SPI command #####avrdude: 7 retries during SPI command ####avrdude: 8 retries during SPI command #####avrdude: 7 retries during SPI command ####avrdude: 7 retries during SPI command #####avrdude: 8 retries during SPI command ####avrdude: 9 retries during SPI command #####avrdude: 8 retries during SPI command ####avrdude: 8 retries during SPI command #####avrdude: 8 retries during SPI command ##### | 100% 0.42s avrdude: 700 bytes of flash written avrdude: verifying flash memory against C:\Users\chocoball\AppData\Local\Temp\arduino_build_87390/sketch_nov06a.ino.hex: avrdude: load data flash data from input file C:\Users\chocoball\AppData\Local\Temp\arduino_build_87390/sketch_nov06a.ino.hex: avrdude: input file C:\Users\chocoball\AppData\Local\Temp\arduino_build_87390/sketch_nov06a.ino.hex contains 700 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.13s avrdude: verifying ... avrdude: 700 bytes of flash verified avrdude done. Thank you.
자세한 과정 log 는 위와 같습니다. 동영상으로도 올려 봅니다.
좀더 다른 sketch 는 다음 링크를 참고해 보세요.
* Programming with Arduino IDE
- https://learn.adafruit.com/introducing-trinket/programming-with-arduino-ide
Duemilanove 다음으로 성공한, 두 번째 arduino DIY 되겠습니다.
모두 Happy DIY!
'Hardware' 카테고리의 다른 글
Hardware | LCD2004 를 arduino 로 컨트롤 해보기 - 2 (0) | 2019.11.19 |
---|---|
Hardware | Arduino MEGA 2560 를 DIY 해보자 - 1 (4) | 2019.11.13 |
Hardware | 블랙박스 아이머큐리 TOPAZ 수리기 (5) | 2019.11.01 |
Hardware | Arduino 를 DIY 해보자 - 3 (0) | 2019.10.25 |
Hardware | SMD 솔더링에 대한 고찰 (0) | 2019.10.23 |
이 글은 아래 Arduino 를 직접 만들어보는 작업의 3편이 되겠습니다.
* Hardware | Arduino 를 DIY 해보자 - 1
- http://chocoball.tistory.com/entry/Hardware-Arduino-DIY-itself-1
* Hardware | Arduino 를 DIY 해보자 - 2
- http://chocoball.tistory.com/entry/Hardware-Arduino-DIY-itself-2
0. Duemilanove
저번에 실패한 Arduino Nano 는 뒤로 하고, 이번에는 Duemilanove 입니다.
위는 정품 layout 이고, 밑에 사진이 이번에 작업할 보드 입니다.
1. Part list
Arduino Duemilanove 에 들어가는 부품 리스트 입니다.
아래 리스트는 보드프리의 PDF 파일과 arduino 사이트에서 EAGLE 파일을 참고하였습니다.
* 보드프리
* Arduino
arduino-duemilanove-schematic.pdf
arduino-duemilanove-reference-design.zip
------------------------------------------------------------------------------------------------------- | name | value | type | ------------------------------------------------------------------------------------------------------- | C1, C4, C5, C8, C9, C10, C11, C12, C13 | 100nF | 0805 SMD | | C2, C3 | 22pF | 0805 SMD | | C6, C7 | 100uF 35V | Aluminum Electrolytic Capacitor | ------------------------------------------------------------------------------------------------------- | R1, R10, R11 | 10k Ohm | 0805 SMD | | R4, R5, R6, R7, R8, R9 | 1k Ohm | 0805 SMD | | L, PWR, RX, TX | LED | 0805 SMD | ------------------------------------------------------------------------------------------------------- | D1 | M7 (1N4007) | Rectifier Diode | | F1 | 500mA 15V | L1812 Resetable Fuse | ------------------------------------------------------------------------------------------------------- | J1, J3 | 8 | single row female 2.54mm pitch pinhead | | J2, POWER | 6 | single row female 2.54mm pitch pinhead | | ICSP | 6 | double row male 2.54mm pitch pinhead | | S1 | B3F-10XX | OMRON B3F-10XX series switch | | X2 | DC-21MM | 5.5/2.1mm female DC power jack plug socket | | X4 | USB B type | USB B type female socket | ------------------------------------------------------------------------------------------------------- | IC1 | ATMEGA328P-PU | DIP28 8-bit Microcontroller | | IC2 | FT232RL | SSOP28 USB UART interface IC | | IC4 | MC33269D-5.0 | 5V 800mA LDO voltage regulator | | IC5 | LM358D | SOP8 Op Amp | | Q2 | 16MHz | HC-49S crystal oscillator | | T1 | NDT2955 | SOT-23 MOSFET | ------------------------------------------------------------------------------------------------------- | R2 | 100_NM | no need to implement "no-mount" | | RESET-EN | jumper | "auto-reset" on ATmega168 | | X3 | JP4 | use like FTDI breakout board | -------------------------------------------------------------------------------------------------------
이제 위의 리스트를 가지고 하나씩 구매한 이력을 남겨 봅니다.
그냥 arduino duemilanove 하나 사면 3천원대에서 clone 제품을 구할 수 있으나,
이참에 준비하면서 부품들도 구해보고, 사용법도 알아보고 공부하기 위한 목적으로 진행했습니다.
2. Pin Header
외부 기기와 연결되기 위한 Pinout 용 Header 입니다.
기존에 보유하고 있는 긴 한줄읠 pin header 를 잘라서 사용할 수 있으나, 지저분해 질 수 있고,
깔끔하게 보이고 싶어서 궂이 구입했습니다.
* Single row female 2.54mm Pitch PCB Female Pin Header Connector Straight Single Row 2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/20/40Pin
도착은 주문한데로 6pin 용과 8pin용, 10개씩 배달되었습니다.
요로코롬 생겼습니다.
3. Fuse
실장되는 Fuse 는 전기적인 규격이 동일하고, 과전류가 흐른 뒤 다시 스스로 복구되는 Self Healing (Self Resetting) Fuse 입니다.
* 20PCS/LOT 1812 SMD SMD self-healing fuse 0.5A 500mA 15V MF-MSMF050-2
무리없이 도착.
수령한 제품은 웹사이트에서 본 사진과는 다르지만, 한번 믿고 써보기로 합니다.
4. Oscillator
CPU를 돌리고 명령어를 전달하는 역할을 하는 oscillator 입니다.
* hc-49s Crystal Oscillator electronic Kit resonator ceramic quartz resonator hc-49 DIP 7 kinds X 5pcs 32.768K 4 8 12 16 20 25 MHZ
필요한건 16 Mhz 이지만, 낱개로 파는 경우는 없어서 세트로 구매합니다.
요로코롬 생겼네요.
5. LED
이왕이면 한꺼번에 받기위해 한 업체에 몇가지를 같이 주문하였습니다.
왠지 LED 부품은 받을때마다 기분이 좋습니다.
6. Capacitor
Capacitor 는 세라믹과 둥그런 알루미늄 캡 캐패시터 두가지를 사용합니다.
부품이 많다 보니, 10uF 은 빼고 처음 주문을 넣어버려, 다른거 주분할 때 같이 주문했습니다.
0805 SMD 버전이라 100개씩 묶음이라고 해도 배송 용량이 적네요.
알루미늄 캡 캐패시터는 LED 구입한 업체에서 같이 구입해서 이미 도착했습니다.
7. Resistor
저항은 1K 와 10K 두가지가 필요합니다.
위의 세트구성은 다음과 같습니다.
10R / 22R / 47R / 100R / 220 / 470R / 750R / 1K / 2K2 / 4K7 / 6K8 / 10K
22K / 47K / 75K / 100K / 220K / 470K / 750K / 1M
* 2000pcs 0805 SMD Resistor Kit Assorted Kit 1ohm-1M ohm 5% 80valuesX 25pcs=2000pcs Sample Kit
위의 세트구성은 다음과 같습니다.
10 / 100 / 1K / 10K / 100K
12 / 120 / 1K2 / 12K / 120K
15 / 150 / 1K5 / 15K / 150K
20 / 200 / 2K / 20K / 200K
22 / 220 / 2K2 / 22K / 220K
27 / 270 / 2K7 / 27K / 270K
30 / 300 / 3K / 30K / 300K
33 / 330 / 3K3 / 33K / 330K
39 / 390 / 3K9 / 39K / 390K
47 / 470 / 4K7 / 47K / 470K
51 / 510 / 5K1 / 51K / 510K
62 / 620 / 6K2 / 62K / 620K
68 / 680 / 6K8 / 68K / 680K
75 / 750 / 7K5 / 75K / 750K
82 / 820 / 8K2 / 82K / 820K
91 / 910 / 9K1 / 91K / 910K
엄청 작네요. 이것이 0805 SMD 저항이군요.
8. Switch
9. Diode
LED 도착시 같이 왔습니다. 생각보다 이것도 크기가 꽤 작네요.
10. FT232RL
USB 통신을 위한 controller 입니다.
ATmega328P 는 CPU 자체에 USB 컨트롤러 부분이 없어서 이렇게 추가 USB controller chip 이 필요합니다.
참고로, Arduino Micro 에 사용되는 ATmega32U4 는 내장 USB controller 가 있어,
이렇게 추가 USB controller chip 이 필요 없습니다.
이제야 chip 들이 도착하는군요.
이번에 구입한 FTDI chip 은 마킹이 깔끔해 보여서 흔한 fake chip 은 아닌 듯 합니다.
모두 조립 후, 한번 확인해 볼께요.
11. Voltage regulator
5V 800mA 용량의 레귤레이터 입니다.
좀더 큰 용량으로 하고 싶었으나, 이쪽 지식이 충분치 않고, 과전류시 chip 들의 안전이 보장되지 않기에 스펙대로 구매했습니다.
* Free shipping 10pcs/lot MC33269DT-5.0G 5V .8A MC33269DT-5. 33269DT MC33269DT 33269DT MC33269 MC33269DT-5.0RKG
전압/전류 관련 부품이다 보니, 다른 부품들보다 크기가 큽니다.
기존 DC adapter 에도 잘 맞습니다.
PCB 에도 맞춰 보니 문제 없네요.
중요 부품이지만, 그런거 없습니다. 여타 부품처럼 평이하게 도착했습니다.
선명하게 CPU 마킹이 되어 있습니다. Socket 이랑 같이 찍어봤습니다. 이쁘다...
* 5pcs DIP-28 Round Hole 28 Pins 2.54MM DIP DIP28 IC Sockets Adaptor Solder Type 28 PIN 2.54 IC Connector
구멍이 round hole 과 lead 방식이 있습니다.
자주 chip 을 뺏다 꼈다 할 경우에 round hole 이 장점이 있고, lead 방식은 오랜동안 그냥 놔둘 경우 좋다고 합니다.
사실 lead 방식이 접점이 확실합니다.
다만, 이왕 하는 김에 고급지게 해보고자 round hole 타입을 구매해 봤습니다.
round hole 은 금속 다리 부분이 주조 방식으로 제작되므로 좀더 비쌉니다. 그리고 점점도 나쁘지 않아요.
PCB 에 잠깐 얹어 봤습니다. 아주 부드럽게 잘 맞습니다.
* 50PCS LM358DR SOP8 LM358 SOP LM358DT SOP-8 SMD LM358DR2G new and original IC
ATmega328P 과 함께 도착한 부품입니다.
* HMICICAWK Original 100% NEW 2955 NDT2955 SOT-223 10PCS/LOT
씌여진 문구에 SOT-223 이라고 되어 있습니다만, 배송된 것은 DPAK 버전으로 큰게 왔습니다.
크고 좋아보입니다만 보드에 맞질 않습니다.
Dispute 환불을 걸고 다른 업자에게 주문했더니만, SOT-233 버전을 또 보냈더랬습니다.
마킹이 조금 이상합니다만 문제 없겠죠?
다시 보낸다는 이야기가 없어, 다른 판매자에게 이미 주문을 또 했더랬습니다.
* BQ24040DSQR AP3608EG-G1 SN74LVC2G66DCTR NDT2955 MMFT2955 NTF2955 SP202EEN IR2153S STP100N8F6 MBR40100CT TPS60400DBVR D15XB80
SOT-233 버전의 MOSFET 이 또 왔어!
이놈은 마킹이 프린팅 되어 있네요.
대략 실장될 부품을을 위치 시켜보구요.
Flux Paste 를 바르면서 진행해야 하므로, 부품들이 도망가지 않게 테이프에 layout 에 맞게 안착/준비 시켜 놓습니다.
한땀 한땀... 이라고 하기엔 다소 지저분하게 작업을 진행합니다.
오븐을 통해 구워져 나오진 첫번째 Duemilanove 작품.
온도 조정에 실패해, 흰색 기판이 빵색으로 되었습니다.
결국 LED 극성을 거꾸로 해버려, 부품 때어 내다가 패턴이 나가는 사태가... 폐기 처분.
꽤 시간이 지난 후, 다시 새로 PCB 받아서 심기일전, 다시 시작.
이번에는 Flux Paste 를 적정량 도포할 정도로 실력이 조금 향상.
구워지기 전 사진.
오븐에 구워져 나온 후, USB, Power Jack, Pin header, Switch 등등, CPU 만 빼고 모두 장착.
마지막으로 CPU 장착.... 아... 감격.
17. bootloader
이제, arduino 를 IDE 등을 통해 소스코드 넣고 동작시키려면 bootloader 를 올려야 합니다. 지금은 완전 깡통 상태.
위의 사진의 ICSP 부분을 통해서 bootloader 를 밀어 넣을 수 있습니다.
연결법은, 예전 bootloader update 할 때의 방법과 동일합니다.
* Software | Arduino Nano Bootloader 를 update 해보자
- https://chocoball.tistory.com/entry/Software-Arduino-Nano-Bootloader-update
======================================== | Source (Nano) | Target (Duemilanove) | ======================================== | D12 | MISO (pin 1) | | 5V | 5V (pin 2) | | D13 | SCK (pin 3) | | D11 | MOSI (pin 4) | | D10 | RESET (pin 5) | | GND | GND (pin 6) | ----------------------------------------
처음 작업 시, Arduino Micro 를 활용해서, 스샷이 이렇게 되었네요. 소스 아두이노를 Nano 로 하면 Nano로 선택.
Source 아두이노에 "Arduino ISP" 스케치를 올립니다.
Programmer 를 "Arduino as ISP" 를 선택.
이제 다른건 다 놔두고, target arduino 기종을 선택. 대망의 Duemilanove 선택!
"Burn Bootloader" ~~~~~~~~~~!!!
동영상은 예의.
크아~~~~ 성공.
1년 이상 걸려서 조금 지친감이 없지 않아 있지만, 기분 너무 좋습니다.
이제 자가 Arduino Duemilanove 가 생겨, 다양한 프로젝트를 동시에 할 수 있는 여유가 생겼습니다.
'Hardware' 카테고리의 다른 글
Hardware | Arduino Gemma 를 DIY 해보자 (2) | 2019.11.07 |
---|---|
Hardware | 블랙박스 아이머큐리 TOPAZ 수리기 (5) | 2019.11.01 |
Hardware | SMD 솔더링에 대한 고찰 (0) | 2019.10.23 |
Hardware | 레트로 led 글자판 HPDL-1414 사용기 - 1 (0) | 2019.10.15 |
Hardware | 공기질 측정용 MiCS-6814 센서를 사용해 보자 - 1 (26) | 2019.10.12 |
마침내 깡통 ATtiny85 를 Digispark 버전으로 만드는 방법을 찾아서 포스팅 합니다.
Digispark 란, ATtiny85 에 직접 소스를 올려서 편하게 ATtiny85 을 이용한 개발을 할 수 있도록 한 Kickstarter 프로젝트 였습니다.
현재는 클라우드 펀딩에 성공하여 기성품으로 판매되고 있습니다.
* Digispark - The tiny, Arduino enabled, usb dev board!
- https://www.kickstarter.com/projects/digistump/digispark-the-tiny-arduino-enabled-usb-dev-board
프로젝트로 성공하여 기성품도 나와 있을 정도니, 당연하게도(?) AliExpress 에서 clone 으로도 판매되고 있어요.
(Open source 이기도 하니 뭐...)
1,500 원 정도면 바로 살 수 있지만, 혼자 힘으로 만들어 보고자 궂이 힘든 방법을 택해 봅니다.
참고로, 지금까지 ATtiny85 를 이용하여 놀았던 포스팅은 다음과 같으니 먼저 참고해 주세요.
지금까지 놀았던 것은, 모두 이 Digispark clone 을 만들어 보기 위한 전단계 들이었습니다.
* Hardware | ATtiny85 를 사용해 보자 - 1
- http://chocoball.tistory.com/entry/Hardware-ATtiny85-1
* Hardware | ATtiny85 를 사용해 보자 - 2
- http://chocoball.tistory.com/entry/Hardware-ATtiny85-2
1. Digispark Bootloader 입히기 - Arduino ISP
ATtiny85 를 뭔가 작업을 걸려면 interfacing 해주는 arduino 가 필요합니다.
이 arduino 를 programmer 라고도 하기도 합니다만, 여튼 Arduino ISP 라는 소스를 올려놔야 동작합니다.
지금까지 여러 포스팅에서 다루었으므로 여기서는 간단하게 설명하겠습니다.
일단 "ArduinoISP" 소스를 arduino 에 올립니다.
File > Examples > 11.ArduinoISP > ArduinoISP
2. Digispark Bootloader 입히기 - ATtiny85 와 연결
Arduino 와 연결은 일반적인 ArduinoISP 시에 사용하는 연결법과 동일합니다.
ATtiny85 | Arduino Nano --------------------------- VCC | 5V GND | GND Reset | D10 Pin 0 | D11 Pin 1 | D12 Pin 2 | D13 ---------------------------
실제 연결된 모습은 아래와 같아요.
이제 Arduino IDE 에서 ATtiny85 를 인식시켜야 합니다.
Boards Manager 에서 ATtiny85 가 떠서 선택할 수 있도록, 우선 Preferences 에서 다음과 같이 작업합니다.
File > Preferences > Additional Boards Manager URLs
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
그러면, 아래처럼 Boards Manager 에서 attiny 보드들을 선택할 수 있도록 해주는 파일들을 인스톨 할 수 있습니다.
Tools > Board > Boards Manager > Type : Contributed > attiny
여기까지 오면, Board 선택시 ATtiny 가 아래처럼 보입니다.
Tools > Board > ATtiny
ATtiny85 의 설정은 다음과 같이 맞춥니다.
* Board : ATtiny
* Processor : ATtiny85
* Clock : 1 MHz (internal)
* Port : Arduino ISP 가 연결된 Port
* Programmer : Arduino as ISP
3. micronucleus 부트로더 입히기
Digispark 는 Pin 숫자가 적어 제약이 많기 때문에 USB chip 따로 있지 않습니다.
그 대신에 bootloader 가 가상 USB 를 만들어서 PC 와 연결을 해주죠.
그 bootloader 가 micronucleus 라는 부트로더 입니다.
Digispark 는, 이 micronucleus 부트로더를 채용하고 있습니다.
지금까지 시행착오는 EEPROM 프로그램을 이용하여 직접 ATtiny85 에 쓰기를 시도했었지만,
아래 동영상을 보니, Arduino IDE 가 사용하는 "avrdude.com" 을 이용하는 방법이었습니다.
FUSE bit 도 정확하게 알려주더군요.
아래 동영상 제작자에게 감사를.
* Load Micronucleus to attiny85 using Arduino uno
- https://www.youtube.com/watch?v=o7711jBQxmY
이 Fuse 설정이 중요한데, 잘못하다가는 ATtiny85 가 벽돌이 될 수 있습니다.
벽돌된 ATtiny85 를 복구하는 방법도 있는데, 이는 다른 기회에 다뤄 보기로 하겠습니다.
일단, 여기에 성공한 Fuse 설정을 적어 놓습니다.
Fuse type | value ---------------------- Low Fuse | 0xe1 High Fuse | 0xdd Extended fuse | 0xfe ----------------------
Digispark 에서 사용하는 부트로더 파일인 micronucleus 를 다운로드 받아 놓습니다.
* Micronucleus V2.04
- https://github.com/micronucleus/micronucleus
다음으로, 최종 avrdude 실행 코드를 만들기 위해, 아무 소스나 uploading 이 성공한 소스를 arduino 에 올려 봅니다.
위에서 마지막 command 를 카피해서 notepad 등에 붙여서 avrdude 의 프로그램 위치나, config 파일의 장소를 확인합니다.
그리고 command 줄의 마지막 부분을 sketch 파일이 아닌, flash 문구를 붙여서 하나로 만듭니다.
C:\Users\chocoball\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/bin/avrdude -CC:\Users\chocoball\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/etc/avrdude.conf -v -pattiny85 -cstk500v1 -PCOM7 -b19200 -Uflash:w:C:\Users\chocoball\Documents\Arduino\libraries\micronucleus-master\firmware\releases\t85_default.hex:i -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m
저의 경우 최종 모습이 위 command 입니다.
각 부분을 분리해 보면 다음과 같이 3개로 분해됩니다.
C:\Users\chocoball\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/bin/avrdude -C C:\Users\chocoball\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/etc/avrdude.conf -v -pattiny85 -cstk500v1 -PCOM7 -b19200 -Uflash:w: C:\Users\chocoball\Documents\Arduino\libraries\micronucleus-master\firmware\releases\t85_default.hex:i -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m
위의 제일 마지막 부분이 micronucleus 부트로더인 t85_default.hex 와 fuse bit 를 지정한 command line 입니다.
이제 준비가 완료 되었습니다.
지금까지 해온 과정을 정리해 보면,
* Arduino ISP 로 연결
* micronucleus 부트파일 다운로드
* avrdude command line 생성
avrdude command line 이 완성되었으므로, 이제 실행시키면 됩니다.
실행은 Arduino IDE 에 복사하여 실행할 방법이 없으므로, command line 창에서 실행합니다.
Windows OS 의 경우는 다음과 같아요.
시작 > 검색 > Windows PowerShell
avrdude command 를 카피하여 PowerShell 에 붙여놓기 합니다.
두둥~!!!!!
실행!!!
Boom Boom Boom !!!
PS C:\> C:\Users\chocoball\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/bin/avrdu de -CC:\Users\chocoball\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/etc/avrdude. conf -v -pattiny85 -cstk500v1 -PCOM7 -b19200 -Uflash:w:C:\Users\chocoball\Documents\Arduino\libraries\micro nucleus-master\firmware\releases\t85_default.hex:i -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m avrdude.exe: Version 6.3-20171130 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "C:\Users\chocoball\AppData\Local\Arduino15\packages\arduino \tools\avrdude\6.3.0-arduino14/etc/avrdude.conf" Using Port : COM7 Using Programmer : stk500v1 Overriding Baud Rate : 19200 AVR Part : ATtiny85 Chip Erase delay : 400000 us PAGEL : P00 BS2 : P00 RESET disposition : possible i/o RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 ...
... avrdude.exe: Device signature = 0x1e930b (probably t85) avrdude.exe: safemode: lfuse reads as E1 avrdude.exe: safemode: hfuse reads as DD avrdude.exe: safemode: efuse reads as FE avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude.exe: erasing chip avrdude.exe: reading input file "C:\Users\chocoball\Documents\Arduino\libraries\micronucleus-master\firmwar e\releases\t85_default.hex" avrdude.exe: writing flash (8124 bytes): Writing | ################################################## | 100% 0.22s ...
... Reading | ################################################## | 100% 0.01s avrdude.exe: verifying ... avrdude.exe: 1 bytes of efuse verified avrdude.exe: safemode: lfuse reads as E1 avrdude.exe: safemode: hfuse reads as DD avrdude.exe: safemode: efuse reads as FE avrdude.exe: safemode: Fuses OK (E:FE, H:DD, L:E1) avrdude.exe done. Thank you.
Raw log 를 첨부해 놓습니다.
* Digispark bootloader log
- Digispark_bootloader_upload.txt
여기까지 오면 다 성공한 것이나 마찬가지예요.
4. Digispark 드라이버 인스톨
Digispark 드라이버 설치 과정은 아래 동영상을 참고하였습니다.
* Installing Drivers and Programming the DigiSpark ATtiny85 dev boards - Tutorial
- https://www.youtube.com/watch?v=MmDBvgrYGZs
Digispark 는 USB 계열의 device 이므로, 드라이버 인스톨이 필요합니다.
우선 최신 드라이버를 다운로드 받아 놓습니다.
* Digistump Arduino Release 1.6.7
그러면, 아래처럼 장치 관리자에서 잠깐 떳다가 사라집니다.
장치 관리자 메뉴에서 "숨겨진 장치 보이기"로 하면, 불분명한 장치로 인식되어 있습니다.
해당 장치에서 마우스 오른쪽 클릭으로 드라이버 설치를 선택 후,
아까 다운로드 받은 드라이버를 해동시킨 폴더를 선택해 줍니다.
짜잔~~~!!!
Digispark 장치 디바이스 드라이버 인스톨에 성공했습니다.
그러면 장치 관리자에서 아래와 같이 등록된 것을 확인할 수 있습니다.
이제 다 왔네요.
5. Digispark 에 직접 소스 올리기
Digispark 가 정상적으로 인식되었으면, Arduino as ISP 나 중간 장치를 거치지 않고,
직접 USB 에 연걸하여 Arduino IDE 에서 직접 소스를 uploading 할 수 있습니다.
Digispark 보드를 Arduino IDE 에서 선택될 수 있도록 아래 과정을 거칩니다.
File > Preferences > Additional Boards Manager URLs
URLs 부분에, official 한 Digispark 링크를 걸어 줍니다.
http://digistump.com/package_digistump_index.json
이제 Boards Manager 로 가서 관련 파일을 등록해 줍니다.
Tools > Board > Boards Manager
Digistump 라고 검색하면 인스톨 할 페키지가 뜹니다.
위의 과정까지 마치면, 아래처럼 Board 메뉴에서 Digispark 를 선택할 수 있게 됩니다.
Tools > Boards > Digispark (Default - 16.5mhz)
Programmer 를 USBasp 로 바꾸고 소스를 uploading 합니다.
업로딩을 시작하면 소스를 컴파일 하고, 최종적으로 아래 문구가 뜨면서 IDE 가 대기합니다.
Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)
이는 Digispark 는 USB 인터페이스 chip 을 가지고 있지 않고,
micronucleus 부트로더가 virtual USB 로 처리하므로, 장치관리자에서 지속적으로 인식하지 못합니다.
그래서 이렇게 필요시에 PC 가 준비단계가 되었을 때, USB 에 연결해 주면 됩니다.
연결하면, 위처럼 Digispark 를 IDE 내에서 인식하고 Digispark / ATtiny85 내장 EEPROM 을 지운 다음 새로운 코드를 쓰게 됩니다.
FIN
Digispark 가 ATtiny85 를 사용한다는 점에 착안하여,
깡통 ATtiny85 를 이용하여 Digispark 를 직접 만들어 보자고 한지 어언 6개월...
다른 포스트에서 다뤘듯 bootloader 에 대한 경험이 쌓이고 난 후가 되서야 완료할 수 있었습니다.
이제 소형/단순 control 을 위한 ATtiny85 이용시에는,
이 Micronucleus 가 사용된 Digispark clone 으로 직접 USB 와 연결하여 개발할 수 있겠네요.
모두 FUN Arduino~!!!
'Hardware' 카테고리의 다른 글
Hardware | Breadboard Jumper 구입하기 (0) | 2018.12.21 |
---|---|
Hardware | 샤오미 창미 멀티탭 3구 USB 3포트 (0) | 2018.12.16 |
Hardware | 8x8 LED matrix 와 Colorduino 이용해 보기 (0) | 2018.12.03 |
Hardware | MAX30105 파티클 센서 - 1 (0) | 2018.11.23 |
Hardware | RTC DS3231 부품 사용기 - 2 (0) | 2018.11.20 |
1. upload 가 이상해
어느때 부턴가 arduino 에 sketch 를 upload 하면 다음과 같이 에러를 냈습니다. 뿜뿜~.
뭐지? 하고 찾아보다가 보니 bootloader 가 새롭게 업데이트 되면서 발생한 문제라고 하는군요.
Arduino IDE 가 업데이트 되면서 자동으로 바뀐것 같습니다.
기존에 선택되어 있던 "Processor : ATmega328P" 이 아니라...
아래와 같이 Processor 의 종류를 "ATmega328P (Old Bootloader)" 로 바꾸어서 upload 하면 해결 됩니다.
Tools > Processor > ATmega328P (Old Bootloader)
찾아보니 이런 내용이 올라와 있네요.
제가 즐겨 쓰는 arduino nano 버전에 사용되는 ATmega328P 에만 관련이 있어 보입니다. (Uno 도 마찬가지?)
* Getting Started with the Arduino Nano
- https://www.arduino.cc/en/Guide/ArduinoNano
일단 해결은 되었으니, 당시에는 급하게 Bootloader 까지 업데이트 할 필요는 없었습니다.
2. Bootloader 를 업데이트 해보자
새로 올라온 Nano 용 Bootloader 는 몇가지 장점이 있다고 합니다.
* Arduino Nano ATmega328P bootloader difference
- https://arduino.stackexchange.com/questions/51866/arduino-nano-atmega328p-bootloader-difference
1. Optiboot will not go into an endless reset loop after a watchdog reset. ATmegaBOOT will.
2. Optiboot expects the upload communication at 115200 baud. ATmegaBOOT, 57600.
This is the reason why the old boards don't work with the Tools > Processor > ATmega328P selection and vice versa.
watchdog 을 리셑 후, 무한루프에 빠지는 문제와, 통신 속도가 달라졌다고 합니다. (저는 못느꼈던 부분....)
추가로 Bootloader 가 작아지면서, 더 많은 소스를 올릴 수 있게 되었다지만, 여분의 부분을 사용하게끔은 아직 안되었다고 하네요.
여분의 메모리 공간 활용을 위해서, 새 Bootloader 는 Optiboot 는 Uno 와 동일하므로,
Nano 이지만, 편법으로 Uno 로 설정하고 Bootloader 를 입히면 된다 합니다.
아직 큰 소스를 제작하지도 않는지라, Uno 용으로 Bootloader 를 입히는 것은 나중에 해보겠습니다.
3. Arduino as ISP 로 연결
궁금하니 새로운 Bootloader 를 올려보기로 합니다.
Bootloader 를 입히는 방법은 여러가지가 있습니다만,
저는 여분의 Arduino Nano / Micro 를 상호 사용하여 Bootloader 를 입히는 방법으로 진행합니다.
이때 사용되는 interface 는 ICSP header 를 사용합니다.
지금까지 arduino 를 사용하면서, 이 ICSP header 가 필요할까? 했는데, 이럴 때 필요하네요.
새롭게 Bootloader 를 입힐 arduino 는 ICSP 에 연결하고,
PC 와 연결되는 arduino 는 ISP 모드로 사용됩니다.
그럼 하나하나 진행해 볼까요.
4. Pin 연결
ISP 모드로 연결되는 arduino 를 SOURCE 라고 칭하고, 새로운 Bootloader 가 입히게 될 arduino 를 TARGET 이라고 하겠습니다.
TARGET 의 ICSP header 와 SOURCE 의 pin 이 어떻게 연결되는지 표로 만들어 봤습니다.
아래는 Arduino Micro 가 SOURCE 로 했기 때문에,
Nano 나 다른 기존일 때에는 거기에 맞는 FUNCTION pin 을 찾아서 연결해 주면 됩니다.
Function | SOURCE (Micro) | TARGET ICSP (Nano) ---------------------------------------------- MISO | MISO | 1 5V | 5V | 2 SCK | SCK | 3 MOSI | MOSI | 4 RESET | D10 | 5 GND | GND | 6 ----------------------------------------------
각 Nano 및 Micro 의 pin 의 FUNCTION 과 ICSP header 정보는 다음 그림을 참고해 보세요.
Micro 는 Nano 와 조금 다른 pinout 을 가지므로 주의해야 합니다.
회로도는 다음과 같습니다.
실제로 연결한 사진은 다음과 같습니다.
5. SOURCE 에 올리는 sketch
다음으로, ISP 모드로 연결될 SOURCE 는 "ArduinoISP" sketch 가 올라가 있어야 합니다.
이 소스는 Arduino IDE 가 설치되어 있으면, 기본으로 가지고 있는 소스 입니다.
File > Examples > 11.ArduinoISP > ArduinoISP
저의 경우는 SOURCE 가 Arduino Micro 이므로, 이 micro 에 upload 해주었습니다.
위처럼 Programmer 를 "AVRISP mkII" 에서 "Arduino as ISP" 로 바꾸어 줍니다.
Board | Arduino Nano Processor | ATmega328P Port | COM6 --> Port connected arduino as a SOURCE Programmer | Arduino as ISP
위의 그림과 조금 다르지만, 새로운 소스는 이제 Old Bootloader 가 아니므로
Processor 에서 "ATmega328P" 로 정의해 주면 됩니다.
추가로 주의할 점은,
Programmer 에서 비슷하게 생긴 "ArduinoISP" 항목이 있지만, 속지 말고 "Arduino as ISP" 을 선택해줘야 합니다.
이제 준비가 완료 되었습니다.
6. 쉽게 끝나지 않는다
그렇죠... 이렇게 쉽게 끝나면 아쉽죠.
모든 글을 참조하여 잘 따라 했는데도 불구하고 실패합니다.
"Device signature = 0x000000" 이라는 문구가 중국 복제품이라서 그런가? 라는 생각도 해봤습니다.
중국 복제품은 아래처럼 Unknown board 라고 표시가 되거든요.
그래서, 이 부분을 강제적으로 메모리에 덮어 씌울 수 있는 방법이 없는가도 찾아 봤습니다.
없더군요... (Atmel Studio 라는게 있지만 잘 안됨...)
그래도 안되길래, ICSP header 접속시 1번 pin 을 잘못 인식하여 5V 를 엄한데 꽂아버려
chip 이 타버렸나 생각해 보기도 했습니다. 그렇게 되면 얼마 하지 않지만 또 구입해야 하니까 매우 번거럽게 됩니다.
참고로, 여러 troubleshooting 하면서 알게된 글이 아래 사이트 입니다.
발생할 수 있는 모든 가능성에 대해, 그에 따른 대응방법을 자세하게 적어 놨습니다.
Bootloader 관련하여 문제가 생겼을 시, 어떻게 조치해야 하는지를 알려주는 성지와 같은 글 입니다.
* Have I bricked my Arduino Uno? Problems with uploading to board
7. 심기 일전
다시 처음부터 시작한다는 마음으로
다음날 아침 일찍, 배선도 다시하고 ArduinoISP 도 새로 올려보고, 모든 과정을 다시금 천천히 해봤습니다.
음?!!!!!!!!!!
성공 했네요?!
"Done burning bootloader" 문구가 뜹니다.
성공한 로그를 첨부합니다.
- Bootloader_update_201812.txt
축하 동영상 올라 갑니다. 아래와 같이 SOURCE 와 TARGET LED가 서로 사이좋게 끔뻑끔뻑 하면 됩니다.
확인해봐야 겠죠?
Processor 를 "ATmega328P" 로 변경하고, 아무 sketch 나 올려 봅니다.
잘 되네요.
로그를 첨부합니다.
첫날 연속 실패의 원인은, pin 을 잘못 연결하지 않았나로 추측해 봅니다.
역시 이 취미는 차분하게 해야 합니다.
8. 여러가지...
IDE 가 업데이트 되면서 지 맘대로 Bootloader 도 업데이트 할 수 있게 되었다면,
필시 그 파일이 존재할 터, 찾아봅니다.
C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot
요놈!
Atmel Studio 를 잠깐 사용해 보면서 느낀 것은,
기존에 보유하고 있는 Arduino 의 상태에 대해 알아둘 필요가 있었습니다.
예를 들면, memory 크기나, 인식하는 code, Signature, Fuse bit 같은 것들.
아래 소스를 사용하면 ATmega 시리즈를 사용하는 Arduino 의 chip 현황을 자세하게 알 수 있습니다.
* nickgammon/arduino_sketches
- https://github.com/nickgammon/arduino_sketches
특히 "Atmega Board Detector" 를 사용하면 Bootloader 소스 뿐만 아니라 거의 모든 정보를 알 수 있습니다.
여기서도 연결은 Arduino as ISP + ICSP header 조합입니다.
우선 Arduino Nano 의 정보 입니다.
Atmega chip detector. Written by Nick Gammon. Version 1.20 Compiled on Dec 10 2018 at 21:28:36 with Arduino IDE 10803. Attempting to enter ICSP programming mode ... Entered programming mode OK. Signature = 0x1E 0x95 0x0F Processor = ATmega328P Flash memory size = 32768 bytes. LFuse = 0xFF HFuse = 0xDA EFuse = 0xFD Lock byte = 0xCF Clock calibration = 0x87 Bootloader in use: Yes EEPROM preserved through erase: No Watchdog timer always on: No Bootloader is 2048 bytes starting at 7800 Bootloader: 7800: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 7810: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF ...
이대로 끝나면 아쉬우니, Arduino Micro 도 확인해 봅니다.
Micro 는 ICSP header 의 1번 pin 자리가 살짝 다르니 주의해야 합니다. (아래 그림)
후후, 정상으로 돌아온 Arduino Nano 를 SOURCE 로 하고 Arduino Micro 를 확인해 보는 사진입니다.
Arduino Micro 의 정보 입니다.
Atmega chip detector. Written by Nick Gammon. Version 1.20 Compiled on Dec 10 2018 at 21:28:36 with Arduino IDE 10803. Attempting to enter ICSP programming mode ... Entered programming mode OK. Signature = 0x1E 0x95 0x87 Processor = ATmega32U4 Flash memory size = 32768 bytes. LFuse = 0xFF HFuse = 0xD8 EFuse = 0xCB Lock byte = 0xEF Clock calibration = 0x71 Bootloader in use: Yes EEPROM preserved through erase: No Watchdog timer always on: No Bootloader is 4096 bytes starting at 7000 Bootloader: 7000: 0x5F 0xC0 0x00 0x00 0x78 0xC0 0x00 0x00 0x76 0xC0 0x00 0x00 0x74 0xC0 0x00 0x00 7010: 0x72 0xC0 0x00 0x00 0x70 0xC0 0x00 0x00 0x6E 0xC0 0x00 0x00 0x6C 0xC0 0x00 0x00 ...
Micro는 Bootloader 가 훨씬 크네요.
USB 연결을 위한 chip 도 built-in 되어 있고, 나중에 나온 CPU 이니 확장이 많이 되어있는 듯 합니다.
FIN
뭐가 달라졌을까요?
Old Bootloader 를 일부러 선택하지 않아도 된다는 정도?
또한 가장 눈에 띄는건 Baud Rate 입니다.
19200 --> 115200 으로 바뀐걸 아래와 같이 알 수 있네요.
기존
Using Port : COM6 Using Programmer : arduino Overriding Baud Rate : 19200 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53
NEW
Using Port : COM6 Using Programmer : arduino Overriding Baud Rate : 115200 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53
'Software' 카테고리의 다른 글
Software | Google Analytics 를 이용한 블로그 분석 (2) | 2019.04.29 |
---|---|
Software | RTL-SDR USB dongle 과 PC 활용 - 1 (6) | 2019.02.26 |
Software | 블로그를 검색엔진에 노출시키기 (0) | 2018.11.10 |
Software | Gomez Peer 의 서비스 종료 (0) | 2018.11.07 |
Software | 회로설계 프로그램 EAGLE (2) | 2018.09.04 |