'Wi-Fi'에 해당되는 글 2건

  1. 2019.08.14 Hardware | ESP-01 or ESP8266 사용기 - 5 2
  2. 2018.11.06 Hardware | ipTIME N704BCM 무선 공유기 2

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