電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Dulciurilla:Fitbit智能糖果分配器

Dulciurilla:Fitbit智能糖果分配器

2023-02-08 | zip | 0.01 MB | 次下載 | 免費(fèi)

資料介紹

描述

什么想法?

我的女兒喜歡甜食。她非常愛他們,以至于她愿意做任何事情來得到他們:不吃飯,從秘密藏身處偷他們,只要她得到她的糖劑量,她甚至愿意在這樣做時(shí)被抓到受到懲罰。

糖會(huì)激活大腦的獎(jiǎng)賞系統(tǒng)。該系統(tǒng)的激活會(huì)導(dǎo)致強(qiáng)烈的獎(jiǎng)賞感,從而導(dǎo)致渴望和上癮。所以藥物和糖都會(huì)激活大腦中相同的獎(jiǎng)勵(lì)系統(tǒng),導(dǎo)致多巴胺的釋放。

我們?nèi)叶际褂?Fitbit 健身追蹤器,但她的步伐不是那么好。但是,如果我們將她對甜食的渴望與她的實(shí)際日常活動(dòng)同步起來呢?如果我可以讓她增加體力活動(dòng)以獲得這些獎(jiǎng)勵(lì)怎么辦?我想那沒關(guān)系,因?yàn)橐话銇碚f我對甜食沒有問題,但我在沙發(fā)上發(fā)胖的同時(shí)吃甜食有問題。:)

因此,檢查了他們的 API,發(fā)現(xiàn)他們公開了日常活動(dòng)指標(biāo),例如步數(shù)、攀爬的樓層數(shù)、距離、卡路里等。唯一要做的就是糖果分配器能夠根據(jù)她的活動(dòng)水平給她糖果。為了讓事情變得更有趣,我決定讓整個(gè)家庭都參加這次比賽,并讓這個(gè)分配器具有多用戶功能。這打開了一些有趣的家庭挑戰(zhàn)的大門,其中涉及含糖獎(jiǎng)勵(lì)。

?
?
?
20191106_084657_5S6at2j4PU.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
?
1 / 7
?

項(xiàng)目一覽

該項(xiàng)目相當(dāng)簡單。如果您熟悉基本概念,那么棘手的部分不是電子設(shè)備,而是機(jī)械部分。

  • 糖果垂直排列在塔狀盒子內(nèi)
  • 微控制器 ESP8266 NodeMCU 設(shè)置一個(gè) HTTP 服務(wù)器監(jiān)聽 LAN 上的連接。
  • 可以托管在互聯(lián)網(wǎng)上的配套網(wǎng)絡(luò)應(yīng)用程序,發(fā)送和接收 HTTP 消息以分發(fā)糖果或獲取狀態(tài)信息。
  • 配套應(yīng)用程序可以有任何邏輯,但我的版本會(huì)根據(jù)您使用 Fitbit 進(jìn)行的健身活動(dòng)為您提供糖果。您可以輕松編寫不同的邏輯,因?yàn)榉峙淦鞅旧砜梢允褂?Restful API 進(jìn)行控制。當(dāng)你在 Facebook 上收到點(diǎn)贊時(shí),比如給你糖果 :) 瘋了!
  • 如果通過 API 請求糖果,微控制器會(huì)指示伺服電機(jī)移動(dòng),進(jìn)而使托盤滑動(dòng),最終將糖果推出
  • 該設(shè)備非常基本。附加功能包括燈光和最后播放帶有蜂鳴器的愚蠢旋律。

點(diǎn)膠機(jī)構(gòu)

