如何在Arduino上部署emlearn模型:从训练到LED控制的完整教程
如何在Arduino上部署emlearn模型从训练到LED控制的完整教程【免费下载链接】emlearnMachine Learning inference engine for Microcontrollers and Embedded devices项目地址: https://gitcode.com/gh_mirrors/em/emlearnemlearn是一款专为微控制器和嵌入式设备设计的机器学习推理引擎能帮助开发者在资源受限的硬件上轻松实现AI功能。本教程将带你完成从模型训练到在Arduino上部署并控制LED的全过程即使是新手也能快速上手。准备工作搭建开发环境开始前需要准备以下工具和材料安装 Arduino IDE准备任意Arduino兼容开发板如Arduino Leonardo安装emlearn Python库用于模型训练杜邦线、LED灯和220Ω电阻用于电路连接首先克隆emlearn项目仓库git clone https://gitcode.com/gh_mirrors/em/emlearn然后安装必要的Python依赖cd emlearn pip install -r requirements.txt第一步训练简单的XOR模型我们将从经典的XOR逻辑函数入手训练一个能根据输入状态控制LED的模型。创建训练脚本xor_train.py可参考 docs/helloworld_xor/xor_train.pyimport emlearn import numpy as np from sklearn.tree import DecisionTreeClassifier # 准备XOR训练数据 X np.array([[0, 0], [0, 1], [1, 0], [1, 1]], dtypenp.float32) y np.array([0, 1, 1, 0], dtypenp.int32) # 训练决策树模型 model DecisionTreeClassifier(max_depth2) model.fit(X, y) # 转换为C代码并保存 cmodel emlearn.convert(model) cmodel.save(xor_model.h)运行脚本生成模型文件python xor_train.py成功执行后会生成xor_model.h文件这就是我们需要部署到Arduino的模型。第二步安装emlearn Arduino库emlearn提供了专门的Arduino库包含模型推理所需的核心函数python -m emlearn.arduino.install该命令会自动将emlearn库安装到Arduino的库目录中通常路径类似C:\Users\用户名\Documents\Arduino\libraries\emlearnWindows或/home/用户名/Arduino/libraries/emlearnLinux第三步编写Arduino控制代码打开Arduino IDE创建新 sketch 并保存为emlearn_led_control复制以下代码完整代码可参考 docs/helloworld_xor/helloworld_xor.ino#include emlearn.h #include xor_model.h // 导入我们训练的模型 // 定义输入输出引脚 const int pinA 2; // 数字输入A const int pinB 3; // 数字输入B const int ledPin 13; // 板载LED引脚 void setup() { pinMode(pinA, INPUT); pinMode(pinB, INPUT); pinMode(ledPin, OUTPUT); } void loop() { // 读取输入值 const int a digitalRead(pinA); const int b digitalRead(pinB); // 准备输入特征 const float features[2] { (float)a, (float)b }; // 使用emlearn模型进行预测 const int prediction xor_model_predict(features); // 控制LED digitalWrite(ledPin, prediction ? HIGH : LOW); delay(100); // 短暂延迟 }将之前生成的xor_model.h文件复制到Arduino sketch目录中第四步电路连接与上传代码按照以下方式连接电路将两个数字输入引脚2和3分别通过杜邦线连接到GND或5V模拟高低电平LED的长脚正极通过220Ω电阻连接到引脚13LED的短脚负极连接到GND在Arduino IDE中选择正确的开发板和端口点击上传按钮将代码烧录到设备中。测试模型验证LED控制效果模型实现了XOR逻辑功能当两个输入状态不同时LED点亮相同时LED熄灭LED点亮预测结果1的情况输入A高电平输入B低电平输入A低电平输入B高电平LED熄灭预测结果0的情况输入A高电平输入B高电平输入A低电平输入B低电平进阶应用探索更多可能性掌握基础流程后你可以尝试使用模拟传感器如光敏电阻作为输入训练更复杂的模型如通过 emlearn/trees.py 实现多分类优化模型大小和速度参考 docs/optimizing-tree-models.md尝试其他嵌入式平台如ESP32、STM32emlearn让嵌入式设备上的机器学习变得简单无论是智能家居、工业控制还是物联网设备都能轻松集成AI功能。现在就开始你的嵌入式AI之旅吧【免费下载链接】emlearnMachine Learning inference engine for Microcontrollers and Embedded devices项目地址: https://gitcode.com/gh_mirrors/em/emlearn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Better Streaming Assets API详解:FileExists到LoadAssetBundle的完整调用示例

