'파일'에 해당되는 글 3건

  1. 2021.01.19 Hardware | JLCPCB 에서 PCB 주문을 해보자 2
  2. 2020.04.25 Hardware | 샤오미 미밴드 4 한글 패치 2
  3. 2019.08.14 Hardware | ESP-01 or ESP8266 사용기 - 5 2

Hardware | JLCPCB 에서 PCB 주문을 해보자

|

이번 포스트는 PCB 를 전문 제작자 (PCB house) 에 의뢰해 보는 글 입니다.




1. Gerber 파일


PCB 생산 주문은 "Gerber" 파일이라는 것으로 업계가 통일되어 있는 듯 합니다.

다양한 회로 생성 어플이 존재하나, Gerber 로 export 가 가능하게 생태계가 꾸며져 있더군요.


Gerber 파일은, pattern, hole, silk, mask, drill 등, PCB 제작에 필요한 적층 정보를 따로 가지고 있는 파일들의 묶음 입니다.

참고로, 2-layer PCB 제작에 필요한 Gerber 파일 확장자는 다음과 같습니다.


- Top Layer : GTL

- Bottom Layer : GBL

- Solder Mask Top : GTS

- Solder Mask Bottom : GBS

- Silk Top : GTO

- Silk Bottom : GBO

- Drill Drawing : TXT

- Board Outline : GML/GKO


어플에 따라서는 다음과 같은 파일 포맷으로 Gerber 파일을 구성하기도 합니다.


*.cmp (Copper, component side)

*.drd (Drill file)

*.dri (Drill Station Info File) – Usually not needed

*.gpi (Photoplotter Info File) – Usually not needed

*.plc (Silk screen, component side)

*.pls (Silk screen, solder side)

*.sol (Copper, solder side)

*.stc (Solder stop mask, component side)

*.sts (Solder stop mask, solder side)


EagleKiCad 어플에 따라 Gerber 파일로 만드는 방식이 다릅니다.




2.Eagle to Gerber


brd / sch 파일이 존재하면, Eagle 파일 입니다.

Autodesk 사이트에서 Eagle 설치 파일을 다운로드 받습니다.



설치 후, 회로 파일 로딩 합니다. 하나는 회로도, 또 다른 하나는 PCB diagram 입니다.


이제, Eagle 파일을 불러 들였으니, Gerber 파일로 변환하면 됩니다.

CAM Processor 를 클릭합니다.



Output type 을 Gerber RS-274X 로 설정. 이게 일반적인 Gerber file format 이라고 하더군요.

오른쪽 하단의 "Process Job" 을 누르면 Gerber 파일을 생성해 줍니다.



생성된 Gerber 파일 디렉토리를 보면, DrillFiles 라는 폴더가 따로 보입니다.


Drill 정보를 가진 파일도 포함된 상태로 zip 파일을 만들어야 하므로, DrillFiles 폴더에서 "drill_" 이라고 시작하는 파일을 한데 모읍니다.



Gerber 파일 모음에 Drill File 도 옮겨서 하나의 zip 압축 파일로 만듭니다.



위의 방법은 수동으로 Gerber 파일 만드는 방법이고, 아래 방법으로 한 방에 할 수 있습니다.


Seeed Fusion 사에서 이미 template 를 만들어 놨습니다.

아래 순서로 메뉴로 들어가면, 2 Layer / 4 Layer 에 맞게 파일을 선택하면 됩니다.


CAM Processor > System Examples > Third Party > Seeed Fusion > SeeedFusion_2_layer.com



따로 파일이 생성되는 것도 아니고, 그냥 zip 파일 하나 바로 만들어 줍니다.



주문 할 JLCPCB 사이트에서 파일을 올리면, Drill 정보 포함 모두 문제 없이 Gerber 파일로 변환 되어 있는 것을 알 수 있습니다.





3. KiCad to Gerber


KiCad 파일에서 Gerber 파일 변환 방법은, 아래 PCBWay 사이트 정보를 참고 했습니다.


* Generate Gerber file from Kicad

https://www.pcbway.com/helpcenter/technical_support/Generate_Gerber_file_from_Kicad.html


우선 KiCad 설치 파일을 아래 사이트에서 다운로드 합니다.


* KiCad

https://kicad.org/download/



설치하는 OS 별로 선택하여 설치 파일을 다운로드 받습니다.



Gerber 파일 변환해 보다, 처음으로 KiCad 를 설치해 봅니다.



우선 KiCad 파일을 읽어 드립니다.



