'Firmware'에 해당되는 글 12건

  1. 2021.02.02 Hardware | ESP-12 사용기 6
  2. 2020.04.25 Hardware | 샤오미 미밴드 4 한글 패치 2
  3. 2020.01.17 Hardware | bluetooth 모듈 SPP-C 사용해 보기
  4. 2020.01.05 Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 2
  5. 2019.08.14 Hardware | ESP-01 or ESP8266 사용기 - 5 2
  6. 2019.07.02 Hardware | ESP-01 or ESP8266 사용기 - 4
  7. 2019.07.01 Hardware | ESP-01 or ESP8266 사용기 - 3
  8. 2018.11.06 Hardware | ipTIME N704BCM 무선 공유기 2
  9. 2018.10.04 Hardware | ESP-01 or ESP8266 사용기 - 1 4
  10. 2018.08.12 Hardware | Safecast bGeigi nano firmware upgrade

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 | 샤오미 미밴드 4 한글 패치

|
미밴드 4 글로벌 버전을 한글 패치 해 봤습니다.


작년 발매 부터 구입하고 싶었으나, 사용 중인 미밴드 2/3 들이 고장나지 않아 구입을 미뤄 왔었습니다.

이번에 회사 동료가 Apple Watch 로 넘어가고 미밴드 4 를 분양해 줬습니다. (고마워요~!)


마침 가족이 사용 중인 미밴드 2의 화면 밝기가 어두워지는 현상도 나타나 (미밴드 2의 유명한 문제), 교체하게 되었습니다.

지금까지 미밴드 관련된 글은 아래를 참고해 주세요.


* Hardware | 샤오미 Mi Band 3 화면 보호 필름 구매기
    - https://chocoball.tistory.com/entry/Hardware-xiaomi-mi-band-3-screen-protect-film

* Hardware | 미밴드 3 스트랩 구매기
    - https://chocoball.tistory.com/entry/Hardware-mi-band-3-strap


* Hardware | Xiaomi Mi Band 3 구매기
    - https://chocoball.tistory.com/entry/Hardware-Xiaomi-Mi-Band-3-unboxing

* Life | Xiaomi Mi Band 2 고무밴드 교환기
    - https://chocoball.tistory.com/entry/Life-Xiaomi-Mi-Band-2-replacement

* Life | 샤오미 미밴드 1S 손목밴드 교환기
    - https://chocoball.tistory.com/entry/Life-Xiaomi-Mi-Band-1S-strap


누가보면 미밴드빠 라고 생각하겠군요. 네 맞아요.




1. 첫 대면


꼭 필요한 구성품으로 이루어진 미밴드 4를 분양 받았습니다.

이번에 달라진 점은 "" 충천 단자가 바뀌었군요. 이전 버전까지는 옆으로 삽입의 방식이었는데, 미밴드 4 는 밑으로 끼우는 방식입니다.


스트랩도 미밴드 3와 미묘하게 크기가 다릅니다. 호환될 수 있는 부분은 호환되게 만들면 좋을 터인데요.

혹시 나올 올해 새로운 미밴드도, 기존 충전기나 스트랩을 사용할 수 없다는 것에 500원 겁니다.



완전 방전이 되어 있었지만, 충전은 문제 없이 되었습니다. 미밴드에서 가장 큰 차이인, 0.95인치의 Amoled 컬러 화면이 확 눈에 들어 오네요.

사용해본 "미밴드 1S > 미밴드 2 > 미밴드 3 > 미밴드 4" 까지 오면서, 가장 큰 변화로 느껴집니다.


미밴드는 완전 방전이 되면, 기존 기기의 정보가 날라가기 때문에 새로운 기기에 붙이기엔 좋은 상태인 듯 합니다.

적어도 미밴드 3는 그랬네요.



옆에는 제품 바코드가 표시되어 있고, 맥박센서가 두 개가 보입니다.





2. 기존 기기 연결 해제 > 기기 연결


메뉴 구성상 미밴드 2를 사용하면서 미밴드 4를 추가하여 사용할 수 있어 보입니다만, 밝기도 어두워진 미밴드 2와는 작별하기로 합니다.

그간 고마웠어~.



열결 해제 후, "기기 추가" 를 눌러 추가해 줍니다.



완전 방전된 상태에서 충전했더니만, 자연스럽게 미밴드 4를 인식합니다. Paring 해줍니다.



Amoled 컬러를 확인해 볼 수 있는 배경화면을 바꿔 봅니다. 중국 제품 답게 중국스러운 배경화면이 많이 보입니다.

Firmware 나 Font 용량이 늘어났을 터인데, 배경화면이 150KB 이상인 것도 커버하니, 내부 저장공간은 꽤 커진 듯 하네요.



심봉사 눈뜬 것 처럼, 세상이 풀컬러로 바뀌었습니다.



그러나 역시... 한글이 깨지는군요.



동료가 구매한 버전은 "글로벌 버전" 인 듯 합니다. 처음부터 영어만 나왔으니까.


아래부터는 본격적으로 한글 패치에 관한 내용입니다.

여러 과정을 거쳐야 해서, 진행하면서 꽤 혼란스러웠습니다. 우선 큰 줄기를 아래처럼 정리해 봤습니다.


* 최신 firmware 로 update

* 최신 firmware 에 맞는 Resource 파일과 Font 파일을 다운로드

* 다운 받은 Resource / Font 파일로 update

* AmazTools 에서 "Simplified Chinese" 로 변경


위의 과정이 큰 줄기 이고, 각 항목을 진행하기 위해, 자잘한 설정 변경들은 각 항목에서 설명하겠습니다.




3. 최신 firmware 로 update


우선 최신 firmware 로 update 해줘야 하기 때문에, iOS 의 언어 설정을 "English" 로 변경합니다.

Mi Fit 한글 환경에서는 최신 firmware 가 적용되기 까지 시간이 걸린다고 합니다.

이왕이면 최신 버전을 가지고 진행하는 것이 좋으니, Mi Fit 최신버전 > Mi Band 4 최신 firmware 가 적용될 수 있도록 하기 위함입니다.



iOS 의 언어를 English 로 변경 후, Mi Fit 을 실행시키니 알아서 최신 버전으로 firmware 를 업데이트 합니다.

혹시나 남아있는 업데이트가 없는지, "Check for updates" 를 눌러 봅니다. 현재의 최신은 1.0.9.42 네요. 이 버전 넘버를 잘 기억해야 합니다.



열씸히 Updating firmware... 를 하고 있습니다.



이제 최신 firmware 로 올렸으니, iOS 에서 다시 한글로 언어를 되돌려 놓습니다.




4. Resource / Font 파일 다운로드


최신 firmware 에 맞는 한글화된 Resource / Font 파일을 다운로드 해야 합니다.

이와 관련 가장 유명한 사이트인 아래 카페이 등록하고 다운로드 하였습니다.


* 샤오미스토리 - 해외직구 커뮤니티 [샤오미, 홍미, 미지아]
    - https://cafe.naver.com/xst


이 카페에서 활동하시는 하얀종이님의 아래 글을 확인해 봅니다.


* 미밴드4 펌웨어 리소스 적합성 확인표 (2020. 03. 31기준)

- https://cafe.naver.com/xst/417081



최신 Mi Band 4 firmware / Mi Fit 버전 등이 조성 되었는지 확인합니다.

자기가 가지고 있는 버전과 다른 부분이 있으면 표를 보고 맞추면 됩니다.


이제 하얀종이 님이 배포하신 필요한 Resource / Font 파일을 다운로드 받습니다.


* 미밴드4 용 1.0.9.42 펌웨어와, 리소스 그리고 폰트파일

- https://cafe.naver.com/xst/417077



저는 글로벌 버전이므로, 아래 두 개의 파일을 받았습니다.


cinco_v92.kor.res

MB4_Font_KJC_R6.ft


위의 두 파일은 firmware 1.0.9.42 버전 기준 Resource / Font 파일 입니다.

향후 버전이 바뀌면, Mi Fit / firmware / Resource / Font 간에 맞는 짝들을 찾아서 다시금 환경 조성 + 파일 다운로드가 필요하겠습니다.


저는 아이폰의 iOS 이므로, 인터넷을 통해서 아이폰에 파일을 다운로드 하면, 아래 아이콘처럼 생긴 어플에서 확인 가능합니다.





5. 다운로드 한 Resource / Font 파일로 update


위의 두 파일을 Mi Band 4 에 밀어 넣어줘야 합니다. 그러기 위해서는 다음 과정이 필요합니다.


Mi Fit 에서 "검색 가능" 기능을 On.

AmazTools 다운로드.



결국은 AmazTools 에서 작업할 것인데, 이 어플이 Mi Band 4 에 접근하기 위해서는 Mi Fit 에서 "검색 가능" 기능을 켜줘야 합니다.


AmazTools 에서 Resource / Font files 전송 > Mi Fit > Mi Band 4


AmazTools 에서 연결해제한 Mi Band 2 는 무시하고, 새로운 Mi Band 4를 선택해 줍니다.



미밴드 4 에서도 AmazTools 가 연결되었다고 뜹니다.



AmazTools 에서 "Install Custom FIle" 을 선택하면, 위에서 받은 파일이 보입니다.



