AB32VG1项目之智能晾衣架

news/2024/11/28 20:57:33/

智能晾机架项目

  • 开发过程
    • 前期准备
      • 分离工程
      • 导入工程
      • 安装包
        • 安装最近的rt-thread 包
        • AB32VG1的 SDK包
        • RISC-V-GCC工具链
      • 下载
    • 硬件搭建
      • 开发板上的3.3V能否可用的问题??
      • 大体的硬件规划
    • 软件设计
      • 控制逻辑设计
      • 按键线程实现
      • 其他线程的实现
    • 代码地址
    • 视频地址
  • 遇到的问题
    • rt-thread studio不习惯,还是用menuconfig来配置,但scons构建时,生成什么格式呢?
    • 新建studio工程后,没有rtt配置及软件包的配置界面???
    • 直接用sht3x的软件包,没法读出温湿度问题??
      • 关于IIC管脚的初始化
      • sht3x软件包如何操作模拟I2c?
        • 问题的跟踪,rt_i2c_transfer()这个函数一直返回-1,why????
      • multibuttun软件包在哪里?
      • dht11直接用软件包,按PA0与PFO打印输出不一样问题??

正好公司项目已经完成了,进入了测试期,也赶上rtt与发烧友举办这个risc-v的大赛,所以就报名了,一来可以加深一下对rtt的理解,二来也了解下中科蓝讯的芯片。

开发过程

还是之前的套路,先把开发资料下载下来,然后就是看资料,写测试程序,最后集成。不再重复了,只是记录下主要的里程碑及遇到问题。

前期准备

主要是熟悉一下studio开发环境

分离工程

从rt-thread中分离出ab32的工程,之前操作过很多遍了,不再展开

导入工程

在rt-thread studio中选 文件 -> 导入 -> 选择 “RT-Thread Studio项目到工作空间中” ->选择好分离出的文件为根目录,点完成,自动导入项目。这种方式不行的话,就新建 一个基于rt-thread的项目,选基于ab32vg1的开发板即可,一样可以导入demo工程。

安装包

安装最近的rt-thread 包

找到sdk manager ,一定要选latest安装包,不是studio自带的那个版本

AB32VG1的 SDK包

安装后最新rt-thread包后,才能进行这一步的安装。否则会提示错误

RISC-V-GCC工具链

下载

不出意外的话,应该是可以直接编译通过,找到的资料都是用downloader下载。暂不支持仿真。

硬件搭建

开发板上的3.3V能否可用的问题??

因为要外接磁传感器,需要3.3V,开发板上自带的vcc3V3能否可用呢???看了下原理图,蓝讯这个开发板上不带3.3Vldo,本身这个3.3V是AB32VG1内部稳压输出的,且已经带载了红外,三色灯,TF卡座等外设,查看它的数据手册,最大输出电流只有150ma,还是偏小的。经过权衡,3.3v还是利用之前板子上的电压吧。

大体的硬件规划

大体需要的资源:

系统功能管脚需要资源(占用的管脚数)说明
两路PWM(需要单独控制)time5PWM2 PE1 LPWM1 PA1(这两路对应板子上的三色灯的两路灯,这样可以先模拟,没问题的话,再带载测试)2个单独控制两个电机的转动
方向控制PE72个控制电机转动方向(1个电机1个)
雷达PF01个雷达触发输入管脚
按键输入s2 PF11个一键控制
温湿度PE2 SDA ,PE3 SCL(用sht30没有成功)换成DHT11,管脚为PA0,这块控制逻辑实质上与雷达是一样的。去掉吧,实际这块也没什么实际意义,阳台都是室内,能通过室外的阳台几乎是没有的2个用sht30,模拟IIc
限位PE5,PE64个前后左右方向限位,限制电机的转动
指示灯只能选PE4了,对应的是三色灯的绿灯1个主要用于功能状态的指示
串口(就用开发板的串口1)PA3(rx)33脚 PA4(tx) 34脚2个打印程序状态

