前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发硬件?JS也行!(基于DeviceScript) | 技术创作特训营第一期

开发硬件?JS也行!(基于DeviceScript) | 技术创作特训营第一期

原创
作者头像
治电小白菜
修改2023-08-27 16:24:53
1.2K6
修改2023-08-27 16:24:53
举报
文章被收录于专栏:技术综合

背景

最近买了块合宙的9.9 rp2040开发板, 刚好看到了微软的DeviceScript库支持, 便记录下学习过程和坑

DeviceScript介绍

官网: https://microsoft.github.io/devicescript/

基于TypeScript开发微型物联网设备

DeviceScript官网
DeviceScript官网

支持的板子有:

支持的板子
支持的板子

当然板子默认定义了gpio口和adc口, 其他的功能引脚没定义, 需要自己定义

开发环境搭建

1. 需要软件

  • Visual Studio Code
  • NodeJS v18.x

2. Visual Studio Code安装插件

插件市场直接搜索安装DeviceScript即可

插件市场搜索结果
插件市场搜索结果

3. 给rp2040板子烧入DeviceScript固件

将板子按住boot按钮并连接上电脑(这时我的电脑会多出一个盘符), 点击vscode左侧的插件图标, 再点击devices右上角的加号, 选择Flash Firmware烧入固件

按住开发板的boot按钮
按住开发板的boot按钮
选择烧入固件
选择烧入固件

注意: 1. NodeJS v18.x 原生支持fetch方法, 在安装固件的时候, DeviceScript用的fetch来请求下载固件, 低版本会报错

由于网络原因可能无法下载固件, 可以自行通过链接下载 然后复制到新增的盘中即可, 复制后会自动重启板子

烧入后, 点击device右上角加号, 选择Serial进行串口连接

连上后, 可以看到设备列表中存在了当前的rp2040设备, 到这基础环境就算搞定了

开发示例

1. 点灯

一灯大师专业点灯, 就先从把板子上的灯点亮开始吧

板子内置的LED引脚, DeviceScript已经定义好了, 所以不需要指定io口, 直接使用setStatusLight方法干

由于他这个方法可以对RGB灯进行控制, 所以可以传颜色值, 而rp2040是个单色灯, 那么只要0xFFFFFF控制亮, 0x000000控制灭即可啊

如下所示, 一次程序循环, 亮一秒灭一秒

代码语言:javascript
复制
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速度加快了)

2. 雨滴传感器

再写个读取雨滴传感器的程序

看原理图, 选择ADC2口连接到雨滴传感器的AO口

rp2040开发板引脚图
rp2040开发板引脚图
实物连接图
实物连接图

查看文档, 由于没有专门提供雨滴传感器的ADC方法, 直接使用startPotentiometer, 来将引脚上的电压(通常介于0V (GND)和3.3 V (VCC)之间)将被转换为介于0和1之间的数字. console.data用来将传感器数据打印和记录

ADC文档
ADC文档
代码语言:javascript
复制
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对单片机的开发, 旨在拓宽视野, 多涉猎, 多学习, 多运用, 将技术更好的用在生活和工作中

【写作提纲】

  1. DeviceScript库介绍
  2. 环境搭建
  3. 开发示例
  4. 总结

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • DeviceScript介绍
  • 开发环境搭建
    • 1. 需要软件
      • 2. Visual Studio Code安装插件
        • 3. 给rp2040板子烧入DeviceScript固件
        • 开发示例
          • 1. 点灯
          • 2. 雨滴传感器
          • 总结
          • 【选题思路】
          • 【写作提纲】
          相关产品与服务
          腾讯云 TI 平台
          腾讯云 TI 平台(TencentCloud TI Platform)是基于腾讯先进 AI 能力和多年技术经验,面向开发者、政企提供的全栈式人工智能开发服务平台,致力于打通包含从数据获取、数据处理、算法构建、模型训练、模型评估、模型部署、到 AI 应用开发的产业 + AI 落地全流程链路,帮助用户快速创建和部署 AI 应用,管理全周期 AI 解决方案,从而助力政企单位加速数字化转型并促进 AI 行业生态共建。腾讯云 TI 平台系列产品支持公有云访问、私有化部署以及专属云部署。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档