机智云Gokit3 SOC方案教程 从无到有 看我就够了

(环境+源码改写+编译+烧录+iOS+Android+按键实时反馈)

从接触机智云Gokit一步一坑,大坑套小坑也算挺过来了,把遇到的问题和经验分享给大家,帮助新人少走一些弯路。

一、环境搭建

1.下载安装eclipse一体化开发环境
下载地址:http://pan.baidu.com/s/1skRvR1j

安装完毕之后去官方下载微信宠物屋for GoKit3(S) ESP8266源码

Paste_Image.png

Import导入soc源码

Paste_Image.png
Paste_Image.png

Paste_Image.png

需要修改makefile文件配置才能编译成功

BOOT?=new
APP?=1
SPI_SPEED?=40
SPI_MODE?=QIO
SPI_SIZE_MAP?=6
Paste_Image.png

二、GoKit3开发套件

1、GoKit3(S) - SoC版(乐鑫模组(GoKit3转接板)+底板+GoKit3功能板)



2、GoKit3玩法
根据使用方式不同可分MCU版和SOC版两大类
(了解SoC与MCU的区别),每个类型又分不同方式的玩法。

2.1、MCU版


MCU版的玩法与GoKit2一样,采用底板+扩展板+模组的方式(如上图所示)。

2.2、SOC版
模组+扩展版为SOC版本不需要底板。

Paste_Image.png

2.3、模组组装时分为俩种模式(有坑不要插错了)


MCU模式
SOC模式

三、烧录选项配置


1. 前三个 ‘.bin’ 文件都在\bin 目录下,选择对应的名称的 ‘.bin’文件即可。
最后一个.bin 文件默认为SOC版固件:user1.4096.new.6.bin
位置:\bin\upgrade\user1.4096.new.6.bin
Paste_Image.png

2.GoKit套件SOC版烧录模式接法(有坑不要接错了)


需要注意RX TX接法
GND接GND
RX接TX
TX接RX
IMG_20170615_173535.jpg

