友情提示点击顶部放大镜 可以使用站内搜索 记住我们的地址 www.hainabaike.com
一.需要购买的硬件:
1. esp8266或esp32
esp01,esp01s,esp8266,esp32开发板都可以,这里使用esp-01s,因为实现简单的功能,并且价格便宜。
2. usb转ttl
这是为了烧录程序用,买的ft232rl,这个线可以在板上设置3.3v和5v。esp-01s是3.3v的电压。
3. 杜邦线
公对公,母对母,母对公都买一些。
4. 面包板
方便实验用,
交流转直流可调电源,用途广泛。把交流电转直流电,电压可调。
还额外买了一个面包板用的dc-dc专用模块,输入时直流7v-12v,输出时5v,3.3v.链接与面包板相同,买面包板时多买一个电源即可。
为什么要两个电源,因为面包板的专用电源可以方便在面包板上供5v和3.3v的电。
5. 万用表
买个好一点的,以后长期使用,用来测量电压。有万用表的忽略。
二. 软件安装:
1. 安装Arduino IDE
2. 安装esp8266或esp32扩展包
esp-01s属于esp8266. 下面的链接既有esp32,也有8266.
ESP32的开发环境怎么搭建?3.下载点灯科技的app和blinker arduino库
点灯科技-点灯物联网解决方案app下载后,安装在手机上,在点灯注册账号。
每一个设备在blinker上都有一个唯一的secret key(密钥),blinker设备会使用该key认证设备。如何获得一个secret key? 打开点灯app,添加设备,选择开灯-独立设备,再选择网络接入,就得到一个key。拷贝下来,编写程序会用到它。
下载设备端的sdk到电脑,然后把这个库解压拷贝到arduino安装路径下的libraries目录(比如我的是:D:Program Files (x86)Arduinolibraries)
也可以使用add zip library,添加下载的blinker sdk库文件,sdk格式。还可以用manage libraries直接搜索blinker添加,我使用的搜索的方法。
三. 各模块的连接
1.esp01s与usb转ttl的连接
esp01 -> usb转ttl
RX -> TX //esp01的发接usb转ttl的收
TX -> RX
VCC -> VCC //这里的vcc时3.3v
CH_EN -> VCC //如果时esp01,这条线必须连接,esp01s可以不接。
GPIO-0 -> GND //gpio0接低电平,所以接地
GND -> GND
2. usb转ttl与电脑的连接
使用usb线连接到电脑。usb转ttl板上3.3v针脚测量用万用表测量只有3v。
3.使用220v转直流的电源和面包板直流电源。
交流220v转直流跳到7-12v,把直流输出接到在把面包板上的专用电源的输入,得到3.3v和5v直流电源。并把跳线跳到3.3v的针脚上。这样面包板的两端都有3.3v的正电压和GND,把面包板上的GND与与esp01s的GDN和gpio0连接;面包板上的vcc 3.3v给esp01s上的vcc和EN连接(esp01需要en连接高电平,esp01s不需要),连接后如图所示。
编写代码
打开blinker的实例程序,修改代码,这段代码是控制esp01s上的led灯,我们把它换成gpio 0端口,然后运行。下面是实例代码。
/* *****************************************************************
*
* Download latest Blinker library here:
* https://github.com/blinker-iot/blinker-library/archive/master.zip
*
*
* Blinker is a cross-hardware, cross-platform solution for the IoT.
* It provides APP, device and server support,
* and uses public cloud services for data transmission and storage.
* It can be used in smart home, data monitoring and other fields
* to help users build Internet of Things projects better and faster.
*
* Make sure installed 2.7.4 or later ESP8266/Arduino package,
* if use ESP8266 with Blinker.
* https://github.com/esp8266/Arduino/releases
*
* Make sure installed 1.0.5 or later ESP32/Arduino package,
* if use ESP32 with Blinker.
* https://github.com/espressif/arduino-esp32/releases
*
* Docs: https://diandeng.tech/doc
*
*
* *****************************************************************
*
* Blinker 库下载地址:
* https://github.com/blinker-iot/blinker-library/archive/master.zip
*
* Blinker 是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、
* 服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、
* 数据监测等领域,可以帮助用户更好更快地搭建物联网项目。
*
* 如果使用 ESP8266 接入 Blinker,
* 请确保安装了 2.7.4 或更新的 ESP8266/Arduino 支持包。
* https://github.com/esp8266/Arduino/releases
*
* 如果使用 ESP32 接入 Blinker,
* 请确保安装了 1.0.5 或更新的 ESP32/Arduino 支持包。
* https://github.com/espressif/arduino-esp32/releases
*
* 文档: https://diandeng.tech/doc
*
*
* *****************************************************************/
#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "Your Device Secret Key"; //上面得到的secret key填写到这里
char ssid[] = "Your WiFi network SSID or name"; //家里的wifi账号
char pswd[] = "Your WiFi network WPA password or WEP key"; //家里的wifi密码
// 新建组件对象,其中新建的btn-abc和num-abc是主键的名称。要与app里面键的组件名称一致。
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");
int counter = 0;
// 按下按键即会执行该函数
void button1_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
counter++;
Number1.print(counter);
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
// 初始化有LED的IO,
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
Button1.attach(button1_callback);
}
void loop() {
Blinker.run();
}
更改为:
#define BLINKER_WIFI
#include <Blinker.h>
//#define BLINKER_ALIGENIE_LIGHT //如果家里有天猫精灵,用它来也可以控制开关灯
char auth[] = "Your Device Secret Key"; //上面得到的secret key填写到这里
char ssid[] = "Your WiFi network SSID or name"; //家里的wifi账号
char pswd[] = "Your WiFi network WPA password or WEP key"; //家里的wifi密码
// 新建组件对象,其中新建的btn-abc和num-abc是主键的名称。要与app里面键的组件名称一致。
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");
int pinRelay =0; //指定gpio 0端口来控制继电器
// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");
// 按下按键即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
if (state=="on") {
// digitalWrite(, LOW);
digitalWrite(pinRelay,LOW);
// 反馈开关状态
Button1.print("on");
} else if(state=="off"){
// digitalWrite(pinRelay, HIGH);
// 反馈开关状态
digitalWrite(pinRelay, HIGH);
Button1.print("off");
}
}
void heartbeat() //心跳包
{
Button1.icon("fas fa-lightbulb");
Button1.color("#fddb00");
Button1.text("关灯","打开啦");
Number1.print(WiFi.RSSI()); //信号强度
}
//天猫精灵这段注释,有天猫精灵的可以打开测试。
/*
void aligeniePowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(pinRelay, LOW);
BlinkerAliGenie.powerState("off");
BlinkerAliGenie.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(pinRelay, HIGH);
BlinkerAliGenie.powerState("on");
BlinkerAliGenie.print();
}
}
*/
void setup() {
// 初始化串口
Serial.begin(115200);
// 初始化有LED的IO
pinMode(pinRelay, OUTPUT);
pinMode(0, OUTPUT);
// digitalWrite(pinRelay, HIGH);
digitalWrite(pinRelay, HIGH);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
// BlinkerAliGenie.attachPowerState(aligeniePowerState);
Blinker.attachHeartbeat(heartbeat);
}
void loop() {
Blinker.run();
//Blinker.run()语句负责处理Blinker收到的数据,每次运行都会将设备收到的数据进行一次解析。
//在使用WiFi接入时,该语句也负责保持网络连接
}
继电器与220v开关的连接
通过继电器可以控制多数电器的开关,不仅仅限于点灯,比如电脑开关,电机的开关,风扇,洗衣机等功率不是太高的电器。继电器标称的是220v 10A,也就是2200w以下的电器,我们这里为了安全起见,控制1000w以下的电器开关应该没有问题。
在继电器背面,no对应常开,nc对应常闭,com对应公共端。
其中常开的意思就是在用电器没有通电时,继电器其上的触头处于断开状态,只有用电器得电后才有可能变为闭合状态。这种触头称之为“常开触头”,简称“常开”。
而常闭的意思正好相反,在电器没有通电时,其上的触头处于闭合状态,只有电器得电后才有可能变为断开状态。这种触头称之为“常闭触头”,简称“常闭”。
这次测试接的常开,你们也可以自己实验常闭端口。
评论列表