'AMS1117'에 해당되는 글 4건
- 2021.02.02 Hardware | ESP-12 사용기 6
- 2021.01.08 Hardware | ESP-07 사용기 2
- 2020.08.17 Hardware | ESP-03 사용기
- 2019.08.04 Hardware | Arduino 를 DIY 해보자 - 2
ESP-01 부터 시작한 ESP8266 시리즈 중, 이번에는 ESP-12 사용기 입니다.
* Hardware | ESP-07 사용기
- https://chocoball.tistory.com/entry/Hardware-ESP07-using
* Hardware | ESP-03 사용기
- https://chocoball.tistory.com/entry/Hardware-ESP03-using
* Hardware | ESP-01 or ESP8266 사용기 - 5
- https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-5
* Hardware | ESP-01 or ESP8266 사용기 - 4
- https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-4
* Hardware | ESP-01 or ESP8266 사용기 - 3
- https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-3
* Hardware | ESP-01 or ESP8266 사용기 - 2
- https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-2
* Hardware | ESP-01 or ESP8266 사용기 - 1
- https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-1
1. 구입
일전에 구입한 ESP-07 와 동일한 업자에게서 구입.
* ESP8266 ESP-01 ESP-01S ESP-07 ESP-12E ESP-12F remote serial Port WIFI wireless module intelligent housing system Adapter 2.4G
- https://www.aliexpress.com/item/32339917567.html
도착 샷.
Pinout 정보가 새겨진 뒷면.
2. Pinout
ESP8266EX 칩을 충분히 활용할 수 있는 Pinout 구성으로 되어 있습니다.
3. Breakout 보드
중간의 0 ohm 을 제거해 주면, 뒷 면의 Voltage Regulator 를 사용할 수 있게 됩니다.
이는 ESP-07 에서도 다루었던 내용이라, 자세한 내용은 생략합니다.
4. Diagram
Programming (Flashing) 하는 연결도와 Normal (구동) 하기 위한 연결도는 다릅니다. 아래 사이트에서 정보를 얻었습니다.
* Programming ESP8266 ESP-12
- https://www.instructables.com/Programming-ESP8266-ESP-12/
* Programming Mode
Flash 메모리에 새로은 firmware 나 source 를 올리기 위한 mode 입니다.
차이는 IO0 / 18 번 pin 을 pull-up 해주냐 마냐의 차이.
* Normal Use Mode (after Upload)
위의 Programming 모드와 Normal 모드를 결합한 연결 구성 입니다.
이 Programming mode 로 진입하기 위해서는, 스위치 버튼 눌러주면서 전원을 on 하면 됩니다.
실제 구성 사진은 다음과 같습니다.
사실은 Breakout 보드에 ESP-12 를 결합해 놨으므로, Breakout 보드상에 이미 장착된 저항을 이용하면, 추가로 저항 2개만 필요합니다.
위 / 아래 연결 구성은 Breakout 보드가 없을 때의 모습이지만, 필요한 Pin 에 Voltage/Ground 가 연결되어 있으므로 문제 없이 동작합니다.
ESP2866 계열에서는 그나마 끝판왕인 ESP-12 가 연결된 모습.
5. 기본 확인
기본으로 올려진 Firmware version 과 몇 가지 명령어 시험.
기본 버전은 2016년의 1.3.0.0 이군요.
AT+RST 를 이용하여 rebooting. 사용된 Flash Chip 정보를 알 수 있습니다. QIO 모드이면서 32Mbit (512KB+512KB) 라고 나옵니다.
32Mbit 면 1024KB+1024KB 일 듯 한데... 일단 넘어 갑니다.
Internet 에 연결하여 AT+CIUPDATE 실행을 통하여 원격 update 를 시도해 봤으나, ERROR 를 냅니다. 역시나 옛날 버전.
Flash Chip 은 QUAD : 32Mbit 로 문제 없이 확인 됩니다.
6. Programming
일단은 문제가 없는 듯 하니, source 를 올려 봅니다. 테스트 해볼 소스는 Blink 와 CheckFlashConfig.
CheckFlashConfig 소스는 다음과 같습니다.
/* ESP8266 CheckFlashConfig by Markus Sattler This sketch tests if the EEPROM settings of the IDE match to the Hardware */ void setup(void) { Serial.begin(115200); } void loop() { uint32_t realSize = ESP.getFlashChipRealSize(); uint32_t ideSize = ESP.getFlashChipSize(); FlashMode_t ideMode = ESP.getFlashChipMode(); Serial.printf("Flash real id: %08X\n", ESP.getFlashChipId()); Serial.printf("Flash real size: %u bytes\n\n", realSize); Serial.printf("Flash ide size: %u bytes\n", ideSize); Serial.printf("Flash ide speed: %u Hz\n", ESP.getFlashChipSpeed()); Serial.printf("Flash ide mode: %s\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN")); if (ideSize != realSize) { Serial.println("Flash Chip configuration wrong!\n"); } else { Serial.println("Flash Chip configuration ok.\n"); } delay(5000); }
QIO 및 4MiB 네요. 지금까지 완성품을 구입한 ESP8266 계열에서는 가장 좋은 Flash Chip 을 사용한 모듈 입니다.
소스가 업로드 되는 과정에 있어서도 문제 없습니다. 순탄한 흐름.
esptool.py v2.8 Serial port COM3 Connecting.... Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: 50:02:91:78:d3:60 Uploading stub... Running stub... Stub running... Configuring flash size... Auto-detected Flash size: 4MB Compressed 267104 bytes to 196785... Wrote 267104 bytes (196785 compressed) at 0x00000000 in 17.5 seconds (effective 122.3 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin...
보드상에 장착된 LED 를 깜빡이는 소스 입니다.
/* ESP8266 Blink by Simon Peter Blink the blue LED on the ESP-01 module This example code is in the public domain The blue LED on the ESP-01 module is connected to GPIO1 (which is also the TXD pin; so we cannot use Serial.print() at the same time) Note that this sketch uses LED_BUILTIN to find the pin with the internal LED */ void setup() { pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level // but actually the LED is on; this is because // it is active low on the ESP-01) delay(1000); // Wait for a second digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH delay(2000); // Wait for two seconds (to demonstrate the active low LED) }
예상한 것과 달리 문제 없이 동작.
지금까지 ESP8266 가지고 놀았던 과정 중, 전혀 문제 없이 여기까지 왔습니다.
ESP8266 을 Flashing 하는 작업은 이제 통달 한 듯 한 느낌.
7. Firmware Update
최신 firmware 를 사용합니다. 2020년에 공개된 Non-OS SDK 3.0.4 를 이용합니다.
Firmware upload 에 필요한 BIN 파일 및 Address 는, 최신 문서에 잘 나와 있습니다.
4a-esp8266_at_instruction_set_en.pdf
32 Mbit (4 MiB) 버전이므로, 아래 section 을 찾아 BIN / Address 정보를 그대로 사용합니다.
--------------------------------------------------------------------------------------------- | BIN | Address | Description | --------------------------------------------------------------------------------------------- | boot_v1.7.bin | 0x00000 | In /bin/at. | --------------------------------------------------------------------------------------------- | user1.2048.new.5.bin | 0x01000 | In /bin/at/1024+1024. | --------------------------------------------------------------------------------------------- | blank.bin | 0x3FB000 | Initializes RF_CAL parameter area. | --------------------------------------------------------------------------------------------- | esp_init_data_default_v08.bin | 0x3FC000 | Stores default RF parameter values, | | | | has to be downloaded into flash at least once. | | | | If the RF_CAL parameter area is initialized, | | | | this bin has to be downloaded too. | --------------------------------------------------------------------------------------------- | blank.bin | 0xFE000 | Initializes Flash user parameter area, | | | | more details in Appendix. | --------------------------------------------------------------------------------------------- | blank.bin | 0x3FE000 | Initializes Flash system parameter area, | | | | more details in Appendix. | ---------------------------------------------------------------------------------------------
Flash chip 용량이 크고, SPI Mode 도 빠르기 때문에, 1024 KB + 1024 KB (32 Mbit-C1) 버전으로 입혀 봅니다.
별다른 문제 없이 성공. 최신 버전인 AT - 1.7.4 / SDK - 3.0.4 가 올라 갔습니다.
AT+RST 를 이용하여 rebooting sequence 를 보면, QIO / 32Mbit(1024KB+1024KB) 로 잘 동작 합니다.
참고로, "SpiAutoSet" 을 키고 업로드 하면, 강제로 32Mbit 으로 변경됩니다.
1024 KB + 1024 KB (32 Mbit-C1) 버전용 BIN / Address 를 사용하고 있으므로, 메뉴얼로 32Mbit-C1 을 선택해 줘야 합니다.
8. AT Command 확인
Internet 접속 및 전번적인 확인 작업. 특별히 문제 없슴.
* AT+CWMODE_CUR : Sets the Current Wi-Fi mode; Configuration Not Saved in the Flash
- 1: Station mode
- 2: SoftAP mode
- 3: SoftAP+Station mode
* AT+CWLAP : Lists Available APs
* AT+CWJAP_CUR : Connects to an AP; Configuration Not Saved in the Flash
* AT+CIFSR : Gets the local IP address
* AT+PING="www.google.com" : Ping packets
* AT+CIPSTATUS : Gets the connection status
* AT+CIPBUFSTATUS : Checks the status of TCP-send-buffer
* AT+CWQAP : Disconnects from the AP
AP 와 연결을 끊으면, internet 연결 정보가 깔끔하게 reset 되지 않고 일정 시간동안 남아 있습니다.
시간이 지나고 다시 확인하면 reset 되어 있슴.
* AT+CIUPDATE : Upgrades the software through network
역시 최신 firmware 라 그런지, FOTA - 인터넷을 통한 firmware update 가 가능합니다.
Firmware update 하면서 LED 가 깜빡거리는 모습이 좋아, 동영상으로 담아 봤습니다.
* AT+RESTORE : Restores the Factory Default Settings
모든 확인이 끝났습니다. 앞으로 sensor 들과 같이 활용할 기회에 사용하면 되겠네요.
FIN
중국 제조사 답게 WeChat 관련한 옵션이 새로 추가되었습니다.
'Hardware' 카테고리의 다른 글
Hardware | CJMCU-103 Rotary Angle Sensor (6) | 2021.02.16 |
---|---|
Hardware | 보조배터리 분해해 보기 (0) | 2021.02.11 |
Hardware | Digi-Key 에서 전자부품 주문해 보기 (2) | 2021.02.01 |
Hardware | TIMER 수리기 (6) | 2021.01.21 |
Hardware | JLCPCB 에서 PCB 주문을 해보자 (2) | 2021.01.19 |
ESP8266 시리즈를 사용해 보면서, ESP-01 부터 시작하여 ESP-03 을 사용해 보았습니다.
* Hardware | ESP-03 사용기
- https://chocoball.tistory.com/entry/Hardware-ESP03-using
* Hardware | ESP-01 or ESP8266 사용기 - 5
- https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-5
* Hardware | ESP-01 or ESP8266 사용기 - 4
- https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-4
* Hardware | ESP-01 or ESP8266 사용기 - 3
- https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-3
* Hardware | ESP-01 or ESP8266 사용기 - 2
- https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-2
* Hardware | ESP-01 or ESP8266 사용기 - 1
- https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-1
이번에는 ESP-07 입니다.
1. 구입
아래 AliExpress 링크에서 구입 했습니다.
ESP-12 도 함께 구입 했으니, 이 글 다음에는 ESP-12 에 대해서도 다뤄 보도록 하겠습니다.
* ESP8266 ESP-01 ESP-01S ESP-07 ESP-12E ESP-12F remote serial Port WIFI wireless module intelligent housing system Adapter 2.4G
- https://www.aliexpress.com/item/32339917567.html
도착 샷. 깡통 쉴드로 전자파 차폐가 되어 있습니다.
PCB 밑부분은 IO Pin 정보가 기재되어 있습니다.
제조는 DOITING 이라는 회사인 듯 한데, PCB 는 AI-Thinker 로 보이네요. 설계가 동일한지라 완전 짬뽕.
Pinout 정보 입니다.
2. Breakout Board
ESP-03 때도 사용 했었지만, EPS-07 / ESP-12 도 Breakout 보드에 올렸습니다.
이 Breakout 보드가 없으면, 2.54mm 의 Pin 간격이 맞지 않아 빵판에서 그 대로 사용할 수 없게 되어 있습니다.
주의해야 할 사항으로는, Voltage Regulator 를 추가로 장착시에는 중간에 보이는 "0" resistor 를 제거해야 정상 동작 됩니다.
* Adding Wi-Fi telemetry to the Pixhawk flight controller with an ESP8266 module
혹시 모를 전압 문제를 방지하고자, Voltage Regulator 를 장착 했습니다.
사실 3.3V 만 제대로 넣어 주면 상관 없는 것이긴 한데, 기판에 활용을 할 수 있게 해 놨으니 사용해 봅니다.
5V 를 인가하면, 3.3V 로 바꿔서 ESP-07 에 전압을 인가해 줍니다.
중간에 보이는 "0" ohm 저항은 이쁘게 제거.
그 위에 ESP-07 을 얹어 줍니다.
CH_PC 을 측정해 보면, 자동으로 전압이 Pull-down 되어 있는 것을 알 수 있습니다.
3. Diagram
Pinout 정보를 기반으로 연결해 보면 아래와 같이 됩니다.
다만, Breakout 보드에 Voltage Regulator 이외에, 필요한 Pull-down 저항이 구비되어 있으니, 연결은 좀 더 간단하게 할 수 있습니다.
* How to prepare your ESP8266 (ESP-12) for flashing
- https://www.sensate.io/tutorial-how-to-prepare-your-esp8266-esp-12-for-flashing
아래는 Breakout 보드가 없는 경우의 생 연결도 입니다.
아래는 Breakout 보드를 사용 했을 때의 연결도 입니다. (저의 경우)
Breakout 보드가 있더라도 Breakout 보가 없는 연결 방법을 해도 문제는 없으나,
이왕이면 정식 + 간단한 방법인 연결을 사용하면 되겠습니다.
실제 연결 모습은 아래와 같습니다.
4. 기본 Firmware 확인
기본 firmware 이 장착된 상태 이니, 어떤 version 인지 확인해 봅니다.
1.1.0.0 이고, 2016년 병신년 버전이네요.
AT+RST 하면, 보통 Flash Chip 정보도 나옵니다만, 예전 버전이라서 그런지 그딴거 없습니다.
Internet 연결 후, AT+CIUPDATE 를 해봐도 ERROR 만 반겨 줍니다.
5. 삽질의 향연
새로운 Firmware 를 올리고 시험해 봤으나, 아래와 같이 err 만 내 뱉습니다.
또한, BAUD Rate 가 74880 baud 의 변태적인 설정에서만 문자가 보이는 것이 맘에 들지 않더군요.
ESP8266 DOWNLOAD TOOL 에서 ERASE 후, firmware 올려도 동일한 현상입니다.
* 문제 1 : 적절한 Board 선택
첫 번째 문제는, Flash Chip 확인 위한 소스를 올릴 때, Generic ESP8266 Module 이 아니라,
먼저 테스트 했던 ESP-12 Module 용으로 설정 했던 것이 원인이었습니다.
ESP-12 용으로 소스가 입혀지다 보니, memory address 의 시작 지점부터 꼬였었던 것이 아닌가 추측해 봅니다.
* 문제 2 : 적절한 Flash Chip 의 SPI Mode 선택
Flash Chip 의 SPI Mode 가 Q 로 시작하는 QIO / QOUT 으로 설정한 것이 문제였습니다.
Flash Chip 은, ESP8266 DOWNLOAD TOOL 에서 "SpiAutoSet" 을 이용하여 자동 인식을 사용하면 QUAD 로 인식됩니다.
그리하여, 비슷한 QIO 또는 QOUT 로 설정하면 될 것 같으나, 사실은 DOUT 로 설정해야 정상 동작 합니다.
정상적일 때, Flash Chip 인식 소스를 이용하여 확인해 봐도, DOUT 으로 확인이 가능합니다.
File > Examples > ESP8266 > CheckFlashConfig
/* ESP8266 CheckFlashConfig by Markus Sattler This sketch tests if the EEPROM settings of the IDE match to the Hardware */ void setup(void) { Serial.begin(115200); } void loop() { uint32_t realSize = ESP.getFlashChipRealSize(); uint32_t ideSize = ESP.getFlashChipSize(); FlashMode_t ideMode = ESP.getFlashChipMode(); Serial.printf("Flash real id: %08X\n", ESP.getFlashChipId()); Serial.printf("Flash real size: %u bytes\n\n", realSize); Serial.printf("Flash ide size: %u bytes\n", ideSize); Serial.printf("Flash ide speed: %u Hz\n", ESP.getFlashChipSpeed()); Serial.printf("Flash ide mode: %s\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN")); if (ideSize != realSize) { Serial.println("Flash Chip configuration wrong!\n"); } else { Serial.println("Flash Chip configuration ok.\n"); } delay(5000); }
DOITING 사의 원가 절감이나, Fake Chip 을 이용한 Flash 메모리 구성이 이런 결과를 초래한 것 같습니다.
6. Firmware 최신
하루 동안의 삽질을 끝내고, 겨우 최신 firmware 로 업데이트가 가능 했습니다.
아래 사이트에서 최신 버전의 firmware 를 다운로드 받습니다.
* ESPRESSIF
2021년 1월 기준, V3.0.4 가 최신입니다.
관련 문서를 보면, 8 Mbit = 1MiB Flash 를 update 와 관련한 address 와 해당 파일에 잘 나와 있습니다.
4a-esp8266_at_instruction_set_en.pdf
사용될 파일과 Address 정보는 다음과 같습니다.
--------------------------------------------------------------------------------------------- | BIN | Address | Description | --------------------------------------------------------------------------------------------- | boot_v1.7.bin | 0x00000 | In /bin/at. | --------------------------------------------------------------------------------------------- | user1.2048.new.2.bin | 0x01000 | In /bin/at/512+512. | --------------------------------------------------------------------------------------------- | blank.bin | 0xFB000 | Initializes RF_CAL parameter area. | --------------------------------------------------------------------------------------------- | esp_init_data_default_v08.bin | 0xFC000 | Stores default RF parameter values, | | | | has to be downloaded into flash at least once. | | | | If the RF_CAL parameter area is initialized, | | | | this bin has to be downloaded too. | --------------------------------------------------------------------------------------------- | blank.bin | 0x7E000 | Initializes Flash user parameter area, | | | | more details in Appendix. | --------------------------------------------------------------------------------------------- | blank.bin | 0x3FE000 | Initializes Flash system parameter area, | | | | more details in Appendix. | ---------------------------------------------------------------------------------------------
ESP8266 Download Tool 을 이용하여 Flashing 합니다.
짜잔~~ 최신 버전으로 update 되었습니다.
7. 최신 Firmware 확인
AT+RST 를 통해 booting sequence 를 확인해 봅니다.
SPI Mode 가 DOUT 이며, 8Mbit (512KB+512KB) 버전이라는 것을 알 수 있습니다.
Internet 연결을 위한 AT 명령어들을 차례로 확인해 봅니다.
* AT+CWMODE_CUR=3 : Sets the Current Wi-Fi mode. Configuration Not Saved in the Flash.
-- 1: Station mode
-- 2: SoftAP mode
-- 3: SoftAP+Station mode
* AT+CWLAP : Lists Available APs
* AT+CWJAP_CUR : Connects to an AP; Configuration Not Saved in the Flash
* AT+CIFSR : Gets the local IP address
* AT+PING="www.google.com" : Ping packets
* AT+CIPSTATUS : Gets the connection status
* AT+CIPBUFSTATUS : Checks the status of TCP-send-buffer
* AT+CIUPDATE : Upgrades the software through network
최신버전이라서 그런지, 인터넷을 통한 업데이트도 잘 됩니다.
신기한건, 분명 동일한 소스인데, 이렇게 인터넷을 통해 업데이트 하면 compile time 이 3초 (17초에서 20초로 변경) 정도 차이 납니다.
또한, jump to run user2 @ 81000 이라고 뜨면서, user 와 그 뒤의 숫자가 변경됩니다. 아마 모드가 바뀌면서 그런 듯.
* AT+RESTORE : Restores the Factory Default Settings
RESTORE 를 사용하면, 공장 초기화 및 rebooting 을 합니다.
궁금하여, AT+CIUPDATE 를 한번 더 했더니만, user 와 숫자가 원래 대로 되돌아 왔습니다.
Running 과 Control 모드, 두 개가 각각 번갈아 가면서, 동작을 관장 하는 것 같네요.
참고로, AT+CIUPDATE 동작하는 동영상을 올립니다. 다운로드 > Flashing > rebooting 의 일련의 과정이 한 번에 일어납니다.
8. Source 확인
Blink 소스를 올려 봤습니다.
File > Examples > ESP8266 > Blink
/* ESP8266 Blink by Simon Peter Blink the blue LED on the ESP-01 module This example code is in the public domain The blue LED on the ESP-01 module is connected to GPIO1 (which is also the TXD pin; so we cannot use Serial.print() at the same time) Note that this sketch uses LED_BUILTIN to find the pin with the internal LED */ void setup() { pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level // but actually the LED is on; this is because // it is active low on the ESP-01) delay(1000); // Wait for a second digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH delay(2000); // Wait for two seconds (to demonstrate the active low LED) }
이쁘게 잘 동작 합니다.
FIN
'Hardware' 카테고리의 다른 글
Hardware | TIMER 수리기 (6) | 2021.01.21 |
---|---|
Hardware | JLCPCB 에서 PCB 주문을 해보자 (2) | 2021.01.19 |
Hardware | 필립스 HR2195 믹서기 수리기 (0) | 2021.01.07 |
Hardware | bGeigie Nano 충전을 wireless 로 바꿔보자 (0) | 2021.01.06 |
Hardware | Anker PowerConf 간단 사용기 (0) | 2020.11.04 |
ESP8266 을 사용하면서 GPIO 핀이 많은 모듈이 필요해 졌습니다.
기존 ESP-01 은 arduino 와 연결하여 WiFi 부분을 커버하는 것 외에 sensor 로부터 값을 입력 받을 수 있는 추가 Pin 이 없습니다.
포름알데히드 센서를 이용해 보면서, ESP-01 말고 GPIO 핀이 많은 것을 찾게 되었습니다.
* Hardware | ZE08-CH2O Formaldehyde 센서 사용해보기
- https://chocoball.tistory.com/entry/Hardware-ZE08-CH2O-Formaldehyde-sensor-using
1. ESP-01
처음엔 몰랐지만, ESP2866 이라는 것은 ESP-01 만 뜻하는 것이 아니라, ESP8266EX 을 사용한 WiFi module 의 총칭이었던 것입니다.
지금까지 ESP8266 = ESP-01 로 알고, 입출력 Pin 이 더 필요한 경우, SoftwareSerial 을 어떻게 처리해야 하는지 히고 있었습니다.
위의 도식처럼 ESP8266EX 는, 많은 GPIO 를 지원하고 있었습니다.
단순히, ESP-01 의 pin out 갯수가 적었던 것이였죠. 더 많은 연결을 위해 ESP-01 도 pin out 을 처음부터 늘려 줬으면 어떠했을까 합니다.
어떤 사람이 "it's a shame to have such a small number of GPIOs at ESP-01" 라고 쓴 글을 본것 같습니다.
ESP8266EX chip 의 가느다란 다리에 직접 선을 납땜하면 사용할 수 있습니다. 시도해 봅니다.
실패.
2. ESP-03
ESP8266EX 를 사용하면서 GPIO 핀을 활용할 수 있는 breakout 보드들이 존재 했었습니다. ESP-03 / ESP-07 / ESP-12 등등...
ESP32 를 쓰면 쉽게 문제 해결 되지만, 굳이 어려운 방법으로 도전해 보기로 합니다.
우선 ESP-03 만 보더라도 GPIO 가 8개나 Pinout 으로 구성되어 있습니다.
자세한 Pinout 정보 입니다.
참고로, RST pinout 은 따로 구비되어 있지 않고, 아래 사진처럼 보드 위에 마련되어 있습니다.
Program 을 입힐 때, RST 가 있으면 편하나, 전원을 껐다 키면서 IO 0 (HIGH Run, LOW Flash) 핀을 이용하여 되니, 사용하지 않기로 합니다.
사용 전력을 아끼는 Sleep mode 구현시에는 필요하다 하나, 지금은 필요 없으니 그냥 놔두기로 합니다.
우선 ESP-03 을 구입.
* 1PC ESP8266 serial WIFI model ESP-03 Authenticity Guaranteed esp03 for arduino
- https://www.aliexpress.com/item/32641401163.html
잊어먹고 있으니, 어느새 도착.
ESP8266EX 메인 칩과, 25Q40CT 라고 쓰인 Flash memory 가 보입니다.
사용된 오실레이터는 26MHz 입니다.
3. 어뎁터 보드 구매
ESP-03 의 Pin 들은, 빵판에 바로 연결할 수 있는 2.54mm 간격이 아니고, pin 들 사이가 더 조밀합니다.
이를 해결하기 위해, 자가로 pin header 를 붙일 수도 있고, 직접 선을 연결할 수 있으나 지저분해 집니다.
원래는 ESP-07 / ESP-12 용으로 나와 있는 어뎁터가 있는데, 잘만 하면 맞을 것 같더군요.
어차피 ESP-07 / ESP-12 구매하면 필요할 듯 하여, 5개가 한 묶음인 아래 어뎁터 보드도 구매합니다.
* 5pcs/lot ESP8266 serial WIFI Module Adapter Plate Applies to ESP-07, ESP-12F, ESP-12E
- https://www.aliexpress.com/item/32971304797.html
잊을만 하니 도착.
양쪽에 male pin header 를 연결할 수 있게 되어 있고, ESP-07 / ESP-12 pin 과 맞닿는 부분을 납땜하게 되어 있습니다.
ESP-03 을 얹어 보니, 납땜 부위와 간격이 많이 떨어져 있으나, 납물을 길게 연결하여, 어찌어찌 연결할 수 있을 것 같습니다.
4. ESP-03 을 어뎁터 보드에 납땜
친절하게도 전원 관련된 저항이 어뎁터에 이미 실장되어 있습니다.
뒷면에는 3.3V 용 레귤레이터 자리도 마련되어 있습니다. 전압이 over shoot 나지 않게 안정적인 전원 공급을 위해 있으면 좋은 것이죠.
마침 3.3V regulator 가 있으니 붙여 줍니다.
원래는 ESP-07 / ESP-12 를 위한 저항과 레귤레이터 회로겠으나, 아래를 참고하면서 ESP-03 에서도 활용할 수 있는지 확인해 봅니다.
* MY METHOD FOR BREADBOARDING AN ESP-03
- https://www.esp8266.com/viewtopic.php?p=18369
일반 사용 모드와, flashing 모드를 위해서는 push switch 도 붙여야겠네요.
확인에 또 확인하고 아래와 같이 만들어 봤습니다.
실패...
저항이고 레귤레이터고, 스위치고 점퍼고 다 제거했습니다. 단순하게 사용하는게 최고 입니다.
납땜은 아래처럼 길게 늘여뜨리면, 이 어뎁터를 ESP-03 용으로 사용 가능합니다.
5. Flash memory 크기 확인
25Q40CT 라고 씌인 Flash memory 사양을 검색해 보니 대충 다음과 같은 사양입니다.
- GIGADEVICE [GigaDevice Semiconductor (Beijing) Inc.]
- GD25Q40CTEG : 3.3V Uniform Sector Dual and Quad Serial Flash
- GigaDevice Semiconductor (Beijing) Inc.
- 4M-bit (512K-byte)
4Mbit = 512KiB... 털썩.
FTDI 모듈과 TX/RX 를 연결하여 본격적으로 활용해 봅니다. ESP-03 의 연결 정보는 다음과 같습니다.
전원과 FTDI 그리고 flashing 을 위한 스위치 연결 구성은 다음과 같아요.
가능하면 전원 공급은 FTDI 를 통해서 얻는것 보다, 분리하는 것이 좋습니다.
실재 구현 모습입니다.
FTDI 를 이용하여 PC 에 연결해, 확인해 봅니다. 역시군요.
기본으로 입혀져 있는 firmware 는 AI-Thinker 의 Boot 모드인 듯 합니다.
ESP8266 library 를 인스톨 하면, 기본으로 제공되는 Flash Check 소스를 입혀 봅니다.
File > Examples > ESP8266 > CheckFlashConfig
Flash mode 를 위해, 달아 놓은 스위치를 누르면서 전원을 넣고, flashing 을 해 봅니다. 잘 flashing 되네요.
그렇습니다... 틀림없는 512KiB 네요.
6. firmware update
Flash memory 를 교체하여 용량을 늘릴 예정이지만, 512KiB 에 올릴 수 있는 firmware 를 찾아 봅니다.
찾는 와중에 알게된 용어 정리.
APIs of "ESP8266_RTOS_SDK" are same as "ESP8266_NONOS_SDK"
중국산 모듈에 가장 많이 쓰이는 AI-Thinker.
* Ai-thinker
- v0.9.5.2
- https://wiki.aprbrother.com/en/Firmware_For_ESP8266.html
파일명에 9600 표시가 없는 firmware : one for 9600 baud rate
파일명에 9600 표시가 없는 firmware : one for 115200 baud rate
* Updating ESP8266 Firmware
- https://os.mbed.com/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware
ESP8266_RTOS_SDK_v1.1_512kb.zip
Firmware 파일 못지 않게 중요한 address 정보.
--------------------------------------- | BIN | Address | --------------------------------------- | boot_v1.1.bin | 0x00000 | | user1.bin | 0x01000 | | esp_init_data_default.bin | 0x7C000 | | blank.bin | 0x7E000 | ---------------------------------------
잘 동작함.
* Espressif Systems (SDK V2.0.0 / AT V1.3)
4a-esp8266_at_instruction_set_en.pdf
esp8266_nonos_sdk_v2.0.0_16_08_10.zip
4Mbit = 512KiB 에 SDK V2.0.0 과 AT V1.3 이 올라간다고 메뉴얼에 적혀 있습니다만, 저는 되지 않더군요.
* [SDK Release] ESP8266_NONOS_SDK_V1.4.0_15_09_18
- https://bbs.espressif.com/viewtopic.php?f=46&t=1124
esp_iot_sdk_v1.4.0_15_09_18.zip
많은 firmware 를 테스트 하다 보니, 이 버전의 firmware update 후의 화면인지 기억이 잘... 여튼 성공 했었던것 같아요.
Online 으로 firmware 를 업데이트 하는 FOTA 방식을 테스트 해봤습니다.
만, 마지막까지 문제 없이 진행되더니만 실패. Flash memory 용량이 적어 실패하는 듯.
7. 32Mbit / 4MiB 로 업그레이드
우선 Flash chip 양쪽에 납을 충분히 먹이고 인두로 지지니 쉽게 떨어집니다. 무리해서 힘주지 않는게 포인트.
원래 실장되어 있던 flash memory 와 교체하려는 flash memory 크기만 비교해 봐도 꽤 다릅니다.
32Mbit Flash memory chip 을 납땜합니다. Oscillator 와 사이가 좁아서 힘들었습니다.
512KiB 칩은 조그마한 크기였는데, 4MiB 칩은 좀 큰 편이라, 기존 자리에 납땜 하려면 다리를 안쪽으로 구부려야 합니다.
ESP8266 DOWNLOAD TOOL 로 확인해 보니, 문제 없이 flash memory upgrade 가 완료 되었습니다.
구울 firmware 버전은 Non-OS 중에서 가장 최신 버전.
ESP8266_NonOS_AT_Bin_V1.7.4.zip
Flashing 할 때는, Address 를 정확히 따라야 합니다. V1.7.4 의 32Mbit (1024 KB + 1024 KB) 설정은 다음과 같습니다.
메뉴얼 대로 Address 잘 기입해서 flashing~!
문제 없이 booting 됩니다.
웃긴건, booting 할 때는 76,800 baud rate 로 동작하고 (위의 스샷에서 글씨가 깨지는 부분), 기본 모드에서는 115,200 baud 로 동작합니다.
8. WiFi 기능과 Sensor 값 입력을 동시에 수행
용량도 늘었으니, WiFi 기능을 사용하면서 sensor 값을 GPIO 14 으로 받아 internet 을 통해 값을 쏴주는 과정을, 아래 포스트에서 진행.
* Hardware | ZE08-CH2O Formaldehyde 센서 사용해보기
- https://chocoball.tistory.com/entry/Hardware-ZE08-CH2O-Formaldehyde-sensor-using
Serial Monitor 에서 확인할 결과, GPIO 14 에서 입력 받은 값들도 정상적으로 확인.
인터넷을 통해서도 잘 값들이 전달됨도 확인 하였습니다. (자세한건 위의 포스트에서 확인 가능합니다.)
9. 추가 구매
이참에 ESP8266EX 시리즈를 추가로 구매 했습니다. 가지고 있는 ESP-01 이 납땜 실패로 사용할 수 없으니, ESP-01 도 추가 구매.
* ESP8266 ESP-01 ESP-01S ESP-07 ESP-12E ESP-12F remote serial Port WIFI wireless module intelligent housing system Adapter 2.4G
- https://www.aliexpress.com/item/32339917567.html
ESP-01
언제 사용해 보겠냐며, ESP-07 도 구매.
ESP-07
ESP8266 chip 의 끝판왕 breakout 보드인 ESP-12F 도 구매.
ESP-12F
다음 포스팅 들은 ESP-07 / ESP-12F 에 대한 이야기가 되겠네요.
'Hardware' 카테고리의 다른 글
Hardware | INSTOCK PD594A 구입기 (0) | 2020.10.12 |
---|---|
Hardware | Fuji Xerox CP116w 수리 성공기 (52) | 2020.10.07 |
Hardware | ZE08-CH2O Formaldehyde 센서 사용해보기 (4) | 2020.08.14 |
Hardware | ROKU 로 화면 미러링 사용해 보기 (0) | 2020.07.29 |
Hardware | SK 스마트미러링 사용해 보기 (2) | 2020.07.28 |
1. Arduino Nano 를 DIY 해보자
이 글은 아래 포스트에서 이야기한, arduino 를 직접 만들어보기 2탄 입니다.
* Hardware | Arduino 를 DIY 해보자 - 1
- http://chocoball.tistory.com/entry/Hardware-Arduino-DIY-itself-1
처음 DIY 대상으로 arduino nano 입니다.
일단, 회로 보는 EAGLE 프로그램에서 뽑은 part list 를 구입에 필요한 것만 정리해 봤습니다.
------------------------------------------------------------------------------------------------------- | name | value | type | ------------------------------------------------------------------------------------------------------- | C1, C4, C6, C9 | 100nF | 0603 SMD | | C3, C7, C8 | 1uF | 0805 SMD | | C2, C5 | 4.7uF 16V | 0603 SMD Tantalum capacitor | ------------------------------------------------------------------------------------------------------- | RP1, RP2 | 1k Ohm | CAY16 Network resistor SMD | | L, PWR, RX, TX | LED | 0805 SMD | ------------------------------------------------------------------------------------------------------- | D1 | SS1P3L-M3 | Schottky diodes & rectifier 30V 1A | | F1 | 500mA 6V | 0603 SMD MF-FSMF050 Resetable Fuse | ------------------------------------------------------------------------------------------------------- | J1, J2 | 15 x 2 | single row male 2.54mm pich pin head | | J3 | USB Mini B | USB Mini B type female socket | | J4 | 6 | double row male 2.54mm pitch pinhead | | SW1 | 157 | SMD tactail switch | ------------------------------------------------------------------------------------------------------- | IC1 | FT232RL | SSOP28 USB UART interface IC | | IC2 | LM1117IMPX-5.0| SOT223 Linear regulator | | IC3 | ATMEGA328P-AU | TQFP32 8-bit Microcontroller | | Y1 | 16MHz | SMD Crystal ceramic resonator | -------------------------------------------------------------------------------------------------------
0603 SMD 및 CAY16 network resistor 등, 소형화에 특화된 부품들로 구성되어 있습니다.
Oscillator 마저도 SMD 타입 입니다.
정품 arduino nano 의 앞면과 뒷면 사진 입니다.
최신 arduino nano 는 ATmega328 chip 크기가 더욱 작아진 MLF (Micro Lead Frame) 형식으로,
ATmega328-MU 가 실장되어 있습니다.
참고로, 이 ATmega328-MU 의 Package type 은 32M1-A 라고 하네요.
- Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Summary.pdf
아래는 밑면입니다.
맨 왼쪽 밑부분에 0603 크기의 fuse 가 있으며,
중간 부분에 SMD 형식의 network resistor 가 실장되어 있습니다.
공간을 최대한 적게 차지하도록 작은 부품들을 사용되어 있습니다. 다만 구하기 힘든 부품들입니다.
2. 구입 부품 최종 확인
정품 nano 에 사용된 SMD 크기는 0603 이지만, 받은 보드는 0805 SMD 로 수정되었으며,
다른 부붐들도 보다 범용적이고 큰 부품들로 변경되어 있다는 것을 알 수 있습니다. 아래 파일은 그 회로도 입니다.
* BL-386
* BL-386(Silk)
참고가 될 수 있도록 arduino nano 의 official 자료를 아래에 올려 놓습니다.
* Arduino Nano V3.2
아래는 무료로 받은 보드 윗면입니다.
부품 크기가 0805 SMD 죠? 그리고 reset switch 마저도 큼지막 합니다.
아래는 밑면입니다.
모두 0805 SMD 이며, 왼쪽 윗부분의 diode 도 큼지막 합니다.
특징으로는 oscillator 가 4 pin 이며, 정사각형의 모양입니다. 이런건 처음이네요.
이 보드를 설계하신 분의 배려가 느껴집니다.
Arduino Nano 의 보드 자체 크기가 0805 를 충분히 커버할 수 있으므로, 궂이 0603 SMD 를 쓸 이유는 없는 것이지요.
다음에 준비하고 있는 Duemilanove 에서도 0805 SMD 를 그대로 사용하고 있어,
추가 부품을 그렇게 많이 구입하지 않아도 되어서 다행입니다.
최종적으로 실제 필요한 부품을 다시 정리해 봤습니다.
------------------------------------------------------------------------------------------------------- | name | value | type | ------------------------------------------------------------------------------------------------------- | C1, C3, C4, C7, C9 | 0.1uF | 0805 SMD | | C5, C6 | 22pF | 0805 SMD | | C8 | 10uF | 0805 SMD | ------------------------------------------------------------------------------------------------------- | R1, R2, R3 | 1k Ohm | 0805 SMD | | R4, R5, R6, R7 | 680 Ohm | 0805 SMD | | L, PWR, RX, TX | LED | 0805 SMD | ------------------------------------------------------------------------------------------------------- | D1 | SS14 | Schottky diodes & rectifier 30V 1A | ------------------------------------------------------------------------------------------------------- | J1, J2 | 15 x 2 | single row male 2.54mm pitch pinhead | | J3 | USB Mini B | USB Mini B type female socket | | J4 | 6 | double row male 2.54mm pitch pinhead | | SW1 | 3 x 6 x 2.5mm | SMD Tactile switch | ------------------------------------------------------------------------------------------------------- | IC1 | FT232RL | SSOP28 USB UART interface IC | | IC2 | LM1117IMPX-5.0| SOT223 Linear regulator | | IC3 | ATMEGA328P-AU | TQFP32 8-bit Microcontroller | | Y1 | 16MHz | 3225 SMD Crystal ceramic resonator | -------------------------------------------------------------------------------------------------------
필요한 부품 리스트를 만들면서 알게된, 배려가 깃든 보드의 특징은 다음과 같습니다.
* no network resistor
저항을 한데 모아 회로를 단순화 하기 위한 부품으로 SMD 용으 구하기 힘드나,
위의 보드에서는 모두 0805 SMD 로 변경되었습니다.
* no fuse
Fuse 가 생략되었습니다.
사실 arduino nano 는 과전류에 사용될 목적으로 만들어 진 것이 아니므로, 단순화를 위해 삭제된것 같습니다.
* bigger crystal
좁쌀만한 oscillator 가 아닌, 좀더 큰 resonator 로 변경되었습니다.
* bigger diode
Diode 도 일반적으로 사용되는 큰 부품으로 대체되었습니다.
* bigger switch
RST switch 도 큰걸로 대체되었습니다.
* all 0805 SMD based
그렇습니다. 0603 SMD는 모두 0805 SMD 로 변경되었습니다.
배려가 깃든 보드인 것을 조사하면서 알게 되니 감사한 마음이 저절로 듭니다.
이 자리를 빌어 다시한번 감사의 말씀 드립니다.
이제 각 부품 구입을 정리해 봅니다.
동시에 다른 arduino 를 준비하다 보니, 겹치는 부품들이 꽤 있습니다.
이런 부품을 공유할 수 있어서 좋네요.
8pin DIP socket 이 필요해서 555 주문할 때, 따로 10uF 을 주문했습니다.
얘만 투명 릴에 왔네요.
위의 세트에는 다음 저항들이 포함되어 있고, 딱 680 Ohm 은 없습니다.
10R / 22R / 47R / 100R / 220 / 470R / 750R / 1K / 2K2 / 4K7 / 6K8 / 10K
22K / 47K / 75K / 100K / 220K / 470K / 750K / 1M
잘 도착하여 받아본 부품 입니다.
다만, 요즘 Micro USB 추세라, Micro USB 도 구매합니다.
Mini USB 와 비교시 pin 간의 간격만 다를 뿐, pin 순서는 동일했습니다.
역시 Micro USB 가 더 단순하고 깔끔한 느낌을 줍니다.
Pin 간격이 좁을 뿐, 순서는 동일합니다.
다만, 요놈은 도착까지 3개월이 걸렸네요.
물론 검정 버전도 같이 가지고 있습니다.
Duemilanove 용으로 구입한 세트에 모두 포함되어 있습니다.
5V/800mA 사양대로라면 특별히 문제될껀 없다고 봅니다.
확대 사진입니다.
형식만 알면 제품을 선택하는 것은 그리 어렵지 않습니다.
AliExpress 에서 검색하니 바로 나오네요. 그 중에서 16MHz 제품을 선택해 줍니다.
* 10pcs SMD 3225 active crystal oscillator OSC 16MHZ 16M 3.2*2.5 3.3V 25PPM
잘 도착했구요.
Oscillator 치고는 직사각형으로 생겨서 신기합니다.
인두 팁으로 납땜을 하다 보니, 아무래도 사용되는 납이 많아져 버립니다.
특히 소자 밑으로 스며들게 해야 하는 oscillator 가 가장 힘들었습니다. (좀 지저분하게 되었죠?)
표면에 안착되지 않은 듯 해서 납을 좀 많이 먹여버리기도 하고, 네 귀퉁이의 소자가 붙어버린 것 같아서 납을 빨아들이기도 하고.
0805 SMD 의 LED 소자는 납땜 하는 열로 인하여 안쪽 구조가 쉽게 망가질 수 있어서 신경이 많이 쓰였습니다.
신기한 것은, anode / cathode 가 쉽게 구분될 수 있도록 띠가 마킹 되어 있었습니다.
위의 사진 처럼, 돌기가 있는 쪽이 + 극이네요.
설계대로라면 USB mini B 이어야 하지만, 요즘은 micro USB 로 통합되는 분위기라서 micro USB 를 장착해 봤습니다.
리드선의 순서는 동일해서, 간극만 맞추고 납땜하면 되었습니다.
잘 안착되게 리드선을 밑으로 구부려서 납땜 해야 하는데, 그러지 않아서 납을 많이 먹여도 떠버리네요. (위 사진)
micro USB 부분의 접점이 잘 되지 않자, 조금 많이 인두로 지졌더랬습니다.
그랬더니 패턴이 나가버렸네요. ㅠㅠ (망함)
micro USB 를 PC 에 연결하면 LED 도 들어왔다 나갔다 뭔가 하는것 같은데, PC 에 인식이 되지 않았습니다.
pinheader 까지 다 납땜 해버렸는데...
이번 작업은 망했어요.
다시 이 기판을 주문하여 도착하면 다시 시작하려 합니다.
그러기 전에 열풍기로 작업해야 겠습니다.
열풍기가 준비 되면, 그 때 다시 arduino DIY 를 시작하겠습니다.
'Hardware' 카테고리의 다른 글
Hardware | ADS1115 16bit 4채널 ADC 를 사용해 보자 (6) | 2019.08.12 |
---|---|
Hardware | Digital Compass - HMC5883L 사용기 - 3 (0) | 2019.08.10 |
Hardware | 납땜 주변 용품 (0) | 2019.08.02 |
Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 1 (0) | 2019.07.07 |
Hardware | iPhone SE 스크린 교환기 (0) | 2019.07.04 |