收藏官网首页
楼主: 彩色笔

SOC方案,利用ESP12F模块来做智能插座(完结)

16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
跳转到指定楼层
楼主
发表于 2017-9-22 10:11:22 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
教您5分钟接入机智云,实现傻瓜式开发
本帖最后由 彩色笔 于 2017-11-2 21:03 编辑

      从一个什么都不会的小白,到做出一款智能插座我用了三个多月的时间,其中趟过的坑真是数不过来。在此特别,特别,特别真诚地感谢群里和论坛上的各路大神。尤其是下面这位大神给我帮助最多。感谢感谢。

    可能教程更新过程会比较慢,但我在此保证肯定会完结,这是我向以上大神的承诺。也是让后面来的小伙伴们更快地做出自己想要的东西。程序和PCB我会全部公开。     先来几张图镇镇场,吸引下你们的学习兴趣。
   
软件条件:

          1、Eclipse安装了吗?我推荐用安信可的。论坛上搜,有相关帖子。
          2、Android Studio安装了吗? 我只会安卓的,而且还特别菜。
          3、其它软件,PS,AD分别用来处理图片和PCB布板,当然你也可以用别的软件来做。                           





硬件条件:
          1、ESP12F ,淘宝上安信可店12元左右。
   以上准备好了,我们就去官网自己的账号下建立产品项目吧。

第一部分,官网上建立项目
机智云关于插座这块有模块数据点,我们可以利用下,如下图操作。
   


2、修改和增加数据点
  

关于数据点要说一下,后面系统自动生成APP端和MCU端,都是根据这里的数据点“标识名”来生成的,所以取名时花点心思,方便以后自己或别人判读。生成后端代码之前,这里要多想想需要哪些数据点,以后再来增加,操作起来就很麻烦了。增加后需要重新生成。  看到这里,如果有好方法的朋友,一定不要吝啬,请分享下你的办法帮助更多人。
3、应用配置生成



4、选择“应用开发”生成APP端的框架


在“
Product Secret:”处填入编码,这个编码在“基本信息”栏里找,如下图




点击:“显示完整密钥”,在密码框内输入你账号的登录密码,然后将完整的密钥复制下来。粘贴到应用开发内。然后点击,“生成开发包”,等待APP端开发包生成后下载下来。



5、生成设备端代码,点击“MCU开发”
     ESP12F本身就是个单片机,考虑到插座体积和功能,我选择SOC方案,够用了。
     ESP12F选择32M。现在官方功能有增加了,有不同内存版本的可选了。以前询问机智云技术,推荐用12F来搞,现在难道ESP-01S也可以做了?  至于哪个型号对应哪个容量 ,还没查,后期补,知道的帖下留言。
   
输入密钥后,同样生成。等待后,下载下来。

第二部分,硬件原理图和PCB板设计

外壳厂家地址:https://detail.1688.com/offer/554695408415.html?spm=0.0.0.0.u6xmmj
        在进行硬件电路设计前,首先要考虑的是内部供电问题,衡量各方面条件,最终内部供电采用深圳深鸿盛 KP3211SG,非隔离降压IC。注意:如果采用KP3210 APP上操作快速多次开关时,动作会失控,最终原因是电流不够导致的。故你们在选IC时,输出电流要>=500mA 为好。
       为什么采用这款IC,首先有两点考虑,1、输出电压可调,2、供电电流能够满足。3、电路结构简单
继电器常规最小控制电压是5V的,而ESP12F  供电电压是3.3V,可采用ASM1117-3.3V 线性降压IC,这里压降要尽量小,如果供电电源输出是12V的,将会导致线性降压IC损耗过大,发烫,长期使用会损坏。故输出电压我选择5V。

      ACS712是霍尔型电流传感器,根据通过的电流会产生一个电压,我们经过分压后,传给ESP12F的AD引脚进行采样,根据计算得到能耗值。该功能目前我还未进行,只是PCB上有设计。关键AD采样不怎么明白,希望AD操作成功的朋友指教一二。





      PCB板上,继电器采用的HF- JQX-115F-I- 005 012 024-1HS3(555) 6脚 5V 16A宏发继电器,体积有些大,需要改造下外壳。如果用宏发5V 10A的 就不必改了,尺寸刚好。

   

