ESP8266-12F NodeMCU、MG90S舵机、Arduino IDE——制作家庭自用远程开关(手机遥控-仅关灯)

一、效果演示

因为舵机臂太短只能关灯(晚上不想下床关灯才写了这个,满足了需求所以就先这样)

实现效果就是,打开指定网页 - 舵机臂转动 - 关灯

ESP8266-12F NodeMCU、MG90S舵机、Arduino IDE——制作家庭自用远程开关(手机遥控-仅关灯)

二、接线

在这里插入图片描述

三、代码

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WebServer.h>
#include <Servo.h>

// Servo
Servo servo;
// wifi
ESP8266WiFiMulti WiFiMulti;//建立ESP8266WiFiMulti对象,对象名称为WiFiMulti
ESP8266WebServer esp8266_server(80);//建立ESP8266WebServer对象,对象名称是“esp8266_server”,网络服务器响应http请求的端口号为80

// Wi-Fi 网络 SSID 和密码
const char *ssid = "这里填wifi名称";
const char *password = "这里填wifi密码";

const int ledPin = BUILTIN_LED;// ESP8266 内置 LED 引脚
const int servoPin = 12;    //定义舵机接口数字接口12,也就是舵机的橙色信号线

void setup() {
    
    
  
      Serial.begin(9600);// 串口波特率设置 //串口与舵机库可能会冲突,如果舵机未正常转动,先记住串口打印的ip地址,然后把这几处注释掉
  pinMode(ledPin, OUTPUT);// 设置 LED 引脚为输出模式
  servo.attach(servoPin);

  /*-------------连接 Wi-Fi------------*/
  // 开始执行 Wi-Fi 连接,由于连接需要一个过程,此处执行状态判断和等待
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    
    	//连接WiFi时,灯光闪烁
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
  }
     // Wi-Fi 连接后打印一些调试信息
     //串口与舵机库可能会冲突,如果舵机未正常转动,先记住串口打印的ip地址,然后把这几处注释掉
     Serial.println("WiFi 连接成功.");
     Serial.print("IP 地址为: ");
     Serial.println(WiFi.localIP());

  digitalWrite(ledPin, LOW);	//连接WiFi后,灯光常亮,等待启动网络服务器
  
  /*-------------启动网络服务功能------------*/
  esp8266_server.begin();//启动网络服务器
  esp8266_server.on("/", HTTP_GET, handleRoot); //on函数的作用就是提供页面服务,告诉MCU通过那个函数访问这个界面“/”页面,就是主页,通过handleRoot函数处理该页面
  esp8266_server.onNotFound(handleNotFound);//当请求页面不存在时,通过该函数处理

  digitalWrite(ledPin, HIGH);	启动网络服务器后,灯光熄灭
}
void loop() {
    
    
  esp8266_server.handleClient();//处理HTTP服务器访问
}
void handleRoot()
{
    
    
  esp8266_server.send(200, "text/html", "Closed");

  digitalWrite(ledPin, LOW);
  servo.write(30);	// 关灯
  delay(1000);
  servo.write(100);	// 舵机复位
  digitalWrite(ledPin, HIGH);
}
void handleNotFound()//当浏览器访问页面不存在时,通过该函数处理
{
    
     /*服务器响应状态码404(未找到浏览器需要的信息),text/plain,表示告诉浏览器接下来要返送信息内容的是一段纯文本信息,信息内容就是404 Not found*/
  esp8266_server.send(404, "text/plain", "404 Not found");
}

将代码下载到开发板上后,打开串口监视器,查看连接WiFi后的ip地址
在这里插入图片描述

访问网页 http://你的ip地址,即可控制舵机

串口与舵机库可能会冲突,如果舵机未正常转动,先记住串口打印的ip地址,然后把几处 Serial 注释掉

扫描二维码关注公众号,回复: 15900878 查看本文章

四、一些记录

1.ESP8266-12F NodeMCU

先是买了 ESP8266-12F 的芯片,不会用,然后又买了 ESP8266-12F NodeMCU 开发板

开发板用着还是简单,就是只写了个关灯,感觉有点大材小用了,希望以后能发挥它更大的价值

ESP8266-12F 芯片 https://blog.csdn.net/qlexcel/article/details/121435024

ESP8266-12F NodeMcu https://www.cnblogs.com/liming19680104/p/10977755.html

太极创客 http://www.taichi-maker.com/homepage/reference-index/arduino-hardware-refrence/nodemcu/


2.MG90S舵机

舵机使用基础 https://blog.csdn.net/pang9998/article/details/103200666

千万不要用手转舵机,我第一个MG90就是这样坏的

千万注意外接电压不要过高,我第二个MG996R也坏了

建议买个舵机测试仪,也就几块钱,但是能迅速排除是否是舵机故障


3.开发板供电

一直是用的电池盒-4节南孚-usb接口给开发板供电的,最近发现电池盒没电了

没办法只能用别的供电方法

先是用电池盒-3节5号-杜邦线母线接开发板的Vin引脚,发现并没有反应,百度+猜测是电压电流不够启动开发板

最后采用充电宝-20000mA供电,经某天某次测量,一天半耗费一格电量


4.舵机单独供电

本来是用开发板给 MG996R 舵机供电的,后来百度发现可能会烧坏开发板,需要给舵机单独供电,所以又买了4.5V的电池盒

但是效果不是很理想,本来舵机转动很稳定,外接电源后舵机就像接触不良一样,偶尔动偶尔不动,而且在某个角度还会抖动,我猜测是烧坏了舵机,可能是因为电池盒电压电流不稳定啥的

图便宜买了降压稳压的芯片,然而又不会用,以后还是直接买模块吧

所以最后又买了MG90S后也不敢再外接电池了

舵机单独供电接线 https://blog.csdn.net/qq_36792878/article/details/115490209


5.Arduino IDE

安装配置 https://zhuanlan.zhihu.com/p/475982456


6.注意

舵机库和pwm输出冲突

舵机库函数与直流电机冲突

串口与舵机库冲突

猜你喜欢

转载自blog.csdn.net/tfnmdmx/article/details/125558884