로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Sensor Applications
아듀이노 응용소스
작성자 avrtools™        
작성일 2016/02/17
첨부#1 ESP8266wifi.zip (192KB) (Down:175)
ㆍ추천: 0  ㆍ조회: 334   
  ESP8266 ESP-12E WiFi 센서 서버의 제작
ESP8266 ESP-12E WiFi 센서 서버의 제작
참조: ESP-12E 모듈의 AT 명령 설명서

ESP-01과 ESP-12의 차이는 IO핀이 8개 추가되었고, AP 작동시 Client를 5개 까지 처리할 수 있다.
ESP-12E는 WiFi로 연결하여 클라우드 서버로 전송하거나, WiFi 서버로 만들어 센서값들을 볼 수 있다.
연결된 AP의 설정에서 DMZ 서비스를 ESP-12E의 IP로 설정하면, 외부에서도 연결이 가능하다.

ESP-12E WiFi 모듈 (USD 3.14)의 샘플을 구입했다. (샘플가격 8,800원)
    

ESP-12E의 아랫쪽에 추가된 6개의 핀은 다음과 같다.
CS0  = SPI Chip Select 전용핀
MISO = SPI MISO 전용핀
GPIO 9 범용핀
GPIO 10 범용핀
MOSI = PI MOSI 전용핀
SCLK = SPI SCLK 전용핀

ADC는 0~1V를 0~1023으로 읽을 수 있고, SPI는 범용 SPI 핀을 가진 센서들과 연결이 쉽다.
추가된 6 핀은 GPIO 2핀과 SPI 4 핀이다, 물론 응용 코드에서 SPI로 연결된 센서값을 읽을 수 있다.

또한 SPI 4 핀은 아두이노의 ICSP와 같은 방법으로, ES8266 칩의 Falsh ROM을 ISP로 구울 수 있다.
SP-12는 핀 간격이 0.1 인치보다 좁아 빵판에 안꼽힌다. 시험할 때는 빵판용 확장 기판이 필요하다.

아두이노 스케치에서 ESP-12E 모듈의 펌웨어 굽기
   

RXD, TXD는 USB to Serial 기판의 TTL 출력과 연결한다.
전원을 USB로 연결된 5V로 사용하려면, 3.3V LDO를 추가하여 VCC로 연결해야 한다.
FLASH 점퍼는 굽기 전에 누른다. 혹은 구울 때 GND로 계속 연결해도 된다.

ESP-12E 모듈의 점검 
직렬통신 터미널에서 LF+CR을 켜고 115200 BPS Non Xon-Xoff로 연결한다.
리셋되면 부트 메세지가 표시되는데, 앞부분의 글자가 깨진다.
rl�| � l� b|럠�뭨밷�
Ai-Thinker Technology Co.,Ltd.
ready


앞 부분의 문자들은 ESP-12E의 부트와 User Firmware의 bps 차이로  뒷 부분만 제대로 보인다.
(115200 bps에서 깨지는 부트 문자들은 74880 bps에서 다음과 같이 나온다. 이때는 뒷부분이 깨진다)
 

ESP-01과 ESP-12E와의 차이는 하드웨어 핀이 많이 나와있고, EMI 문제로 실드를 했다.
펌웨어를 확인한 결과 시판하는 ESP-01 보다는 신형 펌웨어 SDK 1.3.0으로 들어있다.

ESP-12E의 AT-명령 펌웨어의 시험
ESP-12E는 소프트웨어로 리셋해야 부트 직후의 글씨가 안깨진다.
AT+RST
OK

ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0

2nd boot version : 1.4(b1)
SPI Speed : 40MHz
SPI Mode : DIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

dosn't use rtc mem data
sl...rl..
Ai-Thinker Technology Co.,Ltd.
ready


이렇게 표시된다. 그래도 아래 부분에서 몇 글자는 깨진다.
소프트웨어 버전을 보자
AT+GMR
AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK

모드를 바꾸어야 명령들이 실행되는지 확인된다.
AT+CWMODE=3
OK