우선 Resource 파일부터 인스톨 합니다. 그리고 Font 파일도 동일하게 인스톨 해줍니다.

AmazTools > Install Custom File > cinoco_v92.kor (Resource)
AmazTools > Install Custom File > MB4_Font_KJC_R6 (Font)


중간에 통신이 끊겨서 실패할 경우도 있지만, 당황하지 말고 성공할 때 까지 인스톨 하면 됩니다.




6. Simplified Chinese


여기까지 오면 이제 다 끝난거에요. 다만 마무리가 안되었어요.
이제 한글 폰트가 인스톨 되었으니, 카톡이나 메시지는 한글이 잘 보일껍니다. 다만, 메뉴가 여전히 영어로 되어 있겠죠.

그래서 AmazTools 에서 "표시언어" 를 변경해 줘야, 인스톨 했던 Resource 파일이 적용됩니다.

AmazTools > Watch Language > Simplified Chinese



아니 왜 중국어야? 라고 할 수 있겠지만, Mi Band 에서는 "중국어 (한국어, 일본어), 아니면 영어" 라는 양대 구조여서 그런 것 같아요.

Korean 이나 English 를 선택하면 변화가 일어나지 않습니다.



짜잔~~~!!! 메뉴와 메시지 모두 한글로 변경되었습니다.

삽질을 많이 해서 한 4시간 걸렸네요.




7. 참고


중간에 삽질하다가 알게된 것인데, iOS 를 중국어로 선택하면, Mi Fit 에서 중국어 Resource / Font 를 알아서 설치해 줍니다.



지금까지 한 모든 작업들이 전혀 필요 없어요. 자동으로 됩니다. 아놔...



한글도 이렇게 해주면 안되겠니?


And

Hardware | bluetooth 모듈 SPP-C 사용해 보기

|

Bluetooth 모듈에 꽂혀 꽃혀, 한꺼번에 구입한 모듈들의 마지막 모듈인 SPP-C 확인 포스트 입니다.

지금까지 확인해 본 Bluetooth 모듀에 대해서는 아래 글을 참고해 보세요.


* Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 2

- https://chocoball.tistory.com/entry/Hardware-bluetooth-HC06-HC05-2


* Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 1

https://chocoball.tistory.com/entry/Hardware-bluetooth-HC06-HC05-1




1. SPP-C


이름도 생소한 SPP-C Bluetooth 모듈입니다.

구입처는 아래 링크에서 구입. 일반 모듈 치고는 3천원 정도로 고가네요.


* SPP-C Bluetooth serial pass-through module wireless serial communication from machine Wireless SPPC Replace HC-05 HC-06

- https://www.aliexpress.com/item/32755550889.html



사용된 main chip 은 Beken 이라는 중국 회사 제품 입니다.


* BK3231

BKDatasheet.pdf

SPP-CA HardwareGuide_chn.pdfSPP.pdf

SPP.pdf


외형은 다음과 같이 생겼어요.



사진에서 볼 수 있 듯, 사용된 breakout board 는 HC-05 / 06 과 동일한 ZS-040 이 사용 되었습니다.




2. 간단 구동


FTDI 로 연결하여 Arduino IDE 의 Serial Monitor 를 통해, AT command 로 상태 확인을 해보겠습니다.



이렇게 계속 LED 가 깜빡이면, AT command mode 라고 하네요.

Paring 이 되면, LED 가 계속 켜져 있습니다.



아래는 간단한 AT command 의 결과 입니다.

HC-05 / 06 과 다른 점은, AT 명령어 끝에 물음표 ( ? ) 를 넣지 않습니다.



AT

ready 상태 확인


AT+RESET

상태 reset


AT+VERSION

firmware version 확인


AT+LADDR

할당된 주소 표시


AT+NAME

기기 확인용 이름 확인하거나 설정


AT+ROLE

Master / Slave 확인하거나 설정


AT+PIN

Paring 시 사용 될 비밀번호 확인하거나 설정


AT+BAUD

Paring 시 사용 될 baud rate 확인하거나 설정


AT+HELP

특이하게 HELP 명령어를 지원합니다. 어떤 명령어들이 준비되어 있는지 알 수 있으니 좋네요.





3. Windows 10 과 연동


HC-05 / 06 에서 했던 OS 와 연동시켜 봅니다.



Windows 10 에서 기기를 찾을 수 있습니다.



Paring 을 위한 password 를 넣습니다. 아까 AT command 로 확인한 "1234" 겠죠?



일반 Bluetooth 기기처럼 쉽게 연결이 됩니다. 장치관리자에서 기기 등록이 완료됩니다.



연결된 Bluetooth 가, 그 모듈이 맞는지 주소도 확인해 봅니다.



Windows 에서는 COM11 로 연결되었군요.



Putty 를 이용해 접근해 봅니다. 초기 Speed Baud rate 는 9600 입니다.



Serial Monitor (FTDI 연결) 와 Putty (Serial) 접속 - 각각 다른 접근을 통해, paring 통신이 가능한지 확인해 봅니다.



서로 연결이 문제없이 되고, 문자 전송으로 통신 연결을 확인 할 수 있습니다.

동영상 첨부합니다.



HC-05/06 과 다른 점은, pairing 연결/해제에 대한 상태 및 상대 주소도 보여줍니다.


Paring 성공

+CONNECTING<<

CONNECTED


Paring 해제

DISC:SUCCESS

+READY

+PAIRABLE





4. Master / Slave 연동 준비


HC-05/06 에서 해 봤던, Master/Slave 연동을 시험해 보기로 합니다.



우선 HC-05/06 에서 통신 속도를 38400 baud rate 로 맞춰서 진행했으니, 동일하게 설정합니다.

AT 명령어는, "AT+BAUD6" 입니다.



Serial Monitor 에서 명령어 실행 후, baud rate 를 바꿔 확인하면, 정상적으로 설정 된 것을 확인.



SPP-C 를 Slave 로 이용시, 가지고 있는 주소를 알아야 Master 에서 직접 연결이 가능하므로, 주소를 따 놓습니다.

그 주소를 HC-05 Master 에 등록해 줍니다.




5. Master / Slave 연동 연결


연결은 한번 해봤던 회로를 그대로 사용.


   SPP-C  | Arduino Nano
-------------------------
    TXD   |      D10
    RXD   |      D11
-------------------------
          |     POWER
-------------------------
    VCC   |      3.3V
    GND   |      GND
-------------------------
  SWITCH  |      D2
 LED+220Ω |      D8
-------------------------


회로도도 동일.



아래와 같이 배선. 얼핏 보기엔 복잡하지만, LED 와 스위치, 그리고 TX/RX 를 연결해 주면 됩니다.



다른 분들은 쉽게 하는것 같은데, arduino 에서 전원을 끌어다 쓰면 정상동작 하지 않았습니다.

외부전원 - MB102 를 사용해야 정상 동작했습니다.



동작 확인 동영상 입니다.

Arduino 에 들어간 소스는 tactile switch 가 눌리면 Master / Slave 에 신호를 보내고,

상대 Slave / Master 에서 신호를 받으면 LED 를 high 로 만드는 소스 입니다.



소스는 이전 포스트인 아래 글에 올려 놨습니다.


    * Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 2

- https://chocoball.tistory.com/entry/Hardware-bluetooth-HC06-HC05-2




5. Master / Slave 모드 변경


검색 해보면, SPP-C 에 사용된 BK3231 는 Slave 뿐만 아니라, Master 로도 사용이 가능합니다.

"AT+ROLE1" 명령어로 Master 로 변경되어야 하나, command 결과가 OK 라 할지라도 모드 변경이 되지 않습니다.



메뉴얼을 찾아 봤습니다.



하드웨어적으로 Slave only 가 될 수도 있다고 하네요.

좀더 찾아 봤습니다. BC04-A 이지만, BC04-B 메뉴얼에 보면, PIO(4)PIO(5) 를 이용해서 모드 변경이 가능하다 합니다.



PIO(4) 를 3.3V 에 연결하면 software 변경 모드로 온다 합니다. 이렇게 하면 AT command 로 조정 가능해 보입니다.

그렇게 하면 PIO(5) 는 건들지 않아도 된다고 하네요.



27번핀이 PIO(4) 인 것이군요.


BC04-B Technical specification.pdf

BC04-B_AT_Command.pdf

BK3231_ARM968E-S.pdf

BLK-MD-BC04-B_AT-COMMANDS.pdf

DS_IM130614001_Serial_Port_BLE_Module_Master_Slave_HM-10.pdf


단, 좀 확신을 가질 수 없는게, 명확히 BC04-A 레이아웃에도 적용이 되는지 입니다.

여러 사진들을 찾아 봤으나, BK3231 이 올라간 그림에서 PIO(4) 는 여기닷! 이라고 찍혀 있는 사진이 없었습니다.



이렇게 보면, Pin 구성이 많이 다른것 같기도 하고...





6. 접점 변경


일단 BC04-B 기준으로 접점 조정을 해보기로 합니다.



배를 갈라주고...



저 노란색 화살표의 제일 오른쪽이 PIO(4) 인데, 일단 납땜이 되어 있습니다.

Slave 고정되어 있는 현재의 상태를 변경해줘야 하니, 땜 접점을 없애 주기로 합니다.



