Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Нагреватель воды ====== ===== Описание ===== Не секрет что каждое лето происходит отключение горячего водоснабжения. Каждому приходится что-то придумывать, чтобы помыться. Самый простой способ, вскипятить воду в чайнике или кастрюле, разбавить её в большой ёмкости и помыться. Однако, мы лёгких путей не ищем, и подумали что можно сделать нечто более удобное. Например, купить кипятильник и нагревать воду в большой ёмкости до нужной температуры. Далее можно помыться из ковша или приобрести садовый душ, который будет насосом забирать воду из ёмкости и лейкой мыть своего владельца. Итак, для этого нам понадобится термометр, а так как мы его будем опускать в воду, нужно чтобы он был герметичным. Далее, хотелось бы вывести температуру на дисплей, чтобы видеть какая текущая температура воды. Скорее всего сразу определить комфортную температуру будет сложно, да и погода разная за окном. В жару хочется воду немного похолоднее, а когда холодно - потеплее. Поэтому регулировать уровень нагрева воды будем с помощью потенциометра. Ну и наконец, добавим зуммер ко всему, он будет в качестве сигнального устройства, показывать что уже пора выключать кипятильник - вода достигла нужной температуры. ===== Шаг 1. Что понадобится ===== ^ Что нужно ^ Количество ^ | [[httpss://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер ]] | 1 | | [[httpss://smartelements.ru/collection/shildy/product/sensor-shield|Sensor shield]] | 1 | | [[httpss://smartelements.ru/collection/datchiki-i-sensory/product/datchik-temperatury-ds18b20-germetichnyy-2-m|Герметичный датчик 2м]] | 1 | | [[httpss://smartelements.ru/collection/datchiki-i-sensory/product/modul-dlya-germetichnogo-datchika-temperatury|Модуль для удобного подключения датчика]] | 1 | | [[httpss://smartelements.ru/collection/moduli/product/modul-potentsiometra|Модуль потенциометра]] | 1 | | [[httpss://smartelements.ru/collection/moduli/product/modul-zummera-2|Модуль зуммера]] | 1 | | [[httpss://smartelements.ru/collection/displei-i-indikatory/product/oled-displey-096-i2c|LED-Дисплей]] | 1 | | [[httpss://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h4-20-sm|Шлейф х4]] | 1 | | [[httpss://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h3-20-sm|Шлейф х3]] | 3 | ===== Шаг 2. Схема сборки ===== {{ :main:projects:heater.png?nolink |}} ===== Шаг 3. Скетч ===== Загрузите скетч на контроллер: <file Arduino> #include <OLED_I2C.h> //подключение библиотеки для работы с дисплеем #include <OneWire.h> //подключение библиотеки OneWire #include <DallasTemperature.h> //подключение библиотеки для работы с датчиком #define ONE_WIRE_BUS 10 //шина передачи данных const int PIN_POT = A0; //пин подключения модуля потенциометра const int PIN_BUZ = 9; //пин подключения зуммера int temperature = 0; //переменная для хранения требуемой температуры boolean inverter = false; //переменная для сигнализации о температуре OneWire oneWire(ONE_WIRE_BUS); //создание объекта oneWire для передачи данных по технологии OneWire DallasTemperature sensors(&oneWire); //создание объектов типа DallasTemperature дял измерения температуры OLED myOLED(SDA, SCL, 8); //инициализация дисплея extern uint8_t RusFont[]; //русский шрифт extern uint8_t BigNumbers[]; //средние цифры void setup() { sensors.begin(); //инициализация датчика(ков) myOLED.begin(); //запуск дисплея pinMode(PIN_BUZ, OUTPUT); //установка вывода зуммера как выходной } void loop() { temperature = map(analogRead(PIN_POT), 0, 1024, 15, 50); //определить требуемую температуру sensors.requestTemperatures(); //запрос температуры устройств float currentTemp = sensors.getTempCByIndex(0); //получить температуру с первого датчика if (currentTemp > temperature) { //если температура датчика больше ожидаемой myOLED.invert(inverter); //поморгать дисплеем if (inverter) { //если сейчас нужно посигналить tone(PIN_BUZ, 294, 400); //подать сигнал } inverter = !inverter; //инвертировать переменную } myOLED.clrScr(); //очистка дисплея myOLED.setFont(RusFont); //установить шрифт myOLED.print("NTR NTVGTHFNEHF", CENTER, 0); //вывести надпись "ТЕМПЕРАТУРА" myOLED.setFont(BigNumbers); //установить шрифт myOLED.print(String(currentTemp), CENTER, 9); //вывести текущую температуру myOLED.setFont(RusFont); //установить шрифт myOLED.print("uhflecjd Wtkmcbz", CENTER, 40); //вывести надпись "градусов Цельсия" myOLED.setFont(RusFont); //установить шрифт String waitingTemp = "j;blftv " + String(temperature); //сформировать надпись "ожидаем Х" myOLED.print(waitingTemp, CENTER, 55); //вывести надпись myOLED.update(); //обновить дисплей установленными настройками и надписями } </file> ===== Шаг 4. Готовое устройство ===== После того как скетч загружен, проведите несколько тестов, не погружая датчик в воду, а нагревая его руками. После успешных тестов, устройство можно поместить в корпус. Можно оставить как макет и собирать его только на время отключения воды.