×

基于Arduino Nano的pH值监测器

消耗积分:0 | 格式:rar | 大小:0.36 MB | 2022-12-23

香香技术员

分享资料个

对于这个项目,我决定使用 Arduino Nano 33 BLE Sense 作为中心单元,因为我在哈佛 X TinyML 课程中使用过它。电路很简单:一个 pH 传感器(连接了一个水 pH 探头)连接到 Arduino 模拟输入,3 个 LED 作为数字输出驱动。将草图上传到 Arduino 后,我必须校准传感器。我将 pH 指示纸浸入一杯自来水中以了解其 pH 值,结果为 7。然后,我将探头浸入同一个玻璃杯中,并调整靠近探头连接器的传感器微调器,直到读取到 7 左右的值串行监视器。对于我使用过的特定传感器,调整靠近传感器引脚的微调器也很有用,以提高灵敏度。对于这个项目,我选择了三个 pH 边缘值:

- pH 4:低于 5 的 pH 值对植物来说太低

- pH 5:5 到 6 的 pH 值最适合植物

- pH 7:7 左右的 pH 值对植物来说太高了

为了得到 pH 值为 4 的溶液,我在一杯自来水中加入了一些柠檬汁,然后我用试纸测量了 pH 值以确认它在 4 左右,所以我将探针浸入玻璃杯中,然后它感应到大约 4 的值,这让我确信传感器校准良好。对于 pH 5 的溶液,我又拿了一杯自来水,并在其中放入了 pH 校正剂以降低其 pH。试纸和 pH 传感器的值都在 5 左右,所以我决定将这种溶液用于水培植物。电路中的三个 LED 指示 pH 值:

- 红色 LED:当 pH 值约为 4 时亮起

- 绿色 LED:pH 值约为 5 时亮起

- 黄色 LED:当 pH 值约为 7 时亮起

TinyML模型为了训练 tinyML 模型,我使用了 Edge Impulse 平台。我已经根据三个边缘值训练了模型,对于每个边缘值,我已经获取了五分钟的数据,以涵盖该值周围的大部分小波动。

数据收集后,我进行了脉冲设计,添加了我需要的功能块。

“时间序列数据”块将收集的数据拆分为多个选定大小的窗口(在本例中为 2000 毫秒)。“频谱分析”​​块过滤信号,然后执行频谱分析。“分类”块是神经网络,它使用光谱分析的结果来学习如何区分三个数据集。要创建脉冲,我单击“保存脉冲”,然后转到左侧菜单上的“光谱特征”以查看光谱分析结果并单击“保存参数”。

之后,出现了一个新窗口,允许为神经网络生成特征。

然后,通过点击左侧菜单中的“NN Classifier”,我进入了神经网络配置环境。我选择对网络进行 500 次训练,以达到令人满意的模型精度水平。

神经网络能够区分数据集,所以我可以继续下一步:将“异常检测”块添加到脉冲设计中,允许将神经网络无法识别的异常数据分类。

左侧菜单上的“异常检测”部分允许我选择要检测异常的特征。

为了测试模型,我进行了实时分类,并从 ph 5 解决方案中收集了五分钟的数据。该模型能够识别收集到的数据属于 ph 5 数据集。由于检测到的值包含在数据集中,因此没有检测到异常。

该模型已被证明是可靠的,因此我已将其部署到 Arduino。左侧菜单的“部署”部分帮助我做到了这一点。我可以选择将冲动部署为库或固件,我决定创建一个 Arduino 库,这样我就可以将它包含在我的草图中。

在Arduino IDE 上为了在 Arduino IDE 中包含模型库,我继续 Sketch -> Include Library -> Add.ZIP,然后我将库包含在我的 Sketch 中,并在代码中添加几行以便运行模型Arduino Nano 33 BLE Sense。

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

评论(0)
发评论

下载排行榜

全部0条评论

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