'2021/01/08'에 해당되는 글 1건
- 2021.01.08 Hardware | ESP-07 사용기 2
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 |