一板网电子技术论坛

风筝
发表于: 2019-1-12 22:14:32 | 显示全部楼层

在本篇文章中,我们将使用RGB全彩LED灯、环境光传感器和Arduino Nano开发板,使用彩色光发送信息或发出警报。在本篇文章结束时,您可以学到:

●    通过Arduino开发板读取DS18B20传感器的环境温度。

●    通过PWM控制RGB LED。

●    制作一个很酷的智能马克杯。

1.jpg


DS18B20简短说明

DS18B20数字温度计提供9位至12位摄氏温度测量,并具有报警功能,具有非易失性用户可编程的上下触发点。 DS18B20通过1-Wire总线进行通信,根据定义,只需要一条数据线用于与中央微处理器通信。

此外,DS18B20可以直接从数据线获得电源(“寄生电源”),无需外部电源。

每个DS18B20都有一个唯一的64位串行代码,允许多个DS18B20在同一条1-Wire总线上运行。因此,使用一个微处理器控制分布在大面积上的几个DS18B20很容易实现。可以从此功能中受益的应用包括HVAC环境控制、建筑物内部的温度监控系统、设备或机器,以及过程监控和控制系统。

161-2.jpg


关于将技术与生活相结合,使用彩色光是惊人的和有吸引力的。用显示器替换RGB LED以发送消息或警报可以使项目更美观,也更简单。


在本篇文章中,我们想制作一个智能的马克杯,这样你就可以向你展示咖啡或饮料的温度,并在它准备好饮用时发出警报。作为热电堆,我们将使用DS18B20并将其粘在杯子的底部。它可以将数字数据中的杯子中的液体温度发送到控制器。 Arduino Nano是我们选择的控制器,因为它体积小巧,板载迷你USB连接器。因此,它可以编程,电池可以通过USB端口充电。为了显示温度,我们使用2个简单的4针RGB LED,并将它们连接到Arduino Nano中的独立PWM单元。现在,我们只需要一个电池、一个杯子和一个塑料外壳来放入组件。让我们来做吧。


所需的组件

●    Arduino Nano开发板

●    DS18B20温度传感器

●    RGB 5mm LED灯

●    LiPo电池

●    带状电缆

2-1.jpg


电路连接

3-1.jpg

电池尺寸取决于LED和杯子尺寸。 500mAh电池是一个不错的选择。您可以使用聚合物或离子电池。


这里使用的LED属于共阴极。如果您使用的是共阳极的LED灯,则必须对代码进行少量更改。


如果你的LED在没有电阻的情况下无法工作,你有两种方法。添加电阻或添加更多LED。


您应该将DS18b20的电压和数据引脚之间连接一个4.7K欧姆的电阻。虽然可能没有必要。


代码

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

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

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

●    导航到草图并包含库。现在单击添加ZIP库并添加库

●    在tools and boards菜单中选择您使用的Arduino电路板。

●    将Arduino连接到PC,然后在tools and port中设置COM端口。

●    按上传(箭头符号)按钮。

●    现在都准备好了!

  1. /********************************************************************/
  2. // First we include the libraries
  3. #include "OneWire.h"
  4. #include "DallasTemperature.h"
  5. /********************************************************************/
  6. // Data wire is plugged into pin 2 on the Arduino
  7. #define ONE_WIRE_BUS 2
  8. /********************************************************************/
  9. // Setup a oneWire instance to communicate with any OneWire devices  
  10. // (not just Maxim/Dallas temperature ICs)
  11. OneWire oneWire(ONE_WIRE_BUS);
  12. /********************************************************************/
  13. // Pass our oneWire reference to Dallas Temperature.
  14. DallasTemperature sensors(&oneWire);
  15. /********************************************************************/
  16. float temp;
  17. void setup(void)
  18. {
  19. // start serial port
  20. Serial.begin(9600);
  21. Serial.println("Dallas Temperature IC Control Library Demo");
  22. // Start up the library
  23. sensors.begin();
  24. }
  25. void loop(void)
  26. {

  27. // call sensors.requestTemperatures() to issue a global temperature
  28. // request to all devices on the bus
  29. /********************************************************************/
  30. Serial.print(" Requesting temperatures...");
  31. sensors.requestTemperatures(); // Send the command to get temperature readings
  32. Serial.println("DONE");
  33. /********************************************************************/
  34. Serial.print("Temperature is: ");
  35. Serial.print(sensors.getTempCByIndex(0));temp= sensors.getTempCByIndex(0); Serial.print("  "); Serial.println(temp);// Why "byIndex"?
  36.    // You can have more than one DS18B20 on the same bus.  
  37.    // 0 refers to the first IC on the wire
  38. if (analogRead(A0)>100)
  39. {   if (temp>50)
  40.    temp=100;
  41.    if (temp<30) temp=0; temp=(12.5)*(temp-30); Serial.println(temp); if (temp>255)
  42.    temp=255;
  43.    if (temp<0)
  44.    temp=0;
  45. analogWrite(6,temp);
  46. analogWrite(9,temp);
  47. analogWrite(3,255-temp);
  48. analogWrite(11,255-temp);}
  49. else
  50. {analogWrite(6,0);
  51. analogWrite(9,0);
  52. analogWrite(3,0);
  53. analogWrite(11,0);}
  54.    delay(100);
  55. }
复制代码

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

  1. if (temp>50)
  2.    temp=100;
  3.    if (temp<30)
  4.    temp=0;
  5.    temp=(12.5)*(temp-30);
复制代码

组装

a5.jpg

首先,你必须在杯子的底部钻孔。孔的数量取决于电路以及如何实现它。我们为这个项目设计了3个孔。一个用于温度计,两个用于连接螺丝(电极)和杯子内的液体。你可以在不穿透马克杯的情况下完成这个项目。将温度计打到杯子底部,将电极的2根线连接到开关。


在安装温度计和电极并密封它们之后,是时候为杯子的底部制作一个框架。使用胶水密封玻璃,不能用热水或冷水解决。


制作杯子底部的外壳。你必须首先测量杯子的外径。然后设计一个与杯子底部尺寸完全相同的圆圈,以及两个外径为3毫米的环(当然还有杯子底部的直径)。


您可以使用有机玻璃和激光切割机来制作规定的外壳。其中一个环必须是透明的,您可以根据需要选择其余环的颜色。你应该打磨透明环,以达到哑光效果。如图所示粘贴它们。


现在将电池粘到外壳上并将其引脚连接到Arduino。将透明环的一部分切割为与Arduino micro USB端口一样多,并将Arduino连接到电池,使连接器从环中脱落。现在将LED焊接到Arduino并将其他电线连接到Arduino。最后,将shell粘贴到杯子的底部,然后将代码上传到Arduino。


接下来该做什么

现在,通过在代码中添加新功能来改进智能马克杯。例如,当咖啡处于所需温度且已准备好饮用时,您可以添加一些代码来警告您。您可以点亮绿色LED指示灯以进行提示。

接下来,您可以在杯子的底部添加加热器元素并编写一些代码以停止降低饮料的温度。

跳转到指定楼层
azi1974
发表于: 2019-5-12 02:32:33 | 显示全部楼层

这个创意很不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 574 | 回复: 1152



手机版|

GMT+8, 2021-9-26 14:14 , Processed in 0.034408 second(s), 4 queries , MemCache On. Powered by Discuz! X3.4

YiBoard一板网 © 2015-2021 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表