专栏首页腾讯云IoT【IoT迷你赛】开发板使用感受及智能灯的实现
原创

【IoT迷你赛】开发板使用感受及智能灯的实现

首先非常荣幸能够参与此次内测,虽然自己现在不是从事这个行业了,但是我依然对它热爱着。而且通过这个内测,自己也对物联网开发有了新的认识,因为之前做的时候只是做底层部分,并未涉及上层相关。

接着说说开发板部分,设计方面看得出是非常用心的,比如模组接口的防呆设计,如下图:

防呆设计

最后回到正题,记录一下这个开发板的折腾过程。我做的是一个智能灯,可通web端、手机端调节灯的亮度。做这个实验的过程感觉也是挺简单的,因为大多数功能已经实现了,只需配置一下通讯端口即可使用,我这边唯一写的就是一个亮度的调节,使用这个开发环境可以说是傻瓜式的开发了。

实验过程

1.LED亮度调节实现原理

当点亮一个LED到我们人眼看到光亮是需要经过一段时间的,所以通过控制点灯的时间便可以实现亮度的调节。

2.配置LED

E53_SC1这个模块提供了一个非常“豪华”LED,记得第一次开机的时候刚治好的眼睛差点又被亮瞎,哈哈。通过查看线路图及datasheet可知,该LED由GPIO_PIN_9控制。

我使用的是tencent_cloud_sdk_data_template这个demo code,参考了部分代码,先写一个开关LED的函数:

/*
	LED 开关
*/

 void led_switch(GPIO_PinState Status)   
{
  GPIO_InitTypeDef GPIO_InitStruct;

	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, Status);
	
  GPIO_InitStruct.Pin   = GPIO_PIN_9;
  GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull  = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
	
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}

再设置两个全局变量,用于记录下发指令中的开灯及亮度级别。

int   g_is_led_on  = 0;
float g_brightness = 0;

亮度调节实现逻辑如下:

void task_led()
{
    while (1) {
			
			if (g_is_led_on && g_brightness > 0)
			{
					led_switch(LED_ON);
					LED_Delay(((int)g_brightness) * 5);
					led_switch(LED_OFF);	
					tos_task_delay(1);
			}
			else
			{
					led_switch(LED_OFF);
				  tos_task_delay(10); // 避免阻塞
			}
    }
}

最后,由于不断开关灯需要用到一个死循环,需创建一个任务:

osThreadCreate(osThread(task_led), NULL); 

MQTT部分配置指导书有详细说明便不详述了。

3.实现效果

这里使用的腾讯云物联开发平台提供的腾讯物联助手这个APP发送指令。

关灯状态
亮度为1
亮度100

不足之处

软件方面:

1、在调试过程中,发现串口打印部分出现乱码

2、在网络较差的环境下板子容易跑挂,指令下发频繁也会导致此问题

3、腾讯物联助手APP还不完善,比如在上面示例的页面中按手机返回键不会返回主页面,而是提示退出

4、Web端使用在线调试时,设置下发指令后,又会被板子上报的信息覆盖,除非设置完快速点发送

在线调试

硬件方面:板子在连接ST-link的时候power button关机是无效的。

其它方面再慢慢体验,时间关系就写到这里了。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mysql 查看与修改字符集?

    咻一咻
  • MySQL的安装教程(mysql-5.5.27-winx64)

    黑泽君
  • 树莓派综合项目2:智能小车(一)四轮驱动

      树莓派的小项目中,我首选了智能小车这个项目作为我探索的第一个目标,因为和很多小朋友一样,对遥控小汽车有种喜欢,特别是有过小时候欲求而不得的经历的大人们哈。

    张国平
  • 7天快速掌握SQL-DAY1

    配置路径:计算机—属性—高级系统设置—环境变量—系统变量—path—编辑—新建—粘贴mysql的bin目录

    披头
  • LeetCode 278. 第一个错误的版本(二分查找)

    你是产品经理,目前正在带领一个团队开发新的产品。 不幸的是,你的产品的最新版本没有通过质量检测。 由于每个版本都是基于之前的版本开发的,所以错误的版本之后的...

    Michael阿明
  • Hyperledger也能实现Token代币

    中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>

    netkiller old
  • 区块链中现代密码学

    rectinajh
  • BRAIN脑电GCA研究:创伤后应激障碍患者的内源性感觉亢进和抑制缺失

    创伤后应激障碍的特征是放大对威胁的反应,迄今为止,理论上的研究都集中在威胁处理能力受损和前额叶皮层杏仁核回路失调。然而,在创伤后应激障碍中广泛存在威胁中立的(t...

    用户1279583
  • 数据库 ID 生成方案:号段模式

    还可以使用号段的方式来获取自增 ID,号段可以理解成批量获取。比如从数据库获取 ID 时,就可以批量获取多个 ID 并缓存在本地,提升效率。

    happyJared
  • PL/SQL 工具远程连接Oracle数据库方法,plsql免安装oracle客户端直接配置oci实战演示

    PL/SQL 工具的安装可以看我的这个文章: PL/SQL 数据库连接工具的下载、安装与使用,PL/SQL 工具的激活

    小蓝枣

扫码关注云+社区

领取腾讯云代金券