AT+CWMODE?
+CWMODE:3
OK


WiFi 모드에서 주변 AP를 제대로 찾는지 확인하자.
AT+CWLAP
+CWLAP:(3,"leekyap-2",-51,"ec:08:6b:37:39:5e",6,8)
+CWLAP:(4,"STORYLINK",-84,"b4:fc:75:10:f2:b8",11,-6)
+CWLAP:(2,"RKR",-79,"00:08:9f:cc:d0:9c",11,-17)
+CWLAP:(4,"leeky-ap0",-73,"6c:19:8f:d0:9c:98",11,-14)
OK


내장된 IP와 MAC을 확인해 보자
AT+CIFSR
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:d6:d5:fa"
+CIFSR:STAIP,"0.0.0.0"
+CIFSR:STAMAC,"18:fe:34:d6:d5:fa"
OK

여기 까지 잘 되면 ESP-12E  모듈은 일단 OK다.
이제 하드웨어와 소프웨어를 만들어야 한다.

ESP-12E WiFi 센서의 하드웨어
 
 
시험용 하드웨어는 ESP-12E WiFi 모듈과 DHT22 센서를 사용한다.
좌측의 USB to Serial은 avrtools.co.kr에서 판매하는 USB2Serial V2.0 이다.
 
VCC는 LCD를 추가하여 3.3V를 만들어 공급한다.
RXD는 USB2serial의 TXD로, TXD는 USB2serial의 RXD로 연결한다.
 
DHT22 센서는 ESP-12E 모듈의 GPIO 2 로 연결한다.
ESP-12E 모듈의 EN(CH-PD)은 VCC로 연결한다.
ESP-12E 모듈의 GPIO 0은 GND로 연결한다. (펌웨어를 굽지 않을 때는 뺀다)

Adafruit's Huzzah ESP 기판 https://www.adafruit.com/product/2471
 
 
Adafruit의 Huzza ESP 기판은 ESP-12E 모듈이 설치되어 있다. (USB 9.98)
모듈은 NodeMCU의 Lua interpreter (NodeMCU 버전 0.9.5) 펌웨어로 구워있다.
모듈 규격: NodeMCU's Lua interpreter (NodeMCU 0.9.5 build 20150318)
 
아래 소스를 복사하여 아두이노 스켓치에 넣고 컴파일 한다.
AP SSID, AP password, AIO name, AIO key를 수정해야 한다.
라이브러리 Adafruit_MQTT, ESP8266wifi, Adafruit_MQTT_Client는 첨부파일 #1
 
ESP-12E WiFi 센서의 소스
이 소스는 아두이노 스케치에서 ESP-01은 General ESP8266 Module로 선택하고,
ESP-12E는 NodeMCU 1.0 (ESP-12E Module)을 선택하고 컴파일해야 한다.
Adafruit's Huzzah ESP board의 소스: Adafruit ESP8266 Sensor Module

  /**************************************************
  Adafruit invests time and resources providing this open source code,
  please support Adafruit and open-source hardware by purchasing
  products from Adafruit!
  Written by Tony DiCola for Adafruit Industries.
  MIT license, all text above must be included in any redistribution
 ****************************************************/
// Libraries
#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include "DHT.h"
 
// DHT sensor
#define DHTPIN 2
#define DHTTYPE DHT22
 
// 센서와 연결하는 AP의 ID와 password를 수정해야 한다
#define WLAN_SSID       "your AP name"
#define WLAN_PASS       "your password"
 
// Adafruit IO
#define AIO_SERVER      "io.adafruit.com"
#define AIO_SERVERPORT  1883

// AIO_USERNAME과 AIO_KEY를 수정해야 한다
#define AIO_USERNAME    "your name herer"
#define AIO_KEY         "your key for dash board"
 
DHT dht(DHTPIN, DHTTYPE, 5);  // DHT sensor
void connect();  // Create an ESP8266 WiFiClient class to connect to the MQTT server.
WiFiClient client;  // Store the MQTT server, client ID, username, and password in flash memory.
const char MQTT_SERVER[] PROGMEM    = AIO_SERVER;
 
