아두이노 피지컬컴퓨팅 교구로 활용할 수 있는 실 생할용품 메이킹 프로젝트(워터맨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 사용을 종료
'아두이노 피지컬컴퓨팅 키트 > 워터맨IOT' 카테고리의 다른 글
(피지컬컴퓨팅키트) 워터맨 IOT 14. 종합시스템 프로그램 (1) | 2019.01.18 |
---|---|
(피지컬컴퓨팅키트) 워터맨 IOT 12.Blynk기능 활용 (0) | 2019.01.08 |
(피지컬컴퓨팅키트) 워터맨 IOT 11. Blynk 소개와 설정 (0) | 2019.01.05 |
(피지컬컴퓨팅키트) 워터맨 IOT 10. IFTTT 기능활용 (3) | 2019.01.04 |
(피지컬컴퓨팅키트) 워터맨 IOT 9. IFTTT의 소개와 설정 (1) | 2019.01.04 |