sensor control — контроль датчиков
- Войдите на сайт для отправки комментариев
Пнд, 28/06/2021 - 22:10
Не судите строго (особенно за грамматические ошибки в программе) слепил это все сегодня за день. просто пришла в голову мыслЯ и я её реализовал...
Смысл идеи в том, что иногда возникает необходимость дистанционно контролировать несколько каналов информации, несколько датчиков. По моему наиболее часто встречаются различные погодные, огородные, инкубаторные и тому подобные конструкции. Поэтому я выбрал для реализации три вида датчиков температура, давление, влажность. Естественно в программе каждый может прописать свои функции для своих датчиков это не сложно. Эти виды датчиков я выбрал просто для удобства описания функционала. Собственно сама программа для МК выглядит так.
byte DatCn[6]={0, 0, 0, 0, 0, 0}; String stringSENS = ""; String stringCHNL = ""; String string0 = ""; byte chen = 0; byte datTyp; String string1 = ""; byte sens_1 = 0; String string2 = ""; byte sens_2 = 0; String string3 = ""; byte sens_3 = 0; String string4 = ""; byte sens_4 = 0; String string5 = ""; byte sens_5 = 0; String string6 = ""; byte sens_6 = 0; // **************************************************** void setup() { Serial.begin(9600); } // **************************************************** void loop() { if ((sens_1 + sens_2 + sens_3 + sens_4 + sens_5 + sens_6) == 0) { clabel: byte l_str = 0; stringSENS = ""; stringSENS = Serial.readString(); l_str = stringSENS.length(); if (l_str == 0) { goto clabel; } string1 = stringSENS.substring(2, 4); sens_1 = string1.toInt(); DatCn[0] = sens_1; string2 = stringSENS.substring(5, 7); sens_2 = string2.toInt(); DatCn[1] = sens_2; string3 = stringSENS.substring(8, 10); sens_3 = string3.toInt(); DatCn[2] = sens_3; string4 = stringSENS.substring(11, 13); sens_4 = string4.toInt(); DatCn[3] = sens_4; string5 = stringSENS.substring(14, 16); sens_5 = string5.toInt(); DatCn[4] = sens_5; string6 = stringSENS.substring(17, 19); sens_6 = string6.toInt(); DatCn[5] = sens_6; } if ((sens_1 + sens_2 + sens_3 + sens_4 + sens_5 + sens_6) != 0) { slabel: byte l_str = 0; stringCHNL = ""; stringCHNL = Serial.readString(); l_str = stringCHNL.length(); if (l_str == 0) { goto slabel; } string0 = stringCHNL.substring(2, 3); chen = string0.toInt(); datTyp = DatCn[chen-1]; if(chen < 7 && datTyp == 1) tempr(); if(chen < 7 && datTyp == 2) press(); if(chen < 7 && datTyp == 3) humid(); if(chen < 7 && datTyp == 0) nodat(); if(chen < 7 && datTyp > 3) nochn(); } } // **************************************************** void nochn() { Serial.print("channel "); Serial.print(chen); Serial.println(" this channel is not available"); } // **************************************************** void nodat() { Serial.print("sensor in channel "); Serial.print(chen); Serial.println(" is not installed "); } // **************************************************** void tempr() { double Dtemp = ((analogRead(chen-1)/204.9)*36.09)/9.79; Serial.print("temperature sensor in channel "); Serial.print(chen); Serial.print(" information "); Serial.print(Dtemp, 2); Serial.println(" grC"); } // **************************************************** void press() { double Dpres = analogRead(chen-1)/4.25; Serial.print("pressure sensor in channel "); Serial.print(chen); Serial.print(" information "); Serial.print(Dpres, 2); Serial.println(" mm Hg"); } // **************************************************** void humid() { double Dhumd = analogRead(chen-1)/211.85; Serial.print("humidity sensor in channel "); Serial.print(chen); Serial.print(" information "); Serial.print(Dhumd, 2); Serial.println(" RH"); } // ****************************************************
Останавливаться на ней я не буду так как там все без заморочек и разбито по блокам.
В конце поста будет ссылка на программы и там вариант будет с комментариями.
Контроль работы датчиков выполняет андроид программа на смартфоне. В этой программе можно сконфигурировать шесть каналов присвоив каждому свой тип датчика. Выглядит это так

Это стартовое окно при запуске программы. Здесь уже произошло соединение с блютуз модулем автоматически. а в самый первый раз при запуске нужно будет "тапнуть" верхнее окошко и выбрать модуль с которым будете работать.

Теперь присваиваем каждому каналу свой тип датчика. Для этого "тапаем" на строку и появляется клавиатура, с её помощью создаем необходимую конфигурацию и "тапаем" на строку ниже для отправки данных в МК.

Вот теперь система сконфигурирована. Я намерено оставил некоторые каналы не определенными и один канал назначил ошибочным кодом.
Теперь "тапая" на экранные обозначения номера канала мы получаем соответствующие данные.






В данном варианте датчиков я не подключал, просто получал наводки на аналоговых входах, поэтому на значения не обращайте внимания.
Вот собственно и все, осталась ссылка на программы для МК и для смартфона.