引言
该设备旨在确定远处的温度。 由于我没有找到所需的组装该设备的现成说明,并且我并不是真的想花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)。
最终产品的照片:
