iDea 发表于 2017-6-28 19:59:25

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块多一个的阻容降压电源模块,但是自己家里用,为了安全起见,还是选了个比较贵的。就酱~


iDea 发表于 2017-9-5 22:59:32

AIcainiao 发表于 2017-9-5 14:53
楼主大大,GPIO5定义是什么原理?个人想法,是不是作为连接继电器输入端,当开时,Gpio5就高电位,当闭时, ...

外部上拉,按键没有按下的时候是高电平,当按键按下的时候是低电平

peter58 发表于 2017-9-3 16:53:07

本帖最后由 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:37:23

本帖最后由 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,所以我在添加数据点也不会搞对。----------另外------------,你修改了程序在更新不用在烧写,直接用网络升级,这样就很方便。

peter58 发表于 2017-6-28 21:39:35

学习下,谢谢

tidyjiang8 发表于 2017-6-29 15:54:03

Great!
But话说,为嘛不放github,讨厌百度云

peter58 发表于 2017-6-29 22:43:20

已解决

本帖最后由 peter58 于 2017-6-29 23:12 编辑

请问下我用你的源码KEY可以控制,改成自已的就控制不了,数据点也是和LZ一样的,哪里不对呢?基本哪里应该改成变长

iDea 发表于 2017-6-29 23:08:20

peter58 发表于 2017-6-29 22:43
请问下我用你的源码KEY可以控制,改成自已的就控制不了,数据点也是和LZ一样的,哪里不对呢? ...

请问你说的KEY是哪个,是配置wifi的那个按键吗?我的都是可以用的

peter58 发表于 2017-6-29 23:13:21

本帖最后由 peter58 于 2017-6-29 23:15 编辑

iDea 发表于 2017-6-29 23:08
请问你说的KEY是哪个,是配置wifi的那个按键吗?我的都是可以用的
谢谢,已解决,基本信息哪里要设置成:变长,定长就不行,谢谢。在请问下,小时哪里是开灯,是不是关闭时,设置时间长度就自动打开了?

iDea 发表于 2017-6-29 23:20:48

peter58 发表于 2017-6-29 23:13
谢谢,已解决,基本信息哪里要设置成:变长,定长就不行,谢谢。在请问下,小时哪里是开灯,是不是关闭时 ...
定时开灯是设置到那个时间点就开灯,例如你定时开灯(时)设置的是6,定时开灯(分)设置的是30,那到了北京时间的6:30,灯就会自动打开,你点关灯,灯也可以关闭。延时关灯是多少分钟后就关灯。

iDea 发表于 2017-6-30 23:14:21

tidyjiang8 发表于 2017-6-29 15:54
Great!
But话说,为嘛不放github,讨厌百度云

已上传GitHub

peter58 发表于 2017-7-1 16:27:49

iDea 发表于 2017-6-29 23:20
定时开灯是设置到那个时间点就开灯,例如你定时开灯(时)设置的是6,定时开灯(分)设置的是30,那到了北 ...

lz能把源码注释下就好了,有的地方看不懂

iDea 发表于 2017-7-1 17:59:04

peter58 发表于 2017-7-1 16:27
lz能把源码注释下就好了,有的地方看不懂

你可以结合这个文档看一下,不懂的函数名搜一下就可以了,很简单,就是操作了两个IO,一个输入一个输出,还有两个软件定时器

丶LoveFeier 发表于 2017-7-2 09:44:31

这个ESP8266最小系统图上面的 KEY 具体是怎么连接的大神~~

iDea 发表于 2017-7-2 10:07:14

丶LoveFeier 发表于 2017-7-2 09:44
这个ESP8266最小系统图上面的 KEY 具体是怎么连接的大神~~


就是普通的接法啊。

丶LoveFeier 发表于 2017-7-2 10:20:42

iDea 发表于 2017-7-2 10:07
就是普通的接法啊。

OK ~准备按照你发的思路试试~~

iDea 发表于 2017-7-2 10:24:18

丶LoveFeier 发表于 2017-7-2 10:20
OK ~准备按照你发的思路试试~~

哈哈,我的设备已经成功上线2天了,亲测可用。如果真的用,接线的时候小心点,市电还是挺危险的。

peter58 发表于 2017-7-2 19:42:13

iDea 发表于 2017-7-1 17:59
你可以结合这个文档看一下,不懂的函数名搜一下就可以了,很简单,就是操作了两个IO,一个输入一个输出, ...

谢谢,我是该认真的看看了

求学者 发表于 2017-7-3 18:48:24

iDea 发表于 2017-7-2 10:24
哈哈,我的设备已经成功上线2天了,亲测可用。如果真的用,接线的时候小心点,市电还是挺危险的。
...

有空可以指点一下我吗

iDea 发表于 2017-7-3 19:34:42

求学者 发表于 2017-7-3 18:48
有空可以指点一下我吗

请问,有空看到了就回

peter58 发表于 2017-7-4 22:25:12

楼主的程序非常好用,都改了几个插座了,主要是定时,如果在把关闭加1个24小时可控的话就好了。

iDea 发表于 2017-7-4 22:43:35

peter58 发表于 2017-7-4 22:25
楼主的程序非常好用,都改了几个插座了,主要是定时,如果在把关闭加1个24小时可控的话就好了。 ...

哈哈,谢谢支持。你可以根据我上面的步骤自己创建产品,增加数据点,我这里就不改了。因为如果我现在增加数据点应用之后,原来的设备就连不上了。而且我的模块已经装在开关下面了,拿出来还要去拉闸,还要重新烧录程序。过程中有不懂的地方可以提问,看到了就会回复。
页: [1] 2 3
查看完整版本: iot小能手:SOC方案的智能开关,成本只需20多