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








 게시판 검색





 
 
회원등록 비번분실


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

      거래은행 바로가기
 
 Sensor Applications
아듀이노 응용소스
작성자 avrtools™        
작성일 2016/02/10
ㆍ추천: 0  ㆍ조회: 378   
  Arduion ESP8266 WiFi 설정 방법
아두이노 ESP8266 WiFi 설정 방법
참조 : Arduino ESP8266 Tutorial and Web Server Monitor Example
 
요즘 아두이노 WiFi 모듈을 만원 이하로 구입할 수 있다.
4,600원 짜리 모듈이라고 우습게 보지마라 !!!
 
80MHz 32비트 RISC Core에 64K ROM, 64K SRAM이 있다.
10 비트 ADC등 웬만한 주변장치는 다 가지고 있으며,
WiFi 802.11 b/g/n과 WPA2를 지원한다. 
 
직렬포트 AT+ 명령을 사용하여 WiFi AP로 연결하거나 AP로 작동시킬 수도 있다.
ESP8266은 문자로 웹서버나 무선 client로 즉시 사용할 수 있는 펌웨어가 들어있다.
WiFi 모듈의 가격이 낮은 이유는 AP 칩이 스마트폰에 대량으로 사용되고 있기 때문이다.
 
ESP8266-ESP01 모듈 (USD 2.16)
 

나는 ESP8266 WiFi 칩을 $4에 샀다고 많은 사람들에게 들었다.
ESP8266 모듈을 친구에게 들었을 때, 처음에는 무관심했지만, 
나도 eBay에서 두개를 주문했다. 처음에는 ESP8266의 작업이 느렸다.
 
나의 OwnCloud 서버를 위한 녹색/적색 표시기를 만들기로 판단했다
이 프로젝트는 나중에 조금씩 커지면 추가된 서비스들이 모인다고 예상했다
나는 이미 ESP8266과 아두이노의 작업이 크게 시작됐다고 상상했다.

프로젝트의 첫 단계는 하드웨어의 설정이다. ESP8266의 핀 배열이 필요하다.
ESP8266의 ESP01 기판의 개정판 1.0은 2x4 핀을 사용했다.
VCC (+3.3v), GND, TX, RX, RESET, 2개의 IO 핀과 특별한 CH-PD 핀을 포함한다.
 
ESP8266 커넥터의 핀 배열 (구입비용 4,600원)
 
ESP8266 기판의 회로도
  
 
아두이노 Nano V3.0 기판
 
아두이노 Nano V3 .0은 다음과 같이 변환회로와 LDO를 추가해야 한다.
로직 레벨의 변환이 중요하다고 보고하고 있다. 아래 연결 회로를 보라.
 
아두이노 직렬포트와 3.3V 전원을 ESP8266으로 연결하는 방법
  
 
아두이노의 Nano의 5V TXD 레벨은 저항 분할로 낮춘 3.3V 레벨로 WiFi 칩에 넣는다.
ESP8266은 3.3V가 요구되므로 중요하다. 억지로 5V를 직접 연결하면 안된다.
 
아두이노 Nano V3.0은 기판에 3.3V 100mA regulator가 들어 있지만.
Nano의 전류는 100mA 까지이므로 300mA를 소비하는 ESP8266은 연결할 수 없다.
 
급한 경우에 잠시 ESP2866은 1.8V 까지 작동하므로 Nano의 3.3V를 쓸수 있다.
그러나 계속 사용하거나 방문자수가 많을 경우 Nano의 3.3V 전원이 발열된다.
 
또한 3.3V 전원이 있어도 아두이노의 출력신호는 5 V이므로 주의해야 한다.
ESP8266의 직렬포트 입력 RXD에는 3.3V로 낮춘 신호를 연결해야 한다.
ESP8266의 TXD는 3.3V 출력이므로 5V 입력 핀으로 직접 연결이 가능하다. 
 
