iot小能手:SOC方案的智能开关,成本只需20多
本帖最后由 iDea 于 2017-7-11 15:15 编辑我家的房子应该算是老房子了,卧室开关灯用的还是普通的开关,连双掷开关也不装一个,每次关灯都要爬下床,这夏天还好,要是到了冬天那是极其痛苦的,如果要改造线路就变得非常不现实了。但是这怎么可能难得我们这些技术男呢?虽然撩妹不行,但是动手能力还是很强的。所以我就用机智云的SoC方案做一个内嵌在开关座里面的控制系统。这里分两部分讲述:软件和硬件。
[*]软件
首先,我们要创建一个产品,然后定义一些数据点,这里就不做详细的介绍,不清楚的可以看一下开发者中心的文档中心,里面有详细的介绍。创建产品的时候,我们要选择wifi方案,不要选蓝牙和中控。这里我只做了一些简单的数据点。因为我需求没有那么多。下面是基本信息和数据点的截图:
然后,我们把机智云自动生成的SoC版的代码框架下载下来:
下面就是要搭建SoC的开发环境了,机智云的文档中心里面也做了大量的教程:
http://docs.gizwits.com/zh-cn/deviceDev/UseSOC.html 链接在此,我这里就不做过多的讲解了,我用的是ubuntu 16.04的64位,没有问题。
最后根据控制逻辑写代码就行,代码打包放在附件里了。
[*]硬件
因为我急着用,所以我就没有打板,等打板回来都要6-7天,还要测试。所以我这里就直接用了洞洞板,从某宝上买,第二天就到了。
我这里说一下用SoC版本的好处,如果你是做简单的功能,那么用SoC可能是最佳的选择。最重要的一点就是省钱,如果你用MCU做,那么基本上只能STM32和arduino来做,STM32只有LQFP封装,这样就要打板,50块,arduino也不便宜,而且大小就在那里,想做得更小,几乎不可能。这是ESP8266的最小系统以及一些引脚分配:
下面是电源模块的,220V转5V的电源模块是买的,这样做一来安全,二来方便。这里我放了一个电解电容和独石电容。104的独石电容用来滤高频波:
下面是5V转3.3V的稳压芯片,这是给ESP8266供电的:
下面是最重要的控制部分,继电器和光耦:
相关接口端子:
电路部分就是这些,下面我列一个BOM表:
序号名称数量单价总价
1ESP8266-12F11111
2220V转5V电源模块11010
3松乐继电器10.970.97
4电源端子30.280.84
5P521光耦10.440.44
6AMS1117-3.3V10.10.1
76CM*6CM洞洞板10.540.54
8S9014三极管10.040.04
91N4007二极管10.030.03
1010uf电容20.030.06
111K电阻60.0150.09
24.11
[*]实物
到这样,制作就完成了,
机智云APP:
来张摆拍,完全可以放下:
调试时候拍的,放进去拍就看不到了
[*]附件:
附件太大,我 make clean之后还有10M,上传到了GitHub和百度云。
GitHub:https://github.com/wszdxmh/Smart_Switch_ESP8266/tree/master
链接:http://pan.baidu.com/s/1sli8wyD 密码:cd92
今天我看了米家的新品发布会,德哥说小米的智能插座卖了6000万个。我听完之后非常惊讶,智能插座这个东西,其实技术难度并不是很大,机智云也能做,论坛里面还有人开源了这个智能插座。有人可能会说:你做的东西这么简单也好意思拿出来参赛吗?我的回答就是:小米的智能插座这么简单,能卖6000万个,你的呢?所以我认为:不要因为简单就不动手去做,一看这个好简单,那个好简单,就是不肯动手。中国从来都不缺创意,但是缺少动手去做的人。
上面哪里说错了或者没说清楚的地方,欢迎指教和提问。
更新:一群人拿我的跟工厂量产的比说贵了,我也是有点不知道说什么好。怎么说呢,工厂的方案肯定比我便宜啊,人家量大,拿元件就是比个人DIY要便宜,只要你把220V电源模块和ESP8266的成本降下来,什么都好说了。电源我在淘宝上看过那种卖3、4块钱一个的裸板开关电源和1块多一个的阻容降压电源模块,但是自己家里用,为了安全起见,还是选了个比较贵的。就酱~
AIcainiao 发表于 2017-9-5 14:53
楼主大大,GPIO5定义是什么原理?个人想法,是不是作为连接继电器输入端,当开时,Gpio5就高电位,当闭时, ...
外部上拉,按键没有按下的时候是高电平,当按键按下的时候是低电平 本帖最后由 peter58 于 2017-9-3 17:55 编辑
你好,按照你源程序改了一个定时关闭,现在有个问题,在小时段 同时设置在同一时段就不起作用,比如:定时开设置到8:30开 ,定时关设置到8:32关 就不起作用,如果单独的用定时开或者定时关就没问题,只要小时不在一个时段上就没问题,搞了几天一点头绪都没有,请有空帮我看看怎么改,我把定时程序帖上来,谢谢!!
(定时数据点就在你原来的名字后面多加了一个字母;houra小时,delayb分)谢谢问题已解决,自已基础太差,多加个定义就OK了,增加了个timeoff_flag
//============定时开===========
gagentGetNTP(&ntptimeStr);
os_printf("gagentntp seco: %d",ntptimeStr.second);
if((currentDataPoint.valuetimeon_hour != 0) || (currentDataPoint.valuetimeon_min != 0))
{
if(ntptimeStr.hour == currentDataPoint.valuetimeon_hour)
if(ntptimeStr.minute == currentDataPoint.valuetimeon_min)
{
if(timeon_flag == 0)
{
GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);
currentDataPoint.valueswitchcontrol = 1;
timeon_flag = 1;
}
}
else
{
timeon_flag = 0;
}
}
//=========定时关=======================
gagentGetNTP(&ntptimeStr);
os_printf("gagentntp secon: %d",ntptimeStr.second);
if((currentDataPoint.valuetimeon_houra != 0) || (currentDataPoint.valuetimeon_minb != 0))
{
if(ntptimeStr.hour == currentDataPoint.valuetimeon_houra)
if(ntptimeStr.minute == currentDataPoint.valuetimeon_minb)
{
if(timeon_flag == 1)
{
GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0);
currentDataPoint.valueswitchcontrol = 0;
timeon_flag = 0;
}
}
else
{
timeon_flag = 1;
}
}
//====================================
本帖最后由 peter58 于 2017-7-5 09:41 编辑
iDea 发表于 2017-7-4 22:43
哈哈,谢谢支持。你可以根据我上面的步骤自己创建产品,增加数据点,我这里就不改了。因为如果我现在增加 ...
你好。谢谢你的回复,我是自已照到你的数据点建的数据点,(用的我的数据点上的Product Key复制到你的程序里的)一切都很正常,但我下载我的硬件方案: SoC,在程序里比到你的代码填写始终不对。就是把整个main.c换成你原来的main.c都不对,也不晓得是哪里错了,一样的数据点,看了下就是main.c里和gizwits_product.c里有添加程序,其他地方没看出来,始终不对,现在只能用你的程序,我的Product Key,所以我在添加数据点也不会搞对。----------另外------------,你修改了程序在更新不用在烧写,直接用网络升级,这样就很方便。 学习下,谢谢 Great!
But话说,为嘛不放github,讨厌百度云
已解决
本帖最后由 peter58 于 2017-6-29 23:12 编辑请问下我用你的源码KEY可以控制,改成自已的就控制不了,数据点也是和LZ一样的,哪里不对呢?基本哪里应该改成变长
peter58 发表于 2017-6-29 22:43
请问下我用你的源码KEY可以控制,改成自已的就控制不了,数据点也是和LZ一样的,哪里不对呢? ...
请问你说的KEY是哪个,是配置wifi的那个按键吗?我的都是可以用的 本帖最后由 peter58 于 2017-6-29 23:15 编辑
iDea 发表于 2017-6-29 23:08
请问你说的KEY是哪个,是配置wifi的那个按键吗?我的都是可以用的
谢谢,已解决,基本信息哪里要设置成:变长,定长就不行,谢谢。在请问下,小时哪里是开灯,是不是关闭时,设置时间长度就自动打开了?
peter58 发表于 2017-6-29 23:13
谢谢,已解决,基本信息哪里要设置成:变长,定长就不行,谢谢。在请问下,小时哪里是开灯,是不是关闭时 ...
定时开灯是设置到那个时间点就开灯,例如你定时开灯(时)设置的是6,定时开灯(分)设置的是30,那到了北京时间的6:30,灯就会自动打开,你点关灯,灯也可以关闭。延时关灯是多少分钟后就关灯。 tidyjiang8 发表于 2017-6-29 15:54
Great!
But话说,为嘛不放github,讨厌百度云
已上传GitHub iDea 发表于 2017-6-29 23:20
定时开灯是设置到那个时间点就开灯,例如你定时开灯(时)设置的是6,定时开灯(分)设置的是30,那到了北 ...
lz能把源码注释下就好了,有的地方看不懂 peter58 发表于 2017-7-1 16:27
lz能把源码注释下就好了,有的地方看不懂
你可以结合这个文档看一下,不懂的函数名搜一下就可以了,很简单,就是操作了两个IO,一个输入一个输出,还有两个软件定时器
这个ESP8266最小系统图上面的 KEY 具体是怎么连接的大神~~ 丶LoveFeier 发表于 2017-7-2 09:44
这个ESP8266最小系统图上面的 KEY 具体是怎么连接的大神~~
就是普通的接法啊。
iDea 发表于 2017-7-2 10:07
就是普通的接法啊。
OK ~准备按照你发的思路试试~~ 丶LoveFeier 发表于 2017-7-2 10:20
OK ~准备按照你发的思路试试~~
哈哈,我的设备已经成功上线2天了,亲测可用。如果真的用,接线的时候小心点,市电还是挺危险的。
iDea 发表于 2017-7-1 17:59
你可以结合这个文档看一下,不懂的函数名搜一下就可以了,很简单,就是操作了两个IO,一个输入一个输出, ...
谢谢,我是该认真的看看了 iDea 发表于 2017-7-2 10:24
哈哈,我的设备已经成功上线2天了,亲测可用。如果真的用,接线的时候小心点,市电还是挺危险的。
...
有空可以指点一下我吗 求学者 发表于 2017-7-3 18:48
有空可以指点一下我吗
请问,有空看到了就回 楼主的程序非常好用,都改了几个插座了,主要是定时,如果在把关闭加1个24小时可控的话就好了。 peter58 发表于 2017-7-4 22:25
楼主的程序非常好用,都改了几个插座了,主要是定时,如果在把关闭加1个24小时可控的话就好了。 ...
哈哈,谢谢支持。你可以根据我上面的步骤自己创建产品,增加数据点,我这里就不改了。因为如果我现在增加数据点应用之后,原来的设备就连不上了。而且我的模块已经装在开关下面了,拿出来还要去拉闸,还要重新烧录程序。过程中有不懂的地方可以提问,看到了就会回复。