'Espressif'에 해당되는 글 4건

  1. 2021.02.02 Hardware | ESP-12 사용기 6
  2. 2021.01.08 Hardware | ESP-07 사용기 2
  3. 2019.07.02 Hardware | ESP-01 or ESP8266 사용기 - 4
  4. 2019.07.01 Hardware | ESP-01 or ESP8266 사용기 - 3

Hardware | ESP-12 사용기

|

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)


Flash chip 에 업로드한 프로그램을 실행시키기 위한 모드 입니다.


위의 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) 라고 나옵니다.

32Mbit1024KB+1024KB 일 듯 한데... 일단 넘어 갑니다.



Internet 에 연결하여 AT+CIUPDATE 실행을 통하여 원격 update 를 시도해 봤으나, ERROR 를 냅니다. 역시나 옛날 버전.



Flash Chip 은 QUAD : 32Mbit 로 문제 없이 확인 됩니다.





6. Programming


일단은 문제가 없는 듯 하니, source 를 올려 봅니다. 테스트 해볼 소스는 BlinkCheckFlashConfig.



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);
}


QIO4MiB 네요. 지금까지 완성품을 구입한 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 를 이용합니다.


ESP8266_NONOS_SDK-3.0.4.zip



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 관련한 옵션이 새로 추가되었습니다.



And

Hardware | ESP-07 사용기

|

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

https://rays-blog.de/2016/10/21/224/adding-wi-fi-telemetry-to-pixhawk-flight-controller-with-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 ChipSPI 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

https://www.espressif.com/

ESP8266_NONOS_SDK-3.0.4.zip


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 ModeDOUT 이며, 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


And

Hardware | ESP-01 or ESP8266 사용기 - 4

|

이 포스트와 관련된 ESP8266 글이 있습니다.


* Hardware | ESP-01 or ESP8266 사용기 - 1

https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-1


* Hardware | ESP-01 or ESP8266 사용기 - 2

https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-2


* Hardware | ESP-01 or ESP8266 사용기 - 3

https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-3


ESP8266 은 지속적으로 개선된 버전을 firmware 업데이트를 통하여 적용하고 있습니다.

그러나, 요즘 나오는 새로운 firmware 는 16Mbit = 2MByte 이상 되는 용량이 있어야 update 가 가능합니다.

그 만큼 다양한 명령어와 프로그램이 추가되는 것이겠죠.





1. Flash Size


기존에 가지고 있는 ESP8266 의 메인칩 옆을 확인해 보면, 메인칩과 비슷한 크기의 Flash chip 이 붙어 있습니다.



제품 코드를 보니 Berg Miro 제품의 Flash memory 네요.


* BergMicro

https://www.elnec.com/en/device/Berg+Micro/BG25Q80A+(ISP)/



25Q80SCP datasheet 는 못 찾았지만, 타 제조사 들과 비슷한 제품 코드를 사용하고 있으며,

그 사양서에 따르면 8M-bit/1M-byte 라고 되어 있네요. 즉, 위 부품도 1MiB 실장으로 보입니다.





2. Upgrade Chip


우선 업그레이드 할 Flash Chip 용량의 크기를 정해 봅시다.

32Mbit = 4MByte 정도면 충분할 것 같네요.


AliExpress 를 검색하던 중, 32M-bit/4M-byte 버전이 아래와 같이 두가지가 있습니다.

그 차이를 정확히 알지 못하니 일단 두개 모두 구입해 봅니다.


* 5PCS W25Q32BVSSIG SOP-8 W25Q32 SOP 25Q32BVSIG SMD W25Q32BVSIG 25Q32

https://www.aliexpress.com/item/10PCS-W25Q32BVSSIG-SOP-8-W25Q32-SOP-25Q32BVSIG-SMD-W25Q32BVSIG-25Q32-free-shipping/32727772232.html



* 5PCS W25Q32FVSSIG SOP8 25Q32 SOP 25Q32FVSIG SOP-8 W25Q32FVSIG SMD W25Q32 new and original IC

https://www.aliexpress.com/item/5PCS-W25Q32FVSSIG-SOP8-25Q32-SOP-25Q32FVSIG-SMD-new-and-original-IC-free-shipping/32541803919.html






3. W25Q32


두 가지 chip 의 차이를 확인해 봅시다. 일단 datasheet 를 첨부해요.


* W25Q32BV

w25q32bv_revi_100413.pdf


* W25Q32FV

w25q32fv_revi_10202015.pdf


사양서를 다 읽어보지는 못했지만, FEATURE 섹션만 비교해 보면,

SPI clockdata transfer rate 에서 F 버전이 더 성능이 좋습니다.

그래서 조금 더 비쌌던것 같습니다.


* W25Q32BV



* W25Q32FV



