如何使用GoKit和GC211来实现4G网络的开发?

简介
本案例主要讲述了使用gokit和gc211(4g模块)来实现4g网络的开发。囊括模块接入、设备控制、数据采集、app开发等方面内容。难度较低,适合新手入门。另外本次内容篇幅较长,将分成五部分来连载。主要是以图文形式呈现,如在实践过程中有疑问,可以加入机智云qq群一起沟通探讨。
连载教程内容:
gokit2/3 实现 4g 网络模块 gc211 的接入
stm32作为主控实现gokit全功能控制和采集
arduino作为主控实现gokit全功能控制和采集
新版本app快速开发
网页控制gokit开发板
进入正文
stm32代码移植编写
通过这一步骤,我们要了解驱动下载地址、如何移植代码,如电机控制、颜色变化、函数初始化等,移植好代码后,为后续的app应用开发奠定基础。
1.下载stm32驱动文件。
在机智云下载中心下载相应型号的驱动文件。
本次以stm32为例
2.复制stm32驱动文件里面的stm32f103c8x.ioc到下载的代码文件中替换该文件。
3.复制驱动库代码_cubemx版文件夹里面的驱动文件到下载代码的hal文件夹。
4.使用cubemx,生成keil代码
打开下载代码里面的stm32f103c8x.ioc,需要在电脑上安装cubemx,安装方法自行百度。打开之后如下图所示。
个人建议,任何软件创建项目,不要包含中文路径,否则将会导致很多不可控问题,包括此软件。
5.点击右上角generate code生成keil代码。
6.生成代码之后用keil打开代码,添加驱动文件到项目
7. gizwits_product.c文件修改
添加相关的头文件
gizwitseventprocess函数修改,包含各个传感器的驱动。
对rgb led开启红色的控制。
if(0x01 == currentdatapoint.valueled_onoff)
{
ledrgbcontrol(254,0, 0);
}
else
{
ledrgbcontrol(0, 0,0);
}
break;
其他颜色和电机的修改
case event_led_color:
currentdatapoint.valueled_color = datapointptr-》valueled_color;
gizwits_log(“evt: event_led_color %d ”, currentdatapoint.valueled_color);
switch(currentdatapoint.valueled_color)
{
case led_color_value0:
ledrgbcontrol(currentdatapoint.valueled_r,currentdatapoint.valueled_g,currentdatapoint.valueled_b);
break;
case led_color_value1:
ledrgbcontrol(254, 254, 0);
break;
case led_color_value2:
ledrgbcontrol(254,0, 70);
break;
case led_color_value3:
ledrgbcontrol(238,30, 30);
break;
default:
break;
}
break;
case event_led_r:
currentdatapoint.valueled_r = datapointptr-》valueled_r;
gizwits_log(“evt:event_led_r %d ”,currentdatapoint.valueled_r);
ledrgbcontrol(currentdatapoint.valueled_r,currentdatapoint.valueled_g,currentdatapoint.valueled_b);
break;
case event_led_g:
currentdatapoint.valueled_g = datapointptr-》valueled_g;
gizwits_log(“evt:event_led_g %d ”,currentdatapoint.valueled_g);
ledrgbcontrol(currentdatapoint.valueled_r,currentdatapoint.valueled_g,currentdatapoint.valueled_b);
break;
case event_led_b:
currentdatapoint.valueled_b = datapointptr-》valueled_b;
gizwits_log(“evt:event_led_b %d ”,currentdatapoint.valueled_b);
ledrgbcontrol(currentdatapoint.valueled_r,currentdatapoint.valueled_g,currentdatapoint.valueled_b);
break;
case event_motor_speed:
currentdatapoint.valuemotor_speed = datapointptr-》valuemotor_speed;
gizwits_log(“evt:event_motor_speed %d ”,currentdatapoint.valuemotor_speed);
motorstatus(currentdatapoint.valuemotor_speed);
break;
如使用wifi方案,在wifi_con_router加上关灯操作。
case wifi_con_router:
ledrgbcontrol(0, 250, 0);
userinit函数修改,增加各个驱动函数的初始化,数据点初始化
memset((uint8_t*)¤tdatapoint, 0, sizeof(datapoint_t));
delay_init(72); // 延时 初始化
rgbledinit(); // rgb led 初始化
dht11init(); // 温湿度初始化
irinit(); // 红外初始化
motorinit(); // 电机初始化
motorstatus(0); // 电机转速初始化
/** warning !!! datapoint variables init , must within the data range **/
currentdatapoint.valueled_onoff = 0;
currentdatapoint.valueinfrared = 0;
currentdatapoint.valuealert_1 = 0;
currentdatapoint.valuealert_2 = 0;
currentdatapoint.valuefault_led = 0;
currentdatapoint.valuefault_motor = 0;
currentdatapoint.valuefault_temhum = 0;
currentdatapoint.valuefault_ir = 0;
currentdatapoint.valueled_color = 0;
currentdatapoint.valueled_r = 0;
currentdatapoint.valueled_g = 0;
currentdatapoint.valueled_b = 0;
currentdatapoint.valuemotor_speed = 0;
currentdatapoint.valuetemperature = 0;
currentdatapoint.valuehumidity = 0;
userhandle函数的修改,各个数据点的上传,传感器采集。
uint8_t ret = 0;
static uint32_t thlasttimer = 0;
///《 新添加代码: 红外传感器数据获取
currentdatapoint.valueinfrared = irhandle();
///《 新添加代码: 温湿度传感器数据获取
if((gizgettimercount()- thlasttimer) 》 2000) //上报间隔2s
{
ret = dht11read((uint8_t *)¤tdatapoint.valuetemperature,(uint8_t*)¤tdatapoint.valuehumidity);
if(ret != 0)
{
gizwits_log(“failedto read dht11 [%d] ”, ret);
}
thlasttimer = gizgettimercount();
}
8.将#include “main.h” 添加到hal下面的各个sensor驱动之中,否则sensor将会提示没有引脚定义报错。
9. main.c修改,增加头文件
#include “hal_temp_hum.h”
#include “hal_rgb_led.h”
#include “hal_motor.h”
#include “hal_infrared.h”
#include “delay.h”
main.c 文件的 key2shortpress( ) 函数与 key2longpress( ) 函数中添
加长/短按key2时的led点亮代码。
void key2shortpress(void)
{
gizwits_log(“key2 press ,soft apmode ”);
#if !module_type
gizwitssetmode(wifi_softap_mode);
#endif
//soft ap mode,rgb 红灯
ledrgbcontrol(250,0, 0);
}
void key2longpress(void)
{
//airlink mode
gizwits_log(“key2press long ,airlink mode ”);
#if !module_type
gizwitssetmode(wifi_airlink_mode);
#endif
//airlink mode,rgb 绿灯
ledrgbcontrol(0,250, 0);
},
10.生成bin文件。魔术棒→user→$karmarmccinfromelf.exe --bin --output=@l.bin !l
11.编译项目
12.烧录
stm32开发板集成串口下载,打开串口烧录软件mcuisp.exe,附件中可下载。
选择开发板串口
将如图所示开关拔到system
选择生成的固件文件
点击开始编程
烧录完成。
烧录完成之后将开关拔回flash,复位模组,就可以正常运行程序。
13.检验烧录是否成功
打开 串口调试助手.exe ,附件中可以下载。监听串口出现如下图所示日志代表程序烧录成功。
14.验证设备和云端是否互联互通
接上功能板和4g模组(插上普通4g卡)。云端设备上线。
15.打开机智云串口调试助手.exe,附件中或者官网下载中心可以下载。工具,二设备二维码,按照如图生成二维码。
16.下载机智云app,验证智能设备和app是否互联互通。
使用机智云app扫码即可绑定设备,官网下载中心可以下载app
到此stm32移植完成。
基本上硬件部分全部完成,接下来,我要做app了。当然在这之前,我也会把arduino版本的如何进行移植,告知大家。
原文标题:【4g 开发】基于gokit+gc211的开发指南2,stm32代码移植
文章出处:【微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。


华为昇腾业务携手合作伙伴共同利用AI技术的力量呵护人类的健康
oppor11最新消息:oppor11热力红成潮品引领盛夏狂欢,oppor11时尚时尚最时尚
如何辨别真伪OLED彩屏
ups电池寿命可以新旧混用吗
小米6高通835首发 小米5C松果首发 小米平板3是个问题 雷军的手法高明
如何使用GoKit和GC211来实现4G网络的开发?
基于区块链技术的数据库应用平台ChainSQL介绍
小米汽车要来了?你会买吗?浅谈小米汽车的核心技术之汽车PCB线路板
AI商机全球抢 谁将最终获胜
单相异步电机外观不好看怎样处理呢?
种子吹风机是什么,它的使用步骤是怎样的
如何使用Triton进行高效的推理部署
[图文]微波防盗报警器
直流电阻测试仪有哪些特点及注意事项
线束加工生产过程中有哪些是需要我们注意的
鸿蒙推送时间 华为鸿蒙推送时间
无线充电,那些你不知道的伤害
黑科技!Santa Cruz计划用按钮 摇杆替换当前控制器触控板
基于DRV8825驱动芯片的步进电机
如何自制简单的夹具来测量电容器的特征参数