创客项目秀|基于XIAO ESP32S3 sense 的小型相机

news/2024/7/3 13:52:21 标签: 单片机, stm32, 嵌入式硬件

在这个科技飞速发展的时代,DIY(Do It Yourself)文化正成为连接创新与日常生活的桥梁,今天小编给大家带来了来自麻省理工学院的Arnov Sharma 的基于XIAO ESP32S3 sense的小型相机项目,该相机拥有一个圆形的触摸屏幕可以显示画面,手持拍摄并将拍摄的照片存储在SD 卡上。

图片

项目简介

在这个项目中,我们将探索如何使用ESP32-CAM(也称为ESPCAM-XIAO)来创建一个功能强大的DIY摄像头。ESPCAM-XIAO是一个带有集成摄像头模块的ESP32开发板,它具有WiFi功能,非常适合用于创建智能家居项目。

06_36NLMYNAoh

材料清单

  • ESP32S3 sense开发板

  • XIAO 的圆形屏幕模块

  • SD卡

  • 3.7V,50mAh锂电池

  • 3D打印零件 

XIAO 的圆形屏幕模块

,时长00:05

对于这个项目,我们使用的是 XIAO 的 Seeed Studio 圆形显示器。

Seeed Studio Round Display for XIAO是一款带有电容式触摸屏的扩展板,与所有XIAO开发板兼容。它的一侧具有完全覆盖的触摸屏,设计为半径为 39 毫米的辐射盘。

该板采用 1.28 英寸圆形触摸屏,分辨率为 240 x 240 像素,颜色为 65K,呈现清晰多彩的图像展览。可用于设计可编程手表、可穿戴指示器等。

XIAO 扩展板另一侧的高集成度和丰富的外设令人印象深刻,板载 RTC、TF 卡插槽、电池充电芯片和 JST 1.25 电池接口,所有这些都在紧凑的 39 x 39mm 尺寸内。也就是说,您可以拥有可靠的计时功能,一种将内存扩展到 32GB FAT 的方法,这是一种通过锂电池充电的方法。

Seeed Studio XIAO的引脚全部引出,无需焊接,提供便捷的开发体验。XIAO 扩展板具有迷你尺寸,是可穿戴和小批量项目的理想选择。它是一款多功能且功能强大的扩展板,可用于各种项目,从显示传感器数据到创建交互式界面。

至于设置这个圆形显示器,我们必须使用TFT_eSPI库。

我们需要编辑用户设置并修改 文件并取消注释以下行。User_Setup_Select.h

#include <User_Setups/Setup66_Seeed_XIAO_RoundDisplay.h>

查看此显示的 wiki 以获取更多简要详细信息。

https://wiki.seeedstudio.com/get_start_round_display/

XIAO ESP32 S3 sense

图片

Seeed Studio XIAO 系列是一款微型开发板,具有拇指大小的尺寸和类似的硬件设计。

我们使用的是 XIAO ESP32 S3 Sense 开发板,它集成了摄像头传感器、数字麦克风和 SD 卡支持。该开发板结合了嵌入式 ML 计算能力和摄影功能,可以成为开始使用智能语音和视觉 AI 的绝佳工具。

在这里,XIAO 使用了ESP32S3 32 位双核 Xtensa 处理器芯片,运行频率高达 240 MHz。

此外,还有一个可拆卸的 OV2640 摄像头传感器,分辨率为 1600x1200,它与 OV5640 摄像头传感器兼容,并包括一个额外的数字麦克风。

板载锂电池充电管理设置支持四种功耗模式,包括功耗低至 14 μA 的深度睡眠模式。

这里有一个关于XIAO董事会的简短维基文档,以及许多你可以从这里查看的产品,以获得深入的细节。

https://wiki.seeedstudio.com/xiao_esp32s3_getting_started/

硬件准备

,时长00:07

XIAO EPS32S3 Sense设计有三个上拉电阻(R4~R6)连接到SD卡插槽,圆形显示屏也有上拉电阻;

这里的问题是,当同时使用SD卡时,无法读取SD卡。为了解决这个问题,我们需要切断 XIAO ESP32S3 Sense 扩展板上的 J3。

图片

断开 J3 连接后,XIAO ESP32S3 Sense 上的 SD 卡插槽将无法正常工作,因此您需要将 microSD 卡插入圆形显示屏上的 SD 卡插槽中。

上传代码

在对XIAO的相机板进行修改后,我们接下来将下面的代码上传到XIAO板上


#include <EEPROM.h>
#include <Arduino.h>
#include <TFT_eSPI.h>
#include <SPI.h>
#include "esp_camera.h"
#include "FS.h"
#include "SD.h"
#include "SPI.h"

#define CAMERA_MODEL_XIAO_ESP32S3 // Has PSRAM
#define TOUCH_INT D7

#include "camera_pins.h"

// Width and height of round display
const int camera_width = 240;
const int camera_height = 240;

// File Counter
int imageCount = 1;
bool camera_sign = false;          // Check camera status
bool sd_sign = false;              // Check sd status

TFT_eSPI tft = TFT_eSPI();

