0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于XIAO SAMD21开发板的多功能笔筒设计方案

柴火创客空间 来源:柴火创客空间 2024-09-06 10:07 次阅读

今天小编给大家带来的是来自国外的Maker Arnov Sharma的多功能笔筒项目,这个多功能笔筒项目是使用3D打印零件进行搭建的,在笔筒的前端添加了XIAO扩展板,给这个笔筒添加一个显示器,可以在显示器上显示许多内容,例如两个眼睛,文本等等,这些使得这个笔筒更加有趣。

材料清单

硬件

XIAO扩展板

XIAO SAMD21 M0 微控制器

3D打印零件

3.7V,1200mAh锂电池

控制开关

M2螺丝

项目核心:

本项目的核心是使用Seeed Studio制造的XIAO扩展板并搭配XIAO SAMD21 M0开发板。它拥有丰富的外围设备,包括OLED显示器、RTC实时时钟SD卡插槽、被动蜂鸣器、复位/用户按钮、5V伺服连接器以及Grove连接器,可以将多个Grove设备与XIAO配对使用。我们将使用Li-ion 18650电池为整个设备供电

扩展板上集成了OLED显示器,可以用来显示眼睛以及一些文字,给笔筒带来更丰富的功能。

外观设计

这个项目的模型一共由四个部分组成:前置支架部分,设计用于容纳小物品如USB驱动器、硬币等。上盖部分覆盖锂电池并将摇杆开关固定在其位置。最后,一个带有作者特色的标有项目标题“OverEngineered”的名牌位于支架的左侧。

使用三个M2螺丝将上盖安装在支架部分中的螺柱上。使用位于支架部分正面的四个螺柱对XIAO扩展板进行安装。这些螺柱允许XIAO扩展板略微突出于前面板之外,保持前面板和板的底部之间的小间隙。

在Fusion 360中创建模型后,我们导出网格文件,以便进行3D打印。

我们使用了透明PLA打印支架部分,橙色PLA打印上盖部分,而PLA则用于打印前置支架部分。为了在名牌上打印字母,我们先打印出白色PLA基板,然后在打印中间切换至橙色PLA。

主体安装

在组装机身的过程中,将摇杆开关安装在上盖部分是第一步。

接下来,我们向摇杆开关的NC端口焊接了第二根电线,并将锂电池的负极连接到开关的NO端口。开关的NC端将连接到扩展板锂电池连接器的负极端。

然后将前置支架部分放置在支架部分的前面板上,并使用四个M2螺丝将其固定在原位。

将锂电池插入支架部分,然后将上盖部分放在其顶部。使用三个M2螺丝将两个部分紧固在一起。

电路图

wKgaombaY_yAPbm7AADNNXPj61s563.png    

扩展版安装

现在我们将扩展板与笔筒3D打印件进行配对。

首先,我们将扩展板的电池端口连接到锂离子电池

我们用电烙铁将锂离子电池的正极和负极连接到扩展板的电池端口上。

将XIAO扩展板固定在机箱正面,用4颗M2螺钉将电路版与支架固定在一起。

最后,我们用4颗M2螺钉将铭牌固定在合适的位置。

组装完成!

程序代码

在首次测试设置,我们添加了一个基于简单动画的程序,这个程序是通过向CHAT GPT输入以下内容生成的:“编写一个程序,瞳孔会扩大,两只眼睛变得可见。在此草图中,使用Adafruit的SSD1306库来控制SSD1306显示屏。“

Chatgpt生成的代码效果十分出色,具体代码内容如下:


