前言:

  现在小学信息技术的教材中已经出现了物联网的内容,比如泰山版小学信息技术教材第六册第二单元第一课就是用手机控制智能插座。就起了自己动手制作一个的心思,通过到网上浏览制作智能插座的文章后,有了基本思路,通过网购配件、编程上传、动手焊接组装等环节,制作了一个很粗糙但够实用开放的智能插座,本文主要就是从申请帐号、编写程序,上传到控制板,动手焊接组装三个方面介绍一下整个过程。

一、所需配件。注:

二、申请帐号,编写arduino程序。

要远程控制esp01模块驱动继电器工作,有很多物联网平台都能做到。如机智云、ONENET、酱菜物联等等。考虑到智能插座所需功能比较单一,为方便操作,所以作者选用了酱菜物联做为智能插座的平台。

1、申请帐号:打开网址http://www.jcckiot.com/,注册一个帐号,记下自己的apikey。(用的时候到用户中心里找也可以)

创建应用:在首页选择插座,输入插座的名字,记下sid和nid。(待会程序中要用)

2、编写arduino程序,并上传到控制器。

  (1)安装所需库文件。

  打开arduino ide程序,依次点击文件-首选项,找到下图中标记的文件夹位置,如本机的地址是C:\Users\Administrator\AppData\Local\Arduino15。这时需要下载

arduino的esp8266的支持库文件,如果直接联网下载的话,速度极慢(估计10个小时以上)。但网络上有达人们共享了下载好的文件,我转存到我的百度网盘里,有需要的可以到链接:https://pan.baidu.com/s/1X6fMyYREjRTpt-88sZbu7A 提取码:mhwn 中下载。下载后解压到刚才标记的位置,覆盖原有文件。

这时在arduion的IDE中,打开工具-开发板XXXX,在开发板管理器下面,就能找到我们的ESP8266 Module了,点击选中它。这时我们打开工具,开发板XXXX就变成了Generic ESP8266 Module了,说明当前的开发板是ESP8266了。根据下图进行适当的设置。

(2)连接esp8266模块和USB-TTl.

连接方法:(1)ESP8266模块的5(VCC)、7(CH—PD)两根针同TTL的3v3相连。(2)模块的1(GND)、3(GPIO0)号针同TTL的GND相连。(3)模块的4号针(RXD)同TTL的TXD相连,8号针(TXD)同TTL的RXD相连。  注意:因为有两根针接一根针的情况,可以考虑加一块面包板,或直接将模块的5、7号针短接,1、3号针短接后再连TTL,建议使用面包板。

(3)打开arduinoIDE,输入下列程序:

/*
* 通过酱菜创客控ESP32操作继电器。
*/ #include <ESP8266WiFi.h>
WiFiClient client;
#define relay1 0 //运行时继电器连接在8266的GPIO0上,这里要注意,网上大部分文章,这里都设置的是2号。
const char *ssid = "hx";//这里是我手机开的热点,你使用时修改为你要连接无线路由的ssid
const char *password = "12345678";//你的wifi密码
const char *host = "www.jcckiot.com";//酱菜创客服务器IP,不能改
const int httpPort =8266;//端口号,不要改
String line ="";
int m=0;
void setup()
{
Serial.begin(115200);
delay(10);
pinMode(relay1,OUTPUT); //设置relay1的工作模式为输出
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)//如果连接不能wifi,在0.5秒后再试
{
delay(500);
}
while (!client.connect(host, httpPort))//如果连接不上服务器,就提示连接失败,0.5秒后再试
{
delay(500);
}
client.write("mode=bind&apikey=XXXXXX&data={ck001000bind}\r\n");//绑定apikey,把XXXXXX修改成你在酱菜创客上的apikey
delay(10);
} void loop()
{
while(client.available())
{
String line = client.readStringUntil('\r');
if(line[5]=='3' & line[8]=='0' & line[9]=='1')//3是你要控制的设备的 sid,0是nid,1代表是通电
//意思是如果指定的设备的状态是1,就让realy1设置为低电平,即让继电器通电
{
digitalWrite(relay1,LOW); }
if(line[5]=='3' & line[8]=='0' & line[9]=='0') //3是你要控制的设备的 sid,0是nid,0代表是断电,意思是如果指定的设备的状态是0,就让realy1设置为高电平,即让继电器断电
{
digitalWrite(relay1,HIGH); }
}
String line ="";
m++;
if(m%40==0)
{
client.write("mode=up&apikey=XXXXXX&data={ck003000life}\r\n");//把XXXXXX修改成你自己的apikey
m=0;
}
delay(500);
}