열풍기가 있으면 한방이겠지만... ㅠ.ㅠ

토스트기에 넣고 구우면서 핀셋으로 흔들어 봅니다. 효과 없군요.



RX/TX 부분이 가장 멀리 떨어져 있으니, 여기서부터 납 제거 및 보드를 살짝씩 들어 올려서 분리 시도 합니다.



잘 떨어졌는데, 위 사진의 화살표 보이는 것 처럼 동판도 들려버렸습니다. 아...



캡톤 테이프 성애자인 저는, 막아야 할 27 pin 및 혹시라도 접점이 생길것 같은 부분을 커버해 줍니다.



27 pin 을 방어한 체로, 다시 납땜.



그리고 FTDI 에 연결.

반응이 없습니다..............


FTDI 연결 모듈에 들오지 않은 불이 하나 더 들어 옵니다. 어딘가 쇼트가 되었거나 기판 (동판) 이 망가진 듯.

27 pin 을 다시 납땜 해서 접점을 만들어 줘도 동일 현상.


확실하게 망가졌네요. ㅠㅠ


SPP-C 를 Master 화 시키는 것은 실패했습니다.
오기가 발동하여, 동일한거 하나 더 구입해서 깔끔하게 다시 작업해 볼까 했습니다만,
다른 할것도 많고, 실제 구현때는 더 좋은 모듈을 사용할 것이기에 여기까지만 해보기로 타협합니다.


And

Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 2

|

일전에 구입해 놓은 bluetooth 모듈인, HC-06, HC-05, SPP-C 사용기 2탄 입니다.

첫번째 포스트는 아래 링크를 참고해 보세요.


* Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 1

- https://chocoball.tistory.com/entry/Hardware-bluetooth-HC06-HC05-1


오늘은 master/slave 두 가지 모드를 지원하는 HC-05 에 대해 알아봅니다.




1. Firmware


Wi-Fi 모듈처럼 자체 firmware 를 가지고 있습니다.

Firmware 를 최신버전으로 update 하고 싶었으나, 인터넷에서 찾기는 어렵네요.


HC-05 는 Bluetooth 계열에서는 고가면서 다기능인 RN42 로 업그레이드가 가능하다고 하지만,

저의 PCB 는 불가능한 제품임을 알게 되었습니다.


* Fake HC-05/HC-06 modules with BlueCore3 chips relabeled as BC417

https://github.com/lorf/csr-spi-ftdi/issues/25



언뜻 튜닝 요소가 많아 보이지만, 요즘 나오는 제품들은 튜닝이 불가능 한것 같습니다.




2. USB 시리얼 연결


궂이 arduino 를 통해서 연결할 필요는 없고, 직접 serial 통신으로 연결합니다.


  HC-05 | FTDI
----------------
   RX   |  TX
   TX   |  RX
----------------
        | POWER
----------------
   GND  |  GND
   VCC  |  3.3V
----------------


Arduino 를 거치지 않더라도 Arduino IDE 를 사용할 수 있습니다.

FTDI 가 연결 된 Port 만 정확하게 선택하면 Serial Monitor 를 이용하여 AT 명령어를 확인해 볼 수 있습니다.



HC-05 가 사용하는 전류량이 많은지라, arduino 나 FTDI 에서 전력을 공급하면 불안정한 모습을 보입니다.

Bluetooth 모듈도 Wi-Fi 모듈과 동일하게, 외부 전원을 이용하는 편이 좋습니다.



실제 연결은 다음과 같습니다.





3. AT mode


HC-05 가 동작하는 mode 는 두 가지가 있습니다. 하나는 보통 mode 이고, 다른 하나는 AT mode.

Normal mode 는 LED 깜빡임이 빠르고, AT mode 는 깜빡임이 느려서 그 구분을 할 수 있습니다.


참고로 설정을 변경할 수 있는 모드가 AT mode 이고, 기본 모드가 아닙니다.


* Normal mode



* AT mode



AT mode 로 들어가는 방법은 두 가지가 있습니다.



EN pin 을 high 로 (전원 연결)

EN pin 에 대해 전원을 연결한 상태로 키면 AT mode 로 진입하게 됩니다.

어떤 제품은 그냥 켰다가, 한번만이라도 EN 에 전원을 인가해 주면 AT mode 로 접근한다 하는데, 제꺼는 처음부터 high 로 놓지 않으면 AT mode 로 진입할 수 없었습니다.


Button 를 누른 상태에서 켜기

위의 화살표 버튼을 누른 상태에서 전원을 인가하면, AT mode 로 동작합니다.

그 뒤에 손을 놔도 그대로 AT mode 를 유지합니다.





4. Command list


HC-06 과 비슷하지만 다른 부분들도 있습니다.

주로 사용하는 command 를 가지고 간단한 설명을 남겨 놓습니다.



AT+VERSION?

firmware 버전에 대해 확인합니다.

비교적 요즈음 구매해서 그런지 "VERSION:3.0-20170601" 라고 뜨네요.


AT+STATE?

커멘드 입력시의 상태를 표시해 줍니다.

"INITIALIZED" ---- initialized status
"READY" ---- ready status
"PAIRABLE" ---- pairable status
"PAIRED" ---- paired status
"INQUIRING" ---- inquiring status 
"CONNECTING" ---- connecting status
"CONNECTED" ---- connected status
"DISCONNECTED" ---- disconnected status
"NUKNOW" ---- unknown status


AT+ROLE?

Master 인지 Slave 인지 확인할 수 있습니다. Master 이면 1, Slave 면 0 입니다.


AT+ADDR?

주소 정보를 반환해 줍니다.


AT+NAME?

기기 이름을 설정하거나 알려 줍니다.


AT+PSWD?

비밀번호를 확인할 수 있습니다.


AT+UART?

Serial connect 시에 사용될 속도를 설정/확인 할 수 있습니다.



AT+CMODE?

지정된 기기와 연결 시킬 것인지, 여러 기기와 통신하게 할 지를 정할 수 있습니다.

0 이면, 지정된 기기와의 연결만 가능하고, 1 이면 다른 여러 기기와 연결시킬 수 있는 mode 입니다.


AT+BIND?

연결할 상대 기기 주소 지정.


AT+POLAR?

PIO8 / PIO9 연결 상태에 따른 LED 표시 상태를 정의한다 합니다. 무슨 이야기 인지 하나도 모르겠습니다.


AT+IPSCAN?

IP 스캔할 인터벌과 타이밍을 설정합니다.


AT+SENM?

Safe / Encryption mode 라고 합니다.


AT+ADCN?

인증을 통해 pairing 된 기기의 수를 알려 줍니다.


AT+MRAD?

가장 최근에 인증을 통해 연결된 기기를 보여줍니다.


AT+MPIO?

Multiple port output 이라고 합니다. 무슨 소리인지 모르겠습니다.


AT+CLASS?

디바이스 타이프를 보여 줍니다.


AT+IAC?

Access code 에 GIAC type (General Inquire Access Code : default 는 0x9e8b33) 을 사용.


AT+INQM?

RSSI 모드로 몇 개의 device를 최장 몇 초동안 받아들일지의 설정.


잘 쓰이지 않을 보안과 deep한 설정은 잘 모르겠네요. 기준이 되는 문서를 첨부합니다.

추가로, firmware version 에 따라 명령어가 조금씩 다를 수 있습니다.


HC-0305_serial_module_AT_commamd_set_201104_revised.pdf




5. Slave 모드로 Windows 10 과 연결해 보기


HC-06 을 가지고 놀 때도 했지만, HC-05 이니 한번 더 동일한 방법으로 Windows 10 와 연결 해 봅니다.



인식 후, 연결을 위해 암호를 입력합니다.



특별한 문제 없이 연결 되었습니다.



장치 관리자에서 확인해 보면, Bluetooth 장치에 정상적으로 등록 되었네요.



Putty 로 연결해 보기 위해 COM port 를 확인해 봅니다.



Putty 의 Serial 로 연결해 봅니다.



Putty 에서 키보드로 입력하면, Putty 상에서는 보이지 않지만, Arduino IDE 의 Serial Monitor 에서는 전송된 글씨가 보입니다.



Slave 모드로 Windows 10 에 연결에 문제가 없네요.




6. Master 모드로 Slave 연동 - firmware 설정


마지막으로, HC-05 (Master) 와 HC-06 (Slave) 를 연결하여 통신이 가능한지 확인해 봤습니다.

참고한 사이트와 너tube 정보는 다음과 같아요.


* How to Configure HC-05 Bluetooth Module As Master and Slave Via AT Command

https://www.instructables.com/id/How-to-Configure-HC-05-Bluetooth-Module-As-Master-/


* Communication between Master HC-05 and Slave HC-05
    - https://www.youtube.com/watch?v=mY803K-5WxE



구성품은 arduino / 스위치 / LED 각각 두 개씩 필요하고, Master/Slave 가 될, HC-05 / HC-06 이 필요합니다.


HC-06 Slave 설정

우선 HC-06 Slave 에서 다음과 같이 설정합니다.


- AT+ROLE=0 : Slave 설정

- AT+ADDR? : Master 에 등록하기 위해 address 를 알아 냄

- AT+UART=38400,0,0 : Serial 통신 속도를 38400 으로 맞춤



