-
2021-10-31 21:50:04
#define BLINKER_WIFI #define BLINKER_MIOT_LIGHT #include <Blinker.h> #include <Servo.h> Servo myservo;//定义舵机 char auth[] = "0b1469ebbfa5"; //点灯Key char ssid[] = "XLXX"; //wifi名称 char pswd[] = "xlxx123@"; //wifi密码 // 新建组件对象 BlinkerButton Button1("test"); int counter = 0; void miotPowerState(const String & state)//电源类操作 { BLINKER_LOG("need set power state: ", state); if (state == BLINKER_CMD_ON) { myservo.write(150);//收到“on”的指令后舵机旋转110度 BlinkerMIOT.powerState("on"); BlinkerMIOT.print();//反馈状态 delay(1000);//延时1秒 myservo.write(90);//舵机归零,回到垂直状态 } else if (state == BLINKER_CMD_OFF) { myservo.write(30); //舵机偏转70° BlinkerMIOT.powerState("off"); BlinkerMIOT.print(); delay(1000); myservo.write(90); } } // 按下按键即会执行该函数 void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state); if (state=="on") { myservo.write(150);//收到“on”的指令后舵机旋转110 delay(1000);//延时 myservo.write(90);//舵机归零垂直 } else if(state=="press"||state=="tap") { myservo.write(30);//长按开关按键后舵机旋转70 delay(1000);//延时 myservo.write(90);//舵机归零垂直 } } // 如果未绑定的组件被触发,则会执行其中内容 void dataRead(const String & data) { BLINKER_LOG("Blinker readString: ", data); counter++; } void setup() { // 初始化串口 Serial.begin(115200); BLINKER_DEBUG.stream(Serial); // 初始化舵机 myservo.attach(2);//舵机的IO口,nodemcu的D4口 myservo.write(90);//上电时舵机归零垂直 BlinkerMIOT.attachPowerState(miotPowerState); // 初始化blinker Blinker.begin(auth, ssid, pswd); Blinker.attachData(dataRead); Button1.attach(button1_callback); } void loop() { Blinker.run(); }
更多相关内容 -
Arduino-ESP8266 控制舵机开门
2022-04-23 13:43:02mqtt消息控制舵机开门 准备工作 esp8266 开发板 13¥ Mg995 舵机 13¥ 四个5号电池 2 ¥ 导线若干 0.5¥ 电池盒一个 0.5¥ 成本不到30大洋,可玩性,实用性都很高。 原理图 从右往左看 手机上简介
成本不到30大洋,实现手机自动开门功能!
先上效果视频:mqtt消息控制舵机开门
准备工作
- esp8266 开发板 13¥
- Mg995 舵机 13¥
- 四个5号电池 2 ¥
- 导线若干 0.5¥
- 电池盒一个 0.5¥
成本不到30大洋,可玩性,实用性都很高。
原理图
从右往左看
- 手机上 点击 开门 按钮,发送mqtt消息到 服务器;
- esp8266开发板订阅了mqtt消息,接收到开门指令;
- esp8266发送pwm信号到舵机转动;
- 舵机 收到消息转动一定角度,拉动 门阀 ;
- 门打开。
arduino代码
主要是esp8266控制舵机转动
我这边没有用到Servo 库,原因是 提示我的开发板不在Servo 支持的架构里面。不知道为啥,有没有大佬来解惑?万分感谢!警告: Servo 库要求运行在 avr, megaavr, sam, samd, nrf52, stm32f4, mbed, mbed_nano, mbed_portenta, mbed_rp2040 架构(), 可能与你现在运行在 esp8266 架构上的开发板()不兼容。
废话不多说了,上Arduino 写给 esp8266的代码
//连接多个wifi #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h> //网络请求 #include <ESP8266HTTPClient.h> //mqtt 库 #include <PubSubClient.h> #include <Ticker.h> int sp1=12;//定义舵机连接到esp8266上的接口 int pulsewidth;//定义脉宽变量 int val; int val1; int myangle1; int count; // Ticker计数用变量 Ticker ticker; ESP8266WiFiMulti wifiMulti; //创建一个ESP8266WiFiMulti对象 //创建 HTTPClient 对象 HTTPClient httpClient; WiFiClient wifiClient; //mqtt服务对象 PubSubClient mqttClient(wifiClient); //mqtt 服务器地址 const char* mqttServer = "mqtt服务器得地址"; //mqtt账号密码 const char* mqttname = "用户名"; const char* mqttpwd = "密码"; int dataIndex=0; void setup() { // put your setup code here, to run once: //开启串口监视器 Serial.begin(9600); // servo.attach(12); pinMode(sp1,OUTPUT);//设定舵机接口为输出接口 connWifi(); //设置mqtt服务器和端口号 mqttClient.setServer(mqttServer,1883); // 设置MQTT订阅回调函数 mqttClient.setCallback(receiveCallback); connectMQTTServer(); digitalWrite(sp1,LOW);//将舵机接口电平至低 // Ticker定时对象 ticker.attach(1, tickerCount); } void tickerCount(){ count++; } void connWifi(){ //设置ESP8266工作模式为无线终端模式 WiFi.mode(WIFI_STA); // 通过 addAP函数存储 wifi 名称,wifi密码 wifiMulti.addAP("wifi_name", "wifi_pwd"); wifiMulti.addAP("wifi_name2", "wifi_pwd2"); Serial.println("Please wait, Connecting"); int i = 0; while (wifiMulti.run() != WL_CONNECTED) { delay(1000); Serial.print("."); if(i>10) Serial.println("\n"); //print(i++); } //连接wifi成功后,输出连接成功信息 Serial.println("\n"); Serial.print("connected to "); Serial.println(WiFi.SSID()); Serial.print("IP address: \t"); Serial.println(WiFi.localIP()); } void loop() { if(mqttClient.connected()){ mqttClient.loop();//保持客户端心跳 // 每隔3秒钟发布一次信息 if(count >3) { pubTopic(String(val1)); count = 0; } }else{ connectMQTTServer(); } } //连接mqtt服务器 void connectMQTTServer(){ //生成一个id,一般用mac地址生成,保证唯一性 WiFi.macAddress() String clientId = "random_id随机字符串"; //连接服务器 if(mqttClient.connect(clientId.c_str(),mqttname,mqttpwd)) { Serial.println("MQTT Server Connected."); Serial.print("Server Address:"); Serial.println(mqttServer); subTopic();//订阅主题 }else{ Serial.println("MQTT Server Connect Failed."); Serial.println(mqttClient.state()); delay(3000); } } // 收到信息后的回调函数 void receiveCallback(char* topic, byte* payload, unsigned int length) { Serial.print("Message Received ["); Serial.print(topic); Serial.print("] "); String cmd = ""; for (int i = 0; i < length; i++) { cmd += (char)payload[i]; } Serial.print("cmd is:"); Serial.println(cmd.toInt()); doAction(cmd.toInt()); } // 发布信息 void pubTopic(String msg){ String topicString = "主题名称";// 主题名称不能太长,我实际发现太长了好像就发不了有效的消息 char publishTopic[topicString.length() + 1]; strcpy(publishTopic, topicString.c_str()); // 建立发布信息。。 char publishMsg[msg.length() + 1]; strcpy(publishMsg, msg.c_str()); // 实现ESP8266向主题发布信息 if(mqttClient.publish(publishTopic, publishMsg)){ Serial.println("Publish Topic:");Serial.println(publishTopic); Serial.println("Publish message:");Serial.println(publishMsg); } else { Serial.println("Message Publish Failed."); } } //订阅主题消息 void subTopic(){ String topString = "主题名称,要跟手机上发送的一致,才能收到"; char subTop[topString.length()+1]; strcpy(subTop, topString.c_str()); if(mqttClient.subscribe(subTop)){ Serial.println("Subscrib Topic"); Serial.println(subTop); }else{ Serial.println("Subscrib Fail..."); } } void servopulse(int sp1,int val1)//定义一个脉冲函数 { myangle1=map(val1,0,180,500,2480); digitalWrite(sp1,HIGH);//将舵机接口电平至高 delayMicroseconds(myangle1);//延时脉宽值的微秒数 digitalWrite(sp1,LOW);//将舵机接口电平至低 delay(20-val1/1000); } void doAction(int val){ if(val>0 && val<=9) { val1=val;//将特征量转化为数值变量 val1=map(val1,0,9,0,180);//将角度转化为500-2480的脉宽值 Serial.print("moving servo to "); Serial.print(val1,DEC); Serial.println(); for(int i=0;i<=50;i++)//给予舵机足够的时间让它转到指定角度 { servopulse(sp1,val1);//引用脉冲函数 } }else{ Serial.println("can not identy"); } }
前端代码
前端主要是连接mqtt服务器费点功夫,界面就一个按钮,一个点击事件还是很简单的。
我用的前端框架是angular比较小众简单贴一下代码
component部分import { Component, OnInit,OnDestroy } from '@angular/core'; import {IMqttMessage, MqttService} from 'ngx-mqtt'; import { Observable, Subscription } from 'rxjs'; import { DoorBean } from 'src/app/bean/door-bean'; @Component({ selector: 'app-door', templateUrl: './door.component.html', styleUrls: ['./door.component.scss'] }) export class DoorComponent implements OnInit,OnDestroy { carStatus: boolean = false; timeo: any ; item:DoorBean = new DoorBean(1,"","开门",'container'); obs: Subscription; constructor(public ms: MqttService){ this.obs = this.ms.observe("门的状态主题").subscribe(res=>{ let status = res.payload.toString(); if( status.toString() === "1"){ this.carStatus = true; if(this.timeo){ window.clearTimeout(this.timeo) } }else{ this.carStatus = false; } this.timeo = setTimeout(() => { this.carStatus = false; }, 4000); }) } ngOnInit(): void { } //点击图标 onItemClick(){ this.sendCmd("4") this.item.className = "press" this.item.value = "请稍等" setTimeout(() => { this.sendCmd("1") this.item.className = "container"; this.item.value = "开门" }, 3000); } sendCmd(cmd: string){ //发送方向指令给舵机 this.ms.unsafePublish("主题名称,开发板订阅的名称跟这个保持一致", cmd, {qos: 1, retain: true}); } ngOnDestroy(): void { //Called once, before the instance is destroyed. //Add 'implements OnDestroy' to the class. this.obs.unsubscribe(); } }
html
<div [class]="item.className" (click)="onItemClick()"> {{item.value}} </div>
css
.container{ width: 5rem; height: 5rem; background-color: #1c6eaf; margin: 0 auto; margin-top: 3rem; border-radius: 50%; color: white; text-align: center; line-height: 5rem; } .press{ @extend .container; background-color: #6a7074; }
效果界面
总结
总体下来没啥难点,舵机转到的角度,与门阀拉动多少距离 需要动手多调一调,找出比较合适的角度。多动手试试吧,感谢您看到最后,谢谢!
-
在点灯科技APP使用esp8266控制舵机
2020-05-27 09:54:08最近有点事,一个星期没有写博客记录啦,...这次我们用点灯科技来控制舵机的旋转 使用的还是我们的Arduino IDE,硬件的需求有esp8266 nodemcu以及一个舵机 1、为Arduino IDE添加点灯科技的库文件,具体操作看文章: ...最近有点事,一个星期没有写博客记录啦,其实遇到了不少有用的知识和小项目,没有写博客记录惭愧惭愧
废话不多说,我们进入正题:
这次我们用点灯科技来控制舵机的旋转
使用的还是我们的Arduino IDE,硬件的需求有esp8266 nodemcu以及一个舵机
1、为Arduino IDE添加点灯科技的库文件,具体操作看文章:
小爱同学脱离局域网远程控制开关?2、上代码:
#include <Servo.h> #define BLINKER_WIFI #include <Blinker.h> char auth[] = ""; //key 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-num"); //位置1 滑块 数据键名 范围1-180 BlinkerSlider Slider2("min-num"); //位置2 滑块 数据键名 范围1-180 BlinkerSlider Slider3("ser-num"); //实时位置 滑块 数据键名 范围1-180 BlinkerSlider Slider4("time-num"); //循环模式间隔时间 滑块 数据键名 范围单位毫秒 bool xunhuan_mode = false; int servo_max,servo_min,ser_num,time_num; 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.vibrate(); if(state == "on"){ xunhuan_mode = true; Button3.print("on"); Blinker.delay(100); }else if (state == "off"){ xunhuan_mode = false; Button3.print("off"); Blinker.delay(100); } } void slider1_callback(int32_t value) { servo_max = value; Slider1.color("#1E90FF"); Slider1.print(); BLINKER_LOG("get slider value: ", value); } void slider2_callback(int32_t value) { servo_min = value; Slider2.color("#FFF8DC"); Slider2.print(); BLINKER_LOG("get slider value: ", value); } void slider3_callback(int32_t value) { ser_num = value; myservo.write(ser_num); Blinker.delay(100); BLINKER_LOG("get slider value: ", value); } void slider4_callback(int32_t value) { time_num = value; Blinker.delay(100); BLINKER_LOG("get slider value: ", value); } void xunhuan(){ myservo.write(servo_max); Blinker.delay(time_num/2); myservo.write(servo_min); Blinker.delay(time_num/2); } 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); Slider2.attach(slider2_callback); Slider3.attach(slider3_callback); Slider4.attach(slider4_callback); myservo.attach(5); //servo.attach():设置舵机数据引脚 myservo.write(10); //servo.write():设置转动角度 servo_max=70; servo_min=120; time_num=500; } void loop() { Blinker.run(); if(xunhuan_mode==true){ xunhuan(); } }
这里说一下Servo库
-
attach()
描述
将Servo变量附加到引脚,注意:在Arduino 0016及之前的版本上,Servo库仅支持将舵机连接至第9和第10脚上。
语法
servo.attach(pin)
servo.attach(pin, min, max)
参数说明
servo,一个类型为servo的变量
pin,连接至舵机的引脚编号
min(可选),舵机为最小角度(0度)时的脉冲宽度,单位为微秒,默认为544
max(可选),舵机为最大角度(180度时)的脉冲宽度,单位为微秒,默认为2400 -
write()
描述
向舵机写入一个数值,来直接控制舵机的轴。在一个标准的舵机中,这将设定齿轮的角度,将齿轮转到对应的位置。在一个连续旋转的舵机中,这将设置一个舵机的角度(0作为全速向一边,180为全速向另一边,在90附近的值为停止)。
语法
servo.write(angle)
参数说明
servo,一个类型为servo的变量
angle,写向舵机的角度,从0到180之间
然后这里设置的是GPIO引脚,而我们esp8266并没有标明GPIO编号
我们按照下面编号对应表进行设置:所以我们设置的GPIO5就是我们的D1端口
接下来进行烧录,硬件连接
这里再说一下我们的舵机接线问题:
在我手上的小舵机有三根线:棕色、红色以及黄色
黄色线为数据线,接我们数据引脚D1
红色为正极:接正极供电
棕色为负极:接负极接地3、点灯科技APP设备的按钮设置
进入我们的设备以下是我设置好的按钮和滑块:
可以看到有三个按钮,四个滑块,具体怎么设置呢?
三个按钮我们都以下为模板设置:
数据键名和文本名称都在我们代码头部注释了,大家注意一下。
可以看到我设置的键名为btn-max,文本名称为位置1。以及我们的位置2和循环模式都是这样设置的
接下来我们设置滑块:
我们一共有4个滑块,其中位置1、位置2以及实时位置的设置是一模一样的:
我们设置对应的文本名称以及键名,最小值为0,最大值为180,代表舵机转动的角度我这里再说一下最后一个,循环时间的滑块设置,其实和前面三个滑块的设置一样,设置文本名称以及对应的数据键名。但是,这里的最大值最小值可以根据自己的需求来的,它代表的是循环的间隔时间,单位为毫秒。我设置了0-2000,最大的时候间隔时间为2000毫秒。
4、我们上电开机:
一开始我们可以看到舵机复位到初始位置
设备在线以后我们进入我们设置好的控制界面
将位置2的滑块设置到一下位置,再点击位置2的按钮,可以看到舵机转动了
剩下的按钮及功能大家自己去慢慢尝试吧
-
-
esp8266 & 舵机
2021-01-14 16:54:06esp8266接线右前1、左后4分别是VCC、GND功能描述GPIO 16外部的Reset信号,低电平复位,高电平工作(默认情况下为高)CH_PD高电平工作,低电平模块关掉UTXD发送URXD接收GPIO 0工作模式,悬空;下载模式下拉GPIO 2开机上...esp8266接线
右前1、左后4分别是VCC、GND功能描述GPIO 16外部的Reset信号,低电平复位,高电平工作(默认情况下为高)
CH_PD高电平工作,低电平模块关掉
UTXD发送
URXD接收
GPIO 0工作模式,悬空;下载模式下拉
GPIO 2开机上电时为高电平,禁止硬件下拉,内部默认拉高esp8266 code#include
#include
// Update these with values suitable for your network.
const char* ssid = "oppo";
const char* password = "741852963";
const char* mqtt_server = "iot.celitea.cn";
char *water = "water";
char *apple = "apple";
char *banana = "banana";
char *medicine = "medicine";
char *advance = "advance";
char *retreat = "retreat";
char *left = "left";
char *right = "right";
char *shutoff = "shutoff";
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
void setup() {
pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void setup_wifi() {
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void callback(char* topic, byte* payload, unsigned int length) {
char str[length];
for (int i = 0; i < length; i++) {
str[i] = (char)payload[i];
}
str[length] = '
-
ESP8266控制SG90舵机
2021-02-10 22:08:53相信不少人在用控制esp8266控制舵机时都遇到一些问题,当初我也跟你们一样走了不少弯路,所以我把我的一些心得记录下来 首先,我用的主控是NodeMCU,舵机是180度的SG90舵机,首先SG90是通过改变占空比工作的,在这里... -
使用Arduino和ESP8266通过网页控制舵机
2021-01-14 16:54:06在本文中,我们将尝试通过网页来控制舵机,通过滑动网页上对应的滑块,促使舵机做相应地运动。这样的尝试在做一些远程开关或者远程控制的小设备时非常有用,比如把 宠物定时喂食器 改造成网页控制的也是可以实现的。... -
ESP8266_舵机实验
2021-02-03 16:06:21ESP8266(CH340)模块 * 1 Micro Servo 9g * 1 Micro USB 数据线 * 1 杜邦线(公头转母头)* 3 硬件连接: 橙黄色—— 信号 ——》GPIO14(D5) 红色 —— VCC ——》3V 棕色 —— GND ——》GND 软件代码 #include&... -
micropython(esp8266)SG90舵机控制
2021-05-25 10:50:29文章目录SG90舵机接线控制方法micropython程序部分示例实际操作 SG90舵机 接线 接线方法 有三根线,分别对应 红色-VCC 棕色-GND 橙色-信号线 这里接在D1也即是GPIO5处 控制方法 控制方法通过pwm控制信号线, 从而... -
(含代码)ESP8266+舵机 制作wifi灯控开关(arduino,点灯科技,小爱同学/天猫精灵实现)
2022-05-07 19:48:15小爱同学/天猫精灵控制舵机_基于ESP8266+Arduino+点灯科技-单片机文档类资源-CSDN下载小爱同学/天猫精灵控制舵机_基于ESP8266+Arduino+点灯科技,详情介绍:更多下载资源、学习资料请访问CSDN下载频道.... -
【esp8266实践记录】三、esp8266开发版PID控制SG90舵机
2022-02-13 17:19:45不能只满足于简单地控制舵机,引入略显高端的做法,使用PID方法控制舵机 一、基本思路 舵机使用基础(SG90模拟舵机和MG90S数字舵机为例) PID算法的特点及原理讲解 老规矩,首先要安装舵机相关的***<Servo.h>... -
ESP8266+Blinker+小爱同学舵机控制开关
2021-08-01 16:56:30这样就可以在睡觉的时候不用下床了,之前我们总是测试ESP8266控制5v的灯,如何控制220v的节能灯,相信大家也看到过很多的控制办法,一种是之间通过继电器进行控制,二一个就是采用舵机之间放在开关上进行控制,今天... -
ESP8266驱动SG90舵机控制开关灯(灯的开关)的折腾记录
2021-07-25 21:05:35想法来源地址在上面,可以去参考...1.买的型号,SG90舵机,淘宝应该很多,和ESP8266的连线也是ok的,没有困难,连完线难题就开始了,首先舵机驱动并没有搞过,其次ESP8266也忘记的差不多了,然后,这个程序实际上还有另 -
控制舵机 点灯科技 esp8266 (笔记)
2021-08-09 14:25:44//整体效果是:滑块控制舵机的位置(0~180),按下按键舵机到达指定位置。 //如果只是由滑块控制舵机详细操作见代码! #include <Servo.h> #define BLINKER_WIFI #include <Blinker.h> char auth[]... -
【更新中】ESP 保姆级教程 疯狂点灯篇 —— 案例:ESP8266 + 舵机+ 按键 + 阿里云物联网平台 + 阿里云...
2021-06-08 08:23:16学习如何在ESP8266上控制舵机,使用OneButton库操作按键,上传舵机开关状态,模拟打开关闭窗户,web应用控制舵机,App控制舵机流程。 -
Arduino+esp8266-01+舵机 制作基于局域网的遥控门禁
2021-01-17 11:37:25然后连接其创建的服务器,发送特定指令就可实现遥控开门(做工比较粗糙还请不要见笑...)一、原理其实这个一看就会明白,非常简单的,由Arduino连接一个舵机和一个esp8266模块,esp8266工作为AP模式,发出热点信息,... -
ESP8266 12F 点灯科技APP 控制两个舵机
2021-05-08 20:48:30舵机1开 舵机1关 分别控制舵机1的开关和闭合 舵机2和上面一样 下面给出我的源码 #include <Servo.h> #define BLINKER_WIFI #include <Blinker.h> #include <ESP8266WiFi.h> //needed for ... -
使用ESP8266与小爱同学通过Arduino控制舵机
2020-06-16 20:27:31ESP8266开发板 1 Arduino UNO 1 MG995舵机 1 杜邦线 若干 二、开发环境配置 本实验通过Arduino IDE调用Blinker提供的SDK实现 IDE下载地址https://www.arduino.cc/en/Main/Software SDK下载地址... -
ENGINE_esp8266_arduino_engine_servo_舵_
2021-09-29 18:04:35基于eap8266 Arduino框架的舵机代码封装用于,通过pwm占空比来控制舵机转动不同的角度,再本代码封装中一般有左转90度以及右转90度使用与本场景中的舵机转动情况,用户可以根据自己需要自己设置不同的转动角度 -
51单片机控制esp8266
2015-06-14 18:48:37用51单片机控制esp8266,esp8266用的是at固件, -
ESP8266从零学起第二课控制9g小舵机
2020-03-02 17:28:08ESP8266从零学 笔记 L2 ESP8266控制9g小舵机 ... 这节课计划是先把Arduino控制的舵机程序记录一遍,再看Esp8266控制舵机,所以内容比较长。 注释中的“[小白说]”,代表的是个人的观点,如果有理解的不对... -
基于MicroPython的ESP8266连接外设IO(三)
2022-03-28 11:16:38基于MicroPython的ESP8266连接外设IO(三) PWM输出;模拟量输入--双轴摇杆;模拟量采集驱动PWM输出;SG90舵机控制 -
esp8266&sg90舵机&点灯科技&arduino
2021-11-19 19:19:42esp8266&sg90舵机&点灯科技&arduino-实现手机非局域网远程开关 0前言 介绍:本人第一次整这个玩意,完全是为女朋友搞了个无线开关哦,所以适合完全不懂得小白看。 所需要硬件: esp8266模块(不打广告... -
使用ESP8266 WiFi模块和Blynk App控制Arduino Uno-项目开发
2021-03-30 11:31:51在本教程中,我们将学习如何在Blynk App和ESP8266 WiFi Module的帮助下控制Arduino。 这个项目很简单! -
esp8266 arduino 驱动MG996R大功率舵机
2021-03-24 16:51:42注意事项 驱动大功率需要外加电源 5v+ 电流最大 1.6A,直接接在esp8266上只会自动归位不会转动 接线图 https://blog.csdn.net/LUqingyaun/article/details/88600573 -
Esp8266-to-Arduino-WebServer-example:使用 ESP8266 作为独立接入点和 Web 服务器来控制 Arduino 的快速而...
2021-06-01 11:32:38使用 ESP8266 作为网络服务器和接入点的示例。 ESP 通过串行连接到 Arduino。 单击网页中的链接会触发 arduino 上的特定代码。 显示服务器早期版本的视频。 录制后我修复了样式表。 原 nodemcu-httpserver: : ... -
ESP8266 D1 mini 只能使MG90/MG995/MG996转动90°的解决方案
2022-01-09 09:24:51关于ESP8266驱动MG995/MG90等仅有90度(理论是180度)的 解决方案