创客项目秀|基于XIAO的实用艺术装置Cumin Lander

今天小编给大家带来的是来自旧金山的Maker Mohit Bhoite的Cumin Lander项目,该项目是一个精致的电子搭棚艺术装置,外形模仿火星着陆器的造型,可显示时间、温度、湿度和气压情况。

图片

材料清单

硬件

  • Seeed XIAO BLE nRF52840 Sense

  • Bosch BME280 传感器

  • OLED 128x32 显示屏

  • 14250锂离子电池

  • 硬铜线

  • 14毫米黄铜圆盘

          

软件

Arduino IDE

制作背景

之前刚完成了BLE卫星模型的制作,希望使用该系列开发板可以制作更多类似的项目,该系列开发板尺寸非常小,并且内置稳压器和电池充放电功能。在这个项目中我打算使用更简单的单色128x32 OLED显示器模块,只需要3.3V的电压就可以工作。   

电路原理示意图

图片

OLED模块和BME280传感器并联于Xiao的I2C总线。您不需要外部上拉电阻器,因为这些电阻器内置于显示模块中。蜂鸣器直接连接到 PWMable 的 D0 引脚。理想情况下,您希望通过晶体管驱动蜂鸣器,而不是直接将其连接到GPIO,但我很懒。LED 通过 220 欧姆电阻器连接到 D6。在实际的着陆器上,我使用了 0805 超亮 LED。我在 D1(启用其内部上拉电阻)和 GND 之间添加了一个可选按钮。固件当前不使用它。我非常喜欢 Xiao 的一个功能是集成的单节锂离子/锂聚合物电池充电器,底部带有可触及的焊盘。我通过 SPST 电源开关将 14250 锂离子电池连接到这些焊盘上。每当 Xiao 通过 USB 插入时,电池会自动充电。

显示器

图片

单色OLED模块有各种尺寸和配置可供选择。我选择了广泛使用的 0.91 英寸 128×32 像素型号,它基于 SSD1306 控制器。它通过 I2C 进行通信,工作电压为 3.3V。对于Arduino平台,有大量与这些模块兼容的固件库。我正在使用 Adafruit 开发的SSD1306显示库

          

传感器    

图片

这款是用于测量温度、湿度和压力的 BME280 传感器。该传感器有许多廉价的分线板,它们通常具有用于 I2C 线路的板载上拉电阻器。我不小心订购了配置为使用 SPI 而不是 I2C 的那些,所以我不得不通过焊接跳线来修改设置。因此,订购时要注意这一点。

          

电池

图片

该项目主要由单个 3.7V 300mAh 14250 大小(有时称为 1/2 AAA)锂离子电池供电。Xiao BLE内置锂离子电池充电器,因此电池直接连接到背面的BAT+引脚。只需通过 USB 为 Xiao 供电即可为电池充电。

这些电池上也没有任何保护电路,这意味着如果发生意外短路,将导致热失控。如果您对使用这些电池感到不舒服,只需使用 USB 供电或使用带有内置保护的折叠式 LiPo 电池。

固件

可以在项目的 GitHub 页面上找到此项目的完整源代码。

https://github.com/mohitbhoite/cumin-lander/

启动后,着陆器初始化 GPIO、BLE 无线电、显示器和传感器。之后,它会播放一点旋律。接下来,它通过 I2C 从 BME280 传感器获取温度、湿度和压力数据,并将其与当前时间一起显示到 OLED 上。它将在循环中每秒执行一次此操作。

我添加了一个无线功能,可让您通过蓝牙设置时间。您可以通过使用 Adafruit 的 Bluefruit Connect 应用程序连接到着陆器来做到这一点。您可以通过其 UART 实用程序发送时间字符串来设置时间。例如,如果要将时间设置为晚上 7:45:33,则可以发送194533。时间以 12 小时格式显示,但为了简单起见,您以 24 小时格式发送时间。   

图片

您可以添加更多内容来使着陆器变得更好,例如使用按钮更改其模式或通过无线连接设置闹钟,然后可以播放曲调。我会让你决定接下来要添加什么!

在此处的 Seeed Studio 网站上了解如何设置 Arduino IDE 以与 XIAO 配合使用。

搭棚电路制作

我在面包板上测试并最终确定了电路。我最初使用的是 SHT31 传感器,但后来改用了 BME280,它可以测量温度、湿度和压力。OLED和传感器通过I2C通信,工作电压为3.3V,这使得与Xiao的连接非常简单。

图片

我在 Eagle 中设计了一个可打印的模板,以帮助指导框架和实际电路的焊接。像我的大多数雕塑一样,整个框架都连接到GND,这使得路由电源变得非常容易。   

图片

早期的原型是由20AWG铜线制成的。后来我决定使用黄铜。

图片

在添加其余部分之前测试OLED和传感器。   

图片

图片

腿的结构与我之前的Boron Lander相同。 着陆垫是我在 etsy 商店购买的 14 毫米小黄铜圆盘。您也可以通过用 0.5 毫米厚的黄铜或铜板冲孔圆盘 来制作自己的圆盘。请记住在构建的最后焊接焊盘。如果你一开始就这样做,你最终可能会得到一个摇摇晃晃的雕塑!

在制作过程中忘记拍摄静态图像,这里有一个视频可以展示。

,时长01:02

---end---

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/* 抽象的建造者:做外卖 */ public interface Bake { /** * 准备烤箱 */ void oven(); /** * 放入烤箱 */ void thePot(); /** * 撒孜然粉 */ void cumin(); /** * 裹上辣椒面 */ void chiliPowder(); } BakeBuilder.java: /* 具体的建造者 */ public class BakeBuilder implements Bake { @Override public void oven() { System.out.println("准备烤箱"); } @Override public void thePot() { System.out.println("将外卖放入烤箱中"); } @Override public void cumin() { System.out.println("撒孜然粉"); } @Override public void chiliPowder() { System.out.println("裹上辣椒面"); } } BakeDirector.java: /* 指挥者 */ public class BakeDirector { private BakeBuilder bakeBuilder; public BakeDirector(BakeBuilder bakeBuilder) { this.bakeBuilder = bakeBuilder; } public void create() { bakeBuilder.oven(); bakeBuilder.thePot(); bakeBuilder.cumin(); bakeBuilder.chiliPowder(); } } Fired.java: /* 抽象的建造者:炸外卖 */ public interface Fired { /** * 烧油 */ void heating(); /** * 下锅 */ void thePot(); /** * 放盐 */ void salt(); /** * 出锅 */ void outPot(); } FiredBuilder.java: /* 具体的建造者 */ public class FiredBuilder implements Fired { /** * 烧油 */ @Override public void heating() { System.out.println("将油烧开"); } /** * 下锅 */ @Override public void thePot() { System.out.println("将外卖放入油锅中油炸"); } /** * 撒盐 */ @Override public void salt() { System.out.println("撒盐"); } /** * 出锅 */ @Override public void outPot() { System.out.println("炸熟后将外卖从油锅中取出"); } } FiredDirector.java: /* 指挥者 */ public class FiredDirector { private FiredBuilder firedBuilder; public FiredDirector(FiredBuilder firedBuilder) { this.firedBuilder = firedBuilder; } public void create() { firedBuilder.heating(); firedBuilder.thePot(); firedBuilder.salt(); firedBuilder.outPot(); } }为什么要用建造者模式
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值