電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>WTF智能水杯開源分享

WTF智能水杯開源分享

2022-11-09 | zip | 0.14 MB | 次下載 | 2積分

資料介紹

描述

1. 摘要

WTF是一款智能水杯,可以測量內(nèi)部水溫,也可以通過語音提示用戶,這款水杯不易傾斜。它對每個人都有用,尤其是對于盲人和視障用戶。

WTF 是一個為用戶提供杯子中視對象功能的人,并用這個杯子為所有的人提供聲音。

2. 簡介

全世界有2.17億人患有視力障礙,其中3600萬人完全失明。飲用水是必不可少的。然而,視障人士可能會遇到一些危險和不便。因此,我們計劃設(shè)計一個杯子來幫助這些人避免這些危險。該杯子將具有使其能夠清楚地通知其用戶的功能。

在當(dāng)今社會中,全世界有2.17億人有度至重度的約見中,似乎沒有這些,約3600萬人完全失明生活中的飲水是必須的,但是視覺上的方便是人在飲水中的。我們可能會在水杯方面設(shè)計一個可能有危險和提醒用戶的能力。

3. 硬件介紹

3.1 Arduino納米3.0

pYYBAGNomLeAElHXAAAbqviBFiE044.png
知乎
?

左邊的是Arduino Uno,很常見。Uno 功能齊全,但對我們的項目來說有點(diǎn)太大了。我們正在做一個杯子,我們不能在里面放一個普通尺寸的計算器。

最開始是阿杜諾的圖片系列,但Arduino Uno的功能對我們來說這個中杯的案子有點(diǎn)說得過去,完整的版本了。

另一個是我們的主角,Arduino Nano。更小、更輕、更便宜。我買的那件要 100 新臺幣(約合 3.3 美元)。它的尺寸為 43.18 毫米 * 17.78 毫米。

再來的板子更創(chuàng)造了Arduino Nano的主角。我們這塊板子更小更便宜,只用了100塊臺在森工的網(wǎng)站上買的,大概是43.18 mm * 17.78 mm。

3.2 LM35

LM35是一款溫度傳感器,可用于測量-50℃至150℃之間的水溫。這是一個適合喝水的區(qū)間。

LM35是溫度感測,可測范圍大約是-50℃到150℃,是滿符合水溫狀態(tài)的區(qū)間。

然而,還有另一個溫度傳感器 DS18B20 是防水的。這對于測量液體溫度非常有用。我們選擇 LM35 的原因是我們計劃將傳感器放置在玻璃杯之外,并且不會損壞杯體。盡管如此,我還是建議你試試 DS18B20,也許它更準(zhǔn)確。

所以另一款DS18B20是推薦的因?yàn)橛袦囟雀袦y器,但是我們本來就不打算將杯子測度更正所以這個,我還是非常你可以看的,因?yàn)檫x擇它的準(zhǔn)確度好喔。

3.3 DFPlayer 迷你版

顯然,它只是一個迷你 mp3 播放器。它需要一個存儲 mp3 文件的 sd 卡和一個普通的揚(yáng)聲器。如果您正在尋找一款聲音播放器,我認(rèn)為除了這一款之外沒有太多選擇。

就像字樣的作品,這是一個驅(qū)動mp3器的模組。除了這個還需要這張專輯跟前幾張或這張專輯來完成放送。而且除了我覺得你在城市之外也很重要上其他太多的選擇了。

4.電路圖

pYYBAGNomMCAUBVDAAFmwVgOTCg130.png
在 circuito.io 上制作
?

連接方法如上圖。

連接的方式就像這張圖

我所做的結(jié)果如下。

我做的角色像下面這個

poYBAGNomMiAPkg7AADDMduvFIc289.png
被我捕捉
?

但是我覺得不太容易理解所以請去我在circuito.io上做的那個~

但我不覺得這樣的做法中還有什么端倪,所以建議我在circuito.io做的連接圖吧~

5. 逐個連接

5.1 LM35

pYYBAGNomMuAIsSZAACxhsL6E60062.png
?

這是一個非常簡單的步驟(如果您只想測量溫度)。輸入代碼并運(yùn)行后,就完成了。

這步驟很簡單(如果很容易只是想溫度)。在你輸入完成后是而且跑動后測完成了。

/*Code designed by Sujay Alaspure in SA Lab */
const int sensor=A5; // Assigning analog pin A5 to variable 'sensor'
float tempc; //variable to store temperature in degree Celsius
float tempf; //variable to store temperature in Fahreinheit
float vout; //temporary variable to hold sensor reading
void setup() {
pinMode(sensor,INPUT); // Configuring sensor pin as input
Serial.begin(9600);
}
void loop() {
vout=analogRead(sensor); //Reading the value from sensor
vout=(vout*500)/1023;
tempc=vout; // Storing value in Degree Celsius
tempf=(vout*1.8)+32; // Converting to Fahrenheit
Serial.print("in DegreeC=");
Serial.print("\t");
Serial.print(tempc);
Serial.print(" ");
Serial.print("in Fahrenheit=");
Serial.print("\t");
Serial.print(tempf);
Serial.println();
delay(500); //Delay of 1 second for ease of viewing }

盡管如此,我們不會測量空氣,我們要測量的是穿過玻璃的水。所以考慮到精度會下降和反射時間會變長的原因,我們需要擴(kuò)大測量間隔并修正輸出。下圖是我們做交換公式的筆記,左邊是實(shí)物,右邊是我們從LM35得到的輸入。

在考慮他的準(zhǔn)確度下降以及玻璃反應(yīng)時間增加的情況下,需要調(diào)整他的輸出及感測器下面的圖是當(dāng)時我們?yōu)檗D(zhuǎn)換做的記錄,從這張圖是實(shí)際有的,右邊是LM35傳出來的結(jié)果的分?jǐn)?shù)。

poYBAGNomM6AfXlqAABzMOk9ujE885.png
?

以下代碼是在新公式交換之后。

這樣的改變之后我們的程序碼變成了下面的樣子。

//sensor
const int sensor=A5; // Assigning analog pin A5 to variable 'sensor'
float tempc; //variable to store temperature in degree Celsius
float tempf; //variable to store temperature in Fahreinheit
float vout; //temporary variable to hold sensor reading
char rT='24';

void loop(){
vout=analogRead(sensor); //Reading the value from sensor
vout=(vout*500)/1023;
if (vout<19.5){
Serial.print("lower than 10");
}
else if (vout>=19.5 and vout<21){
Serial.print("about 15");
}
else if (vout>=21 and vout<22){
Serial.print("about 20");
}
else if (vout>=22 and vout<24){
Serial.print("about 25");
}
else if (vout>=24 and vout<24.5){
Serial.print("about 30");
}
else if (vout>=24.5 and vout<26.5){
Serial.print("about 35");
}
else if (vout>=26.5 and vout<28.5){
Serial.print("about 40");
}
else if (vout>=28.5 and vout<29.5){
Serial.print("about 45");
}
else if (vout>=29.5 and vout<31.5){
Serial.print("about 50");
}
else if (vout>=31.5 and vout<32.5){
Serial.print("about 55");
}
else{
Serial.print("higher than 60, warnning, its hot.");
}
Serial.print("in DegreeC=");
Serial.print("\t");
Serial.print(tempc);
Serial.print(" ");
Serial.print("in WTF=");
Serial.print("\t");
Serial.print(rT);
Serial.println();
}

參考:https ://www.instructables.com/id/Arduino-Temperature-Sensor-Using-LM35/

5.2 DFPlayer 迷你版

教程博客中有很多代碼,我只取我們需要的部分:

他給了很多行程式,我只取了我的回應(yīng)碼:

#include "Arduino.h"
#include "SoftwareSerial.h"                    // 採用SoftwareSerial程式庫
#include "DFRobotDFPlayerMini.h"        // 採用DFRobotDFPlayerMini程式庫

SoftwareSerial mySoftwareSerial(2, 3);  // mySoftwareSerial(RX, TX), 宣告軟體序列傳輸埠
                                        // 用來與DFPlayerMini通訊用
DFRobotDFPlayerMini myDFPlayer;         //宣告MP3 Player

void setup() 
{
    Serial.begin(115200);                 // 定義Serial傳輸速率115200bps
    mySoftwareSerial.begin(9600);  // 定義mySoftwareSerial傳輸速率9600bps, DFPlayerMini           的通訊速率為9600bps.

myDFPlayer.setTimeOut(500); // 設(shè)定通訊逾時為500ms

//----Set volume----
    myDFPlayer.volume(10);     // 設(shè)定音量, 範(fàn)圍0~30.
//----Set device we use SD as default---- // 設(shè)定SD卡
    myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
//----Mp3 control---- // 設(shè)定MP3參數(shù)
    myDFPlayer.enableDAC();     //Enable On-chip DAC
//----Mp3 play----  // 設(shè)定MP3播放參數(shù)
    myDFPlayer.play(1);  // 播放第1首音樂
}

不要忘記導(dǎo)入它請求的庫。

詳情見參考/從下面的鏈接看更詳細(xì)的教學(xué)

pYYBAGNomNKAQbFrAABpyP1xzdw060.png
?

在這里,我通過Sound Of Text錄制了 11 個 mp3 文件并保存到我的 micro SD 卡中,然后插入 DFPlayer Mini。

記錄文件有點(diǎn)像“大約15°C”或“高于60°C,警告,很熱。”。

在這里我用 Sound Of Text錄了11個mp3文件到我的SD卡里,然后插入micro DFPlayer Mini里。

這些音檔的內(nèi)容大應(yīng)該是近似度“或像”“60度,小心高溫。”

5.3 電源

pYYBAGNomNWAOpwyAADViCBna3c636.png
?

這部分沒有代碼!干杯! 唯一需要做的就是像上圖那樣連接電池(不是 LED 部分,只有電池)

沒有程序要!恭喜!只要照上圖接好電池就好(不要管LED,)

6.完成代碼

#include "Arduino.h"
#include "SoftwareSerial.h"                    // 採用SoftwareSerial程式庫
#include        // 採用DFRobotDFPlayerMini程式庫
//mp3
/*Code designed by Sujay Alaspure in SA Lab */
SoftwareSerial mySoftwareSerial(2, 3);
DFRobotDFPlayerMini myDFPlayer;         //宣告MP3 Player
void printDetail(uint8_t type, int value);  //印出詳情
//sensor
const int sensor=A5; // Assigning analog pin A5 to variable 'sensor'
float tempc; //variable to store temperature in degree Celsius
float tempf; //variable to store temperature in Fahreinheit
float vout; //temporary variable to hold sensor reading
char rT='24';
//toggle
boolean state = false;
void setup() {
//toggle
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
pinMode(7, INPUT);
digitalWrite(7, HIGH);
//MP3 Player
Serial.begin(115200);                 // 定義Serial傳輸速率115200bps
mySoftwareSerial.begin(9600);  // 定義mySoftwareSerial傳輸速率9600bps, DFPlayerMini的通訊速率為9600bps.
myDFPlayer.setTimeOut(500); // 設(shè)定通訊逾時為500ms
//----Set volume----
myDFPlayer.volume(30);     // 設(shè)定音量, 範(fàn)圍0~30.
//----Set different EQ----  // 設(shè)定EQ(等化器 Equalizer)
myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
//----Set device we use SD as default---- // 設(shè)定SD卡
myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
//----Mp3 control---- // 設(shè)定MP3參數(shù)
myDFPlayer.enableDAC();     //Enable On-chip DAC
pinMode(sensor,INPUT); // Configuring sensor pin as input
Serial.begin(9600);
}