// alternatively you can manually set this to a GUID or other random value).
const char MQTT_CLIENTID[] PROGMEM  = AIO_KEY __DATE__ __TIME__;
const char MQTT_USERNAME[] PROGMEM  = AIO_USERNAME;
const char MQTT_PASSWORD[] PROGMEM  = AIO_KEY;
 
// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.
Adafruit_MQTT_Client mqtt(&client, MQTT_SERVER, AIO_SERVERPORT, MQTT_CLIENTID, MQTT_USERNAME, MQTT_PASSWORD);
 
// Setup feeds for temperature & humidity
const char TEMPERATURE_FEED[] PROGMEM = AIO_USERNAME "/feeds/temperature";
Adafruit_MQTT_Publish temperature = Adafruit_MQTT_Publish(&mqtt, TEMPERATURE_FEED);
const char HUMIDITY_FEED[] PROGMEM = AIO_USERNAME "/feeds/humidity";
Adafruit_MQTT_Publish humidity = Adafruit_MQTT_Publish(&mqtt, HUMIDITY_FEED);
 
void setup() {
  // Init sensor
  dht.begin();
  Serial.begin(115200);
  Serial.println(F("Adafruit IO Example"));
 
  // Connect to WiFi access point.
  Serial.println(); Serial.println();
  delay(10);
  Serial.print(F("Connecting to "));
  Serial.println(WLAN_SSID);
 
  WiFi.begin(WLAN_SSID, WLAN_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(F("."));
  }

  Serial.println();
  Serial.println(F("WiFi connected"));
  Serial.println(F("IP address: "));
  Serial.println(WiFi.localIP());
  // connect to adafruit io
  connect();
}
 
void loop() {
  // ping adafruit io a few times to make sure we remain connected
  if(! mqtt.ping(3)) {
    // reconnect to adafruit io
    if(! mqtt.connected())
      connect();
  }
  // Grab the current state of the sensor
  float humidity_data = (int)dht.readHumidity();
  float temperature_data = (int)dht.readTemperature();
 
  // Publish data
  if (! temperature.publish(temperature_data))
    Serial.println(F("Failed to publish temperature"));
  else {
    Serial.print(F("Temp: "));
    Serial.println(temperature_data);
  }
 
  if (! humidity.publish(humidity_data))
    Serial.println(F("Failed to publish humidity"));
  else {
    Serial.print(F("Humi: "));
    Serial.println(humidity_data);
  }  
  delay(10000);   // Repeat every 10 seconds
}
 
// connect to adafruit io via MQTT
void connect() {
  Serial.print(F("Connecting to Adafruit IO... "));
  int8_t ret;
  while ((ret = mqtt.connect()) != 0) {
    switch (ret) {
      case 1: Serial.println(F("Wrong protocol")); break;
      case 2: Serial.println(F("ID rejected")); break;
      case 3: Serial.println(F("Server unavail")); break;
      case 4: Serial.println(F("Bad user/pass")); break;
      case 5: Serial.println(F("Not authed")); break;
      case 6: Serial.println(F("Failed to subscribe")); break;
      default: Serial.println(F("Connection failed")); break;
    }
    if(ret >= 0)
      mqtt.disconnect();
    Serial.println(F("Retrying connection..."));
    delay(5000);
  }
  Serial.println(F("Adafruit IO Connected!"));
}

ESP_12E 펌웨어 업로드
ESP-12E 모듈은 아두이노 스케치의 툴 -> 모듈 -> Generic ESP8266 Module을 선택한다.
직렬통신 포트를 설정하고 속도는 115200 bps로 통신창을 열어 놓는다. 
펌웨어를 업로드하기 전에 ESP-12E 모듈의 RST 핀을 GND로 연결한다
펌웨어 굽기(Upload)를 누른다.
 