代码中要注意两点:一是用哪个口来控制继电器,因为网上大部分程序中都写的是用GPIO2来控制,我也没考虑,也是这么写的,但最后不成功,无法控制继电器,最后仔细看说明书,才发现人家写得很清楚。

这种类型的搭配,是需要使用GPIO0来进行控制的。另一个,网上教程中大都写高电平触发继电器,但通过看说明书发现,这个继电器是需要用GPIO0口用低电平来触发的。(汗一个,想当然是不行的,不要怕费事,一定要仔细看说明书)

(4)上传程序到ESP01模块。

将USB-TTL和ESP01模块连接完成后,将USB-TTL插到计算机上,这时,会自动识别出一个串口,如COM3、COM7等,记住这个串口号,在工具中选择相应的端口号。

然后点击工具栏的上传按钮,开始编译并上传,上传完成后会自动开始烧录,大约1分钟后,就会提示上传成功了。

三、组装硬件

1、将esp01模块,插到继电器上。

2、改造插座。

将插座前边的开关、指示类全部去除,整平,可以考虑用一张旧会员卡用固态胶粘到插座前边,做底盘。

3、焊接、连线。

不太会画线路图,直接上实物图吧。

连接步骤:

(1)开关稳压模块:将220V的市电焊接到模块的IN端上,同时在输出端上各焊一段电线(3CM左右),接到继电器的VCC、GND端。。

(2)继电器:将NO端接到插座的火线上。把COM端接到220V市电的火线上。(直接焊到开关稳压模块的输入端就可以)。

(3)插座,把零线直接接到220V市电的零线上。(直接焊到开关稳压模块的输入端就可以)。

四、几点需注意的问题:

  1、这种方案实际上是将ESP01当做MCU来用,不是SOC方案。

  2、方案中的继电器是与ESP01配套使用的,好处是通过继电器给模块供电,线路比较简单,缺点是增加了造价。还有一个问题,因为是将ESP01模块直接插到了继电器上,所以浪费了模块的一个GPIO口。

  3、关于直流5V电源的事,这个不一定买,可以拆一个旧充电器。

  4、本文中的例程仅能用于酱菜物联,其它的物联平台,需要刷写固件。

  5、USB-TTL转接口不是必须的,如果手里有arduion UNO或NANO的板子,也可以用。具体连接方法可以百度。

  6、利用ESP01制作智能插座的方法很多,本文也仅是一种个人观点,不一定是最合适的。

  7、在制作过程中,参考了网上多位大神的作品,在此表示感谢。

