最近买了块合宙的9.9 rp2040开发板, 刚好看到了微软的DeviceScript库支持, 便记录下学习过程和坑
基于TypeScript开发微型物联网设备
支持的板子有:
当然板子默认定义了gpio口和adc口, 其他的功能引脚没定义, 需要自己定义
插件市场直接搜索安装DeviceScript即可
将板子按住boot按钮并连接上电脑(这时我的电脑会多出一个盘符), 点击vscode左侧的插件图标, 再点击devices右上角的加号, 选择Flash Firmware
烧入固件
注意: 1. NodeJS v18.x 原生支持
fetch
方法, 在安装固件的时候, DeviceScript用的fetch
来请求下载固件, 低版本会报错
由于网络原因可能无法下载固件, 可以自行通过链接下载 然后复制到新增的盘中即可, 复制后会自动重启板子
烧入后, 点击device右上角加号, 选择Serial进行串口连接
连上后, 可以看到设备列表中存在了当前的rp2040设备, 到这基础环境就算搞定了
一灯大师专业点灯, 就先从把板子上的灯点亮开始吧
板子内置的LED引脚, DeviceScript已经定义好了, 所以不需要指定io口, 直接使用setStatusLight
方法干
由于他这个方法可以对RGB灯进行控制, 所以可以传颜色值, 而rp2040是个单色灯, 那么只要0xFFFFFF
控制亮, 0x000000
控制灭即可啊
如下所示, 一次程序循环, 亮一秒灭一秒
import { delay } from '@devicescript/core'
import { setStatusLight } from '@devicescript/runtime'
setInterval(async () => {
await setStatusLight(0xFFFFFF)
await delay(1000)
await setStatusLight(0x000000)
await delay(1000)
}, 1)
点击右上角的运行, 将代码运行到板子上
看看效果 (把gif速度加快了)
再写个读取雨滴传感器的程序
看原理图, 选择ADC2口连接到雨滴传感器的AO口
查看文档, 由于没有专门提供雨滴传感器的ADC方法, 直接使用startPotentiometer
, 来将引脚上的电压(通常介于0V (GND)和3.3 V (VCC)之间)将被转换为介于0和1之间的数字. console.data
用来将传感器数据打印和记录
import { pins } from '@dsboard/pico' // 引入`pico`(rp2040)的引脚定义
import { startPotentiometer } from '@devicescript/servers'
const slider = startPotentiometer({
pin: pins.GP28,
})
slider.reading.subscribe(v => console.data({ value: v }))
可以看到没有水在传感器上时, 数据大概在0.8, 之后我滴上几滴水后, 数值变为0.3左右
随后我们可以对刚刚console.data
生成的数据, 统计和绘制图像等
点击右上角图标
按照提示流程, 先会弹框让你选择本机的Python环境, 然后按步骤运行下面的脚本
最后一个脚本可以根据数据显示图表
首先, 用JS开发硬件挺有意思, 但是生态没有Arduino好, 支持的板子不多, 但也都是很热门的板子
玩玩还是不错的, 正常的功能和传感器驱动都有, 生态还在慢慢完善.
JavaScript涉及的领域越来越多, 从前端到后端, 再到2D, 3D, 机器学习. 这边文章主要是介绍JS对单片机的开发, 旨在拓宽视野, 多涉猎, 多学习, 多运用, 将技术更好的用在生活和工作中
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。