前言:

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

一、所需配件。注:

二、申请帐号,编写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. 实现简单的`Blazor`低代码

    本篇博客只实现基本的低代码,比如新增组件,动态修改组件参数 创建项目 首先创建一个空的Blazor Server,并且命名LowCode.Web 实现我们还需要引用一个Blazor组件库,由于作者用M ...

  2. MySQL数据库报1055错误

    有点坑啊,当初装MySQL数据库的时候没有整配置文件,结果MySQL报1055错误的时候,网上的解决办法都说如果需要永久生效的话,只能通过改配置文件实现,but,我没有配置文件,蜜汁尴尬啊 1.已安装 ...

  3. vscode在UBUNTU下使用CMAKE编译

    打开一个含有CMakeLists.txt的文件夹 在.vscode要建立三个json文件才能对Cmake工程进行编译和调试,分别是c_cpp_properties.json,launch.json和t ...

  4. python 中常用可视化工具库

    python 中常用可视化工具库 a.Numpy常用属性及方法 为什么用它:它可以方便的使用数组,矩阵进行计算,包含线性代数.傅里叶变换.随机数生成等大量函数(处理数值型的数组) import num ...

  5. 大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad

    前文回顾 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介 大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s ️Reference: IoT 边缘计算系列文章 ...

  6. 有趣的python库-moviepy

    moviepy-视频处理 安装: pip install moviepy 基本使用: from moviepy.video.compositing.CompositeVideoClip import ...

  7. JZOJ 1038. 【SCOI2009】游戏

    题目 自己找 思路 大致过程见 JZOJ 3232. [佛山市选2013]排列 而本题改成种类数 那么我们不需要 \(ln\) 这个东东 直接转移 \(f\) 改成种类数 对于可能转移过来的状态,直接 ...

  8. reids(2)概述与安装

    前言 redis安装在Linux服务器上,系统为centos7,安装的版本为redis6.2.10 下载与安装 下载地址:https://redis.io/download/#redis-downlo ...

  9. js根据指定字段数据去重

    //根据id去重 function unique(arr1) { const res = new Map(); return arr1.filter((a) => !res.has(a.id) ...

  10. ASP.NET Core - 依赖注入(三)

    4. 容器中的服务创建与释放 我们使用了 IoC 容器之后,服务实例的创建和销毁的工作就交给了容器去处理,前面也讲到了服务的生命周期,那三种生命周期中对象的创建和销毁分别在什么时候呢.以下面的例子演示 ...