创客项目秀|基于XIAO ESP32C3的本地个人助理Mr.M

news2024/11/25 2:19:50

作者:Matthew Yu

来自:Fab academy

在数字化时代的浪潮中,柴火创客空间作为创新与实践的摇篮,不仅为Fab Academy 2024的学员们提供了一个充满活力的学习和创作环境,更是将科技的力量与人文关怀深度融合。今天,我们自豪地介绍柴火创客空间辅导毕业的其中一位学员Matthew Yu的终极项目——Mr.M,一个集成了大型语言模型(LLM)的本地个人助理。其独特的设计理念和强大的功能,重新定义了我们与智能设备之间的互动。让我们深入了解Mr. M的诞生历程!

项目介绍

项目概述

Mr.M基本工作:

  1. 它将在同一个 Wi-Fi 上接收来自 INMP441 和 XIAO ESP32C3 移动模块的音频消息(音频到波浪文件)。

  2. 然后它会将音频转换为单词(文本)并尝试理解它:对于已经提示的任务,将自动生成日历信息(JSX文件)。

  3. 相应的日历消息或一些也被提示的信息将通过MQTT发送到另一个移动模块,与ILI9341显示屏一起显示。

功能模块介绍

麦克风输入:

这个输入可能看起来不太好,这是它的具体结构:

PCB可以很好地贴合3D打印部件,但像左边一样,添加卡住柱子令人更加放心。

显示输出:

UI操作图像(我真的为此感到非常自豪):

材料清单

原件

数量

reComputer J4012

x1

reRouter

x1

Monitor

x1

XIAO ESP32C3

x2

INMP441

x1

3 Pin Header SMD

x2

Grove Female Header

x1

ILI9341

x1

Grove RGB LED Ring

x1

Power Supply Extension

x1

Network Cable

x1

Type-C Male Connector to Three Type-C Female Connector

x1

M5*60 screw

x4

M5 nut

x8

以下是材料总览:

微控制器接口与编程

首先是我的软件测试部分:

(输入)移动模块 - 原始音频数据到 WAV 文件:

功能:为电路板通电,它将记录并生成WAV文件并传输到服务器,其中IP由网络提供。

reComputer 可以读取 IP 并从临时服务器下载文件。

相关参考:(input) Mobile Module - Raw Audio Data to Words | Matthew‘s FabLab Journey (fabacademy.org)

WAV文件转文本 reComputer:

将WAV文件转换为文本,并将文本输入到LLM(Ollama API)中:

  • WAV 文件位于显示器的右上角。

  • 左下角是交互式页面(docusaurus pages)运行的地方

  • 左上角是下载音频文件的地方

相关参考:(input) Mobile Module - Raw Audio Data to Words | Matthew‘s FabLab Journey (fabacademy.org)

为了实现这部分,我需要在我的 reComputer 上设置一个 LLM 驱动的机器人:

有关聊天机器人的更多详细信息:Chat Bot(Local Server) | Matthew‘s FabLab Journey

为了让这个机器人看起来更好,我使用 GPT 本身来生成代码。

有关UI操作页面设置的更多信息:Operating UI Setting | Matthew‘s FabLab Journey

音频文本到设计的日历标准(JSX):

我需要能够将我的单词(音频文本文件)翻译成docusaurus平台可以渲染的日历JSX标准文件:

!注意:代码目前正在MAC上进行测试。但是 reComputer 和 MAC 都共享 Linux,因此代码是共享的。

有关本地LLM和自动生成tsx文件的更多信息:Local LLM and Auto-generation tsx file | Matthew‘s FabLab Journey (fabacademy.org)

为了正确使用 LLM,我需要使用 Prompt Enginner 很好地学习和应用:

有关提示设置的更多详细信息:Prompt Setup | Matthew‘s FabLab Journey (fabacademy.org)

(输出)移动模块 - 接收和显示日历信:

在reComputer生成标准JSX日历文件后,从处理后的文本文件。我将把消息从文本文件传输到移动模块并显示它,同时还可以控制一些东西。

有关移动模块的更多详细信息 -接受和显示日历信息:(Output) Mobile Module - Receive and Display Calendar Information | Matthew‘s FabLab Journey

!注意:为了应用此功能,它需要 MQTT 函数,我已经在 reComputer 中应用,让它充当代理进行运行。

有关MQTT连接XIAO板子和Docusaurus-website的更多详细信息:MQTT connect with XIAO boards and Docusaurus-website | Matthew‘s FabLab Journey (fabacademy.org)

同时需要使用Docusaurus页面在network(reRouter)下构建和实现MQTT功能:

接口:

我使用我的作业网站页面设计机器人,并将所有无线功能放在一起。这些可以自动完成。

!注意:

自动化操作对于用户来说十分方便,但他们也可以在FAB Academy MQTT(MQTT broker (#18) · 议题 · Academany / Fab Academy / 2024 / Fab Academy 2024 Class · GitLab (fabcloud.org)) 下手动控制。例如:

电子设计与生产

(输入)移动模块 - 原始音频数据转换文字:

我希望这个模块可以接收我的声音,它可以显示一些 RGB LED 灯,表明它正在工作,或者其他事情。然后我在其中连接两个 3 针接头 SMD。

有关(输入)移动模块的更多详细信息参考:(input) Mobile Module - PCB design | Matthew‘s FabLab Journey (fabacademy.org)

(输出)移动模块 - 接收和显示日历信息:

我希望这个模块接收日历信息,它可以控制一些东西,比如继电器。然后,我在PCB上添加了一个Grove端口和一个8 PinHeader P2.54mm:

有关(输出)移动模块的更多详细信息:(Output) Mobile Module - PCB design | Matthew‘s FabLab Journey (fabacademy.org)

外观结构设计

输入模块设计:

顶盖(3D打印):

中间部分(3D打印):

RGB灯罩部分(2D设计):

最终成品:

将RGB灯接线与XIAO天线一起延长至背部:

最后放置亚克力板盖上背部:

输出模块设计:

显示器支架和 Grove 继电器支架(3D 打印):

最终成品:

外壳设计-2D激光切割:

这部分工作是为了让作品看起来好看、整洁、合乎逻辑。

1、 RGB显示最好带有滤镜层。因此,在蓝图上切割一些亚克力板:

2、 由于我使用了一些大型设备/设备(reComputer 和 reRouter),我将使用两块大亚克力板将所有东西固定在一起:因此激光切割是必要的:

机箱设计-3D打印:

这部分是为了让作品看起来好看、整洁、合乎逻辑。

1、我的设备需要得到支持、修复,而不是到处移动。因此,我需要设计一些 3D 零件来固定它们:

出于其他考虑,我修改了初始方案:

整体搭建与封装

整体系统搭建基本思路:

  • 主要计算设备:reComputer,提供MQTT代理,AI计算,运行LLM和浏览器网站。

  • 网络设备(我想确保所有东西都是本地的):reRouter,提供Wi-Fi无线连接和电线连接。

  • 一个带INMP441的语音输入移动模块

  • 一个带有ILI9341的显示信息移动模块。

整体系统:

显示器与电源适配器:

对于显示器而言,为了整体项目可携带的目标,我不得不考虑一个可携带的监视器。我买了一个显示器,具体尺寸如图所示:

显示器后面有四个螺丝孔,然后我测量了螺丝孔到边缘的距离和孔之间的距离:

然后我需要计算显示板的长度,在这里一定要保证不会太长影响美观,也不会太短影响连接:

计算之后,我在OnShape上设计了显示器的附加板:

设计之后通过激光切割获得附加板:

对于电源适配器,我也需要将安装绑在一起:

并且考虑到稳定显示器等问题,我需要在设计上保留每个板上的间隙:

底部:

顶部:

切割电路板并将模块插入其中:

进行拧紧连接:

添加移动模块:

将移动模块移到外面:

至此,一个基于XIAO ESP32C3的本地个人助理已经搭建完成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis——事务

文章目录 Redis 事务Redis 的事务和 MySQL 事务的区别:事务操作MULTIEXECDISCARDWATCHUNWATCHwatch的实现原理 总结 Redis 事务 什么是事务 Redis 的事务和 MySQL 的事务 概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执行 Redis 的事务和 MySQL 事务的区别:…

【Next.js 项目实战系列】07-分配 Issue 给用户

原文链接 CSDN 的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话,给我的库点个star,关注一下吧 上一篇【Next.js 项目实战系列】06-身份验证 分配 Issue 给用户 本节代码链接 Select Button​ # /app/issues/[i…

【Java】正则表达式详解

目录 引言 一、基本概念 1.1 元字符 1.2 预定义字符类 1.3 边界匹配符 1.4 数量标识符 1.5 捕获与非捕获分组 二、Java中的正则表达式支持 三、正则表达式的使用示例 3.1 匹配字符串 3.2 替换字符串 3.3 分割字符串 3.4 使用Pattern和Matcher 3.5 捕获组和后向…

【电商项目】1分布式基础篇

1 项目简介 1.2 项目架构图 1.2.1 项目微服务架构图 1.2.2 微服务划分图 2 分布式基础概念 3 Linux系统环境搭建 查看网络IP和网关 linux网络环境配置 补充P123(修改linux网络设置&开启root密码访问) 设置主机名和hosts映射 主机名解析过程分析&…

金九银十互联网大厂Java高频面试题(2024最新含答案)

2024 年的互联网行业竞争越来越严峻,面试也是越来越难,一直以来我都想整理一套完美的面试宝典,奈何难抽出时间,这套 1200道的 Java 面试手册我整理了整整 1 个月,上传到 Git 上目前 star 数达到了 30K 这套互联网 Jav…

冲击美团!已成功 OC

这是一位训练营学员的美团面经,目前已经 OC 。 在此之前他已经拿到了不少公司的offer,但是都达不到他的预期,美团给的待遇就非常不错,大厂不愧是大厂,就是不知道工作强度如何。 他经历了一共三场面试,一面…

实现省略号查看详情样式

1.期望实现效果 2.目前实现效果 3.实现代码 1.wxml<view class"desc-text"><view class"show-more">查看详情 >></view><!-- <rich-text nodes"{{富文本接口数据内容 }}"></rich-text> --><text&…

python反爬

1.无限debug无法f12 关闭掉 Deactivate Breakpoints

【闲谈程序设计例三则:抛弃传统单步进初级阶段,用推导归纳出来的规律写代码,进入进阶阶段,人类自性的高级活动。】2024-10-21

闲谈程序设计三则&#xff1a;抛弃传统单步进&#xff0c;用推导归纳出来的规律写代码。 本论坛常见新学提问都是一些入门级别的问题&#xff0c;近来AI活跃抢答&#xff0c;然而&#xff0c;对于有些问题AI可以说是答非所问&#xff0c;令人哭笑不得&#xff0c;而AI能回答的…

MacOS安装BurpSuite

文章目录 一、下载地址二、下载注册机三、安装教程四、启动burpsuit五、免责声明 一、下载地址 https://portswigger-cdn.net/burp/releases/download?productpro&version2024.7.1&typeMacOsx二、下载注册机 https://github.com/NepoloHebo/BurpSuite-BurpLoaderKey…

B站协议登录到实现各种功能完整代码(专栏总结)

B站协议登录、点赞、收藏、转发实现及代码 关注、动态转发实现动态抽奖实现及代码 直播预约抽奖实现及代码 本文为本专栏的总结文章 一、扫码登录 请求获取二维码包&#xff0c;得到二维码链接和qrcode_key参数之后&#xff0c;利用qrcode_key循环GET请求登录状态包即可&#x…

【word】页眉横线无法取消

小伙伴们日常想在页眉里加横线&#xff0c;直接双击页眉&#xff0c;然后在页眉横线里选择自己喜欢的横线样式就可以了。 但今天我遇到的这个比较奇特&#xff0c;有些页有这个横线&#xff0c;有些页没有&#xff0c;就很奇怪。 最后排查完&#xff0c;发现是只有标题2的页…

WPF入门_02依赖属性

1、依赖属性主要有以下三个优点 1)依赖属性加入了属性变化通知、限制、验证等功能。这样可以使我们更方便地实现应用,同时大大减少了代码量 2)节约内存:在WinForm中,每个UI控件的属性都赋予了初始值,这样每个相同的控件在内存中都会保存一份初始值。而WPF依赖属性很好地…

