arduino上的自主设备,指示温度升高(降低)

引言


该设备旨在确定远处的温度。 由于我没有找到所需的组装该设备的现成说明,并且我并不是真的想花2千多美元购买它,因此决定在arduino上进行所有操作(既不昂贵也不困难)。

组装说明


要构建项目,我们需要:

  • DS18B20温度传感器1米。 (密封)
  • 屏幕0.96 128x64 OLED
  • 面包板
  • 爸爸爸爸电线套装
  • 单片机Arduino Uno
  • 电阻器

要实现该项目,我们需要一次安装arduino IDE和几个库:

  • OneWire Arduino库
  • OLED I2C_OLED_I2C,支持俄语和乌克兰语。
  • 达拉斯温度

让我们谈谈面包板。 该面包板用于电路的快速组装,而无需焊接和放射性元素以及用于连接的电线。 开发板尺寸不同,但在大多数情况下,它们由以下相同的模块组成:

图片

插座的电气连接图如右图所示:每排(在本例中为30个)每侧的五个孔相互电连接。 左右两侧有两条电源线:此处,列中的所有孔都是互连的。 中间的插槽设计用于安装和方便提取微电路。 为了组装电路,将无线电组件和跳线插入孔中。

找到面包板后,我们现在可以继续连接模块了。 首先,如下连接显示器:

图片

图片

在这种情况下,我们将5V连接到试验板上的“ +”(黄线),将GND连接到“-”(白色线),因此以后,模块上的所有电源都应连接到试验板上的“ +”和“-”。

接下来,使用电阻器连接DS18B20温度传感器,如下图所示:

图片

图片

在本例中,为方便起见,我们将所有传感器线连接到了面包板上,并将橙色的“爸爸到爸爸”电缆连接到了引脚10。

完成了一半的工作,仅连接信号设备即:x2 LED(红色表示高温,蓝色表示低温)和常规的压电发射器(通常称为“高音扬声器”)。 LED的连接非常简单,“ +”是长杆,而减号是短杆。 我们将其插入电路板,请确保在其上连接电阻,并使用“ Dad-dad”电线将蓝色LED的短杆连接到5针,将红色LED的短杆连接到12针。

尖叫者只需将黑线连接到“-”,红线连接到13pin。

这应该是这样的:

图片

最重要的事情(草图)


#include <Wire.h> #include <Wire.h> #include <OneWire.h> #include <DallasTemperature.h> //   DS18B20 #define ONE_WIRE_BUS 10 // pin    DS18B20 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); #include <OLED_I2C.h> OLED myOLED(8, 9, 8); //  , 8 pin-SDA, 9pin-SCL extern uint8_t RusFont[]; //   extern uint8_t BigNumbers[]; //   extern uint8_t SmallFont[]; //   void setup() { pinMode(13, OUTPUT); //  pin 13   pinMode(12, OUTPUT);//  pin 12   pinMode(5, OUTPUT); //  pin 5   sensors.begin();//   myOLED.begin();//   myOLED.setFont(RusFont); } void loop() { if (sensors.getTempCByIndex(0)>70){ //  (  >70     ) digitalWrite(5,255);//   tone(13, 2500); //   2500  delay(400);//  0.4  digitalWrite(5,LOW);//   } else{ digitalWrite(5,LOW); } if (sensors.getTempCByIndex(0)<25){ //  (  <45     ) digitalWrite(12,255); //   tone(13, 2500); //   2500  delay(400); //  0.4  digitalWrite(12,LOW); //   } else{ digitalWrite(12,LOW); } if ((sensors.getTempCByIndex(0)<70) and (sensors.getTempCByIndex(0)>45)){ noTone(13); //   } sensors.requestTemperatures(); myOLED.clrScr(); //   myOLED.setFont(RusFont); myOLED.print("Ntvgthfnehf", CENTER, 0); //     myOLED.setFont(SmallFont); myOLED.print("vk.com/tupo_izi123", CENTER, 55); //   myOLED.setFont(BigNumbers); myOLED.print(String(sensors.getTempCByIndex(0) , 1), CENTER, 10); //   ,     myOLED.update(); delay(100); } 

在此草图中,我将温度设置为高于70且低于45度,但您可以设置其他任何温度(从-55到+125°C)。

最终产品的照片:

图片

Source: https://habr.com/ru/post/zh-CN476900/


All Articles