基于BearPi开发板的语音控制开关(二)搭建小熊派的开发环境

前文介绍,我已经准备了一块小熊派开发板及其智慧农业模块,下边开始根据 BearPi-HM Nano 十分钟上手教程 搭建小熊派的开发环境。因为VMware的限制,这一步只能在Windows系统操作。 下载工具 下载官方提供镜像 - 镜像里提供OpenHarmony系统开发环境和工具: https://pan.baidu.com/share/init?surl=T0Tcl3y48C1p5L6y-6HJNg?pwd=eusr 下载并安装虚拟机VMwareWorkstation: https://www.vmware.com/products/workstation-player/workstation-player-evaluation.html 下载HiBurn - 编译好的程序,烧录到开发板: https://pan.baidu.com/s/1bp2ypAfH2HaNPTY2KwEhEA?pwd=1234 下载并安装开发板USB驱动 - 下载 CH341SER.EXE (USB转串口Windows一键式安装驱动程序)

基于BearPi开发板的语音控制开关(一)背景

前段时间跑了趟济南宜家,把家里已经开始掉漆的镜柜换了。 新镜柜的亮点是两条LED灯带,在安装的时候,买了个人体感应开关,把两条LED灯带改成了人体感应灯,从此夜里进卫生间再也不用摸黑找开关了。 HESUNSE红外线人体感应开关探头模块 方便了很多,但使用体验差强人意: * 感光开关已经调到“较黑”了,但傍晚天稍微一黑,进卫生间灯就会亮 * 感应距离不可控,猫溜达进卫生间也会让灯亮起 * 5分钟、45秒、15秒三档延时不能灵活适用各种用卫生间场景 * 频繁开关减少LED的使用寿命 不好用就换,打算换语音控制试试,于是在网上找到了《基于OpenHarmony开发的语音小助手》这篇文章,他这套东西完全符合我的需求,满足基本的语音控制,也为以后升级触摸开关和人体感应预留了开发空间,开整。 备注:实践过程中发现文章写的很粗,不适合小白,而且很多内容写的不是很准确,费了好大劲摸索! 先准备硬件,根据文章介绍,结合我后边的实践,需要用到的硬件器材如下: * 小熊派 BearPi-HM Nano Hi3861开发板 + 智慧农业模块 * LD3320A

记一次错误的尝试一门新语言TypeScript

作为一个不被编程语言束缚的程序员,跨语言开发是常事。不怕开始学习一门新语言,怕的是开始了一门语言后,越来越发现对项目不合适。最近的一个项目,选择TypeScript就是一个错误的选择。 该项目是一个管理后台系统的前端,功能主要是对业务数据的CRUD等,没有复杂的业务逻辑。因为TypeScript种草好久了,所以在项目开始的时候拍脑袋决定尝试TypeScript。 开始在网上翻了一些TypeScript入门和JavaScript转TypeScript的教程,研究了半天就直接开始上手了。基础框架选择的基于vue的vuetify,github上找了一套现成的模版,测试环境很快就跑起来了。运行没问题,只是vscode里一堆报错,文件差不多全是红的。简单看了下,基本都是跟数据类型有关的,但不影响运行和打包,为了赶进度就没在意。 JavaScript转TypeScript容易犯的错 后来闲下来决定把这些报错排除掉,梳理下来,基本都是变量类型没有定义引起的报错,概括为这两类: * Property 'id' does not exist on type 'never'.ts(

用好浏览器缓存,让网站访问速度起飞

Web项目访问速度优化,有些时候把浏览器缓存用好了,比费劲折腾代码或费钱加服务器,来的效果更直接。下面我们就来梳理下浏览器缓存那些事。 先上一张简单的流程图,看看缓存是怎么发挥作用的: 一个请求发起,浏览器先根据被请求资源的Expires或Cache-Control判断资源的缓存是否过期,未过期直接使用,过期了则向远端发起请求。 远端通过Last-Modified或Etag判断被请求资源是否发生更新,更新了返回新资源,未更新则返回304,不返回新资源,以节省数据传输量。 当浏览器还没有缓存,或缓存过期了,或请求头包含no-cache指令,远端返回新资源。 基本的过程就是这样的,下边是一张详细的流程图: 可以看出,当发起一次http请求,如果有缓存,浏览器会先根据Cache-Control和Expires判断缓存是否过期,如果没有过期则使用缓存而停止请求,浏览器的这个处理过程也被称为强缓存。 当浏览器判定本地缓存过期后向远端发起请求,远端先通过Pragma参数判定是否为强制刷新,如果是,直接返回新资源,不是则通过请求头里的If-None-Match和If-Modi

阿里云CDN刷新目录不生效的问题排除

先说结论,不是系统有问题,是对CDN的刷新机制不够了解,使用不当造成的。 背景 我的源文件是在阿里云oss上,一开始cdn回源的是oss上的源文件。后来设置了一个加水印的样式,然后在cdn的回源配置上加了oss样式的参数,也就是说,cdn清了缓存重新回源的图片应该是有水印的。 问题 按url刷新cdn,可以看到cdn上的图片是有水印的,说明刷新生效。而按目录刷新cdn,看到cdn上的图片没有加水印,说明刷新没起作用。尝试了很多次,证实这个问题是存在的。 寻找问题原因 考虑阿里云这么成熟的平台不应该有这问题,但这问题就在眼前,还是决定发个工单一探究竟。为了说清楚问题,我把我试错的过程做成了一个文档发给了阿里云工程师。 * 第一步,浏览器访问图片: https://cdn.xuguoyu.com/b/proteus/install7.png * 第二步,CDN刷新目录: https://cdn.xuguoyu.com/b/proteus/ * 第三步,浏览器普通刷新,状态码为304,Last-Modified没有变化