통신속도를 맞추면, Serial Monitor 의 속도도 새로운 값 - 38400 에 맟줘 줘야 확인이 가능 합니다.



HC-05 Master 설정

그 다음으로, HC-05 Master 는 다음과 같이 설정합니다.


- AT+ROLE=1 : Master 설정

- AT+CMODE=1 : pairing 할 기기를 검색하지 않고, 지정하여 등록. 등록은 아래의 BIND 명령어로 설정.

- AT+BIND=98D3,41,F93341 : 패어링 할 Slave 기기를 지정. (위에서 Slave 의 ADDR 로 확인한 주소 정보)

- AT+UART=38400,0,0 : Serial 통신 속도를 38400 으로 맞춤



최종적으로 BIND 정보를 확인하여, Slave 어드레스가 잘 등록되어 있으면 OK 입니다.





6. Master 모드로 Slave 연동 - arduino 와 연결


Pin 연결은 다음과 같습니다.

HC-05 와 HC-06 의 연결은 Master/Slave 로 기능은 다르나, 연결 방법은 동일합니다.


 HC-05/06 | Arduino Nano
-------------------------
    TXD   |      D10
    RXD   |      D11
-------------------------
          |     POWER
-------------------------
    VCC   |      3.3V
    GND   |      GND
-------------------------
  SWITCH  |      D2
 LED+220Ω|      D8
-------------------------


회로도를 Fritzing 으로 그려 봤습니다.

최근에 업데이트 된 0.9.4 로 그렸는데, 그림 export 에 버그가 있네요. (점프선에 점선)



실제 구현한 사진 입니다.



주의할 점으로는, Wi-Fi 모듈 연결 시험 했을때와 동일하게, Bluetooth 모듈도 추가 전원으로 연결해야 원활한 확인이 가능 합니다.

Arduino 로부터 빼서 사용하는 전원은 충분치 못하여 불안정한 동작을 보입니다.



위의 사진 오른쪽 밑에 있는 것이 추가 전원입니다.

Arduino 에 써넣을 sketch 는 다음과 같습니다.


Master Source


//this is master

#include "SoftwareSerial.h"

SoftwareSerial BTSerial(10, 11);
int state = 0;
const int ledPin = 8;
const int buttonPin = 2;
int buttonState = 1;

void setup() {
  BTSerial.begin(38400);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  pinMode(buttonPin, INPUT);
  digitalWrite(buttonPin, HIGH);
}

void loop() {
 if(BTSerial.available() > 0) { 
    // Checks whether data is comming from the serial port
    state = BTSerial.read(); // Reads the data from the serial port
 }
 
 // Controlling the LED
 buttonState = digitalRead(buttonPin);
 
 if (buttonState == LOW) {
  BTSerial.write('1');
 } else {
  BTSerial.write('0');
 }
 
 if (state == '1') {
  digitalWrite(ledPin, HIGH); // LED ON
  state = 0;
 } else if (state == '0') {
  digitalWrite(ledPin, LOW); // LED ON
  state = 0;
 }
}


Slave Source


//this is slave

#include "SoftwareSerial.h"

SoftwareSerial BTSerial(10, 11);
int state = 0;
const int led = 8;
const int button = 2;
int buttonstate = 1;

void setup() {
  BTSerial.begin(38400);
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  pinMode(button, INPUT);
  digitalWrite(button, HIGH);
}

void loop() {
 if(BTSerial.available() > 0) { 
    // Checks whether data is comming from the serial port
    state = BTSerial.read(); // Reads the data from the serial port
 }
 
 // Reading the button
 buttonstate = digitalRead(button);
 
 if (buttonstate == LOW) {
   BTSerial.write('1'); // Sends '1' to the master to turn on LED
 } else {
   BTSerial.write('0');
 }  

  if (state == '1') {
  digitalWrite(led, HIGH); // LED ON
  state = 0;
 } else if (state == '0') {
  digitalWrite(led, LOW); // LED ON
  state = 0;
 }
}


여기까지 오면 모든 준비는 다 되었습니다.




7. Master 모드로 Slave 연동 - 확인


HC-05 (Master) 와 HC-06 (Slave) 끼리의 연동 통신을 위해 서로 LED 가 깜빡거리다 연결 됩니다.


Arduino 소스 및 회로에서 구성한 대로,

Master 의 스위치를 누르면, Slave 쪽의 LED 가 켜지고, Slave 의 스위치를 누르면, Master 쪽의 LED 가 점등하는 것을 알 수 있습니다.



문제 없이 서로 통신하고 있다는 것을 LED 점등으로 확인 할 수 있습니다.




8. SPP-C 연동


다음 편에서는 SPP-C 확인을 해보도록 하겠습니다.




And

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

|

이번 글을 읽기에 앞서, ESP8266 에 관하여 몇 차례에 걸쳐 다뤄 왔습니다.

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


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

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



또한, 이 포스트에서 가장 많이 참고한 사이트는 여기 입니다.


* Using ESP8266 SPIFFS

https://www.instructables.com/id/Using-ESP8266-SPIFFS/





1. SPIFFS


SPI Flash File System 의 약자로서,

ESP8266 등에 장착된 Flash memory chip 의 여유공간에 파일을 쓰기/읽기/삭제 등을 할 수 있게 해주는 기능입니다.


* ESP8266 Arduino Core

https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html


|--------------|-------|---------------|--|--|--|--|--|
^              ^       ^               ^     ^
Sketch    OTA update   File system   EEPROM  WiFi config (SDK)


단, 일판 file system 처럼 directory 구조처럼 하위 폴더 개념이 없고, 1차원적으로 모든 파일을 한곳에 넣어서 사용해야 합니다.



궁극적인 목적으로는,

- ESP8266 등에 장착된 controller 가, 시간과 로드가 많이 걸리는 외부 저장장치에 접근하지 않고, 내부적으로 처리하기 위한 방법

- 파일이 자주 변하지 않으며, 주로 읽혀지는 파일

- 여타 파일 시스템 처럼 bad block 등의 검사나, 마킹을 할 수 없음

- HTML, CSS, JS 파일들을 올려놓고 ESP8266 에서 web server 를 돌릴 수 있슴





2. Arduino IDE 에서 환경 설정


파일을 올리는 툴은 Arduino IDE 에서 하게 되므로, SPIFFS 를 사용할 수 있도록 Arduino IDE 를 설정해야 합니다.

우선 Arduino IDE 에서 SPIFFS 메뉴를 활성화 시키기 위해 아래 순서대로 진행합니다.



A. Plug-In 인스톨

아래 사이트에서 최신 파일을 받습니다.


* esp8266/arduino-esp8266fs-plugin

https://github.com/esp8266/arduino-esp8266fs-plugin/


* Latest version of ESP8266 Arduino

https://github.com/esp8266/arduino-esp8266fs-plugin/releases/tag/0.4.0

ESP8266FS-0.4.0.zip


혹시 모르니, 필요한 파일을 받아서 올렸습니다.



B. 파일을 설치

Arduino IDE 에서 설정된 sketch 폴더에 tools 라는 directory 를 만들어 서 그 안에 위의 파일을 해동하여 넣습니다.



sketch 폴더는 환경마다 다르므로, 현재 쓰고 있는 환경에서 sketch 폴더가 어디인지는 Preference 에서 확인 가능합니다.




C. 설치 완료 확인

설치 후, Arduino IDE 를 재시작 하여 Tools 메뉴에 가 보면,

아래 Before/After 처럼, 새롭게 "ESP8266 Sketch Data Upload" 매뉴가 활성화 된 것을 확인 할 수 있습니다.


Before



After






3. ESP8266 의 용량 확인


파일을 업로드 하기 전, ESP8266 에 달려 있는 Flash memory 의 용량을 확인해 봅니다.

사실 대략 알고 있다면 이 부분은 건너 뛰어도 됩니다.


우선 ESP8266 보드를 Arduino IDE 에서 직접 access 할 수 있도록, 보드를 등록해 봅니다.

보드 등록을 위한 관련 파일을 다운로드 받아 설치하려면, 아래 설정처럼 Preference 에 해당 정보가 등록되어 있어야 합니다.


File > Preference


https://arduino.esp8266.com/stable/package_esp8266com_index.json


아래처럼 등록하면 됩니다.

예전에 Digispark 를 DIY 한 흔적이 있네요. 다른 URL이 이미 있다면, 다음 줄에 등록하면 됩니다.



그럼, 아래 메뉴에서 ESP8266 보드 관련 파일을 설치할 수 있게 됩니다.


Tools > Board > Boards Manager



Boards Manager 에서 esp8266 으로 검색하여, 설치되어 있지 않으면 설치해 줍니다.



여기까지 왔다면, Board 메뉴에서 Generic ESP8266 Module 을 선택할 수 있게 됩니다.



특별히 할 설정은 없슴니다만, SPIFFS 를 2M 사용한다고 설정 했습니다.

다른 설정은 잘 모르겠네요.



이제 Flash memory 확인용 sketch 를 선택합니다.


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


!!주의!!

ESP8266 의 Flash memory 에 writing 하기 위해서는 아래 순서에 맞게 해야 합니다.


1. RST 의 스위치를 누른다.

2. FLASH 의 스위치를 누른다.

3. RST 의 스위치에서 손을 뗀다.