《向量数据库指南》揭秘:Mlivus Cloud如何赋能GraphRAG应用

嘿,各位向量数据库和AI领域的探索者们,我是你们的老朋友,大禹智库的向量数据库高级研究员王帅旭,也是《向量数据库指南》的作者。今天,咱们来聊聊一个既前沿又实用的话题——检索增强生成(Retrieval Augmented Generation,简称RAG)及其面临的挑战,特别是如何用Mlivus …

前端/node.js锁定依赖版本、锁定依赖的依赖的版本

一、知识前提 version&#xff1a;必须依赖某个具体的版本。如&#xff1a;vue的3.2.0&#xff0c;表示必须安装3.2.0版本。>version&#xff1a;必须大于某个版本。>version&#xff1a;大于或等于某个版本。<version&#xff1a;必须小于某个版本。<version&…

多线程——单例模式

目录 前言 一、设计模式 二、饿汉模式 三、懒汉模式 1.单线程版 2.多线程版 结尾 前言 前面的几篇文章中介绍了多线程编程的基础知识&#xff0c;在本篇文章开始&#xff0c;就会利用前面的多线程编程知识来编写一些代码案例&#xff0c;从而使大家可以更好的理解运用多…

扩散模型对抗蒸馏:ADD 和 Latent-ADD

扩散模型对抗蒸馏&#xff1a;ADD 和 Latent-ADD ADD&#xff08;Adversarial Diffusion Distillation&#xff09;和 Latent-ADD 是 StabilityAI 公司提出的一系列针对 Stable Diffusion 的扩散模型对抗蒸馏方法&#xff0c;通过对抗训练和蒸馏训练来提高扩散模型的采样速度&…

python基于图片内容识别的微信自动发送信息(对其中逻辑修改一些可以改为自动化回复)

1.内容基于python日常生活问题帮助 2.主要框架 import time from datetime import datetimeimport pyperclip import win32api import win32con import os import refrom Image_Content_Text_Recognition import ICTR from screenshot import img 上面是逻辑部分主要框架 i…

【开源免费】基于SpringBoot+Vue.JS在线视频教育平台(JAVA毕业设计)

本文项目编号 T 027 &#xff0c;文末自助获取源码 \color{red}{T027&#xff0c;文末自助获取源码} T027&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

解析 Vue 模板的本质:从语法糖到渲染过程

大家耳熟能详的表述如下&#xff1a;Vue 模板的本质其实是一种 声明式渲染 的形式&#xff0c;它在开发过程中提供了将组件的结构与逻辑分离的便利。 也就是说&#xff0c;模板 template 的存在只是为了让我们以更直观的方式描述界面的结构&#xff0c;然而在运行时&#xff0…