admin管理员组文章数量:1591441
1、环境搭建
本次主要是用ArduinoIDE平台来进行开发,可以去官网进行下载:Arduino - Home
也可去网盘下载,在这里为大家准备了网盘连接:
链接:https://pan.baidu/s/1VLn8Iju1fYWO1PMay8GsEw
提取码:1502
打开软件后,进行以下设置(注意:USB尽量用51开发板的线,普通的USB线可能会有问题)这样我们的环境就搭建好了
2、智能垃圾桶
简介:通过超声波来控制舵机。然后通过外部设备来进行配合,很简单
首先我们要准备以下几件东西:
超声波
开发板
mini垃圾桶
Sg90舵机
下面就到了核心部分:代码编写(开源)
#include <Servo.h>
//I/O口定义
#define pwm D5
#define Echo D2
#define Trig D8
Servo myduoji;
long getTime()
{
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
return pulseIn(Echo,HIGH);
}
void initChaoShengBo()
{
pinMode(Echo,INPUT);
pinMode(Trig,OUTPUT);
}
void setup()
{
// put your setup code here, to run once:
initChaoShengBo();
myduoji.attach(pwm);
Serial.begin(115200);
}
void loop()
{
//获取距离
long dis;
dis = getTime()/58;
if(dis <= 10) //距离小于等于10
{
myduoji.write(90); //舵机转动90°
delay(2000);
}
else
{
myduoji.write( 180);
}
}
3、智能家居,让你关灯不再手动
众所周知,esp8266具有上网功能,那么我们就可以通过手机语音助手打开浏览器网页来控制舵机,废话不多说,直接上代码(造轮子)
#include <ESP8266WiFi.h>
#include <Servo.h>
const char *ssid = "gcc"; //家里的wifi名称或者手机热点名称
const char *password = "15388515437";//家里的wifi密码或者手机热点密码
WiFiServer server(80); //通过80端口连接到wemos D1
String readString = ""; //建立一个字符串对象用来接收存放来自客户的数据
//响应头
String responseHeaders =
String("") +
"HTTP/1.1 200 OK\r\n" +
"Content-Type: text/html\r\n" +
"Connection: close\r\n" +
"\r\n";
//网页:HTML+JS的网页,当客户端(即浏览器)发送链接请求时,Wemos则通过路由器发送网页
String myhtmlPage =
String("") +
"<html>" +
"<head>" +
" <title>Wemos D1 Web Server Test</title>" +
" <meta charset = \"UTF-8\">" +
" <script defer=\"defer\">" +
" function ledSwitch() {" +
" var xmlhttp;" +
" if (window.XMLHttpRequest) {" +
" xmlhttp = new XMLHttpRequest();" +
" } else {" +
" xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");" +
" }" +
" xmlhttp.onreadystatechange = function () {" +
" if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {" +
" document.getElementById(\"txtState\").innerHTML = xmlhttp.responseText;" +
" }" +
" }," +
" xmlhttp.open(\"GET\", \"Switch\", true);" +
" xmlhttp.send(); " +
" }" +
" </script>" +
"</head>" +
"<body><center>" +
" <div id=\"txtState\">unknown</div>" +
" <input type=\"button\" value=\"开关\" οnclick=\"ledSwitch()\"></center>" +
"</body>" +
"</html>";
bool isLedTurnOpen = false; // 记录舵机状态
Servo myservo;
void setup()
{
myservo.attach(D5); //将舵机与D5引脚连接
myservo.write(0); //舵机转动0°
Serial.begin(115200); //启动串口通信,波特率为115200
Serial.println();
Serial.printf("Connecting to %s ", ssid); //通过串口在PC打印连接到路由器
WiFi.begin(ssid, password); //连接到路由器
while (WiFi.status() != WL_CONNECTED) //wifi如果没连接成功,则一直在此循环
{
delay(500);
Serial.print("."); //每隔0.5s打印一个点.
}
Serial.println(" connected"); //“连接成功”打印
server.begin(); //服务器启动
Serial.printf("Web server started, open %s in a web browser\n", WiFi.localIP().toString().c_str()); //打印连接到路由器分配到的ip
}
void loop()
{
WiFiClient client = server.available(); //尝试建立客户对象
if (client) //如果当前有客户可用
{
boolean currentLineIsBlank = true;
Serial.println("[Client connected]");
while (client.connected()) //如果客户端建立连接
{
if (client.available()) //等待有可读数据
{
char c = client.read(); //读取一字节数据
readString += c; //拼接数据
/************************************************/
if (c == '\n') //等待请求头接收完成(接收到空行)
{
//比较接收到的请求数据
if (readString.startsWith("GET / HTTP/1.1")) //如果是网页请求
{
client.print(responseHeaders); //向客户端输出网页响应
client.print(myhtmlPage); //向客户端输出网页内容
client.print("\r\n");
}
else if (readString.startsWith("GET /Switch")) //如果是改变舵机状态请求
{
if (isLedTurnOpen == false)
{
myservo.write(170); //舵机的转动角度
client.print("电灯已经开启,按下可关闭");
isLedTurnOpen = true;
}
else
{
myservo.write(90);
client.print("电灯已经关闭,按下可开启");
isLedTurnOpen = false;
}
}
else
{
client.print("\r\n");
}
break;
}
if (c == '\n')
{
currentLineIsBlank = true; //开始新行
}
else if (c != '\r')
{
currentLineIsBlank = false; //正在接收某行中
}
/************************************************/
}
}
delay(1); //等待客户完成接收
client.stop(); //结束当前连接:
Serial.println("[Client disconnected]");
Serial.println(readString); //打印输出来自客户的数据
readString = "";
}
}
最终成效:基于esp8266 arduino WeMos D1智能垃圾桶及借助手机语音助手的智能家居_哔哩哔哩_bilibili
大家可以根据自己所在环境进行建模,3D打印一个舵机支架
以上就是本次的全部内容,欢迎大家评论,收藏和转发,如有问题请私信或评论
版权声明:本文标题:基于WeMos D1+esp8266的智能垃圾桶和智能家居 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728117324a1146122.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论