#include
#include
#include




          
#define SCREEN_WIDTH 128  // OLED display width, in pixels          
#define SCREEN_HEIGHT 64  // OLED display height, in pixels          




          
// Declaration for SSD1306 display connected using I2C          
#define OLED_RESET    -1  // Reset pin # (or -1 if sharing Arduino reset pin)          
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);          




          
// Define eye parameters          
const int eyeCenterX1 = 40; // X position for left eye          
const int eyeCenterX2 = 88; // X position for right eye          
const int eyeCenterY = 32;  // Y position for both eyes          
const int eyeRadius = 20;   // Radius of the eye          
const int minPupilRadius = 5;   // Minimum radius of the pupil          
const int maxPupilRadius = 10;  // Maximum radius of the pupil          
const int animationSpeed = 10;  // Speed of the animation          




          
void setup() {          
  // Initialize the display          
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {          
    Serial.println(F("SSD1306 allocation failed"));          
    for(;;); // Don't proceed, loop forever          
  }          
  display.display();          
  delay(2000); // Pause for 2 seconds          




          
  // Clear the buffer          
  display.clearDisplay();          
}          




          
void loop() {          
  for (int i = minPupilRadius; i <= maxPupilRadius; i++) {          
    drawCatEyes(i);          
    delay(animationSpeed);          
  }          
  for (int i = maxPupilRadius; i >= minPupilRadius; i--) {          
    drawCatEyes(i);          
    delay(animationSpeed);          
  }          
}          




          
// Function to draw the cat eyes with dilating pupils          
void drawCatEyes(int pupilRadius) {          
  display.clearDisplay();          




          
  // Draw left eye          
  display.drawCircle(eyeCenterX1, eyeCenterY, eyeRadius, SSD1306_WHITE);  // Eye outline          
  display.fillCircle(eyeCenterX1, eyeCenterY, pupilRadius, SSD1306_WHITE); // Pupil          




          
  // Draw right eye          
  display.drawCircle(eyeCenterX2, eyeCenterY, eyeRadius, SSD1306_WHITE);  // Eye outline          
  display.fillCircle(eyeCenterX2, eyeCenterY, pupilRadius, SSD1306_WHITE); // Pupil          




          
  display.display();          
}
  
 

这段代码将在OLED显示屏上模拟瞳孔扩大的效果,使猫眼动画变得更加逼真。如果需要,可以调整眼睛中心坐标(eyeCenterX1、eyeCenterX2和eyeCenterY)以及半径(radius)参数,以使其适合显示屏。

文本显示程序:

在最后面,我们测试了”文本显示“的程序。

我们首先从ChatGPT生成了一堆巧妙的“带屏幕的电子笔筒”的文本。

然后,我们选择了其中的几个,例如“I hold pens and your secrets.””We are going digital, so hold onto your pencils!”、“Shhh!”等等。对于SSD1306显示屏,我们创建了一个基本的文本显示程序,并将所有引语输入其中,使每个文本间隔两秒出现。

具体代码如下:


#include
#include
#include




          
#define OLED_WIDTH 128          
#define OLED_HEIGHT 64          




          
#define OLED_ADDR   0x3C          




          
Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT);          




          
void setup() {          
  display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);          
  display.clearDisplay();          
}          




          
void loop() {          
  display.clearDisplay();          
  display.setTextSize(1);          
  display.setTextColor(WHITE);          
  display.setCursor(0, 20);          
  display.println("I hold pens and your secrets. Shhh!");   //QUOTE01          
  display.display();          
  delay(2000);          




          
  display.clearDisplay();          
  display.setTextSize(1);          
  display.setTextColor(WHITE);          
  display.setCursor(0, 20);          
  display.println("Hold onto your pens, we are going digital!");  //QUOTE02          
  display.display();          
  delay(2000);          




          
  display.clearDisplay();          
  display.setTextSize(1);          
  display.setTextColor(WHITE);          
  display.setCursor(0, 20);          
  display.println("Penning down ideas, one byte at a time!"); //QUOTE03          
  display.display();          
  delay(2000);          




          
  display.clearDisplay();          
  display.setTextSize(1);          
  display.setTextColor(WHITE);          
  display.setCursor(0, 20);          
  display.println("Who needs a diary when you have a pen holder with a screen?!"); //QUOTE04          
  display.display();          
delay(2000);
          
}
 

总结

最终结果是一个可编程显示屏的笔筒,对于管理笔和其他物品非常有帮助。

由于有显示屏,这里可以尝试无数不同的概念。为了显示时间,我们可以在XIAO上添加一个Internet Watch Sketch。或者,我们可以添加一个使用SD卡、显示屏和蜂鸣器的旋律播放器Sketch。最后,我们可以在XIAO上添加类似Flappy Bird的游戏,可以使用内置按钮进行游戏。

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

    关注

    48

    文章

    7325

    浏览量

    150044
  • 显示器
    +关注

    关注

    21

    文章

    4858

    浏览量

    139334
  • 扩展板
    +关注

    关注

    0

    文章

    50

    浏览量

    11336

原文标题:创客项目秀|基于XIAO SAMD21的多功能笔筒