4. FLASH 의 스위치에서 손을 뗀다.

5. Flash program 에서 "시작" 을 누른다.



위의 구성처럼, 꼭 외부 전원으로 ESP8266 을 구동시키는 것과,

PC 와 Serial 연결 위한 FTDI 나 CP2102 의 GND 를, 외부전원의 GND 와 서로 연결해 주는 것을 빼먹으면 안됩니다. (동기)


FTDI 는 Serial 통신만을 위한 것이지, ESP8266 의 전원까지 공급하게 하면, 매우 높은 확률로 실패합니다.



컴파일된 sketch 가 잘 밀어들어가고 있고요.



문제 없이 끝났습니다.

Hard resetting via RTS pin... 이라고 나오고, 그 뒤 반응에 대한 내용은 나오지 않습니다.



Serial Monitor 로 확인해 보면, 올라간 sketch 가 잘 구동되는 것을 확인할 수 있습니다.

원래 1MB 였던 Flash memory 가 4MB 로 변경된 것이 확인 됩니다.





4. SPIFFS upload


이제 아까 Plug-in 을 이용해 구현했던 "ESP8266 Sketch Data Upload" 기능을 이용하여 실재로 data upload 를 해 봅니다.

sketch 폴더에 "data" 폴더를 만들고, 거기에 파일을 놔두면, 그 파일이 자동으로 upload 된다고 합니다.



으잉? 빈 깡통이라고 그러네요?

이미 위에서 알고 있는 sketch folder 와 또 다른 곳을 이야기 하는 듯 합니다.

IDE 메뉴의 "Show Sketch Folder" 를 이용하여 어디를 이야기 하는지 확인해 봅니다.


Sketch > Show Sketch Folder



Sketch 폴더가 여기였어? 이 SPIFFS 업로드용 sketch 폴더는 Temp 폴더로 잡혀있나 보네요.

data 폴더를 만들어 주고 업로드 하고 싶은 파일을 심어 놓습니다.



드디어 이 메뉴를 눌러 봅니다.



"SPIFFS Uploading Image..." 라고 뜨면서 막 뭐를 밀어 넣는 것 같습니다.



"SPIFFS Image Uploaded" 라고 뜨면서, "Hash of data verification" 까지 실행하고 끝납니다.

텍스트 파일이라서 그런지 data 압축도 자동으로 되는 것 같습니다.



Data upload 영역과 기존 firmware 영역이 잘 분리되어 있는지, 전원을 리셋하여 command 를 날려 봅니다.

기존 Wi-Fi firmware 영역은 완벽히 구분되어 잘 보존되어 있네요.



아래 그림에서 보이듯, SPIFFS 가 사용하는 File System 영역과 Program 영역이 분리되어 있는지 확인해 본 것입니다.





5. Upload 된 파일 확인


그럼 upload 되어 있는 파일이 진짜 내가 올린 파일인지 확인해 볼까요?

이 글, 맨 처음에 참조한 사이트에서 text 파일 확인용 소스가 있습니다. 그대로 활용해 봅니다. (Steve 고마워요~)


/* Steve Quinn 06/03/17
Copyright 2017 Steve Quinn

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see .

Written to accompany the following Instructable;

'Using ESP8266 SPIFFS'

Compiled using Arduino 1.6.9 
*/

#include "string.h"
#include "FS.h"

bool    spiffsActive = false;
#define TESTFILE "/esp8266_SPIFFS.txt"

void setup() {
	Serial.begin(115200);
	delay(1000);
	
	// Start filing subsystem
	if (SPIFFS.begin()) {
		Serial.println("SPIFFS Active");
		Serial.println();
		spiffsActive = true;
	} else {
		Serial.println("Unable to activate SPIFFS");
	}
	
	delay(2000);
}

void loop() {
	if (spiffsActive) {
		if (SPIFFS.exists(TESTFILE)) {
			
			File f = SPIFFS.open(TESTFILE, "r");
			if (!f) {
				Serial.print("Unable To Open '");
				Serial.print(TESTFILE);
				Serial.println("' for Reading");
				Serial.println();
			} else {
				String s;
				Serial.print("Contents of file '");
				Serial.print(TESTFILE);
				Serial.println("'");
				Serial.println();
				
				while (f.position() < f.size()) {
					s=f.readStringUntil('\n');
					s.trim();
					Serial.println(s);
				}
				f.close();
			}
			Serial.println();
			
			f = SPIFFS.open(TESTFILE, "a");
			if (!f) {
				Serial.print("Unable To Open '");
				Serial.print(TESTFILE);
				Serial.println("' for Appending");
				Serial.println();
			} else {
				Serial.print("Appending line to file '");
				Serial.print(TESTFILE);
				Serial.println("'");
				Serial.println();
				f.println("This line has been appended");
				f.close();
			}
			
			f = SPIFFS.open(TESTFILE, "r");
			if (!f) {
				Serial.print("Unable To Open '");
				Serial.print(TESTFILE);
				Serial.println("' for Reading");
				Serial.println();
			} else {
				String s;
				Serial.print("Contents of file '");
				Serial.print(TESTFILE);
				Serial.println("' after append");
				Serial.println();
				
				while (f.position() < f.size()) {
					s=f.readStringUntil('\n');
					s.trim();
					Serial.println(s);
				}
				f.close();
			}
		} else {
			Serial.print("Unable To Find ");
			Serial.println(TESTFILE);
			Serial.println();
		}
	}
	
	while (true) {
		yield();
	}
}


프로그램 영역에 올려야 구동되므로, IDE 에서 일반 sketch upload 로 밀어 넣습니다.

프로그램이 올라가면 Serial Monitor 를 통해 확인해 봅니다.



제가 작성했던 text 파일이 잘 읽혀지네요. 신기~!



한글 및 ASCII 코드도 잘 읽혀서 변환되었습니다. (OS 가 한글이기도 하고, 파일 인코딩을 UTF-8 로 지정함)



이 소스는 Flash memory 에서 SPIFFS 를 사용하여,

일반 file system 의 IO 처럼, 추가 쓰기가 가능하다는 것을 보여주기 위해 append 기능이 부여되어 있습니다.



이 과정을 통해 기존 firmware 위에 확인용 sketch 가 overwrite 되었으므로,

다시 Wi-Fi firmware 를 입혀주고, 그렇게 해도 여전히 data 영역이 그래도 보존되는지 확인해 봅니다.



그 다음, 다시 위의 소스 sketch 를 입히고 실행시켜 보니, 아래와 같이 한줄 더 추가 되었습니다.



즉, data 영역은 프로그램 용 sketch 나, Wi-Fi firmware 와는 완전 분리된 상태로 관리 되고 있다는 것을 알 수 있습니다.





FIN


ESP8266 에 대해서 5회에 걸쳐 살펴봤습니다.

대략적인 사용법 - 개념, 환경 구성, Flash memory 사용법 - 은 훑어 본것 같습니다.


ESP8266 의 진정한 활용은 무선으로 연결하여 IoT data 나, 실시간 연결을 통한 제어가 주 목적이 되겠습니다.

다음부터는 센서를 가지고 놀면서, IoT 적인 활용법을 익혀 보겠습니다.


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

Hardware | ipTIME N704BCM 무선 공유기

|

1. ipTIME 은 처음이야


장모님 댁의 Wi-Fi 가 안된다는 연락을 받습니다.

이런... PC 도 해드려야 하는데, 스마트폰으로 그나마 사용하고 계셨던 Wi-Fi 까지 고장났으니, 빨리 해결해야 합니다.


시간 여유가 없던 관계로, 중고 장터에서 회사 근처에서 판매되고 있는 적당한 무선 공유기를 구입합니다.


ipTIME N704BCM 1만원...


사무실로부터 3정거장 떨어져 있고, 그나마 환승을 해야 했지만,

상황이 상황인지라, 고맙습니다 하고 집어오게 됩니다.


나중에 안 사실이지만, 원래 제품에는 들어있는 받침대가 없...

판매자 왈, 중고장터에 올린 사진에 없지 않느냐... 틀린말은 아니군요. 끙...





2. 초기화


오래 켜 놔서 그런지, LED 부분이 변색되었네요.



나중에 안 사실이지만, SMD 식의 LED 가 아니라서 열이 조금 나는것 같습니다.
전력 소비나 열 측면에서는 SMD 식으로 바꾸면 좋으련만.

그렇게 하려면 보드에서 케이스까지 닿는 투명 플라스틱 봉이 추가가 되어야 합니다.
현재의 round 형 LED를 길게 뽑고 플라스틱 구조물로 보강할 바에야 SMD 로 하면 좋을 터인데요.

나중에 제가 회사 차리면 그렇게 할께요.

잡설은 여기까지 하고, 일단 공장 초기화를 진행합니다.
사진은 못찍었지만, 전면의 RST/WPS 버튼을 10초정도 누르면 초기화가 됩니다.

아래 동영상처럼 CPU 부분이 빠르게 깜빡거리면 초기화 된겁니다.






3. 기초 설정


이제 초기화를 했으니, Wi-Fi 의 SSID 리스트에서 iptime 을 선택하여 접속합니다.



iptime 엑세스 포인트에 접속했으니, 기초 설정을 위해 아래 URL 을 브라우저에 입력하고 설정으로 들어갑니다.


