아두이노 피지컬컴퓨팅 교구로 활용할 수 있는 실 생할용품 메이킹 프로젝트(워터맨IOT) 열세번째.

 

접속할 공유기의 명칭/암호는 사용하는 환경에 따라 달라지며 각종 IOT 클라우드 서비스의 키값들은 사용자가 바뀌면 그 사람의 고유키로 지정해 주어야 한다.

 

이러한 값들을 프로그램코드내에 직접 코딩해 놓으면 그 값이 바뀔 때마다 새로 코딩하고 컴파일하는 작업을 새로 해주어야 하기 때문에 매우 번거롭다. 따라서 변동가능한 ID,Password,각종 키값을 프로그램 수정작업 없이 간편하게 임의로 설정할 수 있는 기능을 구현해 본다.

 

 

설정기능 처리FLOW

 


 

설정기능 구현 샘플프로그램

 

 

 

 4 line:  EEPROM 영역을 메모리로 사용하기 위한 선언
16 line:  AP모드로 시작될 떄 사용할 SSID, 즉 스마트폰에서 이 이름의 공유기에 접속하여 설정작업을 하면 된다.
19~56 line:  EEPROM memory를 읽어 시작mode와 설정값을 set시키기 위한 함수
 21     line:  memory 0번지 값을 읽어 STA mode로 시작할 지 AP모드로 시작할 것인지 지정
25~46 line STA mode이고 설정 데이터가 있으면 이값을 읽어 SSID,Password,키값등으로 사용
57~89 line:  EEPROM memory에 각종 설정값을 기록하기 위한 함수
60      line:  다음번 기동시 STA mode로 시작할 수 있도록 0번지에 mode=1 값을 기록
63~82 line:  SSID,Password,키값등 현재값을 EEPROM 메모리에 기록
85~87 line:  EEPROM에 기록된 값을 다시 읽어 확인 
90~103 line: 웹서버로서 기능을 정의하는 함수. 즉 접속되면 다음과 같은 설정데이터 입력화면을 표시하기 위한 HTML 코드을 작성하여 응답한다.        


104~123 line: 웹서버의 기능을 정의하는 함수. 입력된 HTML Form에서 데이터를 추출하여 해당 데이터항목에 값을 교체한다.
121~122 line: EEPROM에 값을 기록하기 위한 함수를 callㅎ고 Device를 rebooting한다. 
124~134 line: Setting mode 버튼이 눌려졌을 떄 실행될 기능을 지정하는 함수
126~128 line: 다음번 기동될 떄 AP mode시작되도록 EEPROM에 mode=1을 기록
133      line:  Devide를 rebooting한다.
139~145 line: EEPROM에 mode=1로 지정되어 있으면 STA모드로 WIFI start
143~144 line: BtnSetting핀값이  FALLING될 때(0로 바뀔때,즉 버튼이 눌러졌을 때)를 감지하여 procSetting함수를 실행
146~157 line: EEPROM에 mode=0로 지정되어 있으면 AP모드로 WIFI start
 153  line: 웹서버 기능을 정의. 즉 /(root) url이 입력되면 procAProot 함수를 호출
 154  line: 웹서버 기능을 정의. 즉 /setting  url이 입력되면 procAPsetting 함수를 호출
 155  line: 웹서버 기능 begin

 

 

참조:EEPROM Memory( Device의 전원을 OFF해도 지워지지 않고 보존되는 memory) 사용방법

 

EEPROM.begin(xxx) :  xxxbyte를 사용하겠다고 선언
EEPROM.read(x);  x번지의 값을 읽어내기
EEPROM.write(x,y);  x번지 영역에 y라는 값을 보관.
EEPROM.commit();  실제로 EEPROM에 값을 저장. (write를 전부 한후 commit해주어야 기록)
EEPROM.end();  EEPROM 사용을 종료

 

 

+ Recent posts