ESP8266 (ESP-WROOM-02)으로 서보 제어
개요
ESP8266 (이하 WROOM02)으로 서보 제어
소개
이번에 사용한 서보는 SG90이라는 녀석. 아키즈키에서 400엔.
htp // 아키즈키덴시. 코 m/분 g/g/gM-08761/
키
값
PWM 사이클
20 밀리 초
제어 펄스
0.5~2.4 밀리초
제어각
±약 90°(180°)
배선
차 : GND 적색 : 전원 [+] 주황색 : 제어 신호 [JR 타입]
토크
1.8 kgf・cm
작동 속도
0.1초/60도
작동 전압
4.8V(~5V)
온도 범위
0℃ ~ 55℃
외형치수
22.2 x 11.8 x 31mm
무게
9g
4.8V 드라이브이지만 WROOM02 용 3.3V에서 어쨌든 작동했습니다.
(전원 5V, 제어 신호 3.3V에서는 동작하지 않습니다.)
데이터 시트는 이쪽
htp // 아키즈키덴시. 이 m/두 w응아 d/ds/토우 rp로/SG90_아. pdf
그 자체 즈바리의 「Servo」라이브러리가 있습니다만, 거동을 이해하고 싶기 때문에, 이번은 스스로 작성해 보겠습니다.
데이터 시트에 따르면, 20msec주기 (50Hz)에서 제어 펄스 (PWM)를 보내면 좋다.
여기는 바로 Ticker의 차례입니다.
"ESP8266 (ESP-WROOM-02)의 편리한 라이브러리 요약 (Ticker)"
스케치
// SG90
// http://akizukidenshi.com/download/ds/towerpro/SG90_a.pdf
//
// Position "0" ( 1.45 ms pulse) is middle,
// "90" ( - 2.4 ms pulse) is all the way to the right,
// "-90" ( - 0.5 ms pulse) is all the way left.
#include <Ticker.h>
const int deg000 = 500; // micro sec.
const int deg180 = 2400; // micro sec.
int microSec = deg000;
#define PWM_OUT 4
Ticker serv1;
void setup() {
Serial.begin(115200);
Serial.println();
pinMode(PWM_OUT, OUTPUT);
// 20 msec
serv1.attach_ms(20, pwm);
}
void pwm() {
digitalWrite(PWM_OUT, HIGH);
delayMicroseconds(microSec);
digitalWrite(PWM_OUT, LOW);
}
void loop() {
if (0 < Serial.available()) {
delay(10);
int deg = serialReadAsInt();
if (0 <= deg && deg <= 180) {
microSec = deg000 + deg / 180.0 * (deg180 - deg000);
}
Serial.print(deg);
Serial.print(" : ");
Serial.println(microSec);
}
}
int serialReadAsInt() {
char c[9] = "0";
for (int i = 0; i < 8; i++) {
c[i] = Serial.read();
if (c[i] == '\0') {
break;
}
}
return atoi( c );
}
동작 확인
도구 - 직렬 모니터를 열고 0 - 180 각도를 보냅니다.
서보가 지리지리 가고 있습니다만, 좋은 느낌으로 제어할 수 있는 것 같습니다.
요약
참고 자료
「건축 발명 공작 세미나 2008: Arduino 서보 제어」
Reference
이 문제에 관하여(ESP8266 (ESP-WROOM-02)으로 서보 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/exabugs/items/1c454d3d31d7561dcdd0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)