http://192.168.0.1/



ID / Pass 는 admin / admin 입니다.



로그인 하면 SETUP / INTERNET WIZARD / WIRELESS WIZARD 가 나옵니다.

특별히 마법사를 사용할 일이 아니라서 바로 SETUP 으로 들어갑니다.



제가 필요한 설정은 "Wireless Setup" 에서 접근 정보 입니다.

기본으로 그냥 놔두면 온갖 디바이스가 붙으려고 하니, 접근 제안을 해 줍니다.


* Network SSID : 가족끼리만 아는 이름으로 변경

* Broadcast SSID : SSID list 에 뜨지 않도록, 이 옵션을 off

* Channel : Auto

* Auth : WPA2PSK + AES 로 설정

* Password : 가족끼리만 아는 비번으로 변경


LG Smart TV Support 는 뭔지 잘 모르겠지만, 일단 LG Smart TV 를 사용중이므로 on 했습니다.

이로써, 가족 전용으로 설정 변경 완료하여 마음이 편안해 졌습니다.





4. Firmware Upgrade


이왕 설정하는 김에, 최신 firmware 로 업데이트 해 줍니다.

아무래도 최신 firmware 가 bug 처리나 개선이 되었을 것이기 때문이지요.


제품 웹사이트에서 해당되는 최신 firmware 파일을 다운로드 받습니다.


- n704bcm_kr_10_068.zip



현재 가장 최신은 2018-07-25 에 배포된 버전이네요.



이제 다시 192.168.0.1 설정 페이지로 들어갑니다.



Basic Setup > Firmware Upgrade > Manual Upgrade > Choose File 을 클릭하여,

아까 다운로드 받아 놨던 최신 firmware 파일을 선택합니다.



파일이 선택되었으면 Upgrade 버튼을 클릭합니다.



완료되었다고 그러네요.



다시 로그인 하면, Internet / Wireless 부분이 하나의 Wizard 로 통합되었네요.

버전이 10.00.8 > 10.06.8 로 업그레이드 되었습니다.


뭐가 고쳐졌는지는 전혀 모르지만, 왠지 모를 개운함이 느껴집니다~.





5. Power Adapter


ipTIME 의 고질적인 문제 중 하나가 전원 어뎁터라고 합니다.



DC9V / 0.5A 스펙이네요.



Transistor Tester 에 전원을 인가하면 인가된 전원을 표시해주는 기능을 이용해 봅니다.

실측으로는 살짝 못 미치는 8.8V 군요.


ipTIME 님... 이거 몇푼 한다고... 투자좀 하시죠.

사람으로 따지면 전원 어뎁터는 심장과 같아서, 부실할 경우는 고장의 근본적인 원인이 됩니다.


집에서 DC9V 용으로 애용하는 어뎁터와 비교해 봤습니다.

이 어뎁터는 스펙상 DC9V / 0.6A 입니다.



9.1V 를 찍어줍니다.



이게 정상이다~!





6. 공기 순환 구멍 뚫기


ipTIME 의 고질적인 문제 중 또다른 하나는 열 처리 입니다.

많은 분들이 한여름이 에어컨 없는 실내에서의 사용이 어렵다고들 합니다.



위는 제품 웹사이트에서 가져온 설명 입니다.

밑에가 메쉬로 되어 있어 발열을 고려했다고는 하지만, 기판 부품이 실장된 반대쪽 이라 사실 별 의미가 없어 보입니다.


어떤 분이 케이스에 타공하여 열 배출을 원활하게 한 글을 보게 됩니다.


* EFM ipTIME N704BCM 여름을 위한 케이스타공

https://blog.naver.com/ff1100v/90174743225


뭔가 멋진것 같아요. 따라하지 아니할 수 없네요.


밑면의 고무 파킹을 들어내면 나사가 나옵니다. 풀어줍니다.



하판이 분리되고 기판이 보입니다.

보시다싶이 하판에 열처리를 위해 구멍이 나 있다 한들 그리 큰 효과를 기대할 수 없는 구조 입니다.



윗 뚜껑에 구멍을 뚤어야 하니, 안테나도 분리해 줘야 합니다.

상판과 안테나 고정 나사를 풀어 줍니다.



작업하기 쉽게 보드와 안테나가 완전히 분리되었습니다.



가장 열이 많이 나는 CPU 위치를 가로, 세로로 잡아주구요.



열은 윗쪽으로 올라가니, 세웠을 때를 상정하여 안테나 결합부 쪽도 뚫을 자리에 마킹해 줍니다.



집에 있는 드릴로 뚫었습니다.

과정은 손이 두개라 사진을 찍지 못했습니다.



뚫은 구멍들이 정렬이 되지 않았지만, 열 배출에는 문제 없을것 같습니다.



조립은 분해의 역순.



작업이 만족스럽게 완료되었습니다.





7. 고장난 myLG070 무선 공유기


문제가 된 기존의 myLG070 무선 공유기 입니다.

근 10년동안 해외에서 주거할 때, 한국에 있는 가족과 연결해준 고마운 무선 공유기 입니다.



세월의 흔적이 여기저기 보이네요.

생각해 보니, 잠깐씩 한두번 자리 배치 하려고 할 때 외에는 10년동안 한번도 전원을 내린적이 없군요.



역시 발열처리에 신경을 쓴 흔적이 보입니다.



뚜껑을 따 봅니다.



역시 예상했던 대로, 케페시터가 부풀어 올랐습니다.

고생했다 공유기야.



잠깐 고쳐서 써볼까 고민해 봤으나, 쓰레기통행으로 결정했습니다.


'Hardware' 카테고리의 다른 글

Hardware | Transistor 구매  (0) 2018.11.10
Hardware | 스위치 부품 구매하기  (0) 2018.11.09
Hardware | planefinder unboxing  (2) 2018.10.30
Hardware | ESP-01 or ESP8266 사용기 - 1  (4) 2018.10.04
Hardware | Arduino 를 DIY 해보자 - 1  (4) 2018.09.18
And

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

|

1. 시작


아두이노에 연결해서 사용할 수 있는 저가의 Wi-Fi 모듈로는,

유명한 Espressif Systems 사의 ESP8266 와, Ai-Thinker 사의 ESP-01 모듈이 있습니다.


다른 여타 sensor 나 module 처럼 금방 사용할 수 있겠지 하고 덤볐다가, 지옥이 열렸습니다.


* ESP8266

https://en.wikipedia.org/wiki/ESP8266



저가이면서 Wi-Fi 구성이 된다니, 신기할 따름입니다.

바로 구매하여 확인해 봅니다.





2. 구매


AliExpress 에서 쉽게 검색이 됩니다.

외형이 살짝 다른 두 종류가 있어서 두가지 모두 구입해 봅니다.


한개는 8Mb flash memory 라고 하는군요.


* ESP-01, ESP8266,WIFI module 8Mb flash memory

https://www.aliexpress.com/item/WIFI-module-ESP-01-ESP8266-8Mb-flash-memory/32733744011.html





* Upgraded version ESP-01 ESP8266 serial WIFI wireless module wireless transceiver ESP01 ESP8266-01

- https://www.aliexpress.com/item/Free-shipping-ESP8266-serial-WIFI-wireless-module-wireless-transceiver/32341788594.html







3. 외형


모양은 이렇게 생겼습니다.



제조사는 다르지만 기본 chip 및 구성은 거의 동일합니다.



위의 그림에서 8Mbit Flash 라는 제품이 밑에 보이는 것인데,

memory chip 두께가 살짝 더 두꺼워 보입니다.



평범한 뒷모습.





4. Pin 배열


Pin out 이 2열로 되어 있어서, 빵판에서 그냥 꼽으면 short 가 발생합니다.

점퍼선으로 연결해도 되지만 깔끔하지 못할 뿐더러 연결시 자꾸 헷갈리기도 합니다.


Wi-Fi 모듈 보드 한쪽이 안테나를 형성하고 있어서,

이렇게 한쪽으로 모두 pin 을 모아야 하는 것은 이해가 갑니다만 빵판에서는 최악입니다.

꽤나 불편합니다.



AliExpress 에서 우연하게 breadboard 에서 편하게 사용할 수 있도록 해주는 adapter 를 발견하였습니다.


* 2PCS For ESP-01 Esp8266 ESP-01S Model Of The ESP8266 Serial Breadboard Adapter To WiFi Transceiver Module Breakout UART Module

https://www.aliexpress.com/item/Breadboard-Adapter-for-ESP8266-ESP-01-ESP-01S-Wifi-Transceiver-Module-Breakout/32775467213.html



아래는 실재 사용한 사진입니다.

수직을 수평으로 피면서 양쪽으로 pin 들을 분리해주는 



이 adapter 를 사용하면, 이쁘게 양쪽으로 pin 들을 구분해 줍니다.

여러분들도 꼭 구입해 보아요.





5. 먼저 알고 있어야 할 것들 - BAUD RATE


ESP8266 은 쉽게 접근할 수 있는 모듈이 아닙니다.

값싸고 성능이 괜찮은 대신, 문제 없이 구동시키려면 몇 가지 조건이 충족되어야 합니다.


이런 배경지식 없이 덥볐다가 시행착오에 꽤 많은 시간을 쏟아 부어야 했습니다.