文章出处:【微信号:ChaiHuoMakerSpace,微信公众号:柴火创客空间】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    爱特梅尔Atmel - ATWINC1500-XSTK 开发板资料

    `爱特梅尔ATWINC1500-XSTK 开发板资料感谢 爱特梅尔 提供大赛用开发板数据下载The Atmel® ATWINC1500-XSTK Xplained Pro starter kit
    发表于 05-04 14:55

    【Atmel WINC1500-XSTK申请】【Atmel WINC1500-XSTK试用体验】+农业大棚数据采集

    提供了光照、温度传感器、WiFi模块。项目描述:设计原理:以SAMD21 XplainedPro作为主控,采集温度、湿度、光照、土壤湿度等数据。SAMD21 与ATWINC1500 通信将采集到
    发表于 06-30 17:44

    多功能开发板

    本帖最后由 lee_st 于 2018-6-15 00:33 编辑 多功能开发板
    发表于 06-13 23:34

    【Seeeduino XIAO申请】多功能智能灯

    项目名称:多功能智能灯试用计划:申请理由本人在曾学习过多种单片机, 如使STM32,STC,MSP,esp8266,arduino等,有丰富的测试经验今天看见Seeeduino XIAO搞活动,内心非常激动,想申请来做个小玩意。感谢平台!!!
    发表于 06-08 18:47

    汽车多功能控制开关的设计方案参考

    汽车多功能控制开关的设计方案参考 中心议题: 传统搭铁制控开关存不足 多功能电子控制开关结构及性能 解决方案
    发表于 03-24 09:58 921次阅读

    基于FPGA开发板多功能液晶显示控制器设计与实现

    本文就提出了一个基于FPGA的多功能LCD显示器设计方案,只需要通过端口的使能参数配置便可以驱动LCD1602模块显示字符、LCD12864模块实现字符或图形的实时显示,并在FPGA开发板上进行该设
    发表于 01-10 13:47 2639次阅读
    基于FPGA<b class='flag-5'>开发板</b>的<b class='flag-5'>多功能</b>液晶显示控制器设计与实现

    STM32多功能遥控器开发板原理图

    STM32多功能遥控器开发板原理图。
    发表于 05-10 14:24 0次下载

    HL开发板多功能按键识别学习程序

    HL开发板【实验12】多功能按键识别,单片机学习程序,很好的学习资料。
    发表于 09-01 15:57 4次下载
    HL<b class='flag-5'>开发板</b><b class='flag-5'>多功能</b>按键识别学习程序

    dfrobotARDUINO MKR GSM 1400物联网开发板简介

    基于Atmel SAMD21和SARAU201 GSM模块的物联网开发板,能将Arduino Zero的功能和全球GSM连接的功能完美结合。
    的头像 发表于 01-07 14:07 1591次阅读
    dfrobotARDUINO MKR GSM 1400物联网<b class='flag-5'>开发板</b>简介

    单片机开发板电路原理图设计方案免费下载

    单片机开发板电路原理图设计方案免费下载
    发表于 12-14 15:18 42次下载
    单片机<b class='flag-5'>开发板</b>电路原理图<b class='flag-5'>设计方案</b>免费下载

    Seeeduino XIAO开发板电路原理图免费下载

    本文档的主要内容详细介绍的是Seeeduino XIAO开发板电路原理图免费下载。
    发表于 12-25 08:00 44次下载
    Seeeduino <b class='flag-5'>XIAO</b><b class='flag-5'>开发板</b>电路原理图免费下载

    如何将Seeed开发板添加到Arduino IDE?轻松四步,帮你搞定!

    Seeeduino Cortex M0 请注意: 上面提到的开发板是AT SAMD21微控制器系列。请将以下网站复制到一下步骤2中的Additional Board Manager的URLs。 https
    的头像 发表于 12-28 22:50 1840次阅读

    使用XIAO开发板驱动圆形显示屏教程

    智能可穿戴设备在日常生活中已经随处可见,小巧的屏幕加上强大的功能极大的丰富了我们的生活,作为一名合格的创客你是否想拥有属于自己的个性化可穿戴设备,今天给大家带来柴火母公司 Seeed Studio 的一篇使用XIAO开发板驱动圆
    的头像 发表于 03-28 10:36 1079次阅读

    使用SAMD21 ML评估套件进行手势识别

    电子发烧友网站提供《使用SAMD21 ML评估套件进行手势识别.zip》资料免费下载
    发表于 06-15 10:32 0次下载
    使用<b class='flag-5'>SAMD21</b> ML评估套件进行手势识别

    基于XIAO SAMD21开发板的数字键盘制作方案

    今天小编给大家带来了来自印度的Arnov Sharma 制作的基于XIAO SAMD21的数字键盘项目,该项目可以通过按键在电脑和OLED的屏幕上输入0-9的阿拉伯数字,可以当作一个数字副键盘来使用。
    的头像 发表于 09-06 10:02 148次阅读
    基于<b class='flag-5'>XIAO</b> <b class='flag-5'>SAMD21</b><b class='flag-5'>开发板</b>的数字键盘制作<b class='flag-5'>方案</b>