sensor control — контроль датчиков

Нет ответов
renoshnik
Offline
Зарегистрирован: 11.04.2013
Не судите строго (особенно за грамматические ошибки в программе) слепил это все сегодня за день. просто пришла в голову мыслЯ и я её реализовал...
Смысл идеи в том, что иногда возникает необходимость дистанционно контролировать несколько каналов информации, несколько датчиков. По моему наиболее часто встречаются различные погодные, огородные, инкубаторные и тому подобные конструкции. Поэтому я выбрал для реализации три вида датчиков температура, давление, влажность. Естественно в программе каждый может прописать свои функции для своих датчиков это не сложно. Эти виды датчиков я выбрал просто для удобства описания функционала. Собственно сама программа для МК выглядит так.
 
 
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"); }
//	****************************************************

 

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