꿀팁2015. 5. 7. 22:41

필요시 ESP8266 펌웨어 업데이트 (펌웨어 별로 ESP8266 시리얼 통신 속도 다르다)

http://www.hardcopyworld.com/ngine/aduino/index.php/archives/1257


여러개 써본 결과 아래 펌웨어가 안정적이고 통신속도도 115200으로 변경 가능

AI-v0.9.5.0 AT Firmware(9600).bin


보레이트 바꾸는 명령어
Set the baud rate
AT+CIOBAUD?
AT+CIOBAUD=9600
AT+CIOBAUD=115200
AT+CIOBAUD=230400
AT+CIOBAUD=460800
AT+CIOBAUD=921600

https://hackaday.io/project/3250-cypress-psoc-4-esp8266-ws2812-rgb-xmas- lights/log/10830-updating-the-firmware-of-the-esp8266


ESP8266_flasher_and_BIN.zip

CoolTermWin.zip

CoolTermWin.z01


CH_PD = GND 상태에서는 펌웨어 업그레이드 모드 (업그레이드 모드에서는 57600baud, 80mA 정도 소모)

CH_PD 핀을 HIGH(3.3V)로 하면 일반 WiFi 모듈 동작 모드 (300mA 이상 소모)


ESP8266은 전원이 3.3V라서 Rx도 3.3V 로 받아야 함!! 5V를 Rx핀에 넣으면 안됨!

NT_USBto232 모듈은 Rx,Tx 핀이 3.3V 라서 전압 변환 불필요


ThingSpeak 사물인터넷 데이터를 받아서 저장하고 표시해 주는 서비스

https://thingspeak.com/docs/tutorials/


thingspeak 가입방법, ESP8266 AT명령으로 데이터 업로드 설명

http://mcuoneclipse.com/2014/12/14/tutorial-iot-datalogger-with-esp8266-wifi-module-and-frdm-kl25z/


ESP8266을 아두이노에 연결해서 데이터 업로드 하는 방법과 샘플 코드

http://electronut.in/an-iot-project-with-esp8266/


1) PC에서 시리얼 통신으로 ESP8266을 이용해 ThingSpeak 접속하고 테스트 하는 명령어 순서

('>>' 는 응답 결과)


AT

>>OK


펌웨어 버전 확인

AT+GMR

>>00170901 :115200baud ESP_8266_BIN0.92.bin

>>0018000902 :9600baud v0.9.2.2 AT Firmware.bin
>>0018000902-AI03 : 9600baud :Version:0.9.2.4

동작 모드 확인 (1:Station, 2:AP, 3:Both)
AT+CWMODE?
>>+CWMODE:3

2라면 AP(Access Point,공유기)모드라서 다른 AP 접속이 안된다. 1번 또는 3번 모드로 변경해야 함
AT+CWMODE=3

혹시라도 이미 접속된 AP가 있다면 확인해 보자
AT+CWJAP?
>>+CWJAP:"U+Net36C3"

기존에 AP접속되어 있다면 접속을 해제해야 새로운 AP에 접속이 가능하다
AT+CWQAP
>>OK

AP 목록 검색
AT+CWLAP
>>+CWLAP:(0,"",0,d8:57:ff:3f:00:00,0)
+CWLAP:(3,"U+Net****",-81,00:08:**:**:**:c1,2)
+CWLAP:(0,"U+zone",-79,00:08:5b:??:??:??,2)

AP에 접속함, AP이름, 비밀번호를 반드시 따옴표에 넣어서 입력
AT+CWJAP="U+Zone","NOTTELLINGMYPASSWD"
>>OK

AP에서 할당 받은 IP주소를 확인
AT+CIFSR
>>192.168.219.172

한번 AP(AccessPoint, 무선공유기)에 접속하면 ESP8266 전원을 껏다 켜도 자동으로 재접속 함

멀티채널 접속을 Disable
AT+CIPMUX=0

AT+CIPSTART="TCP","184.106.153.149",80
AT+CIPSEND=43
GET /update?key=QMRY6Q????GN????&field1=0

멀티채널을 이용해서 접속하는 방법

allow multiple connections
AT+CIPMUX=1
>>OK
AT+CIPMUX?

4번 채널을 이용해 Thingspeak 주소에 TCP/IP 80포트로 접속함
AT+CIPSTART=4,"TCP","184.106.153.149",80
>>OK Linked

