【合宙Air105开发板试用体验】体验不一样的嵌入式脚本开发

描述

本文来源电子发烧友社区,作者:辛一, 帖子地址:https://bbs.elecfans.com/jishu_2288937_1_1.html

首先赞一下合宙的LuatOS wiki,做的真的很详细:https://wiki.luatos.com/index.html。手上拿到的这款Air105核心板是基于Air105 MCU设计的一款开发板,开发板尺寸迷你,通过邮票孔设计引出Pin脚,很容易进行拓展连接。 合宙通信
Air105 MCU是一款强大的MCU,内核采用Cortex M4F CPU,运算能力有一定的保证。同时配有640KB的大内存,以及4MB的Flash,可以让开发者不必纠结代码结构,大胆“放飞自我”。接口方面有基本的UART、SPI、IIC等串行接口,还带有USB和摄像头DCMI,可以说是应有尽有。另外ADC、DAC、timer等模块可以丰富MCU的应用场景,CRC和TRNG模块能够在信息安全中发挥作用。 合宙通信
总体来看 Air105 MCU真是一块宝。虽然采用ARM的MCU,但是合宙帮我们开发者封装了一层脚本框架LuatOS,基于这个框架可以大大提高开发效率。既然是基于LuatOS,那么就不能使用Keil进行开发。合宙官方推荐的vscode+插件的形式,插件可以在vscode内搜索“LuatOS-SOC推荐拓展包”,有了这个插件可以完成一些LuatOS下代码自动补全的功能。 合宙通信
脚本的烧录是通过串口进行的,需要用到的工具是Luatools。Luatools是一个综合工具,可以完成串口打印debug,也可以完成固件更新,以及脚本上传。 合宙通信
合宙通信
LuatOS的Wiki主页为我们提供不少库和外设的使用方式。其中sys和log基本上是必选的。sys负责嵌入式操作系统任务的创建和调度等任务,加入sys库LuatOS才能够正常运行。

  1. local sys = require "sys"
复制代码

而log库可以输出代码信息,方便调试。log可以分为debug、info、warn和error不同等级,可以根据需求屏蔽不同等级的输出,方便了程序调试。

  1. log.setLevel("WARN") -- warn以下等级的log不会输出print(log.getLevel())log.debug(PROJECT, "debug message")log.info(PROJECT, "info message")log.warn(PROJECT, "warn message")log.error(PROJECT, "error message")
复制代码

为了保证程序不会跑飞,还可以加入看门狗

  1. -- 添加硬狗防止程序卡死wdt.init(15000)  -- 初始化watchdog设置为15ssys.timerLoopStart(wdt.feed, 10000)  -- 10s喂一次狗
复制代码

通过上面三个库的使用,可以看到LuatOS很容易上手,大大提高了开发效率。

最后,利用温度传感器和PWM配合,完成了一个自适应的风扇调节系统。


  1. sys.taskInit(function()
  2.     local raw = 0
  3.     local mv  = 0
  4.     while 1 do
  5.         adc.open(1)
  6.         sys.wait(500)
  7.         raw, mv = adc.read(1)
  8.         log.debug("adc", "adc1", mv)
  9.                 if mv >= 1500 then
  10.                         pwm.open(5, 1000, 100)
  11.                 elseif mv >= 1000 then
  12.                         pwm.open(5, 1000, 80)
  13.                 elseif mv >= 800 then
  14.                         pwm.open(5, 1000, 60)
  15.                 elseif mv >= 500 then
  16.                         pwm.open(5, 1000, 30)
  17.                 elseif mv >= 100 then
  18.                         pwm.open(5, 1000, 20)
  19.                 else
  20.                         pwm.open(5, 1000, 0)
  21.                 end
  22.  
  23.         adc.close(1)
  24.         sys.wait(500)
  25.     end
  26.  
  27. end)
复制代码
 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分