第三部分 手机APP端UI设计

      完成PCB布局后,在发出打样的这几天里,我们可以进行APP端的设计。
      解压缩文件后,我们可以看到如图两个文件,入门推荐用Android Studio来做。

         

       将图中AndroidStudio文件拷贝到项目文件夹内,改名为“SmartSocket”,然后用Android Studio软件导入项目。
       现在让我们来把机智云的框架改成自己的,从启动到操作界面来个大换血。

      打开文件后,下图就是程序中的各个界面了。

         


下面就是每个界面对应的layout文件和其名称,找到后对应修改。

   activity_gos_user_login.xml



activity_gos_device_list.xml注意:新版APP生成包,在进行这版面编辑时,出现错误,“Missing classes”鼠标滚动到下面。找到下图,点击"Build",可修复错误



activity_gos_airlink_choose_decive_workwifi.xml

activity_gos_modelist.xml

activity_gos_airlink_ready.xml


activity_gos_device_control.xml
花费最多时间的就是这个界面了,程序操作的界面,这个地方我们需要会一些PS技术来美化它。


  
   功能和界面设计,从配色到布局可以先在PS中设计好,今天将老的界面升下级,这次要增加一个定时功能,老版是只有延时开/关功能。
   在这里分享个人经验,可以从网站下载相关的 PSD文件,将有用的文件导出成单个素材,先在PS中预览效果,满意保存下来,后期程序中引用。最终的PSD文件放入项目文件夹中保留。   由于个人技术比较菜,又喜欢比较炫的效果,目前只能PS了。如果有安卓技术可以,建议还是在 Android Studio中用文本来写,这样中、英文版本后期好处理。


第四部分   APP端程序代码添加
       找到activity_gos_device_control.xml打开,设置界面布局,PS好的按钮和背景替换。这些操作详细方法就不提了,自己搜索吧。参考机智云官方的方法来进行。地址如下:
      http://docs.gizwits.com/zh-cn/quickstart/AndroidAppFrame.html

设置好的界面样式

如何快速找到该界面对应的JAVA文件。 点击左下角“Text”,找到如上图的C标识,点击,可快速定位到对应的JAVA文件。    程序文件我上传了,内部每处用户可添加的地方,我都作了注释,可参考。我也是边百度学习边修改的,程序可优化之处,请大神提出建议。
    APP端可利用项目内“虚拟设备”来进行上位机端的调试。    其它部分的APP修改,我就不多说了。套路差不多。PS后修改。


插座APP端Java.rar (6.53 KB, 下载次数: 313)




第五部分,SOC端程序

完成了。带掉电记忆功能。功能调试了下,没有问题。考虑到许多人还在摸索,所以尽快传上来了。如果有好的建议请在这下面回复。
gizwits_product.rar (4.33 KB, 下载次数: 642)
BUG修复:
1、联网配置时,LED不会反复闪烁,已修复。
2、还有加入了AD采样。
基于有人询问user_main.c里的程序,增加了如下代码:、

bool PowerONOFFFlag;//电源开关标志位
bool airLinkFlag,airLinkLEDFlag;//联网标志位




到此全部完成,SOC程序以最新的为准,如果还有其它BUG,请留言。








16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
沙发
 楼主| 发表于 2017-10-11 20:47:41 | 显示全部楼层
本帖最后由 彩色笔 于 2017-10-12 16:47 编辑
寒枫 发表于 2017-10-11 19:10
你好,user_main.c能提供资料吗

user_main.c  上面已帖出。请查看。

16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
板凳
 楼主| 发表于 2017-10-19 23:07:58 | 显示全部楼层
AIcainiao 发表于 2017-10-19 11:42
楼主大大,关于“重复”这个怎么做的?

重复就是将初始值保存下来,程序运行时,当条件达到,就将初始值恢复,程序又重新读数

16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
地板
 楼主| 发表于 2017-10-21 22:28:19 | 显示全部楼层
AIcainiao 发表于 2017-10-20 15:05
楼主大大,反复闪烁这个功能我在user_main.c里做了,怎么不能执行呀?

请下载我最新的,以前的有这个问题。

点评

最新的就是你最后截图的那个吗?我才用的就是那个,没反应哦  详情 回复 发表于 2017-10-23 09:26