Better Streaming Assets API详解:FileExists到LoadAssetBundle的完整调用示例

Better Streaming Assets API详解:FileExists到LoadAssetBundle的完整调用示例 【免费下载链接】BetterStreamingAssets A plugin for Unity that lets you access Streaming Assets directly on Android. 项目地址: https://gitcode.com/gh_mirrors/be/BetterStr…

2026/10/14 23:23:06 阅读更多 →
公司取消前端岗后,做了 10 年 Java 的我,第一次认真拥抱 AI

公司取消前端岗后,做了 10 年 Java 的我,第一次认真拥抱 AI

公司取消前端岗后,做了 10 年 Java 的我,第一次认真拥抱 AI以前我担心:AI 会不会替代程序员?现在我更担心:不会用 AI 的程序员,会不会先被替代?最近,公司取消了一些前端岗位。 消息出…

2026/10/2 1:06:59 阅读更多 →
FormsFX:彻底改变JavaFX表单开发!简单高效创建专业UI表单的终极指南

FormsFX:彻底改变JavaFX表单开发!简单高效创建专业UI表单的终极指南

FormsFX:彻底改变JavaFX表单开发!简单高效创建专业UI表单的终极指南 【免费下载链接】FormsFX A framework for easily creating forms for a JavaFX UI. 项目地址: https://gitcode.com/gh_mirrors/fo/FormsFX FormsFX是一个专为JavaFX UI设计的…

2026/10/14 19:50:09 阅读更多 →

最新新闻

Delphi中用TPaintBox生成显示二维码,并保存为PNG回读Image的完整实践

Delphi中用TPaintBox生成显示二维码,并保存为PNG回读Image的完整实践

1. 从画布到文件:为什么用PaintBox而不是直接放Image最近在做桌面端工具时,遇到一个挺典型的交互需求:界面某处要根据数据动态生成二维码,当场显示给用户看,同时提供一个“保存图片”的按钮,把二维码落盘。…

2026/10/14 23:22:37 阅读更多 →
SyncBus:轻量多设备同步方案的设计思路与排障实践

SyncBus:轻量多设备同步方案的设计思路与排障实践

这几年我手上长期同时活跃着好几台设备:办公室一台台式机、家里一台笔记本、移动端偶尔也要临时看看资料。听起来不算夸张,但真正让人抓狂的是,这些设备之间永远在“打架”——昨天在台式机上改过的方案,今天打开笔记本发现还是旧…

2026/10/14 23:22:37 阅读更多 →
通信对抗原理仿真实践:从培训课件到可复现实验台

通信对抗原理仿真实践:从培训课件到可复现实验台

简介:这份《通信对抗原理培训课件》面向通信工程、电子信息及军事通信相关专业的学习者与教学人员,系统讲解通信信号测向与定位的基本原理和关键技术,适合作为课程教学、专题培训或自学复习的参考材料。压缩包内共1个ppt文件,整体…

2026/10/14 23:22:37 阅读更多 →
基于Python和微信小程序的医院陪诊陪护系统设计与实现

基于Python和微信小程序的医院陪诊陪护系统设计与实现

做医院陪诊陪护这块业务,让我最头疼的不是医疗资源本身,而是线下流程的混乱。预约难、排班乱、陪诊师接单全靠群里吼,家属想找个人看看进度都找不到地方。后来我基于Python后端 微信小程序前端,从零搭了一套医院健康陪诊陪护系统…

2026/10/14 23:22:37 阅读更多 →
中文网络安全运营语料库:从告警研判到知识库的落地指南

中文网络安全运营语料库:从告警研判到知识库的落地指南

简介:这份面向网络安全运营研究与实践的中文语料包,主要服务于安全分析人员、运维工程师以及高校信息安全方向的学习者。包体共93个文件,以90个YAML结构化文件为主,搭配2个Markdown说明文档与1个License许可文件,整体仅…

2026/10/14 23:22:37 阅读更多 →
C++异常处理核心:std::exception类设计原理与安全实践

C++异常处理核心:std::exception类设计原理与安全实践

1. 项目概述:从“崩溃即失败”到“异常即信号”的思维跃迁C day33 异常(二)exception类——这个标题乍看像是一节普通编程课的笔记编号,但背后藏着C开发者真正迈入工程化门槛的关键一跃。它不是讲“怎么抛出一个字符串”&#xff…

2026/10/14 23:21:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →