电子说
软件要求
对于此项目,您将需要以下程序:
Arduino IDE(在此处下载最新版本)
NodeMCU
除ESP8266板支持(NodeMCU)外,还应安装以下Arduino库(在库管理器中搜索或手动将文件夹放在Arduino/库中):
fauxmoESP
ESPAsyncTCP
ESPAsyncWebServer
连接和原理图
ESP8266
D1→LED/继电器
D2→按钮
编程Arduino
此项目的Arduino代码使用fauxmoESP库的示例草图,该库模拟Belkin WeMo设备。因此,配置家庭自动化开关遵循与商业设备完全相同的过程,这在Alexa应用程序中是轻而易举的。为了发现这个设备,我将我的设备命名为“光”。
请注意高电压:在确定继电器接线之前拔下所有电源插头。为了控制电路的交流部分,我使用的是5V继电器 - 只需中断220V电线,然后将剥开的端子插入常开和常开螺丝端子。 *请记住,如果您没有太多使用高压的经验,请找一个监督的人。
Arduino IDE配置
单击文件 - 》首选项
添加这个链接到附加URL板:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
接下来,安装电路板文件并按照提及步骤进行操作。
工具→电路板→电路板管理器
搜索ESP8266和安装模块包。
选择您的电路板,如下图所示。
《二v》
然后,选择电路板端口。
选择端口后,编辑源代码并更改Wi-Fi名称和密码,如图所示:
Arduino代码
#include
#include
#include “fauxmoESP.h”
#include “ESPAsyncWebServer.h”
#include
#include
#define WIFI_SSID “” // Please Enter you Wifi name here
#define WIFI_PASS “” // Enter password here
#define SERIAL_BAUDRATE 115200
fauxmoESP fauxmo;
#define RELAY_PIN 5
const int buttonPin = 4; // the pin that the pushbutton is attached to
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
// -----------------------------------------------------------------------------
// Wifi
// -----------------------------------------------------------------------------
void wifiSetup() {
// Set WIFI module to STA mode
WiFi.mode(WIFI_STA);
// Connect
Serial.printf(“[WIFI] Connecting to %s ”, WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);
// Wait
while (WiFi.status() != WL_CONNECTED) {
Serial.print(“。”);
delay(100);
}
Serial.println();
// Connected!
Serial.printf(“[WIFI] STATION Mode, SSID: %s, IP address: %s ”, WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}
void callback(uint8_t device_id, const char * device_name, bool state) {
Serial.print(“Device ”); Serial.print(device_name);
Serial.print(“ state: ”);
if (state) {
Serial.println(“ON”);
digitalWrite(RELAY_PIN, HIGH);
} else {
Serial.println(“OFF”);
digitalWrite(RELAY_PIN, LOW);
}
}
void setup() {
pinMode(RELAY_PIN, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
digitalWrite(RELAY_PIN, LOW);
// Init serial port and clean garbage
Serial.begin(SERIAL_BAUDRATE);
Serial.println(“FauxMo demo sketch”);
Serial.println(“After connection, ask Alexa/Echo to ‘turn on’ or ‘off’”);
// Wifi
wifiSetup();
// Fauxmo
fauxmo.addDevice(“the light”);
fauxmo.onMessage(callback);
}
void loop() {
fauxmo.handle();
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);
// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == LOW) {
Serial.println(“on”);
digitalWrite(RELAY_PIN, HIGH);
}
else {
// if the current state is LOW then the button
// went from on to off:
Serial.println(“off”);
digitalWrite(RELAY_PIN, LOW);
}
// Delay a little bit to avoid bouncing
delay(50);
}
// save the current state as the last state,
//for next time through the loop
lastButtonState = buttonState;
}
现在是时候玩了!
上传代码后让您的Alexa发现新设备,它会检测到您的智能家居设备,即ESP8266。通过说“Alexa打开/关闭灯”来控制它。在这种情况下,Alexa可以是您的计算机或Amazon Echo。
全部0条评论
快来发表一下你的评论吧 !