거의 모든 ESP8266 모듈들은 공장 출하시 UART serial IO 속도가 115200 으로 정해져 있습니다.

Arduino Mega 와 같이 HW Serial 이 두개면 문제가 없습니다.


단, Arduino Uno/Nano 의 경우, 하나밖에 없는 HW Serial 을 USB 연결용으로 사용해 버리므로 문제가 됩니다.

결국, Arduino Uno/Nano 는 ESP8266 와 SoftwareSerial 로 연결되어야 하나,

SoftwareSerial 은 115200 처럼 높은 baud rate 를 지원하지 않습니다.


그래서 연결하려는 arduino 가 Uno/Nano 라면, BAUD RATE 를 변경해 줄 필요가 있습니다.

다음은 AT 명령어를 이용하여 통신 속도를 변경하는 방법 입니다.


AT+UART_DEF= baudrate , databits , stopbits , parity , flow control



보통 9600 으로 설정시 다음과 같은 명령어를 사용합니다.


AT+UART_DEF=9600,8,1,0,0


여기서 주의할 점은, ESP8266 에 구워진 AT 명령어 firmware 버전에 따라 사용하면 안되는 명령어들이 있습니다.

"AT+CIOBAUD=9600" 나 "AT+IPR=9600" 는 일시적으로만 동작되거나 ESP8266 을 벽돌로 만들어 버릴 수도 있습니다.


그러므로, 항상 최신버전의 AT firmware 를 먼저 굽고 사용해야 합니다.

firmware upgrade 에 대해서는 아래에서 자세하게 다룹니다.





6. 먼저 알고 있어야 할 것들 - 충분한 전류


ESP8266 모듈은 전력을 많이 소비합니다. 250mA 정도는 사용한다고 하네요.


ESP8266 구동에 필요한 3.3V 를 지원하기는 하지만,

200mA 이상 나오지 않는 Nano 의 3.3V 포트에 연결하면 정상적으로 동작하지 않습니다.


전류가 부족해서 나타나는 증상은, LED indicator 가 정상적으로 점멸하지 않다거나,

(아래 사진은 추가 전원을 이용하여 정상적으로 동작하는 모습)



AT 명령어에 대한 response 가 중구난방입니다.



전력을 충분히 공급하는 회로로는 3가지가 있습니다.



하나. arduino + level shifter



Uno 5V 포트는 3.3V 포트에 비해 더 많은 전류를 지원해 주지만,

거의 300mA 에 육박하는 전류를 커버하기 위해서는 외부 전원장치가 필요하므로, 이 방법은 시도해 보지 않았습니다.



. 외부 전력 공급장치


아래 보이는 것처럼 외부 전력 공급장치를 사용하는 것입니다.

예전 빵판 구입시 딸려 온 것을 사용해 봤습니다.


* Hardware | MB102 Breadboard Power Supply Module 를 사용해 보자

http://chocoball.tistory.com/entry/Hardware-MB102-Breadboard-Power-Supply-Module




셋. FTDI USB 모듈이나 그 호환 모듈


FTDI 나 CP2102 를 사용하면, 중간에 arduino 와 연결할 필요 없이 PC 와 직접 연결이 가능하며,

모듈 자체적으로 3.3V 및 충분한 전류가 공급됩니다.



저 개인적으로는 FTDI 모듈보다 CP2102 가 더 안정적인 동작을 보이는것 같습니다.


참고로 FTDI 일 경우, 장치 관리자에서 단순히 "USB Serial Port" 로 보여서 port 번호를 알 수 없습니다.

(Arduino IDE 를 띄우면 port 정보가 나오기는 함)



이는 Driver install 시에 보면, Driver 2개가 서로 연동 하면서 변경되는 port 정보를 알 필요 없이 만들어주기 위한 방법으로 보입니다만,

저에겐 오히려 귀찮은 방식입니다.



반면 CP2102 일 경우, 포트번호가 표시되므로, putty 를 이용하여 serial 접속시 포트번호를 지정할 수 있습니다.



앞으로 ESP8266 에 관련된 확인은 CP2102 를 가지고 진행하겠습니다.





7. 먼저 알고 있어야 할 것들 - 최신 firmware


AliExpress 를 통해서 구매한 firmware 들은 2015년 이전 버전을 그대로 적용해서 출하하고 있습니다.



Firmware 버전이 너무 낮으면, 대응되는 명령어도 적을 뿐더러 뭔가 많이 불안한 반응을 보입니다.

가능하면 최신 버전으로 flash 해줘야 마음이 편합니다.



Ai-Thinker 사에서 최신 firmware 라고 올라와 있는 것을 간단하게 flash 해서 update 한 결과 입니다.

여기까지 오는데 8개월 걸렸네요.


그렇습니다.

결국 이 ESP8266 을 잘 쓰려면, firmware flash 를 잘 해놓는게 가장 기본이 됩니다.

그러기 위해서는 충분한 전류를 공급하는 전원도 구비해야 하는 것 이구요.





8. 먼저 알고 있어야 할 것들 - flash 파일


Flash 파일은 몇가지 종류와 버전이 존재합니다.

Espressif Systems 사에서 공개한 일반적인 버전의 flash file 과, Ai-Thinker 사가 공개한 flash file 이 있습니다.


오늘 flashing 하려는 것은 Ai-Thinker 사의 Wi-Fi 모듈이므로, 해당 모듈용 최신 파일을 준비합니다.


* ESP8266 最新SDK发布

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

ai-thinker_esp8266_dout_aicloud_v0.0.0.6_20170517.7z


압축을 풀면 몇가지 버전이 나오는데, 저는 8Mbit 인것 같아서, 작은 사이즈의 8Mbit 을 사용합니다.



또한 flashing 할 때, flash file 별로 메모리상의 주소를 지정해 줘야 합니다.

다행히 Ai-Thinker 사는 한 뭉탱이로 flash file 을 만들어 놔서, 주소가 메모리 첫번째 부터 쓰게끔 "0x00000" 을 지정하면 됩니다.



다른 버전과 좀더 복잡한 내용은 다음 post 에서 다루도록 하겠습니다.

(내용이 너무 넘처남...)





9. 먼저 알고 있어야 할 것들 - flash tool


Firmware upgrade 를 위한 flash tool 로는 몇가지가 있지만,

저는 "Espressif Systems" 사에서 공개하고 있는 "FLASH_DOWNLOAD_TOOLS" 가 사용하기 편했습니다.


* ESP8266EX Resources


* FLASH_DOWNLOAD_TOOLS V3.6.4

flash_download_tools_v3.6.4_0.rar


* FLASH_DOWNLOAD_TOOLS V2.4

FLASH_DOWNLOAD_TOOLS_v2.4_150924.7z


V3.6.4 에서는 baud rate 가 기본 115200 이상만 지원합니다.

만일 arduino 와 연결을 위해 9600 으로 낮추게 설정 했을 경우에는 firmware 를 upgrage 하기 위해 AT+UART_DEF 를 사용해야 하나,

혹시 그 firmware version 이 낮아서 이 command 를 못 알아먹을 경우에는 방법이 없습니다.


그럴 때에는 version 이 낮아서 조금 찜찜하기는 하나, 9600 을 지원하는 V2.4 를 사용하면 됩니다.


이제 "어떻게" 잘 firmware flash 를 하는지를 알아봐야겠습니다.






10. Firmware flashing 회로


Flashing 을 위한 회로는 몇가지가 있지만, 저는 아래 글을 참고하였습니다.


* Update the Firmware in Your ESP8266 Wi-Fi Module

https://www.allaboutcircuits.com/projects/update-the-firmware-in-your-esp8266-wi-fi-module/



CH_PD 핀에 전원 인가 시 필히 저항을 달았으며,

RST 에 reset switch 와 GPIO0 에 flash 용 swtich 를 달았습니다.



똑딱이 스위치를 이 회로를 구성하기 위해서 구입했더랬습니다!!!


* Hardware | 스위치 부품 구매하기

http://chocoball.tistory.com/entry/Hardware-buying-switch-components


스위치의 사용법은 다음과 같습니다.


1. RST 의 스위치를 누른다.

2. FLASH 의 스위치를 누른다.

3. RST 의 스위치에서 손을 뗀다.

4. FLASH 의 스위치에서 손을 뗀다.

5. Flash program 에서 "시작" 을 누른다.


안정적으로 전원이 공급되므로 LED 가 정상으로 점등, 점멸 합니다.





11. Firmware flashing


굳이 V2.4 을 이용하여 flash 하였습니다.



위에서 열거한 방법을 반복해 보자면, 아래처럼 진행하면 됩니다.


1. RST 의 스위치를 누른다.
2. FLASH 의 스위치를 누른다.
3. RST 의 스위치에서 손을 뗀다.
4. FLASH 의 스위치에서 손을 뗀다.
5. Flash program 에서 "시작" 을 누른다.


여기까지 오는데 8개월이 걸렸습니다.

눈물좀 훔치겠습니다... ㅠ.ㅠ



정상적으로 진행되는 과정의 스샷 입니다. 5% 진행되었을 때 캡춰했네요.


아래는 flash start 누른 후의 화면들을 캡춰 했습니다.

여러가지 확인하는 과정들이 있네요.



동영상으로 떠 봤습니다.

