收藏官网首页
查看: 32572|回复: 56

iot小能手:SOC方案的智能开关,成本只需20多

7

主题

92

帖子

1587

积分

金牌会员

Rank: 6Rank: 6

积分
1587
跳转到指定楼层
楼主
发表于 2017-6-28 19:59:25 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
校园创客福利
本帖最后由 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做,那么基本上只能STM32arduino来做,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 智能开关.zip (10.28 MB, 下载次数: 1304)
今天我看了米家的新品发布会,德哥说小米的智能插座卖了6000万个。我听完之后非常惊讶,智能插座这个东西,其实技术难度并不是很大,机智云也能做,论坛里面还有人开源了这个智能插座。有人可能会说:你做的东西这么简单也好意思拿出来参赛吗?我的回答就是:小米的智能插座这么简单,能卖6000万个,你的呢?所以我认为:不要因为简单就不动手去做,一看这个好简单,那个好简单,就是不肯动手。中国从来都不缺创意,但是缺少动手去做的人。
上面哪里说错了或者没说清楚的地方,欢迎指教和提问。

更新:一群人拿我的跟工厂量产的比说贵了,我也是有点不知道说什么好。怎么说呢,工厂的方案肯定比我便宜啊,人家量大,拿元件就是比个人DIY要便宜,只要你把220V电源模块和ESP8266的成本降下来,什么都好说了。电源我在淘宝上看过那种卖3、4块钱一个的裸板开关电源和1块多一个的阻容降压电源模块,但是自己家里用,为了安全起见,还是选了个比较贵的。就酱~


7

主题

92

帖子

1587

积分

金牌会员

Rank: 6Rank: 6

积分
1587
推荐
 楼主| 发表于 2017-9-5 22:59:32 | 只看该作者
AIcainiao 发表于 2017-9-5 14:53
楼主大大,GPIO5定义是什么原理?个人想法,是不是作为连接继电器输入端,当开时,Gpio5就高电位,当闭时, ...

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

8

主题

144

帖子

3308

积分

论坛元老

Rank: 8Rank: 8

积分
3308
推荐
发表于 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;
                }
        }
    //====================================

111.jpg (201.39 KB, 下载次数: 908)

控制APP

控制APP

8

主题

144

帖子

3308

积分

论坛元老

Rank: 8Rank: 8

积分
3308
推荐
发表于 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,所以我在添加数据点也不会搞对。----------另外------------,你修改了程序在更新不用在烧写,直接用网络升级,这样就很方便。

点评

不要替换成我的文件,也不要用我的Product Key,你只能按我的思路去修改,在main()函数里多出来的函数就是我新增的,如GPIO_Init();和开定时器等等。网络升络不支持SoC版,我试过,提示MAC地址不对,应该只能用于MC  详情 回复 发表于 2017-7-5 10:03

0

主题

6

帖子

185

积分

注册会员

Rank: 2

积分
185
57#
发表于 2018-4-29 11:10:24 | 只看该作者
校园创客福利
小白 先下载学习

3

主题

5

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
56#
发表于 2018-4-8 09:32:46 | 只看该作者
棒!打算按照版主的步骤实现一个

7

主题

92

帖子

1587

积分

金牌会员

Rank: 6Rank: 6

积分
1587
55#
 楼主| 发表于 2018-2-19 18:42:38 | 只看该作者
指尖de飞翔 发表于 2018-2-16 10:30
大家的手机APP是怎么做出来的?楼主可以把代码发上来?

你在机智云官网下载一个就行,这个是公用的Demo

0

主题

3

帖子

236

积分

中级会员

Rank: 3Rank: 3

积分
236
54#
发表于 2018-2-16 10:30:48 | 只看该作者
大家的手机APP是怎么做出来的?楼主可以把代码发上来?

点评

你在机智云官网下载一个就行,这个是公用的Demo  详情 回复 发表于 2018-2-19 18:42

7

主题

92

帖子

1587

积分

金牌会员

Rank: 6Rank: 6

积分
1587
53#
 楼主| 发表于 2017-12-24 10:15:58 | 只看该作者
清脆的风铃声 发表于 2017-12-21 00:30
我控制不了,怎么回事?没有反应

能详细地描述一下吗?

3

主题

30

帖子

1467

积分

金牌会员

Rank: 6Rank: 6

积分
1467
52#
发表于 2017-12-21 00:30:09 | 只看该作者
教您5分钟接入机智云,实现傻瓜式开发
我控制不了,怎么回事?没有反应

点评

能详细地描述一下吗?  详情 回复 发表于 2017-12-24 10:15

8

主题

144

帖子

3308

积分

论坛元老

Rank: 8Rank: 8

积分
3308
51#
发表于 2017-11-19 10:11:54 | 只看该作者
黑洞 发表于 2017-7-7 14:33
谢谢楼主共享,按照楼主的思路去掉了灯开关,加了是否启用定时器和定时关机功能。
模块调试成功,订的外壳 ...

请问,多加一个启用定时有什么用?我的没加,直接要定时开和关直接用就是了。

7

主题

92

帖子

1587

积分

金牌会员

Rank: 6Rank: 6

积分
1587
50#
 楼主| 发表于 2017-9-25 21:00:59 | 只看该作者
peter58 发表于 2017-9-24 20:18
你好,其他的都做好了,没什么问题,现在就是想做个星期几的那天 控制,不知道怎么加代码,还有就是机智云 ...

自己搜一个计算公式就行了,方法有很多,例如:基姆拉尔森计算公式

8

主题

144

帖子

3308

积分

论坛元老

Rank: 8Rank: 8

积分
3308
49#
发表于 2017-9-24 20:18:26 | 只看该作者
你好,其他的都做好了,没什么问题,现在就是想做个星期几的那天 控制,不知道怎么加代码,还有就是机智云程序里没WEEK定义,能指点下吗?谢谢!!

点评

自己搜一个计算公式就行了,方法有很多,例如:基姆拉尔森计算公式  详情 回复 发表于 2017-9-25 21:00

7

主题

92

帖子

1587

积分

金牌会员

Rank: 6Rank: 6

积分
1587
48#
 楼主| 发表于 2017-9-18 21:48:52 | 只看该作者
AIcainiao 发表于 2017-9-18 09:09
楼主大大,请问重新连接网络或者初始化这部分,您有什么想法?

没啥想法,网络连接都是机智云封装好的,自己写的不会比他好,初始化自己要用什么就初始化什么,也没啥好说的。

17

主题

100

帖子

1381

积分

金牌会员

Rank: 6Rank: 6

积分
1381
47#
发表于 2017-9-18 09:09:19 | 只看该作者
注册成为机智云开发者,手机加虚拟设备快速开发
楼主大大,请问重新连接网络或者初始化这部分,您有什么想法?

点评

没啥想法,网络连接都是机智云封装好的,自己写的不会比他好,初始化自己要用什么就初始化什么,也没啥好说的。  详情 回复 发表于 2017-9-18 21:48

7

主题

92

帖子

1587

积分

金牌会员

Rank: 6Rank: 6

积分
1587
46#
 楼主| 发表于 2017-9-13 21:13:50 | 只看该作者
寒枫 发表于 2017-9-12 21:59
我在App上设置好时间,到了那个点还是没有开灯动作,代码没有改动,app点开关灯可以实现开关灯动作,就是定 ...

我测试是成功的,也没有在我的开发者中心看到有新增上线的记录

0

主题

18

帖子

732

积分

高级会员

Rank: 4

积分
732
45#
发表于 2017-9-12 21:59:46 来自手机 | 只看该作者
我在App上设置好时间,到了那个点还是没有开灯动作,代码没有改动,app点开关灯可以实现开关灯动作,就是定时不行

点评

我测试是成功的,也没有在我的开发者中心看到有新增上线的记录  详情 回复 发表于 2017-9-13 21:13

17

主题

100

帖子

1381

积分

金牌会员

Rank: 6Rank: 6

积分
1381
44#
发表于 2017-9-7 12:00:40 | 只看该作者
iDea 发表于 2017-9-6 18:13
连接之前的开关,可以手机控制,也可以用开关控制。不会造成那种走到了门口还要拿出手机打开APP的不方便 ...

懂了懂了!!

7

主题

92

帖子

1587

积分

金牌会员

Rank: 6Rank: 6

积分
1587
43#
 楼主| 发表于 2017-9-6 18:13:39 | 只看该作者
AIcainiao 发表于 2017-9-6 10:45
那这个io口有什么作用?

连接之前的开关,可以手机控制,也可以用开关控制。不会造成那种走到了门口还要拿出手机打开APP的不方便

点评

懂了懂了!!  详情 回复 发表于 2017-9-7 12:00

17

主题

100

帖子

1381

积分

金牌会员

Rank: 6Rank: 6

积分
1381
42#
发表于 2017-9-6 10:45:24 | 只看该作者
校园创客福利
那这个io口有什么作用?

点评

代替之前的开关,可以手机控制,也可以用开关控制。不会造成那种走到了门口还要拿出手机打开APP的不方便  详情 回复 发表于 2017-9-6 18:13

17

主题

100

帖子

1381

积分

金牌会员

Rank: 6Rank: 6

积分
1381
40#
发表于 2017-9-5 14:53:52 | 只看该作者
楼主大大,GPIO5定义是什么原理?个人想法,是不是作为连接继电器输入端,当开时,Gpio5就高电位,当闭时,Gpio5就低?

点评

外部上拉,按键没有按下的时候是高电平,当按键按下的时候是低电平  详情 回复 发表于 2017-9-5 22:59

8

主题

144

帖子

3308

积分

论坛元老

Rank: 8Rank: 8

积分
3308
39#
发表于 2017-9-3 17:04:32 | 只看该作者
本帖最后由 peter58 于 2017-9-3 17:52 编辑
黑洞 发表于 2017-7-7 14:33
谢谢楼主共享,按照楼主的思路去掉了灯开关,加了是否启用定时器和定时关机功能。
模块调试成功,订的外壳 ...
谢谢问题已解决,自已基础太差
你好,按照源程序改了一个定时关闭,现在有个问题,在小时段 同时设置在同一时段就不起作用,比如:定时开设置到8:30开 ,定时关设置到8:32关 就不起作用,如果单独的用定时开或者定时关就没问题,只要小时不在一个时段上就没问题,搞了几天一点头绪都没有,能否指点下,修改哪里吗?谢谢!!!

111.jpg (201.39 KB, 下载次数: 529)

app

app
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表