赞
踩
机智云为开发者提供物联网设备的自助开发工具、后台技术支持服务、设备远程操控管理、数据存储分析、第三方数据整合、硬件社交化等技术服务,也为智能硬件厂家提供一站式物联网开发和运维服务,将智能硬件产品开发周期最快缩短到半天,快速实现智能化。服务的客户主要来自消费类智能硬件厂家(智能家居、可穿戴产品),以及工业、商业应用、智慧城市建设等。
GoKit3是机智云(GizWits) 推出的物联网智能硬件开发套件(第三代),目的是帮助传统硬件快速接入互联网。 完成入网之后, 数据可以在产品与云端、 制造商与用户之间互联互通, 实现智能互联。
GoKit3采用分体式的设计方案, 即底板(SoC 方式应去掉)+功能板+模组。
标准版底板(STM32F103)如下图所示。
GoKit3 的扩展板的模组接口采用双排母的设计,模组的单排针根据用法不同选择MCU(MCU 模式接口)和 SoC(SoC 模式接口)两种接入方式,如下图所示扩展板接口图:
打开机智云开发者网页,点击‘马上注册’。
根据自己实际情况填写以下信息:
然后点击‘立即注册’即可。
然后登录注册邮箱,激活账户即可。
激活成功后,即可登录。
1.创建智能产品
登录进入开发者平台后即可创建产品。笔者这里使用的是新版,当然使用旧版也是一样的。
然后选择相应的产品。
笔者使用的‘移动网络’方案。
产品开发的第一步是定义产品的功能,一个数据点可以定义为产品的某个功能,如开关等。笔者选择‘去编辑’。
笔者下面定义了LED的数据点类型。
2.创建移动应用
进入首页,右上角创建,创建一个移动应用。应用包名需要唯一。
接着等待片刻即可。
根据自己喜好配置。
接着关联产品。
为产品添加控制页面。
然后构建应用即可。
等待构建完成即可下载。
构建完成之后扫描二维码即可下载安装到手机。
在没有实体之前,可以使用虚拟设备验证云平台。
登录APP后,扫描虚拟设备的二维码,即可添加设备。
然后就可以控制LED了。
选择‘MCU开发’中的独立MCU开发方案。
笔者这里选择是的硬件是stm32f103c8x,同时添加项目的Product Secret,然后就可以生成代码并下载了。
自动生成的代码已经根据用户定义的产品数据点信息,并针对 STM32、 ESP8266 等平台, 生成了对应的机智云串口协议层代码, 用户只需要调用相应的 API 接口或添加相应的逻辑处理即可。 代码框架如下图所示:
需要开发的部分为:
A. 下行处理: 例如 LED 灯开关、 电机转速控制等。
B. 上行处理: 例如温湿度数据采集, 红外传感器状态获取等。
C. 配置处理: 配置入网及恢复出厂设置。
接下来就进行设备开发。在开发之前需要安装开发环境,主要是安装Keil和STM32CubeMX。
Keil的安装笔者就不赘述了,网上资料很多。
关于STM32CubeMX的安装和使用请参看笔者博文。
1. STM32CubeMX配置
接下来打开STM32F103C8x.ioc,配置好相应LED。首先查看相应的电路图。
RGB灯分别接到MCU的PA9、PB8、PB9,因此需要配置这三个GPIO,配置生输出模式即可。
然后生成代码。
2.驱动文件编写
将官方demo中hal文件夹下的delay.h、delay.c、hal_rgb_led.h、hal_rgb_led.c文件拷贝到工程目录下hal文件夹。
然后打开Keil工程,将delay.c和hal_rgb_led.c添加到工程中。
当然啦,如果是自己的设备,这里就需要自行编写驱动文件。
3.修改代码
首先是初始化外设,在 Gizwits 目录下的 gizwits_product.c 文件中userInit()函数中。
修改前:
v
oid userInit(void)
{
memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));
/** Warning !!! DataPoint Variables Init , Must Within The Data Range **/
currentDataPoint.valueLED_OnOff = ;
*/
}
修改后:
void userInit(void)
{
memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));
delay_init(72); // 延时 初始化
rgbLedInit(); // RGB LED 初始化
/** Warning !!! DataPoint Variables Init , Must Within The Data Range **/
currentDataPoint.valueLED_OnOff = 0;
}
在 Gizwits 目录下的 gizwits_product.c 文件中的gizwitsEventProcess()函数中处理相应事件即可(如下例中的 ledRgbControl(),功能是控制 RGB 灯的颜色) 。
下面以控制 RGB LED 为例, 代码示例如下:
修改前:
if(0x01 == currentDataPoint.valueLED_ONOFF)
{
//user handle
}
else
{
//user handle
}
break;
修改后:
if(0x01 == currentDataPoint.valueLED_ONOFF)
{
//user handle
ledRgbControl(0,254,0);
}
else
{
//user handle
ledRgbControl(0,0,0);
}
break;
如果有其他的传感器设备,首先要完成的是传感器驱动开发,然后在 user 目录下gizwits_product.c文件中的 userHandle()函数中实现传感器数据采集,用户只需并将采集到的数值赋值给对应用户区的设备状态结构体数据位即可。
修改前:
void userHandle(void)
{
/*
*/
}
修改后:
void userHandle(void)
{
uint8_t ret = 0;
static uint32_t thLastTimer = 0;
///< 新添加代码: 温湿度传感器数据获取
if((gizGetTimerCount()- thLastTimer) > 2000) //上报间隔2S
{
//ret = dht11Read((uint8_t *)¤tDataPoint.valueTemperature,(uint8_t*)¤tDataPoint.valueHumidity);
//if(ret != 0)
//{
// GIZWITS_LOG("Failedto read DHT11 [%d] \n", ret);
//}
thLastTimer = gizGetTimerCount();
}
}
值得注意的是,关于驱动的头文件需要包含到gizwits_product.c中,请根据实际情况添加。
最后在main.h中添加相应的GPIO定义。
#define RGB_LED_EN_Pin GPIO_PIN_0
#define RGB_LED_EN_GPIO_Port GPIOA
#define RGBLED_CLK_Pin GPIO_PIN_8
#define RGBLED_CLK_GPIO_Port GPIOB
#define RGBLED_DIN_Pin GPIO_PIN_9
#define RGBLED_DIN_GPIO_Port GPIOB
当然啦,为了方便联网,需要在main.c 文件的 key2ShortPress( ) 函数与 key2LongPress( ) 函数中添加点亮LED代码。
void key2ShortPress(void)
{
GIZWITS_LOG("KEY2 PRESS ,Soft AP mode\n");
#if !MODULE_TYPE
gizwitsSetMode(WIFI_SOFTAP_MODE);
#endif
ledRgbControl(250,0, 0);
}
void key2LongPress(void)
{
//AirLink mode
GIZWITS_LOG("KEY2 PRESS LONG ,AirLink mode\n");
#if !MODULE_TYPE
gizwitsSetMode(WIFI_AIRLINK_MODE);
#endif
ledRgbControl(0, 250, 0);
}
最后编译下载固件即可,笔者使用的是ST-link下载。
当然也可使用串口下载,在下载前,需要准备好固件。
在Keil中,需要勾选输出HEX文件,然后编译即可。
接下来就是使用串口下载固件,方法如下。
将底板的开关拔到system。
打开串口烧录软件mcuisp.exe。点击‘开始编程’。
等待下载完成即可。
值得注意的是,不同的开发板,串口下载操作不同,请根据实际情况操作,笔者这里使用的是GoKit3。
烧录完成之后将开关拔回flash,复位模组,就可以正常运行程序。
GoKit3提供两种配置入网方式:AirLink、SoftAP。笔者这里使用SoftAP 配置入网。
1) 打开 GoKit 的 SoftAP 配置模式
短按 Key2 键, 待扩展板上常亮红灯后, 说明 WiFi 模块进入 SoftAP 配置状态(如下图) 。
2) 打开机智云APP,为ESP32配网
在弹出的界面中选择‘热点配置’。
然后输入可用的 WiFi 并输入对应的密码。还需要设置ESP32的WiFi热点及密码,形如“XPG-GAgent-XXXX” 的 WiFi 热点密码:123456789。
注意: XXXX 是 WiFi 模组的 MAC 后四位。
等待连接完成即可。连接成功后,打开相应的设备即可进行控制。
当然啦,还可使用前面开发的移动应用管理设备,自行生成的APP是通过扫描设备二维码添加设备的,因此这里需要生成一个设备二维码。生成设备二维码需要在机智云APP中查看,如下图所示。
然后打开‘机智云串口调试助手.exe’。
填写相应的Product Key以及MAC即可。
然后使用自己生成的APP添加设备即可,接下来的操作和添加虚拟设备的操作都是一样的。
这里还是用GoKit3硬件平台,但是需要取下WiFi模组,连接4G设备,笔者这里使用的官网的转接板。
如果没有转接板,则需要按照下图方式连接。
注意:4G模块启动的电流较大,需要外接电源,同时接上4G天线。
然后打开‘机智云串口调试助手.exe’。
填写相应的Product Key以及IMEI即可。
打开云端,即可看到设备已经在线。
然后打开移动应用,进行设备连接。
接下来就可以控制LED了。
接下来就可以尽情的玩耍了。
BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书
BruceOu的知乎
关注公众号[嵌入式实验楼]获取更多资讯
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。