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

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

3天內(nèi)不再提示

怎樣用LED和Arduino制作智能馬克杯

454398 ? 來源:工程師吳畏 ? 2019-08-05 11:33 ? 次閱讀

關(guān)于DS18B20的簡短說明

DS18B20數(shù)字溫度計(jì)提供9位到12位位攝氏溫度測量并具有報(bào)警功能,具有非易失性用戶可編程的上下觸發(fā)點(diǎn)。 DS18B20通過1-Wire總線進(jìn)行通信,根據(jù)定義,它只需要一條數(shù)據(jù)線(和地)與中央微處理器進(jìn)行通信。此外,DS18B20可以直接從數(shù)據(jù)線獲得電源(“寄生電源”),從而消除了需要外部電源。每個(gè)DS18B20都有一個(gè)獨(dú)特的64位串行代碼,允許多個(gè)DS18B20在同一條1-Wire總線上運(yùn)行。因此,使用一個(gè)微處理器控制分布在大面積上的幾個(gè)DS18B20很簡單??梢詮拇斯δ苤惺芤娴膽?yīng)用包括HVAC環(huán)境控制,建筑物內(nèi)部的溫度監(jiān)控系統(tǒng),設(shè)備或機(jī)器,以及過程監(jiān)控和控制系統(tǒng)

關(guān)于將技術(shù)與生活相結(jié)合,使用彩色燈光令人驚嘆且極具吸引力用顯示器代替RGB LED發(fā)送信息或報(bào)警可以使項(xiàng)目更美觀,也更簡單。在這個(gè)項(xiàng)目中,我們想讓杯子變得聰明,這樣你就可以向你展示咖啡或軟飲料的溫度并報(bào)警它已經(jīng)準(zhǔn)備好了。作為熱電堆,我們將使用DS18B20并將其粘在杯子的底部。它可以將數(shù)字?jǐn)?shù)據(jù)中的杯子中的液體溫度發(fā)送到控制器Arduino Nano因其小巧的尺寸和板載迷你USB連接器而成為我們的控制器選擇。因此,它可以編程,電池可以通過USB端口充電。為了顯示溫度,我們使用2個(gè)簡單的4針RGB LED,并將它們連接到Arduino Nano中的獨(dú)立PWM單元?,F(xiàn)在,我們只需要一個(gè)電池,一個(gè)杯子和一個(gè)塑料外殼來放入組件。讓我們這樣做。

必需材料

此項(xiàng)目中使用的所有組件均可通過提供的鏈接購買。

電路

電池尺寸取決于LED和電池尺寸。 500mAh電池是一個(gè)不錯(cuò)的選擇。您可以使用聚合物或離子電池。這里使用的LED具有共同的陰極。如果您有共同的陽極,則必須對代碼進(jìn)行少量更改。如果您的LED在沒有電阻器的情況下無法工作,您有兩種方法。添加電阻或添加更多LED。您應(yīng)該將DS18b20的電壓和數(shù)據(jù)引腳連接到4.7K歐姆電阻。雖然可能沒有必要。

代碼

您應(yīng)該在Arduino IDE中復(fù)制以下代碼。但首先您必須添加庫然后上傳代碼。從附件下載“One Wire”和“Dallas”庫。如果這是您第一次運(yùn)行Arduino板,請不要擔(dān)心。只需按照以下步驟操作:

訪問www.arduino.cc/en/Main/Software下載您的操作系統(tǒng)軟件。按照說明安裝IDE軟件。

運(yùn)行Arduino IDE并清除文本編輯器并在文本編輯器中復(fù)制以下代碼。

導(dǎo)航到草圖并包含庫(從以下鏈接下載庫)?,F(xiàn)在單擊添加ZIP庫并添加庫

選擇工具和板中的板,選擇Arduino Nano。

將Arduino連接到PC并設(shè)置工具和端口中的COM端口。

按上傳(箭頭標(biāo)志)按鈕。

/********************************************************************/

// First we include the libraries

#include “OneWire.h”

#include “DallasTemperature.h”

/********************************************************************/

// Data wire is plugged into pin 2 on the Arduino

#define ONE_WIRE_BUS 2

/********************************************************************/

// Setup a oneWire instance to communicate with any OneWire devices

// (not just Maxim/Dallas temperature ICs)

OneWire oneWire(ONE_WIRE_BUS);

/********************************************************************/

// Pass our oneWire reference to Dallas Temperature.

DallasTemperature sensors(&oneWire);

/********************************************************************/

float temp;

void setup(void)

{

// start serial port

Serial.begin(9600);

Serial.println(“Dallas Temperature IC Control Library Demo”);

// Start up the library

sensors.begin();

}

void loop(void)