pro 확장자네요.



회로도 아이콘을 더블클릭 하여 open 합니다.



Plot 을 클릭합니다.



플로트 설정에서 아래와 같이 선택합니다.

괜히 다른 옵션들을 선택하면 PCB house 들에서 읽어 드릴 수 있는 포멧에서 벗어납니다.



여기서도 마찬가지로 Drill 파일을 따로 생성해야 합니다. 옵션도 가능 한 아래 옵션으로 선택해야 합니다.



메뉴에서 드릴 파일을 확인해 볼 수도 있습니다. PCB 위에 잘 위치하고 있네요.



2 Layer 이면서 TOP / BOTTOM 이 잘 통전되게 설계되어 있네요.



마지막으로 zip 파일 압축 시, drl 파일이 있는 것을 꼭 확인해야 합니다.





4. 주문


이제야 준비가 되었습니다. JLCPCB 사이트에서 주문을 하기 위해 파일을 올려 봅시다.


* JLCPCB

https://jlcpcb.com/



등록 합니다. 전 쉬운 방법인 Google 계정으로 사용자 등록 했습니다.



처음 유저 등록하면, 몇 가지의 쿠폰을 주지만, 20 USD / 30 USD / SMT 용 쿠폰을 줍니다.

첫번째 주문 특혜 -2 USD, 20 달러 이상 구매시 -5 USD 를 적용하니, 2 Layer X 5장 X 4 가지 PCB 를 약 2만원으로 주문할 수 있었습니다.



Gerber 파일을 업로드 합니다. 알아서 분석해 줍니다.



주문하고 싶은 PCB 용 Gerber 파일을 마구마구 올리면 됩니다.



Analysis Result 에서 Layer 나, Drill 사이즈를 꼭 확인해 봅니다.



Gerber Viewer 에서 전체 layout 도 확인 가능합니다.



Product Detail 에서 최종 정보를 점검합니다.



4종류, 기본 5장 주문에 14 USD 면 정말 저렴하군요.



Shipping Method 에서 DHL 을 선택하면 1주일 정도 걸리겠지만, 꽤 비쌉니다.

S.F Express Economy 를 선택하면 9 USD 정도로 배송비를 책정 할 수 있습니다.



이번에 주문한 Gerber 파일들 입니다.


cdm324_backpack.zip

display_i2c_c.zip

hb100_backpack.zip

HVRescue_Shield_r212_2020-12-24.zip



5. 배송


주문을 넣으면, 제조부터 배송 상황을 자세히 보여줍니다.



복수의 PCB 를 주문하면, JLCPCB 가 보유한 여러 군데의 공장에서 따로 만든 다음, 한 곳으로 모아서 배송하는 방식인 듯 합니다.

주문이 몰리더라도, 여러 공장에서 동시에 제조가 가능하고 묶음 배송까지 지원하니, 배송 상황만 봐도 만족스럽네요.



제조 과정도 아주 자세하기 보여줍니다. Drilling 을 꽤나 먼저 하는군요.



제조가 완료되면, 배송이 시작되었다고 알려 줍니다. 배송시의 사진도 찍어서 보여주네요.

중국 회사 치고는 신뢰가 많이 갑니다.





6. 도착


10일 정도 걸려서 도착. 일반적인 배송이 아니라, 인수자 확인부터 수령 사인까지 받아 갔습니다.

배송에 의한 유실은 확실히 막을 수 있겠네요.



재활용한 박스에 포장되어 왔습니다. 지구를 위해서는 오히려 호감이 갑니다.



아... 비호감 하나. 이런 악세사리는 쓰레기. 바로 분리수거 하여 버렸습니다.



각 PCB 는 진공 포장과 실리카겔로 수분 방어가 되어 있습니다.



비닐 재질도 두꺼워 적절합니다.





7. 품질


예상 했던 것 보다, 훨씬 품질이 좋습니다. 2 Layer TOP/BOTTOM 간의 연결도 좋고, 스텐실도 잘 세겨져 있습니다.



제조 시간도 빠르고, 배송도 문제 없었으며, 품질까지 좋으니 앞으로 계속 이용하게 될 것 같습니다.



Gerber 파일을 완벽히 재현해 놨네요. 살짝 납이 먹여져 있어 보호도 되어 있고.



5장이면 Sample 주문인데, 완전 Production 수준의 품질입니다.



이번 주말은, 그 동안 하고싶던 실장과 테스트로 행복 할 것 같습니다.


FIN


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 | 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
prev | 1 | next