16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
5#
 楼主| 发表于 2017-10-24 19:50:52 | 显示全部楼层
免费使用STM32、APP自动代码生成工具
AIcainiao 发表于 2017-10-23 09:26
最新的就是你最后截图的那个吗?我才用的就是那个,没反应哦

是长按后,联网才会反复闪烁哦。如果还不行,你可以单按一下,看看LED是不是亮,以判断硬件有无问题。

点评

就是这样定义的....  详情 回复 发表于 2017-10-25 11:30

16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
6#
 楼主| 发表于 2017-10-24 19:52:08 | 显示全部楼层
本帖最后由 Genius 于 2017-11-15 10:01 编辑
guge 发表于 2017-10-22 23:27
楼主能把在Eclipse编译SOC代码这部分详细的贴出来吗?我下载的代码烧进去,一直报错。就是这个链接描述的问 ...

烧录,请看我另一篇文章,关于烧录的。搜索“从小白一步步走来,ESP8266模块使用,环境搭建,编译和烧录”http://club.gizwits.com/thread-6447-1-1.html

16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
7#
 楼主| 发表于 2017-10-27 11:12:29 | 显示全部楼层
寒枫 发表于 2017-10-27 10:19
楼主,关于电量检测的部分还没有完成,这个不会弄,给小白一个案例,谢谢!! ...

没办法给,因为我也没弄。给思路吧,利用AD采样,计算数值。

16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
8#
 楼主| 发表于 2017-11-7 17:22:56 | 显示全部楼层
张祥 发表于 2017-11-5 22:21
深圳深鸿盛 KP3211SG   有淘宝链接吗?

他们业务黄小姐的QQ号:2097085344 你可以问问有没有样片。

点评

楼主,为什么没法定时呢,你设置的这个char NTPHour,NTPMinute;//网络当前时间变量 是不是还得在什么地方**一下啊?  详情 回复 发表于 2017-11-28 17:23

16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
9#
 楼主| 发表于 2018-1-7 23:35:39 | 显示全部楼层
本帖最后由 彩色笔 于 2018-1-7 23:40 编辑
maomaodemao 发表于 2018-1-5 13:30
我终于能连上设备了,也能控制开关了,能倒计时控制,但是定时控制不能用,设置了到达时间后开关没有执行。 ...

   打开“gizwits_protocol.h”看看有没有关于NTP网络时间的函数,记住其函数名 例如:“protocolTime_t gizwitsGetNTPTime(void);”
    然后打开“gizwits_protocol.c”
    先在变量名处引用“gizwits_product.c”中定义的char NTPHour,NTPMinute;    按如下写法:
    extern char NTPHour,NTPMinute;

找到该函数
   protocolTime_t ICACHE_FLASH_ATTR gizwitsGetNTPTime(void)
{
    protocolTime_t tmValue;

    gagentGetNTP((_tm *)&tmValue);

    NTPHour=tmValue.hour;    //将网络时间值传递出来。
    NTPMinute=tmValue.minute;
    return tmValue;
}


思路:
gizwits_product.c 是用户写程序的文件。
每次定义好定时值后,记着把该值也存到Flash中,这样掉电存储。然后每过一分钟对比一下该值是否与设置值相等,相等则执行相应动作。

16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
10#
 楼主| 发表于 2018-5-4 15:04:25 | 显示全部楼层
教您5分钟接入机智云,实现傻瓜式开发
石头666 发表于 2018-4-8 09:30
版主做的棒,咨询2个问题,电流源的变压模块,是版主自己分装的,还是购买现成的模块。我看到图片变压模块 ...

1、图片中黑色的不是电源模块,是16A的继电器。
2、KP3211SG是非隔离芯片,该帖子中详细原理图,可参考画图,没有经验的不建议搞,不容易成功。可以找现成的电源,不建议买工业电源模块,死贵。
3、WIFI模块最后是直接和主板焊接起来的。这样做是牢靠,并且紧凑。

16

主题

67

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
QQ
11#
 楼主| 发表于 2018-5-4 15:05:33 | 显示全部楼层
清脆的风铃声 发表于 2018-3-3 19:57
你好,可以提供完整版user_main.c资料吗?邮箱

我已经把全部的资料发在这个帖子中了。帖子比较长,请详细查看。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

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

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