ESP8266 보드가 포함된 Arduino 호환 보드를 활용해 서보 모터(servo motor)를 구동한다.
▶ 이 가이드를 따라하면
- Arduino D1 Wifi 버전으로 WiFi 통신을 통해 서보 모터 제어를 테스트해볼 수 있다.
▶ 부품 설명 및 회로 구성
이미 소개한 적이 있는 WeMos D1 WiFi 아두이노 호환 보드이다( https://bbangpan.tistory.com/93 ) 해당 가이드대로 필요한 보드 라이브러리를 다운받자. 그리고 역시 소개한 바 있는 서보 모터 ( https://bbangpan.tistory.com/6 )를 통해 간단하게 제어해보자.
조금 다른 것은 이 제어를 D1 보드의 ESP8266모듈과 같은 WiFi AP에 연결되어있는 휴대폰의 브라우저로 할 수 있다는 점이다. (지난 시간에 시험했던 D1 WiFi 버전의 웹서버 기능을 응용해보자)
WeMos D1 호환보드 라이브러리를 설치했다고 가정하고 아래 소스를 컴파일해서 업로드 해보자.
특정 URL로 접속하면 Servo Motor를 특정 각도로 만들어 준다. 접속 URL은 시리얼 모터를 통해 나온 IP를 통해 파악이 가능하다.
Github 주소 : https://github.com/bbangpan/bbangpan.com/blob/master/neibc_d1wifi_servocon.ino
/* Originally posted on www.bbangpan.com
Program Description: Mobile browser controlled servo motor on WeMos D1 WiFi board
Tested on : Arduino 1.8.5, Arduino Compatible D1 WiFi, Servo Motor
Copyright (c) 2019 www.bbangpan.com. All rights reserved.
This program can be used for any non-commercial purpose freely. */
#include <Servo.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char* ssid = "자신의 SSID를 넣는다";
const char* pass = "자신의 AP 암호를 넣는다";
ESP8266WebServer server(80);
Servo myservo;
void setup(void){
Serial.begin(115200);
Serial.println(".");
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", [](){
server.send(200, "text/html", "<h1>ON or OFF : <a href=\"/on\">ON</a> or <a href=\"/on\">OFF</a> or URL : /s?degree=90</h1>");
});
server.on("/s", [](){
String sdegree = server.arg("degree");
int degree = sdegree.toInt();
Serial.print("degree: ");
Serial.println(degree);
myservo.write(degree);
server.send(200, "text/plain", String(degree, DEC));
});
server.on("/on", [](){
Serial.println("ON");
myservo.write(180);
server.send(200, "text/html", "<h1>ON! : <a href=\"/off\">OFF</a> or URL : /s?degree=90 </h1>");
});
server.on("/off", [](){
Serial.println("OFF");
myservo.write(0);
server.send(200, "text/html", "<h1>OFF! : <a href=\"/on\">ON</a> or URL : /s?degree=90 </h1>");
});
server.begin();
Serial.println("HTTP server started");
myservo.attach(D5); // Servo attached to D5 pin
myservo.write(0);
}
void loop(void){
server.handleClient();
}
해당 보드와 같은 AP에 연결된 휴대폰으로 http://192.168.0.15/ (위 화면에 표기된 IP address 참조)를 입력한다.
이렇게 해당 페이지에 접속하면 간단히 ON, OFF로 된 링크를 눌러 서보 모터를 제어할 수 있다
https://www.youtube.com/watch?v=ZgsQsL4du-U
참고로 http://IP주소/s?degree=각도 는 해당 각도로 돌려주는 코드가 구현 되어 있다.
사실은 위 할당 IP를 얻으려면 시리얼 모니터(아두이노 개발툴의 툴 메뉴)를 사용해야 하지만, ESP8266내의 http client 예시를 통해 자신이 운영하는 인터넷 웹 서버로 전송한다던가, WiFi AP의 IP매핑 기능(외부 IP -> 내부 사설 IP) 등을 사용하여 휴대폰을 통해 외부에서도 집안에 접속해 무언가를 제어할 수 있게 만들 수 있다. ESP 8266이 자체 보유된 Arduino 호환 보드의 장점이다. 일전에 소개했던 D1 mini에서도 위 코드와 조합 그대로 사용이 가능하다.
▶ 구매 가이드
WeMos D1 WiFi : https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20190731080827&SearchText=D1+WiFi&switch_new_app=y ($3)
▶ 강의 키워드
WeMos D1 WiFi, 아두이노, ESP8266, 서보 모터, servo motor, 무선 제어, 휴대폰, 브라우저, 스마트폰
'아두이노 응용' 카테고리의 다른 글
[아두이노] cds sensor와 servo motor로 t-rex game 스페이스키 자동으로 누르게하기 (0) | 2020.04.09 |
---|---|
[아두이노/Blynk] 스마트폰 앱으로 인터넷을 통해 Arduino를 제어해보자 (0) | 2019.08.07 |
[아두이노/초음파센서/숫자LED] Arduino 초음파 센서와 TM1637 4 digit 거리 표시기 (0) | 2019.08.04 |
[응용/접근 감지 전등] 초음파 센서를 통해 전등을 켜보자 (0) | 2016.04.19 |
[응용/전자기장검출] 전자기장 감지기(EMF detector)를 만들어보자 (2) | 2015.11.11 |
[프로젝트] HM-10모듈과 수은전지+배터리 홀더로 만드는 초소형 iBeacon (10) | 2015.07.17 |
[프로젝트] 전자시계 / 실시간 시계 모듈(RTC breakout/DS1307 or DS3231)과 4 digits 디스플레이로 구현하자 (0) | 2015.04.17 |
[프로젝트] 간단한 단거리 무선 통신(433/315Mhz)으로 구현하는 실내외 원격 온습도계 디스플레이 프로젝트 (2) | 2015.02.09 |