将拨码开关设为程序烧录模式(下拨位置

设备管理器选择com口 设置波特率

Paste_Image.png
Paste_Image.png

相继按下烧录工具的“START”键与WiFi模组的“Reset”键,开始烧录程序:


若显示“完成”及烧录成功

四、源码改写


只需要关心文件路径为“GizLamp\app”下面的几个地方:
如果你需要添加8266的外设,只需要在
“GizLamp\app\driver”文件目录下添加相应外设的驱动的.c文件
“GizLamp\app\include\driver”文件目录下添加相应外设的驱动的.h文件
App通过云端下发控制事件处理,可以在
“GizLamp\app\Gizwits”文件目录下“gizwits_product.c”文件里面的
“gizwitsEventProcess()函数里添加驱动外设执行事件函数即可实现控制设备
上报云端状态事件处理,可以在
“GizLamp\app\user”文件目录下“user_main.c”文件里面的“userTimerFunc()”函数里添加数据状态上报函数即可以实现状态上报。

第一步先修改Gizwits目录下的gizwits_protocol.h里的PRODUCT_KEY

/**@name Product Key (产品标识码)
* @{
*/
#define PRODUCT_KEY "xxxxxxxxxxxxxxxxxxxxxxx"

然后我们要实现按键APP实时反馈状态
我们以key1键为例 在user_main.c文件修改key1ShortPress


LOCAL void ICACHE_FLASH_ATTR key1ShortPress(void)
{
    os_printf("#### KEY1 short press ,Production Mode\n");
//判断当前LED状态取反赋值
    if(0x01 == currentDataPoint.valueLED_OnOff)
    {
           rgbControl(0, 0, 0);
    }
    else
    {
           rgbControl(254, 0, 0);
    }
    currentDataPoint.valueLED_OnOff = !currentDataPoint.valueLED_OnOff;
}

gizwitsEventProcess()驱动外设执行事件函数
根据数据点执行相应逻辑


int8_t ICACHE_FLASH_ATTR gizwitsEventProcess(eventInfo_t *info, uint8_t *data, uint32_t len)
{
  uint8_t i = 0;
  dataPoint_t *dataPointPtr = (dataPoint_t *)data;
  moduleStatusInfo_t *wifiData = (moduleStatusInfo_t *)data;

  if((NULL == info) || (NULL == data))
  {
    return -1;
  }

  for(i=0; i<info->num; i++)
  {
    switch(info->event[i])
    {
      case EVENT_LED_ONOFF:
        currentDataPoint.valueLED_OnOff = dataPointPtr->valueLED_OnOff;
        os_printf("Evt: EVENT_LED_ONOFF %d \n", currentDataPoint.valueLED_OnOff);
        if(0x01 == currentDataPoint.valueLED_OnOff)
        {
            rgbControl(254, 0, 0);
        }
        else
        {  
            rgbControl(0, 0, 0);   
        }
        break;

      case EVENT_LED_COLOR:
        currentDataPoint.valueLED_Color = dataPointPtr->valueLED_Color;
        os_printf("Evt: EVENT_LED_COLOR %d\n", currentDataPoint.valueLED_Color);
        switch(currentDataPoint.valueLED_Color)
        {
          case LED_COLOR_VALUE0:
            rgbControl(currentDataPoint.valueLED_R,currentDataPoint.valueLED_G,currentDataPoint.valueLED_B);
            break;
          case LED_COLOR_VALUE1:
            rgbControl(254, 254, 0);
            break;
          case LED_COLOR_VALUE2:
            rgbControl(254, 0, 70);
            break;
          case LED_COLOR_VALUE3:
            rgbControl(238, 30, 30); 
            break;
          default:
            break;
        }
        break;

      case EVENT_LED_R:
        currentDataPoint.valueLED_R = dataPointPtr->valueLED_R;
        os_printf("Evt:EVENT_LED_R %d\n",currentDataPoint.valueLED_R);
        rgbControl(currentDataPoint.valueLED_R,currentDataPoint.valueLED_G,currentDataPoint.valueLED_B); 
        break;
      case EVENT_LED_G:
        currentDataPoint.valueLED_G = dataPointPtr->valueLED_G;
        os_printf("Evt:EVENT_LED_G %d\n",currentDataPoint.valueLED_G);
        rgbControl(currentDataPoint.valueLED_R,currentDataPoint.valueLED_G,currentDataPoint.valueLED_B);
        break;
      case EVENT_LED_B:
        currentDataPoint.valueLED_B = dataPointPtr->valueLED_B;
        os_printf("Evt:EVENT_LED_B %d\n",currentDataPoint.valueLED_B);
        rgbControl(currentDataPoint.valueLED_R,currentDataPoint.valueLED_G,currentDataPoint.valueLED_B);
        break;
      case EVENT_MOTOR_SPEED:
        currentDataPoint.valueMotor_Speed = dataPointPtr->valueMotor_Speed;
        os_printf("Evt:EVENT_MOTOR_SPEED %d\n",currentDataPoint.valueMotor_Speed);
        motorControl(currentDataPoint.valueMotor_Speed);
        break;

      case WIFI_SOFTAP:
        break;
      case WIFI_AIRLINK:
        break;
      case WIFI_STATION:
        break;
      case WIFI_CON_ROUTER:
        rgbControl(0, 0, 0);
        break;
      case WIFI_DISCON_ROUTER:
        break;
      case WIFI_CON_M2M:
        break;
      case WIFI_DISCON_M2M:
        break;
      case WIFI_RSSI:
        os_printf("RSSI %d\n", wifiData->rssi);
        break;
      case TRANSPARENT_DATA:
        os_printf("TRANSPARENT_DATA \n");
        //user handle , Fetch data from [data] , size is [len]
        break;
      default:
        break;
    }
  }
  system_os_post(USER_TASK_PRIO_0, SIG_UPGRADE_DATA, 0);
  return 0;
}

实际效果:

soc.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容