아두이노 M328-mini-V2.0 기판
● 30 핀 헤더 (핀 배열은 Arduino Nano와 동일)
● 6 핀 ISP 커넥터 장착 (USBISP-mkII로 일반 펌웨어를 구울 수 있음)
● VCC 점퍼 (5V 혹은 3.3V로 MPU의 전원전압과 로직을 동시에 전환)
● 500mA 3.3V LDO (5V 입력시 3.3V 핀으로 출력)
● 500mA Over current Protector (자동 회복)
● 500mA 5.0V LDO (Vin 입력시 VCC 핀으로 출력)
● 5 핀 USB2serial 연결 커넥터 (USB2Serial을 착탈)
● 시리즈 최상급 ATmega328P-AU
● 정밀급 Murata 16 MHz SMD Resonator
  
동일한 3.3V 로직 로직의 두 기판은 바로 연결할 수 있다.
 
 
M328-mini-V2.0 기판은 전원과 로직을 3.3V 혹은 5V로 전환할 수 있다.
그러므로 두 기판의 RXD와 TXD는 직접 연결할 수 있다.
 
아두이노에서 TXD에서 나가는 제어명령은 ESP8266의 RXD로 연결하고,
ESP8266의 TXD에서 들어오는 응답은 아두이노의 RXD로 연결한다.
 
ESP8266 직렬포트 명령
아듀이노와 ESP8266을 연결하고, 아듀이노 스켓치의 통신창을 열고 명령을 보낼 수 있다.  
ESP8266으로 나가는 직렬포트 명령의 이해는 ESP8266을 놓고 시작해야 한다.
 
첫째로 우리는 어떻게 칩을 시작하는지 알아야 한다.
초기화(reset) 명령을 송신한다. AT+RST
 
다음은 칩을 무선 사용자(client) 혹은 연결점(access point) 중 무었이든 원하는 설정을 할 것이다.
이 경우에 사용자로 할 것인지 아니면 web server로 할 것 인지 보라.
만일 무선 기지국 (access point)을 원한다면 모드 2와 추가로 다른 명령이 필요하다.
일단 사용자(client)로 설정한다. AT+CWMODE=1
 
만일 직렬포트 연결을 사용하여 칩으로 송신하려면, 우리가 무었을 하려든지 이것을 먼저하라.
ESP8266은 SSID를 배포하는 영역에서 아래의 무선 연결점(AP)의 명령들을 모두 지원한다.  
연결점(AP)으로 설정한다. AT+CWLAP

그곳에 무선 연결점(AP)이 없이 망(network)의 연결이 필요하면, 자신이 배포를 정한다
다음 명령은 연결을 단순화하는 SSID를 재배치한다. 
연결 망(network)에서 무선망의 이름과 비밀번호(password)는 WPA 열쇄(key)가 사용된다.
이름(ssid)과 비밀번호(password)를 설정한다. AT+CWJAP=”SSID”,”PASSWORD”

이제 연결하려면, 직렬통신 터미널이 필요하다.
이 명령으로 WiFi 모듈의 현재 IP를 물어 볼수 있다.  
AT+CWLIF

멋있다 ll! 이제 우리는 webpage의 질문단계(query)가 준비되었다 !
첫번째 생각은 우리는 webserver의 연결 성립이 요구된다.
 
 IP 주소를 확실하게 재배치 하려면 다음의 명령을 쓴다.
이 경우 표준(ISSL/HTTPS는 제외) HTTP를 사용하는 포트는 80 이다.
(모든 http 서버 즉 홈페이지는 tcp 포트 80을 사용한다. 개인 파일서버에서 8080을 쓰기도 한다)
 
만일 이것을 만들려면, 아래의 후속(post) 명령으로 만든다.
다음 주소로 칩의 IP를 시작한다. AT+CIPSTART=”TCP”,”192.168.2.100″, 80

IP 재배치 다음에는 많은 문자를 보내는 명령으로 WiFi 모듈에게 일을 시켜야 한다.
이 명령은 다음과 같이 지시한다.
AT+CIPSEND=50

마지막으로 서버에 HTTP 반대 명령을 시킬 수도 있다.
앞에서 지시한 숫자 50은 server로 부터 받는 결과의 총 문자 수이다.
50 이 될때 까지 한 문자 씩 계수한다, 그리고 마지막 연속처리(sequence)는 포함하지 않는다.
 
