前言:

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

一、所需配件。注:

二、申请帐号,编写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. 关闭Vim 的蜂鸣 | 解决Vim在Git BASH闪砾的问题

    set vb t_vb= 这个设置屏蔽了vim遇到无效命令时发出的蜂鸣声,而用一个快速的闪烁取而代之.

  2. LeetCode_单周赛_327

    目录 6283. 正整数和负整数的最大计数 代码 6285. 执行 K 次操作后的最大分数 代码 6284. 使字符串总不同字符的数目相等 代码 6283. 正整数和负整数的最大计数 代码 直接遍历统 ...

  3. 使用Navicat操作MySQL数据库

    一.Navicat连接数据库 ①进入Navicat,由于要使用的是MySQL数据库,选择MySQL ②输入连接名(这个是随便起的) 由上图可知连接数据库的四个要素 host:确定要操作的数据库在哪台电 ...

  4. AIFF和AIFF-C音频交换文件格式的简单介绍

    正文 AIFF,全称 Audio Interchange File Format,可简写为 Audio IFF 或 AIFF,是苹果公司推出的一种音频文件格式. AIFF-C,是 AIFF 的扩充,C ...

  5. Networking && Internet 计网学习笔记一

    Networking && Internet 计网学习笔记一 参考书籍: James F. Kurose, Keith W. Ross. 计算机网络-自顶向下方法 (7th). 机械工 ...

  6. SQL靶场过关

    background1基础部分 注入分类: 基于从服务器接收到的相应: 基于错误的SQL注入 联合查询的类型 堆叠查询注射 SQL盲注 布尔盲注 时间盲注 报错盲注 基于如何处理输入的SQL查询(数据 ...

  7. [EULAR文摘] 新证据: NSAID对AS放射学进展的影响

    新证据: NSAID对AS放射学进展的影响 Sieper J, et al. EULAR 2015. Present ID: OP0145. 背景: 既往有研究显示持续给予NSAID相较于按需给药能在 ...

  8. $forceUpdate和this.$set('userInfo',name,'小红');

    在Vue官方文档中指出,$forceUpdate具有强制刷新的作用. 那在vue框架中,如果data中有一个变量:age,修改他,页面会自动更新. 但如果data中的变量为数组或对象,我们直接去给某个 ...

  9. 2.4 在DispatcherServlet的service方法中,通过ServletPath获取对应的Controller对象

    @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws Se ...

  10. UISelector

    1.UiSelector的基本方法 UiSelector对象可以理解为一种条件对象,描述的是一种条件,可以配合UiObject使用得到某个符合条件的控件对象. 所有的方法都是public的,且都返回U ...