0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用LED和Arduino制作智能马克杯

454398 来源:工程师吴畏 2019-08-05 11:33 次阅读

关于DS18B20的简短说明

DS18B20数字温度计提供9位到12位位摄氏温度测量并具有报警功能,具有非易失性用户可编程的上下触发点。 DS18B20通过1-Wire总线进行通信,根据定义,它只需要一条数据线(和地)与中央微处理器进行通信。此外,DS18B20可以直接从数据线获得电源(“寄生电源”),从而消除了需要外部电源。每个DS18B20都有一个独特的64位串行代码,允许多个DS18B20在同一条1-Wire总线上运行。因此,使用一个微处理器控制分布在大面积上的几个DS18B20很简单。可以从此功能中受益的应用包括HVAC环境控制,建筑物内部的温度监控系统,设备或机器,以及过程监控和控制系统

关于将技术与生活相结合,使用彩色灯光令人惊叹且极具吸引力用显示器代替RGB LED发送信息或报警可以使项目更美观,也更简单。在这个项目中,我们想让杯子变得聪明,这样你就可以向你展示咖啡或软饮料的温度并报警它已经准备好了。作为热电堆,我们将使用DS18B20并将其粘在杯子的底部。它可以将数字数据中的杯子中的液体温度发送到控制器Arduino Nano因其小巧的尺寸和板载迷你USB连接器而成为我们的控制器选择。因此,它可以编程,电池可以通过USB端口充电。为了显示温度,我们使用2个简单的4针RGB LED,并将它们连接到Arduino Nano中的独立PWM单元。现在,我们只需要一个电池,一个杯子和一个塑料外壳来放入组件。让我们这样做。

必需材料

此项目中使用的所有组件均可通过提供的链接购买。

电路

电池尺寸取决于LED和电池尺寸。 500mAh电池是一个不错的选择。您可以使用聚合物或离子电池。这里使用的LED具有共同的阴极。如果您有共同的阳极,则必须对代码进行少量更改。如果您的LED在没有电阻器的情况下无法工作,您有两种方法。添加电阻或添加更多LED。您应该将DS18b20的电压和数据引脚连接到4.7K欧姆电阻。虽然可能没有必要。

代码

您应该在Arduino IDE中复制以下代码。但首先您必须添加库然后上传代码。从附件下载“One Wire”和“Dallas”库。如果这是您第一次运行Arduino板,请不要担心。只需按照以下步骤操作:

访问www.arduino.cc/en/Main/Software下载您的操作系统软件。按照说明安装IDE软件。

运行Arduino IDE并清除文本编辑器并在文本编辑器中复制以下代码。

导航到草图并包含库(从以下链接下载库)。现在单击添加ZIP库并添加库

选择工具和板中的板,选择Arduino Nano。

将Arduino连接到PC并设置工具和端口中的COM端口。

按上传(箭头标志)按钮。

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

// 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);

}

以下代码行属于颜色计算,这取决于你的杯子。如果你的杯子没有足够快地传递热量,你应该改变它以达到预期的效果。

if (temp》50)

temp=100;

if (temp《30)

temp=0;

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

组装

最初,您必须钻一下杯子的底部。孔的数量取决于电路以及如何实现它。我们考虑过这个项目的3个洞。一个用于温度计,两个用于连接螺丝(电极)和杯子内的液体。你可以在不刺穿马克杯的情况下完成这个项目。将温度计滴在马克杯的底部,将电极的2根线连接到开/关开关。安装温度计和电极并密封后,是时候为马克杯的底部做一个框架了。使用胶水密封玻璃,这将不会被热水或冷水解决。要制作杯子底部的外壳。你必须首先测量杯子的外径。然后设计一个与杯子底部尺寸完全相同的圆圈,以及两个外径为3毫米的环(当然还有杯子底部的直径)。你可以使用有机玻璃和一个激光切割机制作规定的外壳。其中一个戒指必须是透明的,你可以根据自己的意愿选择其他戒指的颜色。你应该打磨透明戒指,以达到哑光效果。如图所示粘贴它们。现在将电池粘到外壳上并将其引脚连接到Arduino。将透明环的一部分切割为与Arduino micro USB端口一样多,并将Arduino连接到电池,使连接器从环中掉出。现在将LED焊接到Arduino并将其他电线连接到Arduino。最后,将shell粘贴到马克杯的底部,然后将代码上传到Arduino。

下一步是什么?

