这个智能灯方案很不错,只用了一个无线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
- /**
- ************************************************************
- * @file user_main.c
- * @brief SOC版 入口文件
- * @author Gizwits
- * @date 2016-09-05
- * @version V03010201
- * @copyright Gizwits
- *
- * @note 机智云.只为智能硬件而生
- * Gizwits Smart Cloud for Smart Products
- * 链接|增值ֵ|开放|中立|安全|自有|自由|生态
- * www.gizwits.com
- *
- ***********************************************************/
- #include "ets_sys.h"
- #include "osapi.h"
- #include "user_interface.h"
- #include "gagent_soc.h"
- #include "user_devicefind.h"
- #include "user_webserver.h"
- #include "gizwits_protocol.h"
- #include "driver/hal_key.h"
- #include "driver/Adafruit_NeoPixel.h"
- #if ESP_PLATFORM
- #include "user_esp_platform.h"
- #endif
- #ifdef SERVER_SSL_ENABLE
- #include "ssl/cert.h"
- #include "ssl/private_key.h"
- #else
- #ifdef CLIENT_SSL_ENABLE
- unsigned char *default_certificate;
- unsigned int default_certificate_len = 0;
- unsigned char *default_private_key;
- unsigned int default_private_key_len = 0;
- #endif
- #endif
- /**@name Gizwits模块相关系统任务参数
- * @{
- */
- #define userQueueLen 200 ///< 消息队列总长度
- LOCAL os_event_t userTaskQueue[userQueueLen]; ///< 消息队列
- /**@} */
- /**@name 用户定时器相关参数
- * @{
- */
- #define USER_TIME_MS 1000 ///< 定时时间,单位:毫秒
- LOCAL os_timer_t userTimer; ///< 用户定时器结构体
- /**@} */
- /**@name 按键相关定义
- * @{
- */
- #define GPIO_KEY_NUM 1 ///< 定义按键成员总数
- #define KEY_1_IO_MUX PERIPHS_IO_MUX_MTMS_U ///< ESP8266 GPIO 功能
- #define KEY_1_IO_NUM 14 ///< ESP8266 GPIO 编号
- #define KEY_1_IO_FUNC FUNC_GPIO14 ///< ESP8266 GPIO 名称
- LOCAL key_typedef_t * singleKey[GPIO_KEY_NUM]; ///< 定义单个按键成员数组指针
- LOCAL keys_typedef_t keys; ///< 定义总的按键模块结构体指针
- /**@} */
- /** 用户区当前设备状态结构体*/
- dataPoint_t currentDataPoint;
- /**
- * key2按键短按处理
- * @param none
- * @return none
- */
- LOCAL void ICACHE_FLASH_ATTR key2ShortPress(void)
- {
- os_printf("#### key2 short press, soft ap mode \n");
- gizwitsSetMode(WIFI_SOFTAP_MODE);
- }
- /**
- * key2按键长按处理
- * @param none
- * @return none
- */
- LOCAL void ICACHE_FLASH_ATTR key2LongPress(void)
- {
- os_printf("#### key2 long press, airlink mode\n");
- gizwitsSetMode(WIFI_AIRLINK_MODE);
- }
- /**
- * 按键初始化
- * @param none
- * @return none
- */
- LOCAL void ICACHE_FLASH_ATTR keyInit(void)
- {
- singleKey[0] = keyInitOne(KEY_1_IO_NUM, KEY_1_IO_MUX, KEY_1_IO_FUNC,
- key2LongPress, key2ShortPress);
- keys.singleKey = singleKey;
- keyParaInit(&keys);
- }
- /**
- * 用户数据获取
- * 此处需要用户实现除可写数据点之外所有传感器数据的采集,可自行定义采集频率和设计数据过滤算法
- * @param none
- * @return none
- */
- void ICACHE_FLASH_ATTR userTimerFunc(void)
- {
- /*
- */
- //setAllPixelColor(0,50,0);
- system_os_post(USER_TASK_PRIO_0, SIG_UPGRADE_DATA, 0);
- }
- /**
- * @brief 用户相关系统事件回调函数
- * 在该函数中用户可添加相应事件的处理
- * @param none
- * @return none
- */
- void ICACHE_FLASH_ATTR gizwitsUserTask(os_event_t * events)
- {
- uint8_t i = 0;
- uint8_t vchar = 0;
- if(NULL == events)
- {
- os_printf("!!! gizwitsUserTask Error \n");
- }
- vchar = (uint8)(events->par);
- switch(events->sig)
- {
- case SIG_UPGRADE_DATA:
- gizwitsHandle((dataPoint_t *)¤tDataPoint);
- break;
- default:
- os_printf("---error sig! ---\n");
- break;
- }
- }
- /**
- * @brief user_rf_cal_sector_set
- * 用flash中的636扇区(2544k~2548k)存储RF_CAL参数
- * @param none
- * @return none
- */
- uint32 user_rf_cal_sector_set()
- {
- return 636;
- }
- /**
- * @brief 程序入口函数
- * 在该函数中完成用户相关的初始化
- * @param none
- * @return none
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
全部资料下载:
SoC_ESP8266_WS2812B_SmartLEDs.zip
(8.96 MB, 下载次数: 406)
|