HTTP/1.0 연결상태를 묻는다. GET /status.html HTTP/1.0
질문하는 IP 주소를 보낸다. Host: 192.168.2.100
이 명령으로 webserver로 부터 결과를 받게 될 것이다.
 
마지막 남은 단계는 사람들에게 알맞게 해야 한다.
이 명령으로 연결을 끊는다. AT+CIPCLOSE

Arduino Code
이것은 멋진 자료다. 이제는 아두이노 코드를 쓰기 위해 안쪽으로 가 보자.
주의 : 아누이노 스켓치에서 아두이노 펌웨어를 구울때, ESP8266 모듈은 연결하면 안된다.
 
아두이노 Nano v3.0 에서 ESP8266 모듈을 웹서버로 만드는 소스.
// 나의 웹서버다, IP 주소를 다시 준다.
#define DST_IP "192.168.2.100"

// 아두이노 기판의 LED 핀은 D13 핀이다.
int led = 13;

// 아두이노 기판의 초기화
 void setup(){
  // LED가 연결된 D13 핀을 출력으로 설정
  pinMode(led,OUTPUT);
  // ESP8266 모듈과 통신하는 속도는 9600 bps다
  Serial.begin(9600);
 
 // D13 핀의 LED를 깜빡인다.
  blinkcode ();
  // ESP8266을 리셋한다 (웹서버와 직렬포트의 연결을 시작한다)
  Serial.println("AT+RST");
  // 리셋된 WiFi 모듈의 직렬통신 시작을 기다린다.
  delay(800);
 
  // client 방식으로 전환한다.
  Serial.println("AT+CWMODE=1");
 
  // WiFi 모듈을 무선AP로 연결할 때 사용하는 SSID와 비밀번호를 변경한다.
  Serial.println("AT+CWJAP="SSID","PASSWORD"");
  // 다시 한번 더 LED를 깜빡인다.
  blinkcode ();
}

 // 웹서버를 연결한다
void loop(){
  // IP 주소와 TCP 포트번호를 설정한다
  // AT+CPISTART="TCP","192.168.2.100",80
  String cmd = "AT+CIPSTART="TCP","";
  cmd += DST_IP;  // 첫줄에서 정한 웹서버에서 사용할 IP 주소를 보낸다.
  cmd += "",80";  // 웹서버의 연결포트를 80을 보낸다.
  Serial.println(cmd);

  // 연결될 때 까지 0.3초를 대기한다
  delay(300);

  // 웹서버에서 표시할 내용을 바꾼다
  cmd = "GET /status.html HTTP/1.0 ";
  cmd += "Host: 192.168.2.100 ";

  // ESP8266은 GET request의 문자수를 필요로 한다
  Serial.print("AT+CIPSEND=");
  Serial.println(cmd.length());

  // 연결된 esp8266의 prompt는 >로 설정한다.
  if (Serial.find(">")) {    // prompt >가 들어 오는지 점검
  Serial.println(cmd);    // >가 들어왔으면 문자를 받는다(GET 요청)
  }
 else{
  Serial.println("AT+CIPCLOSE");  // 웹서버에서 >가 없으면 종료한다
  }
 
  // 웹서버가 받은 문자를 확인한다. 문자는 원하는 단어로 바꿀 수 있다.
  if (Serial.find("YES12321")){
  // 지정된 단어가 들어오면 LED를 켠다,

  digitalWrite(led,HIGH);  // 다른 핀에 relay를 연결하면 전기장치를 제어할 수 있다
  }s
 
 else{
     // 만일 단어가 없으면 0.5초 뒤에 LED를 끈다.
    delay(500);
    digitalWrite(led,LOW);  // 다른 핀에 relay를 연결하면 전기장치를 제어할 수 있다
  }
 // 1초를 기다린 다음 웹서버와 직렬포트의 연결을 끊는다.
 delay(1000);
 Serial.println("AT+CIPCLOSE");

 // 다시 시작하기 전에 5초를 기다린다
 delay (5000);
} // loop()의 끝,  loop()의 첫줄부터 다시 실행한다.
 