지금 다시 봐도 감격스럽네요.







12. ESP8266 에 console 로 접속하기


PC 에서 console 접속하려면 terminal 어플이 필요합니다.

여기서는 open source 이면서 사용하기 편한 putty 를 이용했습니다.


* Download PuTTY: latest release (0.70)

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html


이제 문제없이 접속이 되니, putty 를 통해서 serial port 로 연결합니다.



AT 를 치고, Ctrl + M, J 하면 타이핑한 내용이 ESP8266 에 전송되고 그 결과를 보여줍니다.



접속 mode 라던지, 현재 상태, 그리고 집에서 쓰는 Wi-Fi AP 에서 할당받은 IP 를 확인해 봤습니다.

(따로 AT+CWJAP 이라는 command 를 통해서 접속하는 과정이 필요)


위에서 마지막에 나오는 "192.168.123.135" 이 ESP8266 이 할당받은 IP 입니다.

ESP8266 은 내부에 web server 를 탑재하고 있어서 browser 를 통해서도 접속이 가능합니다.


이 외에 여러가지 AT command 들이 있습니다만,

글이 너무너무 길어지기에 오늘은 간단한 결과 들만 올려 봅니다.

(누차 이야기 하지만, 여기까지 오는데 8....)





13. ESP8266 에 web 으로 접속하기


브라우저에서 접속해본 스샷입니다.



몇가지 설정을 web 을 통해서도 수정할 수 있게 되어 있네요.


아래는 web 에서 제공하는 "REBOOT" 버튼을 클릭하고 얻은 결과 입니다.

정상적으로 잘 동작 합니다.



Wi-Fi 연결 정보가 "AT+CWJAP" 이라는 command 로 저장되어 있기 때문에,
REBOOT 후에도 기존 Wi-Fi AP 에 접속 하는군요.





FIN


오랜 시행착오의 시간이 지나갔습니다. (사실 주말 가끔밖에 시간이 안나서...)


ESP8266 은 기능이 다양하고 강력한 대신, 길들여서(?) 사용하기가 여간 까다롭지 않습니다.

배경 지식도 많이 필요하구요.


다른 블로그 글들을 보면, 다들 쉽게 하던데 왜 나는 이렇게 어렵게 하는지 모르겠습니다.

이왕 여기까지 온거, 완벽하지는 않지만 납득이 가는 선까지 정리해 보고자 합니다.


다음 포스트에서는 나머지 이야기들을 정리해 보겠습니다.


And

Hardware | Safecast bGeigi nano firmware upgrade

|

1. firware upgrade


모든 기기는, 그 동작의 기본이 되는 firmware 가 있습니다.

저번에 만들어 봤던 Safecast bGeigie nano 도 firmware 가 있으므로 upgrade 해봅니다.


지금까지 bGeigie nano 에 대해서는 다음 포스트들을 읽어보세요.


* Hardware | Safecast bGeigie Nano 를 조립해 보자 - 1

http://chocoball.tistory.com/entry/Hardware-Safecast-bGeigie-Nano-1


* Hardware | Safecast bGeigie Nano 를 조립해 보자 - 2

http://chocoball.tistory.com/entry/Hardware-Safecast-bGeigie-Nano-2


* Hardware | bGeigie Nano 의 battery 를 업그레이드 해보자

http://chocoball.tistory.com/entry/Hardware-bGeigie-Nano-battery-upgrade


* Hardware | bGeigie Nano 를 이용하여 방사능을 측정해 보자

http://chocoball.tistory.com/entry/Hardware-bGeigie-Nano-checking-radiation



참고로 firmware upgrade 하기 전에는 1.3.4 입니다.


사용된 환경은 Mac 입니다.

아무래도 unix based OS 이고, arduino / FTDI 사용시 반응이 빠릿빠릿 해서 입니다.





2. FTDI driver


우선 FTDI for mac 드라이버를 인스톨 합니다.


* Future Technology Devices International Ltd.




위 링크에서 최신 driver 를 다운로드 받아서 설치합니다.



정식 명칭은 FTDI USB Serial Driver 군요.







3. AVR 설치


아래 링크에서 다운로드 받아서 설치합니다.


CrossPack for AVR® Development



오랜만에 Mac 에서 설치작업을 해보는군요.



2013년에 나온게 최신버전인가 보군요.






4. FTDI 연결하기


bGeigie nano 의 중앙 처리장치인 arduino FIO 옆에 pinout 이 있습니다.

firmware 업그래이드를 위해 마련된 FTDI 연결 포트입니다.


신기하게도 알리에서 구입한 FTDI breakout board 의 pinout 과 순서가 완벽히 일치합니다.

RX/TX 도 서로 엇갈리게 되어 있고, Vcc / GND 등 모두 짝이 맞춰져 있습니다.



참고로, firmware update 시의 주의사항 입니다.


NOTE: The Nano power switch MUST be turned OFF before connecting (the Fio board powers from the FTDI cable)!
NOTE: If you have a BLEBee or other wireless module, it MUST be removed before reprogramming, since it shares TX/RX signals!


즉, 전원은 꼭 off 로 해 놓고, FTDI 에서 받는 3.3V 를 이용하라는 것이고,

Bluetooth 용인 BLEBee 모듈을 꼭 제거하고 실행하라는 것 입니다. 그렇지 않으면 TX/RX 가 선점되어서 통신이 시작되지 못합니다.

(삽질 하루 걸림...)



꼭! BLEBee 모듈은 제거!



FTDI 와 연결합니다.

지금까지 여러가지 해봤더니, 어느새 FTDI 를 가지고 있네요?


* Hardware | FTDI Serial Adapter 를 사용해 보자

http://chocoball.tistory.com/entry/Hardware-FTDI-FT232RL-using





5. 최신 firmware 다운로드 및 upgrade


최신 firmware 를 다운로드 받습니다.


- wget https://github.com/Safecast/bGeigieNanoKit/raw/master/bGeigieNano.hex


파일을 다운로드 받으려고 하면, redirection 되어서 다음 화면의 링크에서 다운로드 받네요.



"bGeigieNano.hex" 가 그 최신 파일입니다.



다음 명령어로 flashing 합니다.


avrdude -DV -p atmega328p -P /dev/tty.usbserial-A50285BI -c arduino -b 57600 -U flash:w:bGeigieNanao.hex:i


USB port 는 각 기기마다 다르게 보일 터이니, ls 명령어로 우선 확인해 보고 맞는 이름을 사용하면 되겠습니다.

저의 경우는 "/dev/tty.usbserial-A50285BI" 였습니다.



짜잔~. 최신 버전인 1.4.2 로 업그레이드 되었습니다.



참고로 Windows OS 에서의 실행 결과 입니다.

나중을 위해 명령문도 기록해 놓습니다.


C:\"Program Files (x86)"\Arduino\hardware\tools\avr/bin/avrdude -CC:\"Program Files (x86)"\Arduino\hardware\tools\avr/etc/avrdude.conf -DV -p atmega328p -PCOM5 -c arduino -b 5700 -U flash:w:bGeigieNano.hex:i




6. 마무리


최신 firmware 로 upgrade 한 다음, microSD 및 GPS reset 을 해 줍니다.


GPS reset 은, microSD 를 뺀 다음, 부팅시켜주는 것이고,

microSD는 FAT 로 포맷하고, 필요한 파일인 "config.txt", 및 "SAFECAST.TXT" 만 root 에 copy 하고 리부팅 하면 됩니다.






FIN


거부감 없이 bGeigie nano 의 firmware 를 업그레이드 해봤습니다.

사실 microSD 카드에 logging 하는 기능이 정상 동작하지 않아, 궁여지책으로 해본 작업이었습니다.


firmware upgrade 를 해도 개선이 안되는 것을 보면, 다른 문제가 있어 보이네요.

국내에 얼마나 많은 분들이 가지고 계실지는 모르겠습니다만, 참고가 되었으면 합니다.




Update 20191228


마지막에 기술했다 시피, microSD 카드에 logging 되지 않는 현상과,

toggle switch 로 mode 를 변경시켜도 mode 가 변하지 않는 문제가 지속되었습니다.


일단, toggle switch 의 접점 문제로 인하여 mode 변경이 되지 않는게 아닌가 하여, 관련 부분 납땜을 다시 정리해 주기로 합니다.



살살 분해 합니다.



좀 많이 튀어 나온 부분이나, 납이 부족하다고 생각되는 부분을 정리해 줍니다.



이 작업 후에도 개선은 되지 않더군요... ㅠㅠ



1년 4개월이 흐른 뒤...

긴 휴가를 맞이하여 다시한번 도전하기로 합니다.


9개월 전에 새로운 firmware 가 올라 왔군요. 버전은 1.4.3.

그 전 버전이 1.4.2 였으니 마이너 업데이트 이긴 하지만, 밑져야 본전 입니다.



Firmware 업데이트 후, 되는군요... 문제가 고쳐졌습니다. ㅠㅠ



CPM 을 표시하면서 logging (microSD 에 기록) 하는 모드가 정상으로 돌아 왔습니다!!!



물론, 단순 측정 모드 (logging 하지 않음) 도 잘 되구요.

이제야 제대로 사용할 수 있으려나 합니다.


And
prev | 1 | 2 | next