{

// call sensors.requestTemperatures() to issue a global temperature

// request to all devices on the bus

/********************************************************************/

Serial.print(“ Requesting temperatures.。.”);

sensors.requestTemperatures(); // Send the command to get temperature readings

Serial.println(“DONE”);

/********************************************************************/

Serial.print(“Temperature is: ”);

Serial.print(sensors.getTempCByIndex(0));temp= sensors.getTempCByIndex(0); Serial.print(“ ”); Serial.println(temp);// Why “byIndex”?

// You can have more than one DS18B20 on the same bus.

// 0 refers to the first IC on the wire

if (analogRead(A0)》100)

{ if (temp》50)

temp=100;

if (temp《30) temp=0; temp=(12.5)*(temp-30); Serial.println(temp); if (temp》255)

temp=255;

if (temp《0)

temp=0;

analogWrite(6,temp);

analogWrite(9,temp);

analogWrite(3,255-temp);

analogWrite(11,255-temp);}

else

{analogWrite(6,0);

analogWrite(9,0);

analogWrite(3,0);

analogWrite(11,0);}

delay(100);

}

以下代碼行屬于顏色計(jì)算,這取決于你的杯子。如果你的杯子沒有足夠快地傳遞熱量,你應(yīng)該改變它以達(dá)到預(yù)期的效果。

if (temp》50)

temp=100;

if (temp《30)

temp=0;

temp=(12.5)*(temp-30);

組裝

最初,您必須鉆一下杯子的底部??椎臄?shù)量取決于電路以及如何實(shí)現(xiàn)它。我們考慮過這個(gè)項(xiàng)目的3個(gè)洞。一個(gè)用于溫度計(jì),兩個(gè)用于連接螺絲(電極)和杯子內(nèi)的液體。你可以在不刺穿馬克杯的情況下完成這個(gè)項(xiàng)目。將溫度計(jì)滴在馬克杯的底部,將電極的2根線連接到開/關(guān)開關(guān)。安裝溫度計(jì)和電極并密封后,是時(shí)候?yàn)轳R克杯的底部做一個(gè)框架了。使用膠水密封玻璃,這將不會被熱水或冷水解決。要制作杯子底部的外殼。你必須首先測量杯子的外徑。然后設(shè)計(jì)一個(gè)與杯子底部尺寸完全相同的圓圈,以及兩個(gè)外徑為3毫米的環(huán)(當(dāng)然還有杯子底部的直徑)。你可以使用有機(jī)玻璃和一個(gè)激光切割機(jī)制作規(guī)定的外殼。其中一個(gè)戒指必須是透明的,你可以根據(jù)自己的意愿選擇其他戒指的顏色。你應(yīng)該打磨透明戒指,以達(dá)到啞光效果。如圖所示粘貼它們?,F(xiàn)在將電池粘到外殼上并將其引腳連接到Arduino。將透明環(huán)的一部分切割為與Arduino micro USB端口一樣多,并將Arduino連接到電池,使連接器從環(huán)中掉出?,F(xiàn)在將LED焊接到Arduino并將其他電線連接到Arduino。最后,將shell粘貼到馬克杯的底部,然后將代碼上傳到Arduino。

下一步是什么?

現(xiàn)在,通過在代碼中添加新功能來改進(jìn)智能手機(jī)。例如,當(dāng)咖啡達(dá)到所需溫度并且可以飲用時(shí),您可以添加一些線來警告您。您可以點(diǎn)亮綠色LED以進(jìn)行報(bào)警。在下一步中,您可以在杯子的底部添加一個(gè)加熱器元件并寫下一些代碼來停止降低飲料的溫度。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    23001

    瀏覽量

    655050
  • DS18B20
    +關(guān)注

    關(guān)注

    10

    文章

    777

    瀏覽量

    80581
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6455

    瀏覽量

    186369
收藏 人收藏

    評論

    相關(guān)推薦

    怎樣用THS3201實(shí)現(xiàn)輸出功率可調(diào)?

    怎樣用THS3201實(shí)現(xiàn)輸出功率可調(diào)?
    發(fā)表于 08-26 08:28

    OPA735加OPA333,怎樣用TINA TI去仿真?

    當(dāng)輸入信號VG1從7.06V慢慢變化到7.22V時(shí)。 輸出電壓Vout的變化必須是接近線性變化的。我想知道我該怎樣用TINA TI去仿真?怎樣設(shè)置那個(gè)輸入信號VG1才能達(dá)到我的目的。因?yàn)檫@個(gè)電壓源好像
    發(fā)表于 08-02 08:39

    怎樣用Arduino測試鋰電池容量

    本文詳細(xì)介紹了如何用Arduino測量鋰電池的容量。并附有電路圖和Arduino的程序代碼。
    的頭像 發(fā)表于 07-30 09:14 ?586次閱讀
    <b class='flag-5'>怎樣用</b><b class='flag-5'>Arduino</b>測試鋰電池容量

    怎樣用STM8L的PB3/TIM2_TRIG的引腳測量脈寬?

    怎樣用STM8L的PB3/TIM2_TRIG的引腳測量脈寬?
    發(fā)表于 05-07 06:55

    stm32f100怎樣用重映射功能?

    的是stm32f100c8t6b芯片,現(xiàn)在想用將PB1映射為TIM1_CH3N,在調(diào)用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM1)時(shí), GPIO_PinAFConfig和GPIO_AF_TIM1都沒定義,stm32f100
    發(fā)表于 05-07 06:06

    STM32F412G-DISCO怎樣用MX生成fatfs的代碼?

    STM32F412G-DISCO怎樣用MX生成fatfs的代碼? SD卡例程能跑,但mx生成的代碼不能正常運(yùn)行,我生成代碼后是不是還要配置一些東西?(我生成后只寫了測試代碼) 問題解決了,雖然我不知道我為什么不能直接使用mx生成的代碼去操作sd卡,但我通過復(fù)制粘貼例程的代碼完成了測試。
    發(fā)表于 03-12 08:15

    如何使用Arduino制作智能垃圾箱

    在這個(gè)項(xiàng)目中,我將向您展示如何使用Arduino制作智能垃圾箱,當(dāng)您帶著垃圾接近時(shí),垃圾箱的蓋子會自動打開。
    的頭像 發(fā)表于 02-11 12:22 ?2663次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b><b class='flag-5'>智能</b>垃圾箱

    使用Arduino Nano制作一個(gè)4×4×4 LED立方體

    在這個(gè)項(xiàng)目中,我們將使用 Arduino Nano 制作一個(gè)很酷的 4×4×4 LED立方體。LED 立方體,也稱為 LED矩陣,可以照亮您
    的頭像 發(fā)表于 02-11 12:07 ?2887次閱讀
    使用<b class='flag-5'>Arduino</b> Nano<b class='flag-5'>制作</b>一個(gè)4×4×4 <b class='flag-5'>LED</b>立方體

    如何使用Arduino控制RGB LED

    在本指南中,您將學(xué)習(xí)如何使用Arduino控制RGB LED。RGB(紅-綠-藍(lán))LED可以通過混合不同強(qiáng)度的紅、綠、藍(lán)光來產(chǎn)生多種顏色。您將學(xué)習(xí)創(chuàng)建一個(gè)基本Arduino RGB
    的頭像 發(fā)表于 02-11 10:28 ?4163次閱讀
    如何使用<b class='flag-5'>Arduino</b>控制RGB <b class='flag-5'>LED</b>

    Arduino制作循跡小車教程

    Arduino制作循跡小車完全教程
    發(fā)表于 01-05 11:09 ?4次下載

    怎樣用表來判斷加熱管的好壞?

    怎樣用表來判斷加熱管的好壞? 萬表是電工常用的測量儀器,它可以用來判斷加熱管的好壞。加熱管是一種常見的加熱元件,廣泛應(yīng)用于家電、機(jī)械設(shè)備和工業(yè)生產(chǎn)中。在選擇和使用加熱管時(shí),我們需要了解其電阻值
    的頭像 發(fā)表于 12-20 17:21 ?4431次閱讀

    無線通信:怎樣用電磁波表示1和0

    為什么頻率越高,能攜帶的信息就越多?以數(shù)字信號為例,信息就是一串串的1和0,所以先搞清楚怎樣用電磁波表示1和0。
    發(fā)表于 12-05 14:44 ?1605次閱讀
    無線通信:<b class='flag-5'>怎樣用</b>電磁波表示1和0

    怎樣用ADAU1761設(shè)計(jì)DRC的壓縮/擴(kuò)展?

    請問怎樣用ADAU1761設(shè)計(jì)DRC的壓縮/擴(kuò)展。我在SigmaStudio 4.5的模塊中只找到RMS。如果ADAU1761設(shè)計(jì)DRC要怎樣
    發(fā)表于 11-28 06:41

    怎樣用32單片機(jī)測電壓?

    怎樣用32單片機(jī)測電壓
    發(fā)表于 10-31 07:09

    Arduino制作雕刻機(jī)時(shí)哪個(gè)pin來控制激光器開關(guān)?

    Arduino制作雕刻機(jī)是哪個(gè)pin來控制激光器的開關(guān)? Limit Z_Axis 還是 SPINDLE_ENABLE 好像要交換一下.
    發(fā)表于 10-27 07:52