20191106_084338_AMjEjv10z4.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
?
  • 因?yàn)闄C(jī)器是點(diǎn)膠機(jī),所以只有一個(gè)主命令點(diǎn)膠
  • 當(dāng)微控制器接收到點(diǎn)膠指令時(shí),它會(huì)利用360度連續(xù)伺服來完成這項(xiàng)工作。
  • 伺服正在向前推動(dòng)托盤并可以通過推拉桿將其拉回,
  • 托盤在軌道上滑動(dòng)。您可以輕松地用兩根堅(jiān)硬的金屬棒制作軌道。潤滑桿以改善滑動(dòng)并最大程度地減少令人不快的噪音。托盤可以由木頭、塑料甚至金屬制成。我建議你把托盤做得盡可能薄,但能把糖果移出來,把托盤安裝得盡可能靠近地面,最好不要接觸地面。由于糖果下落的角度較小,這將有助于防止卡紙。
  • 托盤最初位于塔內(nèi)最底部,所有糖果都在頂部。
  • 首先,伺服電機(jī)拉回托盤,為下一顆糖果騰出空間,下一顆糖果落在外殼底部,同時(shí)托盤縮回,然后托盤向前推動(dòng),進(jìn)而將糖果推??到外面。
  • 有兩個(gè)金屬傳感器,一個(gè)在前面,一個(gè)在后面,可以判斷托盤何時(shí)到達(dá)最終或初始位置。它們的作用類似于按鈕,并使用中斷進(jìn)行處理,以提高安全性和響應(yīng)能力。
  • 如果托盤沒有在預(yù)期的時(shí)間范圍內(nèi)到達(dá)目的地(設(shè)置為 1 秒),則實(shí)施軟件卡紙保護(hù)以防止損壞
  • 對于維護(hù),有前后移動(dòng)托盤的命令,但如果托盤卡住,您可以用手移動(dòng)托盤 :)。

筆記:

使用不同類型的電機(jī)也可以。我有一個(gè)連續(xù)伺服,但我想位置伺服甚至步進(jìn)電機(jī)或普通直流電機(jī)都可以工作。如果您依靠它們的固定定位精度,您甚至可以放棄初始/最終位置傳感器。移除這些的一個(gè)問題可能是位置校準(zhǔn)和軸位置的手動(dòng)更改。

你需要把伺服喇叭做得更長;為此,您可以像我一樣用螺絲連接 7-8 厘米的膠合板延伸件。控制桿通常在與喇叭連接的一端有一個(gè) Z 形彎頭(彎成字母 Z 的形狀),另一端有一個(gè) 90 度彎頭,帶有彈簧固定器。我的 Z 彎不太好,因?yàn)槲沂褂昧朔浅?jiān)硬的電線并且沒有合適的工具,所以我實(shí)際上使用了 U 彎,效果很好。這個(gè)想法是桿不應(yīng)該從喇叭中脫出。這是一個(gè)很好的補(bǔ)充,可以確保桿移動(dòng)的孔不會(huì)磨損(特別是如果喇叭材料像木頭或塑料一樣柔軟),所以我插入了一個(gè)橡膠墊圈。要制作彈簧固定器,您可以使用一些彈性線和一根熱縮管。

20191006_152915_blTmJdzlwn.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
帶 Z 形彎曲和彈簧固定器的控制桿
?

不要忘記用提供的螺絲將喇叭固定到伺服器上。您可能需要在木質(zhì)延伸件上鉆一個(gè)孔,以便將螺絲實(shí)際連接到塑料喇叭上。

20191027_104653_JWVf6ghmG6.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
固定喇叭
?

通電

所有基于 ESP8266 的開發(fā)板都有一個(gè)內(nèi)置穩(wěn)壓器,因此您只需連接一根 USB 數(shù)據(jù)線,它將提供 5V 電壓,內(nèi)置穩(wěn)壓器將為芯片提供 3.3V 電壓。請注意,舵機(jī)連接到 5V 輸入,因?yàn)樗枰喙β省?/font>所以基本上輸入電壓為 5 伏,設(shè)備在點(diǎn)膠時(shí)需要高達(dá) 1.5A 的電流。不分配時(shí),WiFi 芯片通常消耗 50 - 300 毫安,每個(gè) LED 消耗 30 毫安。我沒有實(shí)現(xiàn)省電模式,但在待機(jī)狀態(tài)下,它不應(yīng)超過 120 毫安。

