标题: 使用ESP8266驱动WS2812B型RGB LED简单3步打造智能灯 [打印本页]

作者: z3512641347    时间: 2017-5-4 18:31
标题: 使用ESP8266驱动WS2812B型RGB LED简单3步打造智能灯
这个智能灯方案很不错,只用了一个无线WIFI esp8266芯片,驱动ws2812b型RGB LED,效果很赞,在群里看到的,特分享下,若是侵犯了版权,联系我删除就行了~





1.源码编译方式
  1. cd app/
  2. ./gen_misc.sh
  
2.库编译方式
  1. 先用源码编译方式,生成libgagent.a 库路径为:"app/gagent/.output/eagle/debug/lib"
  2. cp app/gagent/.output/eagle/debug/lib/libgagent.a ../lib/
  3. mv makefile makefile_src
  4. mv makefile_lib makefile
  5. ./gen_misc.sh
  
3.烧录固件
  esp_init_data_default.bin          0x3fc000
  blank.bin                          0x3fe000
  boot_v1.6.bin                      0x00000
  user1.4096.new.6.bin               0x01000
  
  选项:CrystalFreq=26M  SPI_SPEED=40MHz SPI_MODE=QIO FLASH_SIZE=32Mbit-C1, 其他默认,串口115200
  进入uart烧录模式后,点击start下载即可!
  