void loop() {
//MP3 player
if (myDFPlayer.available())  // 監(jiān)視MP3有沒有回應(yīng)
{                                          // 有的話印出詳情
printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
}
//toggle
if(digitalRead(7) != HIGH){
state = !state;
digitalWrite(13, state);
temp();
delay(2000);}
} //Delay of 1 second for ease of viewing

void temp(){
vout=analogRead(sensor); //Reading the value from sensor
vout=(vout*500)/1023;
if (vout<19.5){
Serial.print("lower than 10");
myDFPlayer.play(4);
}
else if (vout>=19.5 and vout<21){
Serial.print("about 15");
myDFPlayer.play(2);
}
else if (vout>=21 and vout<22){
Serial.print("about 20");
myDFPlayer.play(3);
}
else if (vout>=22 and vout<24){
Serial.print("about 25");
myDFPlayer.play(5);
}
else if (vout>=24 and vout<24.5){
Serial.print("about 30");
myDFPlayer.play(7);
}
else if (vout>=24.5 and vout<26.5){
Serial.print("about 35");
myDFPlayer.play(6);
}
else if (vout>=26.5 and vout<28.5){
Serial.print("about 40");
myDFPlayer.play(10);
}
else if (vout>=28.5 and vout<29.5){
Serial.print("about 45");
myDFPlayer.play(9);
}
else if (vout>=29.5 and vout<31.5){
Serial.print("about 50");
myDFPlayer.play(8);
}
else if (vout>=31.5 and vout<32.5){
Serial.print("about 55");
myDFPlayer.play(11);
}
else{
Serial.print("higher than 60, warnning, its hot.");
myDFPlayer.play(1);
}
Serial.print("in DegreeC=");
Serial.print("\t");
Serial.print(tempc);
Serial.print(" ");
Serial.print("in WTF=");
Serial.print("\t");
Serial.print(rT);
Serial.println();
}

7.外觀

外部設(shè)計采用底部加重的半圓形鍋形,此設(shè)計分為兩部分,主要材料如下:

外部設(shè)計底部很重的半圓形,而可供選擇的圓形用途為口腔內(nèi)進(jìn)行兩式使用的多種形式,使用以下形式的材料:

poYBAGNomNiALI1DAAD377Sjt6c367.jpg
?

先用木板將鞋面做成一個與玻璃大小相匹配的圓環(huán)和18塊三角形木片,按照邊的大小排列,與圓環(huán)接合,形成鞋面的骨架杯的一部分,然后蓋上表面的黑布。

首先在上半部用1個圓形木片的圓形覆蓋面,在圓形上半部用1塊圓形木片覆蓋黑色的圓形小片,按照邊長的大小進(jìn)行排列,并在玻璃上接合。

pYYBAGNomNuAY1VGAAEf7JyJ8I8138.jpg
?

用葫蘆在下半部分抹平不規(guī)則的表面,也用紅布蓋住。使用兩種顏色來區(qū)分上下部分。

下半部則用葫蘆,將不規(guī)則的磨平并用上紅色兩面,用兩個顏色蓋頭部分。

poYBAGNomN6AF2itAAGqm3XYFQw181.jpg
?

8. 結(jié)果

首先,我們看一下內(nèi)部操作:

首先先看看內(nèi)部的準(zhǔn)入吧:

?

物質(zhì)和外部

實(shí)物和外貌

pYYBAGNomOGAWawpAAFxPo3Tkfw530.jpg
?

9. 結(jié)論

缺點(diǎn):時間和預(yù)算緊張,無法選擇一些更好的組件。并且可能添加一些功能,例如告訴用戶溫度正在測量。

時間長度限制,使用效果的時間長度有限,使用效果稍有不同。

Hope this tutorial will help you~

希望這個教程能幫到你~


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

評論

查看更多

下載排行

本周

  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元宇宙底層硬件系列報告
  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è)計實(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ū)動電路設(shè)計》 溫德爾著
  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é)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)