업로드가 성공하면 통신창에서 ESP-12E 모듈이 AP로 연결하는 것을 볼 수 있다.
 
 
Dash Board 만들기
io.adafruit.com은 고정 IP 데이터 서버가 없는 사용자를 위한 데이터 클라우드 서비스가 있다.
가입을 하고, 계정으로 로그인하여 Dash Board를 만든 다음 login name과 key 받는다.

Adafruit Huzzah 프로젝트를 보고 ESP8266 Sensor Module을 만든다.
자신의 계기판을 만들고, 편집창 우측의 자물쇄 단추 누르면 공개로 변경된다.
이제 자신의 센서값을 인터넷으로 볼 수 있다. http://io.adafruit.com/acleds/

io.adafruit.com 서버로 가면 센서 자료가 들어오는 것을 확인할 수 있다.
 

USD 6.27 이면 별도의 MPU 없이 센서의 값을 읽고,  공유기(AP)로 연결해서 웹서버를 만들 수 있다.
혹은 클라우드 서버로 데이터를 전송하면, 전용 혹은 공개로 인터넷에서 센서값을 읽을 수 있다.

이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.
Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
 AVRTOOLS™
   
윗글 ESP-12E SDK 0.9.5 사용방법
아래글 Arduino DS3231 RTC to 5110 LCD
    N         제목    글쓴이 작성일 조회 추천
아듀이노 응용소스 게시판 avrtools™ 2016/02/05 (금) 176 0
25 ESP8266 MQTT Relay Control avrtools™ 2016/03/03 (목) 257 0
24 2 채널 ESP8266 WiFi Switch의 제작 avrtools™ 2016/02/25 (목) 291 0
23 ESP-12E SDK 0.9.5 사용방법 avrtools™ 2016/02/18 (목) 350 0
22 ESP8266 ESP-12E WiFi 센서 서버의 제작 avrtools™ 2016/02/17 (수) 334 0
21 Arduino DS3231 RTC to 5110 LCD avrtools™ 2016/02/16 (화) 402 0
20 ESP8266 Weather Server의 제작 avrtools™ 2016/02/15 (월) 374 0
19 Arduino 온습도 센서 DHT-22 avrtools™ 2016/02/12 (금) 322 0
18 ESP8266 WiFi 펌웨어 업그레이드 avrtools™ 2016/02/11 (목) 531 0
17 Arduion ESP8266 WiFi 설정 방법 avrtools™ 2016/02/10 (수) 458 0
16 Arduino 정전용량식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 275 0
15 Arduino 전극식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 356 0
14 Arduino 정밀 전력계의 ADC avrtools™ 2016/02/02 (화) 518 0
13 Arduino 정밀 전력계의 LPF avrtools™ 2016/02/02 (화) 389 0
12 Ardunio 16비트 ADC Data Logger avrtools™ 2016/01/31 (일) 266 0
11 Arduino AC/DC Power Meter의 제작 avrtools™ 2016/01/29 (금) 486 0
10 Arduino 교류 역율계(power factor)의 제작 avrtools™ 2016/01/29 (금) 360 0
9 Arduino DUE based DDS Synthesizer avrtools™ 2016/01/24 (일) 219 0
8 QTouch ADC 근접검출 스위치 avrtools™ 2016/01/21 (목) 383 0
7 Arduino 음성인식 Speech/Voice Recognition avrtools™ 2013/09/14 (토) 1654 0
6 Arduino Uno로 만드는 3축 CNC avrtools™ 2013/09/10 (화) 2528 0
5 Arduino로 만드는 mySpectral 분광기 avrtools™ 2013/09/04 (수) 2067 0
4 8채널 12비트 ADC MCP3208 오실로스코프 avrtools™ 2012/03/29 (목) 461 0
3 교류저항 (impedance) 측정 AD5933 avrtools™ 2012/03/17 (토) 415 0
2 Arduino DMX512 수신기 제작 avrtools™ 2012/03/15 (목) 3629 0
1 TSL2561 조도 측정기의 제작 avrtools™ 2011/09/11 (일) 2615 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0