智能插座的制作(esp01,继电器,arduino)的更多相关文章

  1. 利用Arduino快速制作Teensy BadUSB

    0×00 介绍 本文想以较简单的方式,叙述Arduino版BadUSB的制作过程.我知道在这之前已经有很多前辈都写过相关的文章,但小白可能还有点迷糊,所以这篇文章是快速带大家入门了解,我也是菜B大神不 ...

  2. 3分钟学会做智能插座(DIY)

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 感谢博达科技提供的技术支持,博达科技新出了turnip智能插座,通过微信控制,实现了语音控制 ...

  3. 使用Arduino和SD卡模块记录数据并导出到Excel

    在本篇文章中,我们将学习如何基于Arduino开发板使用一个SD卡模块.同时结合DS3231实时时钟模块,我们将制作一个数据记录仪的示例,在示例中,我们将温度传感器的数据存储到SD卡中,并将这些数据导 ...

  4. 单片机项目中使用新IC芯片的调试方法

    前两天,一位小伙伴咨询我一款新IC芯片怎么使用,借此机会我顺便把我日常工作中经常用到的一种调试方法介绍给小伙伴们,希望对对大家有所帮助.准备仓促,文中难免有技术性错误,欢迎大家给予指正,并给出好的建议 ...

  5. Arduino IDE搭建ESP8266开发环境,文件下载过慢解决方法 | ESP-01制作WiFi开关教程,改造宿舍灯

    1. Arduino IDE配置ESP8266环境 参考:https://www.jianshu.com/p/cb0274d612b5 首先从 Arduino 官网 下载最新版本的 Arduino I ...

  6. ESP8266 ESP-01制作B站粉丝计数器 | Arduino IDE开发ESP8266 | ESP8266存储读取用户数据

    1.实物图 2.原理图 3.Arduino程序 在程序中修改自己的B站UID和自己家的WiFi名称及密码即可. /*B站粉丝计数器*/ /******************************* ...

  7. atmega32u4制作arduino leonardo最小系统

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 一.leonardo最小系统 关于leonardo这里不再介绍,直接上最小系统原理图,该系统 ...

  8. Arduino智能小车制作报告

    Arduino智能小车制作报告 制作成员:20135224陈实  20135208贺邦  20135207王国伊 前提: Arduino,是一个开源的单板机控制器,采用了基于开放源代码的软硬件平台,构 ...

  9. Arduino+RFID RC522 +继电器

    博客园的第一篇博文就献给Arduino了.不知道能不能坚持自己喜欢的并且记录下来. 起码是个好的开始. 想实现一卡通代替钥匙开启电动车. 简单的原理,通过RC522模块读取一卡通的序列号,在程序中进行 ...

  10. 利用Arduino快速制作Teensy BadUSB, 攻击计算机

    BadUsb介绍 BadUSB是计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在2014年的BlackHat安全大会上公布. 虽然已隔一两年,但还是有 ...

随机推荐

  1. vue3 ts遇到的问题

    main.ts中的 createApp(App),只作用于一个,如果,有两个,则并不是一个对象,另一个会不生效

  2. VM安装Centos 经典安装

    1 VM安装配置 1.1 新建虚拟机 1.2 选择典型 1.3 选择CentOS镜像 链接:https://pan.baidu.com/s/1K2rTjrWY5sgEgx2pU0x-gg 提取码:89 ...

  3. StartAllBack使用教程

    StartAllBack简介 StartAllBack是一款Win11开始菜单增强工具,为Windows11恢复经典样式的Windows7主题风格开始菜单和任务栏,功能包括:自定义开始菜单样式和操作, ...

  4. 如何优化 Vue.js 应用程序

    单页面应用(SPAs)当处理实时.异步数据时,可以提供丰富的.可交互的用户体验.但它们也可能很重,很臃肿,而且性能很差.在这篇文章中,我们将介绍一些前端优化技巧,以保持我们的Vue应用程序相对精简,并 ...

  5. 【Vue】vue项目目录介绍 es6的导入导出语法 vue项目开发规范 Vue项目编写步骤

    目录 昨日回顾 今日内容 0 vue-cli创建项目 node.js环境 创建vue-cli项目 1 vue项目目录介绍 node_modules index.html app.vue package ...

  6. Nacos服务调用(基于Openfeign)

    在<<Nacos服务注册>>这篇文章里,我搭建了一个nacos服务中心,并且注册了一个服务,下面我们来看在上一篇文章的基础上,怎样用Openfeign来调用这个服务. 0.同上 ...

  7. 两台linux服务器互相自动备份

    转载:csdn https://blog.csdn.net/gjwgjw1111/article/details/103515031

  8. 面向对象基础之基础—控制台C#模拟银行ATM存取操作实例

    c#控制台应用程序ATM银行操作实例.主要介绍了设计的方法:使用的类介绍:具体的运行界面:程序代码.代码直接写在一起放在Programm.cs中,拷贝可直接运行. 一.设计 1.原则上采用三层:(1) ...

  9. python 链接云端数据库/远程数据库 可以使用原始Odbc

    class MySqlOdbc: def __init__(self): self.sqlhead = None # 当前数据链接句柄 self.mycursor = None # 当前游标 &quo ...

  10. 清理Linux系统无效的或者损坏的包

    参考:解决Linux的 [有1 个软件包没有被完全安装或卸载] 问题    ubuntu中卸载没有安装完全的软件包    Ubuntu安装.基本命令和常见故障处理 1. 1 apt-get insta ...