// SD card write file
void writeFile(fs::FS &fs, const char * path, uint8_t * data, size_t len){
    Serial.printf("Writing file: %s\n", path);

    File file = fs.open(path, FILE_WRITE);
    if(!file){
        Serial.println("Failed to open file for writing");
        return;
    }
    if(file.write(data, len) == len){
        Serial.println("File written");
    } else {
        Serial.println("Write failed");
    }
    file.close();
}

此代码用于 ESP32 微控制器的相机模块捕获图像,将其显示在 TFT 显示器上,并将其保存到 SD 卡中。提供的函数 ,处理将捕获的图像数据写入 SD 卡上的文件的过程,确保文件操作得到正确管理,并通过串行监视器提供反馈。

xiao相机

要使此代码正常工作,您首先需要下载提供的“camera_pins.h”和“camera_index.h”文件,并将它们放入与主草图相同的文件夹中。此外,请确保安装 TFT_eSPI.h 并将其配置为与 XIAO ROUND DISPLAY 一起使用。

项目电源

该项目的电源是超小型 3.7V 50mAh LiPo Cell,可为 XIAO Round 显示屏和 XIAO ESP32 Sense 供电。

图片

我们能够通过采用微小的锂聚合物电池来创建更紧凑的设计。

但是,由于我们使用的 LiPo 电池的容量为 50 mAh,因此我们获得的备份仅够工作 10-15 分钟,但这可以通过添加 100 mAh 或 200 mAh 电池来增加。

  • 为了与 XIAO 一起使用,我们添加了一个小型 JST 连接器,其中包含 PCM 上提供的 LiPo 电池的正负极子。

  • JST 连接器允许我们将 LiPo 电池直接连接到圆形屏幕的电池端口。

  • 然后我们把XIAO板放回去,电子组装就完成了。

外观设计

对于外壳,我们在Fusion 360中创建了一个连接到XIAO的圆形显示器模型,然后在其周围构建了一个外壳。

,时长00:08

这个想法是创建一个圆柱形的外壳,该外壳分为两部分:一部分用于将屏幕固定到位,另一部分用作盖子。

我们在两个部件周围都增加了抓地力,使部件易于握持。

在封面上,我们出于美学目的对相机图标进行了建模,使设计看起来很有吸引力。

完成模型后,我们将每个零件导出为网格文件,并使用透明PLA3D打印背面,使用白色Marbel PLA打印前盖。

19_OfyKlfH5PK

结论

这是这个小构建的结果:一个由 ESP32 微控制器驱动的工作傻瓜相机。要打开相机,请打开圆形显示屏上的 SMD 滑动开关。通过点击屏幕,我们可以将图像保存到SD卡。总的来说,这个项目是成功的。

---end---


http://www.niftyadmin.cn/n/5534610.html

相关文章

uni-app与原生插件混合开发调试3-安卓原生插件开发调试和打包

安卓原生插件开发调试和打包 上面已经介绍了怎么安装开发和调试环境&#xff0c;接下来就是安卓原生插件的具体开发和调试步骤&#xff1a; 将uniapp前端项目的index.vue文件新增代码。代码如图所示&#xff1a; <template><view><view><text>{{titl…

【问题记录】Ubuntu提示: “E: 软件包 gcc 没有可安装候选“

Ubuntu提示: "E: 软件包 gcc 没有可安装候选" 一&#xff0c;问题现象二&#xff0c;问题原因&解决方法 一&#xff0c;问题现象 在虚拟机Ubuntu中进行安装gcc命令时报错&#xff1a;“E: 软件包 gcc 没有可安装候选”: 二&#xff0c;问题原因&解决方法 …

计算机组成原理笔记-第4章 存储器

第4章 存储器 笔记PDF版本已上传至Github个人仓库&#xff1a;CourseNotes&#xff0c;欢迎fork和star&#xff0c;拥抱开源&#xff0c;一起完善。 该笔记是最初是没打算发网上的&#xff0c;所以很多地方都为了自我阅读方便&#xff0c;我理解了的地方就少有解释&#xff1b…

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装&#xff0c;可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 &#xff08;1&#xff09;通过position属性,可以控制下拉选项的位置 &am…

Python中文自然语言处理(NLP)中文分词工具库之pkuseg使用详解

概要 在中文自然语言处理(NLP)中,分词是一个基础且关键的任务。pkuseg 是由北京大学开发的一个中文分词工具,专为处理现代汉语而设计。它采用了先进的深度学习技术,能够准确地进行中文分词,同时支持自定义词典和多领域分词。本文将详细介绍 pkuseg 库,包括其安装方法、…

Spring Boot 快速入门2 ——SpringBoot运行原理分析

一、SpringBoot运行原理 父依赖 我们再查看 Spring Boot 项目中 pom.xml 可以看出&#xff0c;所有的 Spring Boot 项目 直接或间接的 依赖于一个 父项目 spring-boot-starter-parent &#xff0c;主要是管理项目的资源及其插件。 <parent><groupId>org.sprin…

【Android WebView】WebView基础

一、简介 WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内核&#xff0c;4.4后直接使用了Chrome。 二、重要类 以WebView类为基础&#xff0c;WebSettings、WebViewClient、WebChromeClient为辅助共同完成安卓段加…

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维&#xff0c;在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现&#xff1a;坐标校正&#xff0c;我们如何使漫无目的鼠标点击变得有序化和可控化呢&#xff1f; 目录 一、从鼠标监听到获取坐标 1.MouseListener和Mouse…