Оглавление:
Видео: Birra_Monitor: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Разработан для того, чтобы подавать мониторинг ферментации делла бирра фатта в простом сенсорном вибрационе (SW-420 NC). l'aggiunta del sensore di temperatura (DHT22) служит для контроля температуры и umidità della stanza atta alla fermentazione. Эти данные используются для узлов и визуализируют маршруты приложения Blynk, связанные с подключенными решениями IoT.
В проекте используется для контроля брожения домашнего пива с помощью простого датчика вибрации (SW-420 NC). Дополнительный датчик температуры (DHT22) служит для контроля температуры и влажности в помещении, пригодном для ферментации. Эти данные управляются картой nodemcu и визуализируются через приложение Blynk, предназначенное для разработки решений IoT.
Шаг 1: упаковка
Scheda e sensori sono alloggiate in una semplice scatola di производная.
Плата и датчики размещены в простой распределительной коробке.
Шаг 2: датчик в действии
quello che successde quando il sensore è "montato" sul gorgogliatore, che ad ogni espulsione di CO2 il sensore registrerà delle vibrazioni, che verranno visualizzate sull'app Blynk
что происходит, когда датчик "установлен" на барботере, что каждый раз, когда CO2 удаляется, датчик будет записывать вибрации, которые будут отображаться в приложении Blynk
Шаг 3: Код
Код, позволяющий разрешить все функции всего этого, следует, что вы используете программное обеспечение Arduino IDE.
код, обеспечивающий функционирование всего, следующий, которого будет достаточно для загрузки на карту программного обеспечения Arduino IDE
#include Adafruit_Sensor.h
#include DHT.h
#define BLYNK_PRINT Serial
#include ESP8266WiFi.h;
#include BlynkSimpleEsp8266.h;
#include SimpleTimer.h;
#include WidgetRTC.h;
флоат-леттура [50]; // размерность Arrayper media
int nume_Letture = 0; // progressivo letture
float tot_Letture = 0; // somma letture
float media_Letture = 0; // СМИ
int contextggio = 0; // variabile di contextio primario
// inizio dichiarazioni variabili для континуума среды
int я = 0;
int cc = 0;
int togli = 0;
// fine dichiarazioni variabili per media континуум
int val; // variabile registrazione vibrazione
int vibr_pin = 5; // Piedino x Sensore di Vibrazione D1
int vb = 0; // Inizializzo vb a 0
int vbr = 0; // Inizializzo vb a 0
int vbinit = 0; // Inizializzo vbinit a 0
беззнаковое длинное прима = 0; // полезность на своп мин. / макс.
long Tempmax = 660000; // полезность на своп мин. / макс.
float tmax = -100; // Impostazione Impossibile per la temperatura massima
float tmin = 100; // невозможность установки при минимальных температурах
поплавок umax = 0; // Impostazione Impossibile per umidità massima
поплавок umin = 100; // импостазион невозможен при минимальном значении
String maxt; // stringa visualizzata su Blynk
Струнная мята; // stringa visualizzata su Blynk
String maxu; // stringa visualizzata su Blynk
String minu; // stringa visualizzata su Blynk
char auth = «a °°°°°°°°°°°° d»; // токен Blynk
char ssid = "Т °°°°°°°°°°°° 9"; //вай фай
char pass = «O °°°°°°°°°°° R»; // psw
#define DHTPIN 2 // контактный датчик DHT
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
Таймер SimpleTimer; // таймер
WidgetRTC rtc; // orologio di sistema Blynk
WidgetLED led1 (V15); // Светодиод Blynk sul pin V15
BLYNK_CONNECTED () {
rtc.begin (); // avvio RTC
}
BLYNK_WRITE (V0) // подпрограмма для сброса настроек на Blynk
{
int attiva = param.asInt ();
if (attiva == 1) {
tmax = -100;
tmin = 100;
umax = 0;
umin = 100;
maxt = "------------";
мята = "------------";
maxu = "------------";
minu = "------------";
media_Letture = 0;
tot_Letture = 0;
nume_Letture = 0;
contextgio = 0;
cc = 0;
Serial.println (контекст);
Blynk.virtualWrite (V8, media_Letture);
Blynk.virtualWrite (V10, maxt);
Blynk.virtualWrite (V11, мята);
Blynk.virtualWrite (V12, maxu);
Blynk.virtualWrite (V13, minu);
Blynk.virtualWrite (V1, context);
Serial.println («Resetta»);
задержка (200);
Blynk.virtualWrite (V0, LOW);
}
}
void sendSensor () // нормальная процедура письма
{
Строка currentTime = Строка (час ()) + «:» + минута ();
Строка currentDate = Строка (день ()) + «/» + месяц ();
float h = dht.readHumidity ();
float t = dht.readTemperature ();
if (isnan (h) || isnan (t)) {
Serial.println («Не удалось прочитать с датчика DHT!»);
led1.on ();
возвращение;
}
еще {
led1.off ();
}
if (t> tmax) {
tmax = t;
maxt = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
if (t <tmin) {
tmin = t;
mint = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
if (h> umax) {
umax = h;
maxu = String (h) + "% (" + currentTime + "-" + currentDate + ")";
}
if (h <umin) {
umin = h;
minu = String (h) + "% (" + currentTime + "-" + currentDate + ")";
}
Blynk.virtualWrite (V5, h);
Blynk.virtualWrite (V6, t);
Blynk.virtualWrite (V7, vb);
Blynk.virtualWrite (V10, maxt);
Blynk.virtualWrite (V11, мята);
Blynk.virtualWrite (V12, maxu);
Blynk.virtualWrite (V13, minu);
}
void calcolo_media () // процедура для регистрации данных носителя
{
lettura [nume_Letture] = dht.readTemperature ();
if (isnan (lettura [nume_Letture])) {
led1.on ();
возвращение;
}
// procdura media circolare
if (nume_Letture> = 48) {
togli = nume_Letture-48;
tot_Letture - = (lettura [togli]);
tot_Letture + = (lettura [nume_Letture]);
nume_Letture = 0; // установить ноль и принять все
cc = 1; // Identifica primo passaggio dopo 48 letture (24ore)
}
if (cc == 1) {
contextgio = 48; // DOPO le prime 24ore делит число на 24ore (48 месяцев)
}
еще{
// media prima dello scadere delle 24ore
tot_Letture + = (lettura [nume_Letture]);
contextggio = contextgio + 1;
}
media_Letture = Tot_Letture / context;
nume_Letture = числовой_Letture + 1;
Blynk.virtualWrite (V8, media_Letture);
Blynk.virtualWrite (V1, context);
}
установка void ()
{
Serial.begin (115200);
Blynk.begin (auth, ssid, pass);
dht.begin ();
timer.setInterval (10000, sendSensor); // lettura temperatura umidità ogni 5 мин.
timer.setInterval (1800000, calcolo_media); // lettura e media ogni 30 мин.
}
пустой цикл ()
{
Blynk.run ();
timer.run ();
long adesso = millis ();
val = digitalRead (vibr_pin);
vb = vb + val;
если (adesso - prima> = Tempmax)
{
vb = 0;
vbinit = vb;
prima = adesso;
}
Рекомендуемые:
Распознавание лиц на Raspberry Pi 4B за 3 шага: 3 шага
Обнаружение лиц на Raspberry Pi 4B за 3 шага: в этом руководстве мы собираемся выполнить обнаружение лиц на Raspberry Pi 4 с помощью Shunya O / S, используя библиотеку Shunyaface. Shunyaface - это библиотека распознавания / обнаружения лиц. Проект направлен на достижение максимальной скорости обнаружения и распознавания с помощью
Как установить плагины в WordPress за 3 шага: 3 шага
Как установить плагины в WordPress за 3 шага: в этом уроке я покажу вам основные шаги по установке плагина wordpress на ваш сайт. В основном вы можете установить плагины двумя разными способами. Первый способ - через ftp или через cpanel. Но я не буду перечислять это, потому что он действительно комп
Прямая трансляция HD-видео 4G / 5G с дрона DJI с малой задержкой [3 шага]: 3 шага
Прямая трансляция HD-видео 4G / 5G с дрона DJI с малой задержкой [3 шага]: следующее руководство поможет вам получать прямые видеопотоки HD-качества практически с любого дрона DJI. С помощью мобильного приложения FlytOS и веб-приложения FlytNow вы можете начать потоковую передачу видео с дрона
Протез руки, напечатанный на 3D-принтере за 4 шага !: 4 шага
Протез руки, напечатанный на 3D-принтере за 4 шага !: Этот проект - протез руки, напечатанный мной, я хочу получить больше знаний о протезировании и 3D-печати. Хотя это не лучший проект, это отличный способ получить практический опыт и научиться создавать
Интерфейс сенсора ADXL335 на Raspberry Pi 4B в 4 шага: 4 шага
Интерфейс датчика ADXL335 на Raspberry Pi 4B за 4 шага: в этом руководстве мы собираемся связать датчик ADXL335 (акселерометр) на Raspberry Pi 4 с Shunya O / S