잘 도착해서 실물을 하나씩 꺼내 사진을 찍어 봤습니다.






4. Flash Chip 교환


기판에서 flash chip 만을 이쁘게 제거해야 합니다.

열풍기가 있으면 좋겠지만, 아직 가지고 있지 않으므로, 다른 방법으로 제거해 봅니다.



솔더윅 이구요. 기판에서 납을 빨아들여 제거해 주는 역할을 합니다.



액체 플럭스 이구요. 납을 쉽게 녹여주는 역할을 합니다.

SMD 칩의 쪼만한 다리들을 그냥 납땜하는건 힘든데, 이걸 발라 놓으면 납들이 쉽고 이쁘게, 알아서 붙어줍니다.



액체 플럭스와 솔더윅으로 지지고 있으니, 톡 하고 분리되네요.

음후후, 이걸 하기 위해 기다렸어!



플럭스의 찌꺼기를 깨끗하게 씻어내기 위해, 일반 약국에서 파는 에탄올을 바르고 칫솔로 쓱싹쓱싹.

95% 이상의 에탄올을 구입하고 싶은데, 쉽지 않네요. 일단 83% 라도 만족. 참고로 1000원에 구입.



훗, 깨끗해 졌군요.

새로운 칩을 자리 잘 잡아서 얹힌 다음, 액체 플럭스 바르고, 납땜하면 끝.



역시 마무리는 에탄올로 쓱싹쓱싹.



제거된 친구들. 잘가~.



ESP8266 은 총 3개를 가지고 있지만, 그 중 2개만 교환해 봤습니다.

RobotDyn 제품은 FV 버전으로.



Ai-Thinker 제품은 BV 버전으로 교환했습니다.





5. Flash 용량 확인


ESP FLASH DOWNLOAD TOOL 을 띄웁니다.



기존 Flash chip 교환 전 정보는, Vendor : GD, QUAD : 8Mbit 으로 표시됩니니다.



교체된 Flash chip 정보는, Vendor : WBQUAD : 32Mbit 으로 표시됩니니다.

Ai-Thinker 버전은 납땜 하다가, 쪼만한 SMD 저항 하나가 날라가 버려, 그걸 찾아서 다시 붙이는데 애를 먹였으나, 잘 동작 하는군요.





6. Espressif 버전 firmware upgrade


Espressif 에서 제공되는 최신 firmware 로 업그래이드 해봅니다.


그런데 계속 제대로 동작하지 않더군요. 뭐가 문제일까...

그러다가 아래 링크를 찾게 됩니다.


* Flashing AT 1.7.0 binary firmware in 32m-c1 mode not working

https://github.com/espressif/ESP8266_NONOS_SDK/issues/179


요지는, 32Mbit-C1 버전을 사용할 수 있어야 하지만 뭔가의 문제로 정상 동작하지 않고,

chip selection 에서 16Mbit-C1 을 선택해야 한다는 군요. 이렇게 되면, 32Mbit 의 넓은 영역을 다 활용하지 못할 터인데...

bug 가 고쳐지지 않는 이상 16Mbit-C1 으로 구워야 할 것 같습니다.



또한, 최신 Espressif 의 1.7 binary 버전은 only '1024+1024 flash map' 만에 대응한다 합니다.

어차피 '512+512 flash map' 은 찾을 수 없었습니다.


다운로드는 아래 두 군대에서 받을 수 있습니다.

하나는 AT command 버전은 1.7 이고, 다른 하나는 Non-OS SDK 가 3.0 입니다.


ESP8266 AT Bin V1.7.0

https://www.espressif.com/en/support/download/at?keys=&field_type_tid%5B%5D=14

ESP8266_AT_Bin_V1.7.zip


ESP8266 NONOS SDK V3.0.0

https://www.espressif.com/en/support/download/sdks-demos?keys=&field_type_tid%5B%5D=14

ESP8266_NONOS_SDK-3.0.zip


위의 두 파일 중 어떤것을 사용해도 상관 없습니다. 동일합니다.


위에서 이야기 했다 싶이, 기껏 32Mbit-C1 이지만, 설정에서는 16Mbit-C1 으로 해야 합니다.

또한 address 도 16Mbit-C1 에 맞춰서 해줘야 정상으로 동작합니다. (아래는 READ.me 파일 일부)


# BOOT MODE

## download

### Flash size 16Mbit-C1: 1024KB+1024KB

    boot_v1.2+.bin              0x00000

    user1.2048.new.5.bin        0x01000

    esp_init_data_default.bin   0x1fc000

    blank.bin                   0xfe000 & 0x1fe000


결과적으로 아래 파일들을 다음과 같이 address 에 맞춰 설정하면 됩니다.


- boot_v1.7.bin : 0x00000

