前言:

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

一、所需配件。注:

二、申请帐号,编写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. JAVA虚拟机02---JAVA虚拟机运行时数据区域简介

      JAVA虚拟机运行时数据区域 1.程序计数器 1)它可以看做是当前线程执行的字节代码的行指示器,通过改变计数器的值来决定下一步执行的代码 2)它是线程私有的,每个线程都有自己的程序计数器(JAVA ...

  2. 冰河指南AI技术社区基于ChatGPT正式启动运营

    大家好,我是冰河~~ 最近ChatGPT真的太火了,科技圈几乎都在争相报导这个黑科技,它能够通过学习和理解人们的语言来和人类进行对话,能够与人们进行交流,甚至可以对你提出的问题进行分析,尽可能给出你想 ...

  3. 2021级《JAVA语言程序设计》上机考试试题

    勉强写完了 Card package Bean; public class Card { private String CardId; private String CardData; private ...

  4. 2021级《JAVA语言程序设计》上机考试试题1

    昨天进行了期末考试,考的不够理想,看见题没思路,到了10点半刚刚进入状态,11点半结束....... 这是学生的试题要求(按照评分卡上的来,卷子上要求和评分卡不一致(.......)) 这是登录页面 ...

  5. web自动化中如何使用cookie登录

    做web自动化的时候,登录是关键的一步.但每次频繁的输入用户名.密码导致心态有些爆炸,所以使用cookie登录势在必行.下面是两种场景的cookie登录. 一. cookie登录1 这种是界面地址跳转 ...

  6. 用C++ 弹奏武侠音乐:沧海一声笑

    前言: 参照网路代码,用编程语言来弹奏一首音乐,搞点轻松的 原文:点击此处 完整代码: 以下为Visual Stuido 2022测试可用,控制台程序.运行之后,会自动弹奏沧海一声笑,并且出现歌词.主 ...

  7. 在Github的fork项目中切换分支来提交PR

    在Github的fork项目中切换分支来提交PR 查看远程所有分支 git branch不带参数,列出本地已经存在的分支,并且在当前分支的前面用*标记,加上-a参数可以查看所有分支列表,包括本地和远程 ...

  8. Anndroid GC 那些事

    内存回收机制对于app性能优化中比较重要部分,我们要做好优化工作,Android GC工作情况我们需要熟知, 因此整理了一下关于GC知识点,主要分为Dalvik与ART两部分 Dalvik堆内存结构: ...

  9. mysql查询重复的数据

    ---查询重复的数据 . UUID可以换成其他的需要去重的字段. 点击查看代码 select * FROM t_gzmx_reptile_receive_incre WHERE id NOT IN ( ...

  10. C++分别用顺序栈和链栈实现数制的转换相关代码

    //案例分析:将一个十进制数N转化为八进制数,在计算过程中,使得N模8得到八进制数的各个数依次进栈,//然后将八进制数依次输出,得到八进制数.#include<iostream>#incl ...