4.OTA测试
    OTA固件版本号位置:gizwits_product.h
        #define SDK_VERSION                             "02"        //OTA固件版本号 必须为两位数
    MAC:
        查看云端产品管理->运行状态->在线设备详情->设备MAC
    注意:
        1.编译固件时的Makefile与烧录工具的设置:
            "FLASH SIZE" : 32Mbit-C1
            "SPI MODE" : QIO
        2.推送的“OTA固件版本号”必须大于正工作的软件版本。
        3.固件类型:WiFi 推送方式:v4.1
  1. /**
  2. ************************************************************
  3. * @file         user_main.c
  4. * @brief        SOC版 入口文件
  5. * @author       Gizwits
  6. * @date         2016-09-05
  7. * @version      V03010201
  8. * @copyright    Gizwits
  9. *
  10. * @note         机智云.只为智能硬件而生
  11. *               Gizwits Smart Cloud  for Smart Products
  12. *               链接|增值ֵ|开放|中立|安全|自有|自由|生态
  13. *               www.gizwits.com
  14. *
  15. ***********************************************************/
  16. #include "ets_sys.h"
  17. #include "osapi.h"
  18. #include "user_interface.h"
  19. #include "gagent_soc.h"
  20. #include "user_devicefind.h"
  21. #include "user_webserver.h"
  22. #include "gizwits_protocol.h"
  23. #include "driver/hal_key.h"

  24. #include "driver/Adafruit_NeoPixel.h"

  25. #if ESP_PLATFORM
  26. #include "user_esp_platform.h"
  27. #endif

  28. #ifdef SERVER_SSL_ENABLE
  29. #include "ssl/cert.h"
  30. #include "ssl/private_key.h"
  31. #else
  32. #ifdef CLIENT_SSL_ENABLE
  33. unsigned char *default_certificate;
  34. unsigned int default_certificate_len = 0;
  35. unsigned char *default_private_key;
  36. unsigned int default_private_key_len = 0;
  37. #endif
  38. #endif


  39. /**@name Gizwits模块相关系统任务参数
  40. * @{
  41. */
  42. #define userQueueLen    200                                                 ///< 消息队列总长度
  43. LOCAL os_event_t userTaskQueue[userQueueLen];                               ///< 消息队列
  44. /**@} */

  45. /**@name 用户定时器相关参数
  46. * @{
  47. */
  48. #define USER_TIME_MS 1000                                                    ///< 定时时间,单位:毫秒
  49. LOCAL os_timer_t userTimer;                                                 ///< 用户定时器结构体
  50. /**@} */

  51. /**@name 按键相关定义
  52. * @{
  53. */
  54. #define GPIO_KEY_NUM                            1                           ///< 定义按键成员总数
  55. #define KEY_1_IO_MUX                            PERIPHS_IO_MUX_MTMS_U       ///< ESP8266 GPIO 功能
  56. #define KEY_1_IO_NUM                            14                          ///< ESP8266 GPIO 编号
  57. #define KEY_1_IO_FUNC                           FUNC_GPIO14                 ///< ESP8266 GPIO 名称
  58. LOCAL key_typedef_t * singleKey[GPIO_KEY_NUM];                              ///< 定义单个按键成员数组指针
  59. LOCAL keys_typedef_t keys;                                                  ///< 定义总的按键模块结构体指针   
  60. /**@} */

  61. /** 用户区当前设备状态结构体*/
  62. dataPoint_t currentDataPoint;


  63. /**
  64. * key2按键短按处理
  65. * @param none
  66. * @return none
  67. */
  68. LOCAL void ICACHE_FLASH_ATTR key2ShortPress(void)
  69. {
  70.     os_printf("#### key2 short press, soft ap mode \n");

  71.     gizwitsSetMode(WIFI_SOFTAP_MODE);
  72. }

  73. /**
  74. * key2按键长按处理
  75. * @param none
  76. * @return none
  77. */
  78. LOCAL void ICACHE_FLASH_ATTR key2LongPress(void)
  79. {
  80.     os_printf("#### key2 long press, airlink mode\n");

  81.     gizwitsSetMode(WIFI_AIRLINK_MODE);
  82. }

  83. /**
  84. * 按键初始化
  85. * @param none
  86. * @return none
  87. */
  88. LOCAL void ICACHE_FLASH_ATTR keyInit(void)
  89. {
  90.     singleKey[0] = keyInitOne(KEY_1_IO_NUM, KEY_1_IO_MUX, KEY_1_IO_FUNC,
  91.                                 key2LongPress, key2ShortPress);
  92.     keys.singleKey = singleKey;
  93.     keyParaInit(&keys);
  94. }

  95. /**
  96. * 用户数据获取

  97. * 此处需要用户实现除可写数据点之外所有传感器数据的采集,可自行定义采集频率和设计数据过滤算法
  98. * @param none
  99. * @return none
  100. */
  101. void ICACHE_FLASH_ATTR userTimerFunc(void)
  102. {
  103.         /*

  104.     */  
  105.         //setAllPixelColor(0,50,0);
  106.     system_os_post(USER_TASK_PRIO_0, SIG_UPGRADE_DATA, 0);
  107. }

  108. /**
  109. * @brief 用户相关系统事件回调函数

  110. * 在该函数中用户可添加相应事件的处理
  111. * @param none
  112. * @return none
  113. */
  114. void ICACHE_FLASH_ATTR gizwitsUserTask(os_event_t * events)
  115. {
  116.     uint8_t i = 0;
  117.     uint8_t vchar = 0;

  118.     if(NULL == events)
  119.     {
  120.         os_printf("!!! gizwitsUserTask Error \n");
  121.     }

  122.     vchar = (uint8)(events->par);

  123.     switch(events->sig)
  124.     {
  125.     case SIG_UPGRADE_DATA:
  126.         gizwitsHandle((dataPoint_t *)¤tDataPoint);
  127.         break;
  128.     default:
  129.         os_printf("---error sig! ---\n");
  130.         break;
  131.     }
  132. }

  133. /**
  134. * @brief user_rf_cal_sector_set

  135. * 用flash中的636扇区(2544k~2548k)存储RF_CAL参数
  136. * @param none
  137. * @return none
  138. */
  139. uint32 user_rf_cal_sector_set()
  140. {
  141.     return 636;
  142. }

  143. /**
  144. * @brief 程序入口函数

  145. * 在该函数中完成用户相关的初始化
  146. * @param none
  147. * @return none

  148. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


全部资料下载:
SoC_ESP8266_WS2812B_SmartLEDs.zip (8.96 MB, 下载次数: 406)
使用ESP8266驱动WS2812B型RGB LED简单3步打造智能灯.pdf (1.2 MB, 下载次数: 348)



作者: 343013685    时间: 2017-5-25 10:52
不错!!!!
作者: cnc2020    时间: 2017-9-29 21:40
good job
作者: 梁光阳    时间: 2017-10-6 00:04
楼主给个联系方式,学习一下
作者: GUOXUAN    时间: 2017-11-26 15:31
楼主不辞劳苦贴出ESP8266的控制原理和源代码,这才是51HEI的真正好老师!
作者: John.peng    时间: 2018-1-29 13:52
可以可以,下载下来学习学习
作者: 小鸡炖蘑菇    时间: 2018-2-13 16:48
谢谢大佬分享
作者: qjzyx    时间: 2018-2-13 20:42
谢谢分享!
作者: yuri_su    时间: 2018-2-24 23:06
不错,正好手头上有几片8266
作者: agriculture    时间: 2018-3-21 09:17
谢谢分享!
作者: cpfmly    时间: 2018-4-23 14:22
不错,可以做个WiFIPOV
作者: jnq7728    时间: 2018-5-4 16:01
感谢,正在学全彩灯
作者: beta5    时间: 2018-5-30 14:46
已下载币就不足了。
作者: leewj129    时间: 2018-6-5 14:47
支持楼主,我想下载

作者: 小易    时间: 2018-6-21 13:39
看看这个原理图, 学习学习
作者: zhc521    时间: 2018-8-1 15:10
谢谢分享
作者: leixingmin    时间: 2018-9-11 14:03
赞一个
作者: kxxxxc    时间: 2018-10-17 23:12
膜拜大佬
作者: 大飞0011    时间: 2018-10-25 08:05
1. cd app/
  2. ./gen_misc.sh
  
2.库编译方式
  1. 先用源码编译方式,生成libgagent.a 库路径为:"app/gagent/.output/eagle/debug/lib"
  2. cp app/gagent/.output/eagle/debug/lib/libgagent.a ../lib/
  3. mv makefile makefile_src
  4. mv makefile_lib makefile
  5. ./gen_misc.sh

这个命令在哪里输入啊,自带的tools 有个exe文件是干嘛的,打开后会有个命令窗口
作者: shenyoufu    时间: 2018-12-7 14:13
支持楼主,感谢!
作者: A7190050    时间: 2018-12-30 10:36
不错,试试
作者: zxq9781    时间: 2019-1-6 22:50

支持楼主,感谢!
作者: penglianwei111    时间: 2019-1-27 17:09
很不不粗啊,下载
作者: tanhailong    时间: 2019-2-25 10:15
楼主 你好 你这个源码包里面 没有gagent得源码呀,你这么有这个源码吗?
作者: liuyongliuyong    时间: 2019-3-28 23:12
正好需要,谢谢分享
作者: 烟草我爱    时间: 2019-11-7 22:13
感谢分享  正在学习中
作者: a1208082536    时间: 2020-2-26 21:01
能让灯亮了
作者: pkwong    时间: 2020-3-7 16:31
谢谢,学习一下
作者: cclddk    时间: 2020-3-21 23:42
感谢分享,太棒了
作者: 大力水手吃菠菜    时间: 2020-4-23 18:50
楼主辛苦了,好资料
作者: pkwong    时间: 2020-4-24 21:19
先学习一下!谢谢
作者: tangystt    时间: 2020-4-27 15:21
正学习呢,下载
作者: tangystt    时间: 2020-4-27 15:21

感谢分享  正在学习中
作者: dilongking    时间: 2020-9-3 15:21
感谢 了。找这都找太久了,差点就忘记了

作者: 554023347    时间: 2020-11-1 14:55
使用ESP8266驱动WS2812B型RGB LED简单3步打造智能灯
http://www.51hei.com/bbs/dpj-83580-1.html
(出处: http://www.51hei.com/bbs/)

作者: suoguocs    时间: 2022-1-17 09:07
谢谢使用ESP8266驱动WS2812B型RGB LED简单3步打造智能灯




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1