需要的资源不多,开发板给留出的管脚够用,可以直接使用开发板上提供的按键输入,三色指示灯,另外,还可以再打开一路串口,实现程序状态的打印。其他功能电路,也不是很复杂,直接用之前项目的板子外接线就可以,也免去的画板及重新焊接的时间。

不知怎么弄的,sht30及dht11,直接用软件包都没有实现读取操作,可以用一头雾水来形容,追踪了一下代码,也没发现什么问题。看网友用18B20,并且都是接到PF0口来实现读取温度的,心中很疑惑,也问了厂家的技术,他也买了一个sht30来试,也一直没有回复。所以这块先放放吧,等待官方回复。去掉了,这块在stm32上是没有任何问题的,再说也没具体的实际意义,几乎没有阳台是可以通室外的,考虑再三,还是去掉了。

软件设计

控制逻辑设计

在这里插入图片描述

按键线程实现

使用MultiButton,软件包。使用,详见MultiButton官网说明,需要根据上面控制逻辑的设计,添加自己的逻辑即可。

其他线程的实现

按控制逻辑实现就可以,不再展开。

代码地址

智能晾衣架项目:gitee代码地址

视频地址

B站演示视频地址

遇到的问题

rt-thread studio不习惯,还是用menuconfig来配置,但scons构建时,生成什么格式呢?

答案是不可以,再用env来开发了,scons --target前期是要工程里有一个mdk或其他工具的模板文件。找了一圈,目录是没有的,还是返回studio的开发环境吧。

新建studio工程后,没有rtt配置及软件包的配置界面???

还真不是工程的事,是自己对studio不熟悉。将导航器的内容,当作项目资源管理器来对待了。造成没有rtt配置选项。切换到,窗口 -> 显示视图 -->资源管理器,即可

直接用sht3x的软件包,没法读出温湿度问题??

之前在stm32平台下,一直都是很顺利的,没有分析过源码,借这个机会,分析下。至于为什么要分析源码,因为,管脚压根就没有想要的波形输出。所以很有可能是初始化的时候就有问题。

关于IIC管脚的初始化

在libraries -> hal_drivers -> drv_soft_i2c.c里,有如下代码:

/* I2C initialization function */
int rt_hw_i2c_init(void)
{rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ab32_i2c);rt_err_t result;for (int i = 0; i < obj_num; i++) {i2c_obj[i].ops = ab32_bit_ops_default;i2c_obj[i].ops.data = (void *)&soft_i2c_config[i];i2c_obj[i].i2c2_bus.priv = &i2c_obj[i].ops;ab32_i2c_gpio_init(&i2c_obj[i]);//这里便完成了初始化result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c2_bus, soft_i2c_config[i].bus_name);RT_ASSERT(result == RT_EOK);ab32_i2c_bus_unlock(&soft_i2c_config[i]);LOG_D("software simulation %s init done, pin scl: %d, pin sda %d",soft_i2c_config[i].bus_name,soft_i2c_config[i].scl,soft_i2c_config[i].sda);}return RT_EOK;
}
INIT_BOARD_EXPORT(rt_hw_i2c_init);

若从上面的代码看,确实是看不出什么问题,暂且认为这里已经初始化好了。用示波器看,两个管脚确也波形输出,但只是一闪而过。

sht3x软件包如何操作模拟I2c?

通过sht3x_init()完成了将注册好的i2c设备,到sht3x间的映射,同时也创建一个互斥量 dev->lock = rt_mutex_create(“mutex_sht3x”, RT_IPC_FLAG_FIFO);这个锁只有在单次读后和反初始化时,会释放,也只有在这两上时刻,才会再次读取到温湿度值,也就是调用sht3x_read_singleshot(sht3x_device)这个函数。然后,再调用i2c_core.c中,rtt提供的i2c底层操作函数。这只是一个大体的调用过程。

问题的跟踪,rt_i2c_transfer()这个函数一直返回-1,why???

不能仿真,只能一个函数,一个分支的打印,追踪到i2c_core.c中rt_i2c_transfer()这个函数一直返回-1.为什么呢???
这个问题,弄了好几天,先暂停,完善其他功能代码。

