我的女儿喜欢甜食。她非常爱他们,以至于她愿意做任何事情来得到他们:不吃饭,从秘密藏身处偷他们,只要她得到她的糖剂量,她甚至愿意在这样做时被抓到受到惩罚。
糖会激活大脑的奖赏系统。该系统的激活会导致强烈的奖赏感,从而导致渴望和上瘾。所以药物和糖都会激活大脑中相同的奖励系统,导致多巴胺的释放。
我们全家都使用 Fitbit 健身追踪器,但她的步伐不是那么好。但是,如果我们将她对甜食的渴望与她的实际日常活动同步起来呢?如果我可以让她增加体力活动以获得这些奖励怎么办?我想那没关系,因为一般来说我对甜食没有问题,但我在沙发上发胖的同时吃甜食有问题。:)
因此,检查了他们的 API,发现他们公开了日常活动指标,例如步数、攀爬的楼层数、距离、卡路里等。唯一要做的就是糖果分配器能够根据她的活动水平给她糖果。为了让事情变得更有趣,我决定让整个家庭都参加这次比赛,并让这个分配器具有多用户功能。这打开了一些有趣的家庭挑战的大门,其中涉及含糖奖励。
该项目相当简单。如果您熟悉基本概念,那么棘手的部分不是电子设备,而是机械部分。
笔记:
使用不同类型的电机也可以。我有一个连续伺服,但我想位置伺服甚至步进电机或普通直流电机都可以工作。如果您依靠它们的固定定位精度,您甚至可以放弃初始/最终位置传感器。移除这些的一个问题可能是位置校准和轴位置的手动更改。
你需要把伺服喇叭做得更长;为此,您可以像我一样用螺丝连接 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");
});
RESTful HTTP API 可在 获得http:///api/
。所有响应都是 json 格式。
成功的 POST/PATCH 操作返回 HTTP 状态代码 200 和如下所示的 JSON:
{"success": true}
失败的请求返回一个非 200 的 HTTP 状态代码和一个带有两个键的 JSON 对象:
例子:
{"error": "true", "message": "Something went wrong"}
以下所有路径均与秤 IP 地址相关。
分配器API
要求分发糖果
POST /api/dispenser/dispense
获取设备状态
GET /api/dispenser/status
设备可能处于以下状态之一:
示例响应:
{"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
托盘可以处于以下状态之一:
示例响应:
{"status": 1, "statusText": "向后移动", "operationTime": 360}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !