最近暑假在老家玩esp8266 ,想给家里院子大门装个物联网的舵机,用于控制开锁,于是买了一个8266开发板和一个esp-01s。
然后跟着这个up的视频:教你几块钱制作一个物联网开关灯教程esp01s继电器6/5
和http://t.csdn.cn/msQo5这篇文章用8266开发板做完了
如果目标是完成简单的控制,看以上一个视频和这文章足够了 以下内容为上面的拓展
但是之后我还想用esp8266做其他的事情,于是就在想能不能拿esp-01s完成舵机控制
于是又搜到了http://t.csdn.cn/ZgVJX查到了这张图
]
于是在上面提到的第一个文章的代码基础上我做了一点修改
1. 改为三个按键,一个滑块
2.引脚改为 2(由上图可知esp-01s引脚 io2就是GPIO2)
点灯科技的界面就照这样设计 ps:max-min 范围为0~180度
以下是完整代码
================================esp8266开发板完成舵机控制
‘’’
#define BLINKER_MIOT_LIGHT
#define BLINKER_WIFI
#include <Servo.h>
#include <Blinker.h>
char auth[] = " ";//秘钥
char ssid[] = " ";//wifi名称
char pswd[] = " ";//wifi密码
// 新建组件对象
BlinkerButton Button1(“btn-max”); //位置1 按钮 数据键名
BlinkerButton Button2(“btn-min”); //位置2 按钮 数据键名
BlinkerButton Button3(“btn-pw”); //循环模式 按钮 数据键名 开关模式
Servo myservo;
BlinkerSlider Slider1(“max-min”); //位置 滑块 数据键名 范围1-180
bool xunhuan_mode = false;
int servo_max=175,servo_min=5,ser_num,servo_num=90;
void button1_callback(const String & state) { //位置1按钮
BLINKER_LOG("get button state: ", servo_max);
myservo.write(servo_max);
Blinker.vibrate();
}
void button2_callback(const String & state) { //位置2按钮
BLINKER_LOG("get button state: ", servo_min);
myservo.write(servo_min);
Blinker.vibrate();
}
void button3_callback(const String & state) { //位置3按钮
BLINKER_LOG("get button state: ", servo_num);
myservo.write(servo_num);
Blinker.vibrate();
}
void slider1_callback(int32_t value)
{
servo_num = value;
Slider1.color(“#1E90FF”);
Slider1.print();
BLINKER_LOG("get slider value: ", value);
}
void setup() {
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
Button2.attach(button2_callback);
Button3.attach(button3_callback);
Slider1.attach(slider1_callback);
myservo.attach(2); //servo.attach():设置舵机数据引脚
myservo.write(10); //servo.write():设置转动角度
}
void loop() {
Blinker.run();
}
‘’’
================================分割线
还有电源问题,一般网上的方案都是充电宝,电池给整个系统供电什么的。但我觉得这样不够持久,没事 了还得给电池充电很麻烦,于是改出以下方案
某宝 购买一个 220v转12V的变压器 20RMB
一个 LM2596S带电压显示 DC_DC直流可调降压模块将12V稳到5V 8RMB
然后220v转12v接到LM2596s 输出5V 给舵机和 ESP01-s继电器模块供电(这里用继电器模块只是为了提供3.3V的电压,若读值有其他方法请尽情尝试)
esp01-s的io2引脚用公母线链接到舵机信号线上
根据这张图,用公母线在esp01-s继电器引出 3.3v ,GND,和EN引脚连接到esp01-s(这里多检查几次,很容易出错)
照着文章上面的内容完成点灯app配套设置与arduino代码编译下载,即可用手机完成esp01-s对舵机的控制。
下面的图片仅供参考(看不明白就不看了,自己琢磨一个出来)