现在,通过在代码中添加新功能来改进智能手机。例如,当咖啡达到所需温度并且可以饮用时,您可以添加一些线来警告您。您可以点亮绿色LED以进行报警。在下一步中,您可以在杯子的底部添加一个加热器元件并写下一些代码来停止降低饮料的温度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    240

    文章

    23091

    浏览量

    657467
  • DS18B20
    +关注

    关注

    10

    文章

    778

    浏览量

    80651
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186544
收藏 人收藏

    评论

    相关推荐

    怎样用THS3201实现输出功率可调?

    怎样用THS3201实现输出功率可调?
    发表于 08-26 08:28

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

    当输入信号VG1从7.06V慢慢变化到7.22V时。 输出电压Vout的变化必须是接近线性变化的。我想知道我该怎样用TINA TI去仿真?怎样设置那个输入信号VG1才能达到我的目的。因为这个电压源好像
    发表于 08-02 08:39

    怎样用Arduino测试锂电池容量

    本文详细介绍了如何用Arduino测量锂电池的容量。并附有电路图和Arduino的程序代码。
    的头像 发表于 07-30 09:14 679次阅读
    <b class='flag-5'>怎样用</b><b class='flag-5'>Arduino</b>测试锂电池容量

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino的库?

    在esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,怎样使用
    发表于 06-12 07:21

    怎样用STM8L的PB3/TIM2_TRIG的引脚测量脉宽?

    怎样用STM8L的PB3/TIM2_TRIG的引脚测量脉宽?
    发表于 05-07 06:55

    stm32f100怎样用重映射功能?

    的是stm32f100c8t6b芯片,现在想用将PB1映射为TIM1_CH3N,在调用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM1)时, GPIO_PinAFConfig和GPIO_AF_TIM1都没定义,stm32f100
    发表于 05-07 06:06

    STM32F412G-DISCO怎样用MX生成fatfs的代码?

    STM32F412G-DISCO怎样用MX生成fatfs的代码? SD卡例程能跑,但mx生成的代码不能正常运行,我生成代码后是不是还要配置一些东西?(我生成后只写了测试代码) 问题解决了,虽然我不知道我为什么不能直接使用mx生成的代码去操作sd卡,但我通过复制粘贴例程的代码完成了测试。
    发表于 03-12 08:15

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

    在这个项目中,我将向您展示如何使用Arduino制作智能垃圾箱,当您带着垃圾接近时,垃圾箱的盖子会自动打开。
    的头像 发表于 02-11 12:22 2805次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b><b class='flag-5'>智能</b>垃圾箱

    使用Arduino Nano制作一个4×4×4 LED立方体

    在这个项目中,我们将使用 Arduino Nano 制作一个很酷的 4×4×4 LED立方体。LED 立方体,也称为 LED矩阵,可以照亮您
    的头像 发表于 02-11 12:07 3013次阅读
    使用<b class='flag-5'>Arduino</b> Nano<b class='flag-5'>制作</b>一个4×4×4 <b class='flag-5'>LED</b>立方体

    如何使用Arduino控制RGB LED

    在本指南中,您将学习如何使用Arduino控制RGB LED。RGB(红-绿-蓝)LED可以通过混合不同强度的红、绿、蓝光来产生多种颜色。您将学习创建一个基本Arduino RGB
    的头像 发表于 02-11 10:28 4455次阅读
    如何使用<b class='flag-5'>Arduino</b>控制RGB <b class='flag-5'>LED</b>

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 4次下载

    怎样用表来判断加热管的好坏?

    怎样用表来判断加热管的好坏? 万表是电工常用的测量仪器,它可以用来判断加热管的好坏。加热管是一种常见的加热元件,广泛应用于家电、机械设备和工业生产中。在选择和使用加热管时,我们需要了解其电阻值
    的头像 发表于 12-20 17:21 4858次阅读

    无线通信:怎样用电磁波表示1和0

    为什么频率越高,能携带的信息就越多?以数字信号为例,信息就是一串串的1和0,所以先搞清楚怎样用电磁波表示1和0。
    发表于 12-05 14:44 1707次阅读
    无线通信:<b class='flag-5'>怎样用</b>电磁波表示1和0

    ADAU1452做FFT分析,怎样设定取样点的数量?

    请问,我想用ADAU1452做FFT分析,怎样设定取样点的数量,还有就是怎样用单片机读出分析得到的复数结果数组?谢谢!
    发表于 11-29 06:42

    怎样用ADAU1761设计DRC的压缩/扩展?

    请问怎样用ADAU1761设计DRC的压缩/扩展。我在SigmaStudio 4.5的模块中只找到RMS。如果ADAU1761设计DRC要怎样
    发表于 11-28 06:41