资料介绍
描述
什么想法?
我的女儿喜欢甜食。她非常爱他们,以至于她愿意做任何事情来得到他们:不吃饭,从秘密藏身处偷他们,只要她得到她的糖剂量,她甚至愿意在这样做时被抓到受到惩罚。
糖会激活大脑的奖赏系统。该系统的激活会导致强烈的奖赏感,从而导致渴望和上瘾。所以药物和糖都会激活大脑中相同的奖励系统,导致多巴胺的释放。
我们全家都使用 Fitbit 健身追踪器,但她的步伐不是那么好。但是,如果我们将她对甜食的渴望与她的实际日常活动同步起来呢?如果我可以让她增加体力活动以获得这些奖励怎么办?我想那没关系,因为一般来说我对甜食没有问题,但我在沙发上发胖的同时吃甜食有问题。:)
因此,检查了他们的 API,发现他们公开了日常活动指标,例如步数、攀爬的楼层数、距离、卡路里等。唯一要做的就是糖果分配器能够根据她的活动水平给她糖果。为了让事情变得更有趣,我决定让整个家庭都参加这次比赛,并让这个分配器具有多用户功能。这打开了一些有趣的家庭挑战的大门,其中涉及含糖奖励。
项目一览
该项目相当简单。如果您熟悉基本概念,那么棘手的部分不是电子设备,而是机械部分。
- 糖果垂直排列在塔状盒子内
- 微控制器 ESP8266 NodeMCU 设置一个 HTTP 服务器监听 LAN 上的连接。
- 可以托管在互联网上的配套网络应用程序,发送和接收 HTTP 消息以分发糖果或获取状态信息。
- 配套应用程序可以有任何逻辑,但我的版本会根据您使用 Fitbit 进行的健身活动为您提供糖果。您可以轻松编写不同的逻辑,因为分配器本身可以使用 Restful API 进行控制。当你在 Facebook 上收到点赞时,比如给你糖果 :) 疯了!
- 如果通过 API 请求糖果,微控制器会指示伺服电机移动,进而使托盘滑动,最终将糖果推出
- 该设备非常基本。附加功能包括灯光和最后播放带有蜂鸣器的愚蠢旋律。
点胶机构
- 因为机器是点胶机,所以只有一个主命令点胶
- 当微控制器接收到点胶指令时,它会利用360度连续伺服来完成这项工作。
- 伺服正在向前推动托盘并可以通过推拉杆将其拉回,
- 托盘在轨道上滑动。您可以轻松地用两根坚硬的金属棒制作轨道。润滑杆以改善滑动并最大程度地减少令人不快的噪音。托盘可以由木头、塑料甚至金属制成。我建议你把托盘做得尽可能薄,但能把糖果移出来,把托盘安装得尽可能靠近地面,最好不要接触地面。由于糖果下落的角度较小,这将有助于防止卡纸。
- 托盘最初位于塔内最底部,所有糖果都在顶部。
- 首先,伺服电机拉回托盘,为下一颗糖果腾出空间,下一颗糖果落在外壳底部,同时托盘缩回,然后托盘向前推动,进而将糖果推到外面。
- 有两个金属传感器,一个在前面,一个在后面,可以判断托盘何时到达最终或初始位置。它们的作用类似于按钮,并使用中断进行处理,以提高安全性和响应能力。
- 如果托盘没有在预期的时间范围内到达目的地(设置为 1 秒),则实施软件卡纸保护以防止损坏
- 对于维护,有前后移动托盘的命令,但如果托盘卡住,您可以用手移动托盘 :)。
笔记:
使用不同类型的电机也可以。我有一个连续伺服,但我想位置伺服甚至步进电机或普通直流电机都可以工作。如果您依靠它们的固定定位精度,您甚至可以放弃初始/最终位置传感器。移除这些的一个问题可能是位置校准和轴位置的手动更改。
你需要把伺服喇叭做得更长;为此,您可以像我一样用螺丝连接 7-8 厘米的胶合板延伸件。控制杆通常在与喇叭连接的一端有一个 Z 形弯头(弯成字母 Z 的形状),另一端有一个 90 度弯头,带有弹簧固定器。我的 Z 弯不太好,因为我使用了非常坚硬的电线并且没有合适的工具,所以我实际上使用了 U 弯,效果很好。这个想法是杆不应该从喇叭中脱出。这是一个很好的补充,可以确保杆移动的孔不会磨损(特别是如果喇叭材料像木头或塑料一样柔软),所以我插入了一个橡胶垫圈。要制作弹簧固定器,您可以使用一些弹性线和一根热缩管。
不要忘记用提供的螺丝将喇叭固定到伺服器上。您可能需要在木质延伸件上钻一个孔,以便将螺丝实际连接到塑料喇叭上。
通电
所有基于 ESP8266 的开发板都有一个内置稳压器,因此您只需连接一根 USB 数据线,它将提供 5V 电压,内置稳压器将为芯片提供 3.3V 电压。请注意,舵机连接到 5V 输入,因为它需要更多功率。所以基本上输入电压为 5 伏,设备在点胶时需要高达 1.5A 的电流。不分配时,WiFi 芯片通常消耗 50 - 300 毫安,每个 LED 消耗 30 毫安。我没有实现省电模式,但在待机状态下,它不应超过 120 毫安。
灯光
任何凉爽的分配器都有一个透明面板,供您检查里面的食物,并配有照明。
我没有在照明方面走得太远,即使你对彩色 LED 发疯了。我只是在前面板使用了两个白色 LED,由一个 NPN 晶体管激活。前面板灯也可用作状态和错误指示器。
当设备连接到 WiFi 时,灯会慢慢淡入和熄灭,直到建立连接,然后灯会亮到更高的强度。我只是使用 PWM 引脚来控制光的强度。
该电路是一个标准的低侧 NPN 开关。
如果您是初学者,请继续阅读
它被称为低侧开关,因为晶体管正在切换接地路径。负载的 VCC 输入直接连接到电源正输出,而负载的地通过连接到集电极引脚的晶体管连接。如果足够的电压和电流施加到晶体管的基极,晶体管就会饱和并从集电极传导到发射极。负载由我们的两个白色 LED 组成,正极(阳极)通过串联电阻连接,以限制电流.为了激活“开关”,我们通过串联电阻向晶体管的基极发送逻辑 1。基极没有电阻的三极管就像没有限流电阻的LED. 电阻器的值及其两端的电压将设置电流。电阻器需要足够大以有效地限制电流,但又要足够小以便为基极提供足够的电流。您可以根据您的晶体管和负载计算该值。例如,我的 NPN3904 的 hFE=100 与 5k 电阻器配合使用可以很好地切换 60mA,因此我使用了一个 4.7K 的电阻器,它应该在 3.3V 和 3.3V 的正向 LED 电压下处理 70mA。我使用了一个非常小的 1.8 欧姆电阻来限制 LED 电流,因为 LED 的正向电压应该相同,并且电压是稳定的。您可以使用此计算器计算基极电阻。而这个用于 LED 电阻器。
安全和糖果防盗保护
为了防止未经授权访问糖果(基本上是为了防止我的女儿偷糖果 :))我使用了一把普通的旧锁。如果你想避免作弊,我认为这个问题不能被忽视 :)
音效
分配过程完成后,我正在使用无源蜂鸣器播放旋律。由于播放旋律通常有延迟,我创建了一个safeDelay
函数以较小的增量(100 毫秒)延迟,让内部 ESP8266 进程更频繁地运行,延迟被认为是一种不好的做法,但旋律是在最后播放的分配过程,所以它不应该影响响应有用命令的能力。
外壳
外壳是用胶合板建造的。前门有一个透明的塑料面板,可以看到里面的食物。
最重要的方面是确定糖果塔的尺寸。我建造了一个巨型 Tic-Tac 盒尺寸的塔。这个方便的塑料盒有一个小活动铰链盖,可以装 M&Ms、Smarties 或类似的小糖果,完全取下盖子后,您可以放入巧克力块,如 Kinder 巧克力棒或任何适合的东西。糖果塔应该与 Tic-Tac 盒子紧密贴合,各个方向的间距只有几毫米。如果空间太多或太少,Tic-tacs 就会卡住,
在外壳上加一个盖子或门是非常有用的,这样你就可以进行维护。维护可以包括润滑导轨。在我的版本中,无法通过打开盖子取出糖果,因此没有必要固定它。
一个很好的补充也是一个电源开关。您可以剪断 USB 电缆并将一个小开关连接到正极。
网络应用
配套网络应用程序是用 PHP/Javascript 编写的。实际上,我将此功能集成到一个更复杂的应用程序中,我正在使用该应用程序将食物记录到 Fitbit 中,并连接到我的 DIY Healtzuilla 体重秤。
作为高级概述,该应用程序使用通过 HTTP 分配的 LAN IP 与分配器通信。如果完成定义的挑战,它使用status
和dispense
端点提供糖果。为了检查挑战是否完成以及如何完成,它使用 OAuth2 身份验证连接到 Fitbit Web API 并检索每日统计数据。它会跟踪已经分配(吃掉)的糖果,如果您赢得了新糖果,它会为您提供新糖果。它为不同的用户保留单独的统计信息。
从这个更大的代码库中提取与 Dulciurilla 相关的 PHP 源代码会有点困难,但如果有足够的请求,我可以做一些努力。
使用 jquery 的分配器的 ES6 Javascript 类示例:
class DispenserApi {
constructor(baseUrl) {
this.baseUrl = baseUrl;
}
executeCall(endpoint, method = 'GET', body = null) {
return $.ajax({
type: method,
url: this.baseUrl + endpoint,
dataType: 'json',
data: body
}).fail(function (jqXHR, textStatus, errorThrown) {
console.log('Request failed: ' + jqXHR.status);
});
}
getStatus() {
return this.executeCall('dispenser/status');
}
dispense() {
return this.executeCall('dispenser/dispense', 'POST');
}
}
它可以像这样实例化和使用:
// replace with your dispenser IP
var dispenser = new DispenserApi('http://192.168.0.152/api/');
dispenser.dispense().done(function (dispenseData) {
console.log("Success");
}).fail(function (jqXHR, textStatus, errorThrown) {
console.log("Failed");
});
宁静 API 参考
RESTful HTTP API 可在 获得http:///api/
。所有响应都是 json 格式。
成功的 POST/PATCH 操作返回 HTTP 状态代码 200 和如下所示的 JSON:
{"success": true}
失败的请求返回一个非 200 的 HTTP 状态代码和一个带有两个键的 JSON 对象:
- 错误:bool (始终为真)
- 消息:字符串(可选)
例子:
{"error": "true", "message": "Something went wrong"}
以下所有路径均与秤 IP 地址相关。
分配器API
要求分发糖果
POST /api/dispenser/dispense
获取设备状态
GET /api/dispenser/status
设备可能处于以下状态之一:
- 正在初始化(代码 0)-尚未准备好命令
- 空闲(代码 1)-准备好执行命令
- 点胶(代码 2)-在点胶过程中,此时无法处理新命令
- 错误(代码 3)- 如果托盘卡住,WiFi 未连接。无法处理任何命令。
示例响应:
{"statusCode": 2, "statusText": "Dispensing"}
维护API
向前移动托盘
POST /api/dispenser/maintenance/tray/move-forward
向后移动托盘
POST /api/dispenser/maintenance/tray/move-backwards
获取托盘状态
GET /api/dispenser/maintenance/tray/status
托盘可以处于以下状态之一:
- 已停止(代码 0)
- 向后移动(代码 1)
- 前进(代码 2)
示例响应:
{"status": 1, "statusText": "向后移动", "operationTime": 360}
- 自动洗手分配器开源设计
- 智能洗衣液分配器开源分享
- RFID药丸分配器开源
- 自动酒精分配器开源分享
- 自动洗手分配器开源分享
- arduino廉价肥皂分配器
- 点心分配器开源分享
- PocketBeagle药物分配器开源分享
- 多功能步进电动机环形分配器 10次下载
- OmateHDDVI高清视频分配器 0次下载
- 使用tcl文件分配器件与管脚 0次下载
- 五路色差视音频放大分配器
- 可调谐光功率分配器应用及技术
- 微带功率分配器设计方法
- 译码器 数据分配器
- 液压分配器起什么作用的 417次阅读
- Linux内核内存管理之slab分配器 903次阅读
- Linux内核内存管理之ZONE内存分配器 736次阅读
- 如何制作低成本但全自动的洗手液分配器电路 1348次阅读
- 功率分配器的作用及技术指标 1377次阅读
- Linux内核之块分配器 1469次阅读
- Linux内核之伙伴分配器 1599次阅读
- bootmem分配器使用的数据结构 1340次阅读
- 自制一个洗手液分配器 1685次阅读
- 深入剖析SLUB分配器和SLAB分配器的区别 1008次阅读
- linux内存管理中的SLAB分配器详解 2086次阅读
- 分配器点涂技术的特点及方法介绍 4667次阅读
- 功率分配器或合成器选择的关键性能参数研究 2174次阅读
- 基于DMA控制器的软件环形脉冲分配器设计 4319次阅读
- 功分器、分支器和分配器的区别 1.8w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多