- user1.2048.new.5.bin : 0x01000

- esp_init_data_default_v08.bin : 0x1fc000

- blank.bin : 0xfe000

- blank.bin : 0x1fe000



특별히 문제 없이 flashing 되었습니다.



putty 를 이용해 serial 접속 후, 기본적인 AT 명령어를 날려 봅니다. 문제 없군요.

최신 버전인 AT version:1.7.0.0 과 SDK:3.0.0 이 표시됩니다.



아쉽지만, 16Mbit(1024KB+1024KB) 로 설정됨을 확인할 수 있습니다.





7. Ai-Thinker 버전 firmware upgrade


Ai-Thinker 버전은 단순히 최신 버전을 다운로드 하여 flash memory 에 입히면 됩니다.


* ESP8266 latest SDK release

https://wiki.ai-thinker.com/esp8266/sdk

ai-thinker_esp8266_dout_32mbit-c1_v0.0.0.7s_20170804.rar


또한 address 는 0x00000 한개로 끝납니다.


- AiThinker_ESP8266_DOUT_32M-C1_0.0.0.7s_20170804.bin : 0x00000



32Mbit-C1 을 선택해도 특별히 문제 없습니다. (이게 정상)

Flashing 후에, putty 를 이용하여 Serial 로 연결해 봤습니다.



후훗. 32Mbit(1024KB+1024KB) 으로 잘 표시 되네요.



최신버전임을 보여 줍니다.

Ai-Thinker 는 특별히 Web Server 가 ESP8266 에서 돌아갑니다.


WiFi 에 접속 후, 할당받은 IP 로 접근해 보면, 아래와 같은 설정 UI 화면을 볼 수 있습니다.



한번 WiFi 를 통해 IP 를 받아 놓으면 Serial 통신을 하지 않더라도, web browser 를 통해서 간단한 설정을 할 수 있다는게 매력적입니다.


다만, internet 상에서 접근할 수 있으면, 그 만한 보안 대책도 마련되어야 하는데,

조그마한 firmware 에 보안 대책용 code 까지 집어 넣었을 수 없을 터이니, 사용하지 않는 편이 나은것 같습니다.





6. 주의점


ESP8266 은, reboot 이나, firmware update 후에는 꼭! serial 접속을 완전히 끊어서 재접속 하거나,

USB connection 마저도 끊었다가 다시 연결해야 합니다.


그렇지 않으면, 원활하게 동작 확인이 불가능할 때가 많습니다.


Reset 버튼 누르고 전원을 새롭게 인가했다 한들, serial connection 자체도 reset 하지 않으면,

AT command 가 먹히지 않아 제대로 동작하지 못한다고 생각할 수 있습니다.

이런 경우, 정상 동작 하지 않는다고 생각하여 다른 version 으로 flashing 해보는 등, 삽질이 길어질 수 있습니다.


Reset 할 때 마다, 매번 Serial connection 자체도 재연결 해야 하나 (엄청 귀찮음),

최대한 삽질을 적게 하고싶으면 Serial connection 도 같이 reset 하세요.


ESP8266 은 전원을 따로 확보해야 하고, Reset 할 때마다 connection 도 동시에 reset 해야 하는 등,

참 까다로운 디바이스인것 같습니다.





FIN


가지고 있는 ESP8266 의 Flash memory chip 까지 upgrade 해 봤으니,

이 다음으로는, 이 드넓은 메모리 영역을 활용해 보겠습니다.


아! 마지막으로, FV 버전이 flashing 할 때, 약 4배정도 더 빠릅니다.

부품은 비싼걸 구입하는 것이 정답이네요.




Update - 20200224


CO2 측정 결과 값을 ThingSpeak 에 올리기 위해, 다시금 가지고 있는 ESP-01 을 꺼냈습니다.

혹시나 해서 최신 firmware 를 확인해 봤더니, 새로운 버전 1.7.2 가 올라와 있네요.


ESP8266_NonOS_AT_Bin_V1.7.2_0.zip


위의 zip 파일에는 SDK 도 최신인 3.0.2 도 포함되어 있었습니다.





Update - 20200812


포름 알데히드 센서를 ESP-01 을 가지고 GPIO 를 확장하여 테스트 해보려다가 하나를 망가트렸습니다.


* Hardware | ZE08-CH2O Formaldehyde 센서 사용해보기

https://chocoball.tistory.com/entry/Hardware-ZE08-CH2O-Formaldehyde-sensor-using


예비를 위해 하나 추가 구매.


* 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



Flash 메모리는 8Mbit = 1MiB 용량입니다.



32Mbit = 4MiB 로 확장해 줍니다.



붙어있는 flash memory 를 분리해 내기 위해, 이번에는 납물을 많이 뭍히는 방법으로 제거 했습니다.