// 사용자 보조 함수 (사용자의 주함수에서 호출한다)
void blinkcode (){
   // D13 핀에 연결된 LED를 깜빡인다
   int i;
   for (i = 1; i <= 10; i++){
     delay (100);
     digitalWrite(led,HIGH);
     delay (100);
     digitalWrite(led,LOW);
   }
}
// 프로그램 끝
 
평가
ESP-01 모듈은 저가 개발 및 학습용으로 펌웨어가 완벽하지 않다.
또한 AT 펌웨어는 부팅시 모든 포트를 흔들기 때문에, 신뢰성 문제가 더욱 심각하다.
ESP-01 모듈은 부팅시 출력변동으로 문제가 되는 제품에 사용하면 안된다. 
 
또한 EMI 수준이 FCC 인증을 통과하지 않은 모듈이다.
판매상품으로 개발하고 전자파 인증을 받으려면, 실드된 ESP-12E를 사용해야 한다.
혹은 ESP8266 칩을 기판에 직접 장착하고, 실드 커버로 덮어야 한다.
 
이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.
Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
   
윗글 ESP8266 WiFi 펌웨어 업그레이드
아래글 Arduino 정전용량식 수분센서의 분석과 제작
    N         제목    글쓴이 작성일 조회 추천
아듀이노 응용소스 게시판 avrtools™ 2016/02/05 (금) 151 0
25 ESP8266 MQTT Relay Control avrtools™ 2016/03/03 (목) 215 0
24 2 채널 ESP8266 WiFi Switch의 제작 avrtools™ 2016/02/25 (목) 238 0
23 ESP-12E SDK 0.9.5 사용방법 avrtools™ 2016/02/18 (목) 292 0
22 ESP8266 ESP-12E WiFi 센서 서버의 제작 avrtools™ 2016/02/17 (수) 276 0
21 Arduino DS3231 RTC to 5110 LCD avrtools™ 2016/02/16 (화) 342 0
20 ESP8266 Weather Server의 제작 avrtools™ 2016/02/15 (월) 310 0
19 Arduino 온습도 센서 DHT-22 avrtools™ 2016/02/12 (금) 279 0
18 ESP8266 WiFi 펌웨어 업그레이드 avrtools™ 2016/02/11 (목) 472 0
17 Arduion ESP8266 WiFi 설정 방법 avrtools™ 2016/02/10 (수) 378 0
16 Arduino 정전용량식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 233 0
15 Arduino 전극식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 304 0
14 Arduino 정밀 전력계의 ADC avrtools™ 2016/02/02 (화) 396 0
13 Arduino 정밀 전력계의 LPF avrtools™ 2016/02/02 (화) 341 0
12 Ardunio 16비트 ADC Data Logger avrtools™ 2016/01/31 (일) 220 0
11 Arduino AC/DC Power Meter의 제작 avrtools™ 2016/01/29 (금) 360 0
10 Arduino 교류 역율계(power factor)의 제작 avrtools™ 2016/01/29 (금) 308 0
9 Arduino DUE based DDS Synthesizer avrtools™ 2016/01/24 (일) 187 0
8 QTouch ADC 근접검출 스위치 avrtools™ 2016/01/21 (목) 323 0
7 Arduino 음성인식 Speech/Voice Recognition avrtools™ 2013/09/14 (토) 1616 0
6 Arduino Uno로 만드는 3축 CNC avrtools™ 2013/09/10 (화) 2461 0
5 Arduino로 만드는 mySpectral 분광기 avrtools™ 2013/09/04 (수) 2012 0
4 8채널 12비트 ADC MCP3208 오실로스코프 avrtools™ 2012/03/29 (목) 417 0
3 교류저항 (impedance) 측정 AD5933 avrtools™ 2012/03/17 (토) 338 0
2 Arduino DMX512 수신기 제작 avrtools™ 2012/03/15 (목) 3588 0
1 TSL2561 조도 측정기의 제작 avrtools™ 2011/09/11 (일) 2566 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