燈光

任何涼爽的分配器都有一個(gè)透明面板,供您檢查里面的食物,并配有照明。

我沒有在照明方面走得太遠(yuǎn),即使你對彩色 LED 發(fā)瘋了。我只是在前面板使用了兩個(gè)白色 LED,由一個(gè) NPN 晶體管激活。前面板燈也可用作狀態(tài)和錯(cuò)誤指示器。

當(dāng)設(shè)備連接到 WiFi 時(shí),燈會(huì)慢慢淡入和熄滅,直到建立連接,然后燈會(huì)亮到更高的強(qiáng)度。我只是使用 PWM 引腳來控制光的強(qiáng)度。

?
?
?
led-connection-board_bb_E0Q5C6vtKi.png?auto=compress%2Cformat&w=740&h=555&fit=max
?
1 / 6
?

該電路是一個(gè)標(biāo)準(zhǔn)的低側(cè) NPN 開關(guān)。

如果您是初學(xué)者,請繼續(xù)閱讀

它被稱為低側(cè)開關(guān),因?yàn)榫w管正在切換接地路徑。負(fù)載的 VCC 輸入直接連接到電源正輸出,而負(fù)載的地通過連接到集電極引腳的晶體管連接。如果足夠的電壓和電流施加到晶體管的基極,晶體管就會(huì)飽和并從集電極傳導(dǎo)到發(fā)射極。負(fù)載由我們的兩個(gè)白色 LED 組成,正極(陽極)通過串聯(lián)電阻連接,以限制電流.為了激活“開關(guān)”,我們通過串聯(lián)電阻向晶體管的基極發(fā)送邏輯 1。基極沒有電阻的三極管就像沒有限流電阻的LED. 電阻器的值及其兩端的電壓將設(shè)置電流。電阻器需要足夠大以有效地限制電流,但又要足夠小以便為基極提供足夠的電流。您可以根據(jù)您的晶體管和負(fù)載計(jì)算該值。例如,我的 NPN3904 的 hFE=100 與 5k 電阻器配合使用可以很好地切換 60mA,因此我使用了一個(gè) 4.7K 的電阻器,它應(yīng)該在 3.3V 和 3.3V 的正向 LED 電壓下處理 70mA。我使用了一個(gè)非常小的 1.8 歐姆電阻來限制 LED 電流,因?yàn)?LED 的正向電壓應(yīng)該相同,并且電壓是穩(wěn)定的。您可以使用此計(jì)算器計(jì)算基極電阻。這個(gè)用于 LED 電阻器。

安全和糖果防盜保護(hù)

為了防止未經(jīng)授權(quán)訪問糖果(基本上是為了防止我的女兒偷糖果 :))我使用了一把普通的舊鎖。如果你想避免作弊,我認(rèn)為這個(gè)問題不能被忽視 :)

音效

分配過程完成后,我正在使用無源蜂鳴器播放旋律。由于播放旋律通常有延遲,我創(chuàng)建了一個(gè)safeDelay函數(shù)以較小的增量(100 毫秒)延遲,讓內(nèi)部 ESP8266 進(jìn)程更頻繁地運(yùn)行,延遲被認(rèn)為是一種不好的做法,但旋律是在最后播放的分配過程,所以它不應(yīng)該影響響應(yīng)有用命令的能力。

外殼

外殼是用膠合板建造的。前門有一個(gè)透明的塑料面板,可以看到里面的食物。

?
?
?
enclosure-front_MDhsTUoavQ.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
?
1 / 5 ?正視圖
?

最重要的方面是確定糖果塔的尺寸。我建造了一個(gè)巨型 Tic-Tac 盒尺寸的塔。這個(gè)方便的塑料盒有一個(gè)小活動(dòng)鉸鏈蓋,可以裝 M&Ms、Smarties 或類似的小糖果,完全取下蓋子后,您可以放入巧克力塊,如 Kinder 巧克力棒或任何適合的東西。糖果塔應(yīng)該與 Tic-Tac 盒子緊密貼合,各個(gè)方向的間距只有幾毫米。如果空間太多或太少,Tic-tacs 就會(huì)卡住,