multibuttun软件包在哪里?

在miscellaneous packages里。

dht11直接用软件包,按PA0与PFO打印输出不一样问题??

如下图所示:
这个是用PF0口输出的
在这里插入图片描述
这个是用PA0输出的。
在这里插入图片描述

手头就两种传感器,都试了,直接用软件包一直也没调通,但逻辑和雷达是差不多的,不同的是雷达是控制上下电机,而温湿度是控制左右电机,仅此而矣。所以决定先不弄温湿度了,先把项目进行下去,用手动不一样可以控制吗?


http://www.ppmy.cn/news/296328.html

相关文章

基于51单片机的智能晾衣架系统设计

1.功能介绍 设计基于51单片机的智能晾衣架。主要功能如下&#xff1a; &#xff08;1&#xff09;控制晾衣架的升降。 &#xff08;2&#xff09;具有限位开关功能。 &#xff08;3&#xff09;具有无线遥控功能。 &#xff08;4&#xff09;能够指示运行状态。 &#xff08;5&…

51单片机的智能晾衣架

设计功能 &#xff08;1&#xff09;电机的转动是通过继电器控制的。实际应用中继电器可以接其他负载&#xff1b; &#xff08;2&#xff09;开机初始时为智能模式&#xff0c;通过光敏自动识别光线强弱&#xff08;白天或夜晚&#xff09;&#xff0c;采用DHT11温湿度传感器…

基于Arduino的智能晾衣架

前段时间&#xff0c;由于个人原因没有及时更新&#xff0c;今天准备写一个基于Arduino的智能晾衣架。 摘要&#xff1a; 智能晾衣架是应用物联网工程技术&#xff0c;通过网络和物品的连接得以控制晾衣架的状态。智能晾衣架通过多个传感器来对外界环境变化进行监测&#xff…

智能晾衣架(二)--功能实现

本文素材来源于红河学院 工学院 作者&#xff1a;赵德森 张艺锦 潘志慧 曹紫康 指导老师&#xff1a;江洁 张龙超 1. 自动升降功能 我们设计时采用了热释电传感器&#xff08;人体红外传感器&#xff09;&#xff0c;在热释电传感器感应到有人靠近时&#xff0c;晾衣架通…

银行vr元宇宙全景虚拟展馆提供更加真实、立体、高效的数字资产交易场景

为了贯彻国家普惠金融政策&#xff0c;使金融如无惠及广大群体,宇宙技术在金融行业中的应用将进一步提升金融消费体验感觉和金融管理水平。打造元宇宙金融服务平台&#xff0c;构建虚实结构的金融服务世界&#xff0c;培育和管理好数字机器人员工队伍&#xff0c;提升金融业务各…

XXL-JOB任务分片

文章目录 任务类型任务配置路由策略阻塞处理策略&#xff1a; 单个任务和集群任务单机多任务分片集群分片 任务类型 单个任务&#xff1a;一个任务实例便可完成 单机单任务&#xff1a;单机模式下任何路由模式都只有一个实例执行 集群单任务&#xff1a;由路由策略(广播模式除…

图论 (Java) 从入门到入土 /第一部分 图的基础-图的表示/

零.前言 图&#xff0c;是一种比较复杂的数据结构。和树的一个节点只和上层一个节点相连不同&#xff0c;在图中&#xff0c;任意两个节点都可能相连&#xff0c;且可能具有方向性&#xff0c;并且节点的边具有权重&#xff0c;因此&#xff0c;图被用于描述各种复杂的数据对象…

新一批高考毕业生即将迈入大学校园,作为前辈想要对即将进入本专业学习的后辈们分享

提醒&#xff1a;在发布作品前&#xff0c;请把不需要的内容删掉。 基于高考毕业生都是本行业的“萌新”&#xff0c;请你以较为通俗的语言介绍当前IT行业的发展和前景&#xff0c;提出IT专业的重要性&#xff0c;并预告本文将介绍的一些小tips&#xff0c;帮助高考生选择适合…