4번 채널에 44바이트를 전송함 (문자수 +2 해야함. 명령 끝에 엔터치면 \r\n 두개문자가 더 보내지기 때문)
AT+CIPSEND=4,43
>> >

GET /update?key=[THINGSPEAK_KEY]&field1=0
GET /update?key=QMRY6Q????GN????&field1=0  <이건 내가 가입해서 만든 API KEY>
>>SEND OK
>>+IPD,4,1:8       
>>OK
+IPD는 ESP8266이 메세지를 수신했다는 뜻, '4'는 4byte 받았다는 뜻,
'1:8'는 ThingSpeak가 보낸 메세지, 일반적으로 entity(데이터 개수)가 표시되고, '0'일 경우 저장 실패를 의미
ThingSpeak에 데이터를 업데이트 할 수 있는 주기를 15초로 제한하고 있다.

주의: 업로드 값이 두자리 숫자면 총 문자 개수는 '45'로 해야함 (보내려는 문자의 갯수를 알려주는게 포인트)
AT+CIPSEND=4,44
GET /update?key=QMRY6Q????GN????&field1=22

ThingSpeak 싸이트에서 업로드한 데이터가 잘 표시되는지 확인한다



TCP 포트로 접속해서 업로드 하는 방법 외에 URL 주소에서 직접 데이터를 입력해 볼 수 있다.
2) Thingspeak 가입해서 Channel, api_key 만들고 웹브라우저에서 URL 주소 방식을 이용해서 데이터 업로드 테스트
http://api.thingspeak.com/update?key=[THINGSPEAK_KEY]&field1=0
http://api.thingspeak.com/update?key=QMRY6Q????GN????&field1=88
>>응답으로 화면에 업로드된 데이터 개수(entity)가 표시된다.
>>15초 보다 자주 업로드 하면 에러가 나면서, 0이 표시된다

참조:http://www.instructables.com/id/ESP8266-Wifi-Temperature-Logger/step4/ThingSpeak-setup/

esp8266_test.ino




<온습도 센서를 읽어서 주기적으로 ThingSpeak에 업로드 하는 예제>


DHT22 사용 방법.. 라이브러리, DHT11 모델과는 접근 방식이 다름

https://github.com/adafruit/DHT-sensor-library

하드웨어 연결
ESP8266 Rx 3.3V를 맞춰 줄때 3.3V보다 높으면 잘 안된다
1K옴 저항 3개 연결해서 분압하면 잘 맞는다.

저항을 이용한 전압분배 연결 회로도
아두이노 Tx 출력(5V)  ----> 1K옴   ---- <ESP8266 Rx 3.3V 연결> ----- 1K옴 ---- 1K옴 -----> GND

최종코드


<온습도센서 사용하기 별도>

DHT11 DHT22 는 읽어들이는 방식이 다르다
이걸 다 통합한 라이브러리가 나왔다.

https://www.adafruit.com/products/385
중간쯤에 Arduino library and example code
https://learn.adafruit.com/dht
GitHub에서 다운 받는 링크 : https://github.com/adafruit/DHT-sensor-library
"다운로드"링크 눌러서 다운 받고, 문서->arduino->library에 설치한다. 폴더이름은 *.cpp 파일명과 동일해야 함

온습도 읽는 샘플 코드

DHT22_test.ino


ESP8266 AT 명령 주고 받는 시리얼 바이패스 


SerialBypass.ino



ESP8266 소비전류가 크긴 한데 아두이노 UNO 보드에서 출력하는 3.3V로 구동이 가능했음

(아두이노 정품 UNO 보드, 호환보드 모두 확인함. 아래 사진은 호환보드)






아두이노 회로 그리는 프로그램이 있어서.. 그걸로 회로도를 그려봄 : Fritzing

http://kaizen8501.tistory.com/2


ESP8266 동작을 위한 최소한의 배선은 5핀 (3.3V, GND, Tx, Rx, CH_PD)

전원, Tx, Rx 핀 외에 "CH_PD" 핀만 3.3V로 연결하면 동작함. 다른 포트는 연결 안해도 동작함.













'꿀팁' 카테고리의 다른 글

비보탭 터치 먹통  (0) 2015.10.21
16x8 LED Matrix MAX7219  (0) 2015.06.11
wtv020 mp3 player module  (1) 2015.06.11
vc0706 jpeg serial camera  (0) 2015.06.10
cheapest 2.4inch touch TFT LCD for Arduino UNO brand name"mcufriend"  (3) 2015.06.07
Posted by orasman