智能晾机架项目

  • 开发过程
    • 前期准备
      • 分离工程
      • 导入工程
      • 安装包
        • 安装最近的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个 单独控制两个电机的转动
方向控制 PE7 2个 控制电机转动方向(1个电机1个)
雷达 PF0 1个 雷达触发输入管脚
按键输入 s2 PF1 1个 一键控制
温湿度 PE2 SDA ,PE3 SCL(用sht30没有成功)换成DHT11,管脚为PA0,这块控制逻辑实质上与雷达是一样的。去掉吧,实际这块也没什么实际意义,阳台都是室内,能通过室外的阳台几乎是没有的 2个 用sht30,模拟IIc
限位 PE5,PE6 4个 前后左右方向限位,限制电机的转动
指示灯 只能选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输出的。

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

AB32VG1项目之智能晾衣架相关推荐

  1. 基于Arduino的智能晾衣架

    前段时间,由于个人原因没有及时更新,今天准备写一个基于Arduino的智能晾衣架. 摘要: 智能晾衣架是应用物联网工程技术,通过网络和物品的连接得以控制晾衣架的状态.智能晾衣架通过多个传感器来对外界环 ...

  2. 基于51单片机的智能晾衣架

    目录 一.项目功能 二.原理图 三.仿真图 四.实物照片 五.程序 资料下载地址:基于51单片机智能晾衣架 一.项目功能 1.实时测量DHT11温湿度传感器的数据并在LCD1602液晶屏上显示 2.实 ...

  3. 【单片机毕业设计】【mcuclub-106】智能晾衣架 | 多功能晾衣架【仿真设计】

    设计简介: 项目名:基于单片机的智能晾衣架设计-标准版 单片机:STC89C52 功能: 1.通过DHT11检测当前温度和湿度,若温度低于设定最小阈值,晾衣架收回: 2.若湿度高于设定最大阈值,晾衣架 ...

  4. 【单片机毕业设计】【mcuclub-106】智能晾衣架 | 多功能晾衣架【实物设计】

    设计简介: 项目名:基于单片机的智能晾衣架设计-标准版 单片机:STC89C52 功能: 1.通过DHT11检测当前温度和湿度,若温度低于设定最小阈值,晾衣架收回: 2.若湿度高于设定最大阈值,晾衣架 ...

  5. 【原创】北京智能云分院招商项目之五:智能

    智能数字计算机是计算机自动化发展的高级阶段.将推动计算机科学,网络时代与数字社会进进系统集成化,系统数字化,系统全息化,系统智能化战完全系统化智能数字时代伟大的新纪元!智能数字计算机硬件拟采用超大型系 ...

  6. springboot毕设项目在线智能办公系统bxl9i(java+VUE+Mybatis+Maven+Mysql)

    springboot毕设项目在线智能办公系统bxl9i(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HB ...

  7. Springboot毕设项目具有智能推荐功能的外卖点餐系统bia14(java+VUE+Mybatis+Maven+Mysql)

    Springboot毕设项目具有智能推荐功能的外卖点餐系统bia14(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mys ...

  8. 智能晾衣架(一)--设计

    本文素材来源于红河学院 工学院 作者:赵德森  张艺锦  潘志慧  曹紫康 指导老师:江洁  张龙超 一.简介 本作品设计的晾衣系统从人们日常生活研究设计,体积小,收纳方便,不占空间可以在日常生活中极 ...

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

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

最新文章

  1. 结构和联合--结构体内存和位段内存开辟规则
  2. ios 替换数组中元素_ios可变数组的所有操作
  3. 黑客这样使用python发邮件
  4. 【Android 插件化】“ 插桩式 “ 插件化框架 ( 代理 Activity 组件开发 )
  5. Linux 命令find、grep
  6. 假定某一个数据列表是一个班级的计算机课程,若需要利用形参直接访问实参,则应把形参变量说明为()参数。A.指针B.引用C.传值D.常值...
  7. python 画图 线标注_最简洁的Python时间序列可视化实现
  8. 游戏行业应该如何建设数据中台?
  9. 工作中:如何在实际工作中处理 NULL,并给出一些指南
  10. nodejs实践录:按行处理文件数据的示例
  11. SpringCloud工作笔记030---使用java提供的keytool来生成证书
  12. JAVA ajax搜索框_JAVAEE AJAX实现搜素框关键字提示语功能
  13. UI界面视觉设计之字体要素--安卓-ios-网页常用字体
  14. python套用word模板_套用word模板
  15. h3c无线控制器常用命令(wx)
  16. 太空中的特斯拉 一个大广告?
  17. ElasticSearch报错:FORBIDDEN/12/index read-only / allow delete (api)无法写入
  18. app性能数据导出生成图表方法之一
  19. 2022年可可香精市场前景分析及研究报告
  20. mybatis源码解析(一)

热门文章

  1. 实战中收藏已久的Linux命令
  2. DRM标准学习笔记1
  3. UE4 SetVisibility()和SetHiddenInGame()的比较
  4. 细说JVM系列:自动内存管理内存回收:垃圾收集理论-垃圾收集算法
  5. libudev-dev安装错误libudev1 (= 241-7~deb10u7) but 241-7~deb10u6解决
  6. Direct3D基础——预备知识:表面
  7. php 每次加密结果都不一样,实用的PHP带公钥加密类分享(每次加密结果都不一样哦)...
  8. 深入浅出C语言:(四)函数
  9. java在windows下启动jar包使用utf-8格式
  10. C++无法打开源文件