납물을 많이 뭍히면, 열을 조금 오랜동안 머금고 있으므로, 다른 한쪽에 인두를 가져다 댈 때까지 유지해주니 chip 이 쉽게 떨어집니다.



교체 완료.



32Mbit 으로 잘 인식합니다.



다만, 다른 캐패시터를 건드렸는지, 어디에선가 쇼트가 나는 듯 합니다. 전원에 연결하면, 전원쪽 regulator 가 엄청 뜨거워지네요.

SMD 납땜은 인두기로 작업하다 보면 옆의 부품을 건드리게 되니, SMD 납땜은 열풍기가 답인 듯 합니다.


And

Hardware | ESP-01 or ESP8266 사용기 - 3

|


이 글은 ESP8266 또는 ESP-1 을 가지고 노는 포스팅 이며, 이 글 전에 포스팅이 2개 있습니다.


* Hardware | ESP-01 or ESP8266 사용기 - 1

https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-1


* Hardware | ESP-01 or ESP8266 사용기 - 2

https://chocoball.tistory.com/entry/Hardware-ESP01-or-ESP8266-using-2


오늘은 ESP8266 / ESP-1 을 Serial 로 연결할 때, 사용되는 가장 간단한 AT command 에 대해 알아봅니다.

우선 정식 설명서를 첨부합니다.


4a-esp8266_at_instruction_set_en.pdf


참고로 putty 에서 명령어를 실행시키려면, Ctrl + J, M 을 타이핑 해야 ESP826 으로 command 를 날릴 수 있습니다.





1. AT


가장 간단한 command 이며, ready / 정상 상태인지를 알아보는 명령어 입니다.



OK 가 뜨면 OK 인겁니다.





2. AT+GMR


ESP8266 에 인스톨 되어 있는 firmware version 을 보여줍니다.



보통 Serial 접속하면, 가장 먼저 하게 되는 두 command 들입니다.






3. AT+CWMODE


ESP8266 을 어떤 모드로 사용할 것인지를 정할 수 있습니다.



보통 CWMODE:2 로 되어 있습니다.

이는 Access Point 로 활용하는 모드 입니다.


- 1: Network Device (client)

- 2: Access Point (AP)

- 3: Both


ESP8266 을 집에 있는 WiFi 에 접속시켜 인터넷에 연결하고 싶으면, MODE=1 이나 3 로 하면 됩니다.





4. AT+CWLAP


근처에 접속 가능한 WiFi access point 들을 보여 줍니다.






5. AT+JAP


접속하고 싶은 AP 의 정보 - 이름과 비번 을 입력하여 접속합니다.



정상적으로 WiFi에 접속 후, IP 를 받았다고 뜨네요.





6. AT+CIFSR


AP 접속 후, 어떤 IP 를 받았는지 확인하는 command 입니다.






7. AT+CIPSTATUS


최종적으로 AP 로 접속 후, 어떤 상태인지 확인해 봅니다.



- 2: The ESP8266 Station is connected to an AP and its IP is obtained.

- 3: The ESP8266 Station has created a TCP or UDP transmission.

- 4: The TCP or UDP transmission of ESP8266 Station is disconnected.

- 5: The ESP8266 Station does NOT connect to an AP.





8. AT+CIUPDATE


인터넷을 통해 firmware 를 업데이트 하는 명령어 입니다.

참고로 flash ram 크기가 16Mbit = 2MByte 이상 되어야 사용 가능합니다.



- 1: find the server.

- 2: connect to server.

- 3: get the software version.

- 4: start updating.


정상적으로 update 가 되면, 자동으로 reboot 을 하게 됩니다.



자동 reboot 하면서, 다른 command 로는 확인할 수 없는 "SPI Flash Size & Map" 정보를 확인할 수 있습니다.

위의 결과는 16Mbit (1024KB+1024KB) 버전으로 firmware update 한 것이고,

아래 결과는 32Mbit (1024KB+1024KB) 버전으로 firmware update 한 결과 입니다.






9. AT+RST


문자 그대로 reset command 입니다.

ESP8266 을 reboot 시킵니다.


Ai-Thinker 사의 32Mbit (512KB+5212KB) 버전으로 firmware update 후, reset 한 결과는 다음과 같습니다.






FIN


ESP8266 을 가지고 Serial 접속 후, 가장 많이 쓰이고 간단한 명령어들을 소개해 봤습니다.


사실 PDF 의 메뉴얼에 보면 더 많은 command 들이 준비되어 있지만,

pre-condition 이 맞아야 하거나 환경적으로 매칭이 되지 않아 ERROR 를 내는 command 들이 대다수 입니다.


위의 내용 감안하셔서 참고하시면 좋겠습니다.


And
prev | 1 | next