在外殼上加一個(gè)蓋子或門是非常有用的,這樣你就可以進(jìn)行維護(hù)。維護(hù)可以包括潤滑導(dǎo)軌。在我的版本中,無法通過打開蓋子取出糖果,因此沒有必要固定它。

一個(gè)很好的補(bǔ)充也是一個(gè)電源開關(guān)。您可以剪斷 USB 電纜并將一個(gè)小開關(guān)連接到正極。

網(wǎng)絡(luò)應(yīng)用

配套網(wǎng)絡(luò)應(yīng)用程序是用 PHP/Javascript 編寫的。實(shí)際上,我將此功能集成到一個(gè)更復(fù)雜的應(yīng)用程序中,我正在使用該應(yīng)用程序?qū)⑹澄镉涗浀?Fitbit 中,并連接到我的 DIY Healtzuilla 體重秤。

作為高級概述,該應(yīng)用程序使用通過 HTTP 分配的 LAN IP 與分配器通信。如果完成定義的挑戰(zhàn),它使用statusdispense端點(diǎn)提供糖果。為了檢查挑戰(zhàn)是否完成以及如何完成,它使用 OAuth2 身份驗(yàn)證連接到 Fitbit Web API 并檢索每日統(tǒng)計(jì)數(shù)據(jù)。它會(huì)跟蹤已經(jīng)分配(吃掉)的糖果,如果您贏得了新糖果,它會(huì)為您提供新糖果。它為不同的用戶保留單獨(dú)的統(tǒng)計(jì)信息。

從這個(gè)更大的代碼庫中提取與 Dulciurilla 相關(guān)的 PHP 源代碼會(huì)有點(diǎn)困難,但如果有足夠的請求,我可以做一些努力。

使用 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');
    }
}

它可以像這樣實(shí)例化和使用:

// 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/所有響應(yīng)都是 json 格式。

成功的 POST/PATCH 操作返回 HTTP 狀態(tài)代碼 200 和如下所示的 JSON:

{"success": true}

失敗的請求返回一個(gè)非 200 的 HTTP 狀態(tài)代碼和一個(gè)帶有兩個(gè)鍵的 JSON 對象:

  • 錯(cuò)誤:bool (始終為真)
  • 消息:字符串(可選)

例子:

{"error": "true", "message": "Something went wrong"}

以下所有路徑均與秤 IP 地址相關(guān)。

分配器API

要求分發(fā)糖果

POST /api/dispenser/dispense

獲取設(shè)備狀態(tài)

GET /api/dispenser/status

設(shè)備可能處于以下狀態(tài)之一:

  • 正在初始化(代碼 0)-尚未準(zhǔn)備好命令
  • 空閑(代碼 1)-準(zhǔn)備好執(zhí)行命令
  • 點(diǎn)膠(代碼 2)-在點(diǎn)膠過程中,此時(shí)無法處理新命令
  • 錯(cuò)誤(代碼 3)- 如果托盤卡住,WiFi 未連接。無法處理任何命令。

示例響應(yīng):

{"statusCode":  2, "statusText": "Dispensing"}

維護(hù)API

向前移動(dòng)托盤

POST /api/dispenser/maintenance/tray/move-forward

向后移動(dòng)托盤

POST /api/dispenser/maintenance/tray/move-backwards

獲取托盤狀態(tài)

GET /api/dispenser/maintenance/tray/status

托盤可以處于以下狀態(tài)之一:

  • 已停止(代碼 0)
  • 向后移動(dòng)(代碼 1)
  • 前進(jìn)(代碼 2)

示例響應(yīng):

{"status": 1, "statusText": "向后移動(dòng)", "operationTime": 360}


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)