Страница 14 из 23
Re: Подключение железа к AMS
Добавлено: Ср сен 12, 2018 12:52 am
serghei
Что бы таким образом прочитать данные от любого датчика ,Вам надо сделать модуль пустышку. Так , что бы он появился рядом с другими модулями. Иначе , даже если Вы Добавите правильный скетч ,АМС может его не увидеть. Критерием правильных действий является вывод в сериале нового пртизвольного модуля. А уже потом внутрь вставляем свой код.
Пример покажу завтра или посмотрите в библиотеке готовых решений.
Re: Подключение железа к AMS
Добавлено: Ср сен 12, 2018 3:31 am
alexsis_76
АМС может его не увидеть.
как это АМС может не увидеть код?
Критерием правильных действий является вывод в сериале нового произвольного модуля
.критерием является правильная работа, вывод в сериал это бесполезная трата и без того небольших ресурсов меги(памяти, системного времени) и нужно только на этапе отладки.Код и так тормозной а ты хочешь еще больше его... того.....
Re: Подключение железа к AMS
Добавлено: Ср сен 12, 2018 6:38 am
nick7zmail
schel4ok писал(а): ↑Вт сен 11, 2018 7:11 pm
nick7zmail писал(а): ↑Вс апр 24, 2016 10:31 am
1) Оборудование: Датчик температуры DHT11/DHT22DHT22-PinOut.png
2) Возможности: Снятие показаний температуры/влажности. Отправка их в MD, если активен модуль MD, вывод показаний в монитор порта.
3) Для установки достаточно активировать модуль TEMP_FEATURE (если он не активирован), и заменить в папке со скетчем для ардуино файл rtemp.ino (во вложенном архиве). Показания храняться в dht1_temp, dht1_hum. По аналогии можно добавить несколько датчиков.
4) Пока не придумал как совместить со стандартным rtemp, т.к. там датчики ds18b20, и с них записываются только показания только температуры, и для 1 датчика ds нужно 1 место в массиве, а для DHT нужно 2 места под температуру и влажность...чуть позже подумаю над этим вопросом.
здравствуйте,
Никак не получается подключить DHT22 к AMS017.
Я взял скетч из сообщения, переименовал его в temp_dht.ino
Изменил там пин 28, так как пин 22 вроде как занят под PIR1. Ноги DHT22 подключил так 1 - 5V, 2 - пин 28, 4 - GND.
Скомпилировал успешно. Я уже не надеялся увидеть результат в браузере на странице AMS, но хотя бы в мониторе порта.
Но ничего не появилось.
Хотя в скетче есть код вывода чего-то в монитор.
И в самом коде модуля у меня очень вопросов. Сам код какой-то непонятный. Есть какой-то мануал? Когда я брал какие-то простые примеры скетчи подключения датчиков к ардуино и вывод значения в браузер, то проблем с пониманием не было, а тут кругом какие-то массивы с непонятными названиями переменных.
И каждая строчка кода неясна. Я надеялся найти какое-то пояснение по функциям в библиотеке, но не нашел библиотеку DHT.h, которая подключается в шапке файла.
Если пытаюсь подгрузить через менеджер библиотеку DHT от Adafruit, то компиляция вываливается с ошибкой.
Даже названия переменных непонятны:
byte tempSensorHealth - что значит эта переменная? при чем тут health = здоровье?
byte tempModulHealth; - тоже самое
не возникнет ли конфликта между этими массивами? имя же у них одинаковое
objSens[MAX_TEMP_SENSORS][12]
objSens[MAX_DS18B20_SENSORS][12] (из файла temp_ds18b20.ino)
current_temp[MAX_TEMP_SENSORS]
current_temp[MAX_DS18B20_SENSORS];
temp_[MAX_TEMP_SENSORS];
temp_[MAX_DS18B20_SENSORS];
и между функциями tempInit() файла temp_ds18b20.ino и файла temp_dht.ino
Честно говоря - я сам немного ещё путался, когда писал этот скетч.
Во-первых этот код просто
переписан для dht (т.е. по задумке вы должны просто заменить файл rtemp.ino (в 0.15 версии он так назывался), и тогда действительно увидите показания в интерфейсе AMS. Если вдаваться чуть глубже - Helth - так называемое "здоровье" модуля и датчиков. Актуально для больших сетей. Т.е. предположим у вас 4 датчика. - все работают - здоровье датчиков 100%. 1 отвалился - 75%. Т.е. система то как бы жива, и как бы показания считывает, отправляет, но 1 датчик дохлый, и система пытается вам сказать об этом показанием уровня здоровья)) - надо пойти проверить датчик. По-моему данная концепция была описана у Алекса на сайте.
Массивы естественно будут конфликтовать, если вы задействуете оба куска кода - для DS и для DHT. Тут 2 варианта - "слить" их (т.е. добавить показания с dht в массив к далласам, или же переименовать массивы. Тут уж сами решайте.
Re: Подключение железа к AMS
Добавлено: Ср сен 12, 2018 7:09 am
Alex
По-моему данная концепция была описана у Алекса на сайте.
Первый раз я пытался донести до народа эту благую весть (концепцию) ещё в 2013 году на примере MajorDoMo.
viewtopic.php?f=4&t=531#p3588
.критерием является правильная работа, вывод в сериал это бесполезная трата и без того небольших ресурсов меги(памяти, системного времени)
serghei имел в виду, что если данные появились в мониторе — значит модуль подключён правильно. Что касается вывода в сериал, то да, это бесполезная трата ресурсов, но даже на Меге эти издержки пренебрежимо малы и я перестал этим заморачиваться — шлю в монитор всё что надо и не парюсь по этому поводу.
Re: Подключение железа к AMS
Добавлено: Ср сен 12, 2018 8:26 am
serghei
Объединять или переделывать скетч под новое железо - плохое занятие . Правильнее всего создать новый модуль. Например правильно подключить DHT датчики. Как это сделать - на примере кода ESP32. Для Меги могут поменяться только названия. И лучше всего протестировать на простой UNO или Nano.
Первое. Смотрим как назначены модули в скетче и добавляем новый " dht "
Код: Выделить всё
#define FEATURE_LEDS
#define FEATURE_ELECTRO
#define FEATURE_DHT //создаем новый модуль
И дальше в первой вкладке продолжаем по смыслу
byte moduleMr1132 = NOT_COMPILLED;
byte moduleNrf24 = NOT_COMPILLED;
byte moduleDHT = NOT_COMPILLED;// наш модуль
Продолжим
Код: Выделить всё
#ifdef FEATURE_KEYS
initKeys();
#endif
#ifdef ROBOTDYN_FEATURE
initRobotdyn();
#endif
#ifdef FEATURE_DHT
initDHT();
#endif
Просто сетап из примеров заменяем на init , а loop на work ( или Werks как у остальных модулей)
Код: Выделить всё
#ifdef FEATURE_KEYS
workKeys();
#endif
#ifdef FEATURE_DHT
workDHT();
#endif
А дальше создаем новую вкладку в IDE и по образу самого простого модуля контактов добавляем код для DHT .
Код: Выделить всё
/*
Module DHT ESP32
part of Arduino Mega Server project
*/
#ifdef FEATURE_DHT
#include "DHT.h"
#define MAX_TEMP_SENSORS 1
// Uncomment one of the lines below for whatever DHT sensor type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
// DHT Sensor
const int DHTPin = 15;
// Initialize DHT sensor.
DHT dht(DHTPin, DHTTYPE);
//char objSens[MAX_TEMP_SENSORS] = {"tempSTR"};
// Temporary variables
static char celsiusTemp[7];
static char fahrenheitTemp[7];
static char humidityTemp[7];
void initDHT() {
moduleDHT = ENABLE;
started(F("DHT"), true);
}
void workDHT() {
if (cycle1m) {
// if (c == '\n' && currentLineIsBlank) {
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
strcpy(celsiusTemp,"Failed");
strcpy(fahrenheitTemp, "Failed");
strcpy(humidityTemp, "Failed");
}
else{
// Computes temperature values in Celsius + Fahrenheit and Humidity
float hic = dht.computeHeatIndex(t, h, false);
dtostrf(hic, 6, 2, celsiusTemp);
float hif = dht.computeHeatIndex(f, h);
dtostrf(hif, 6, 2, fahrenheitTemp);
dtostrf(h, 6, 2, humidityTemp);
// You can delete the following Serial.print's, it's just for debugging purposes
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t Temperature: ");
Serial.print(t);
Serial.println(" *C ");
/*
Serial.print(f);
Serial.print(" *F\t Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.print(" *F");
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
*/
}
}
}
#endif
Всё. Проверяем в сериале , что у нас появился новый модуль , он стартанул и мы увидели данные в мониторе.
В комплекте с библиотекой идет пример использования датчика. Код надо брать оттуда. Часто Адафруит требует дополнительных библиотек. Они должны идти в комплекте.
Как это вытащить на страницу - чуть позже . ( Работа ....)
Re: Подключение железа к AMS
Добавлено: Ср сен 12, 2018 8:47 am
alexsis_76
Объединять или переделывать скетч под новое железо - плохое занятие . Правильнее всего создать новый модуль
ну это как раз и не сложно
Например правильно подключить DHT датчики. Как это сделать - на примере кода ESP32
на гитхабе и вообще в инете есть огромная куча кода , бери и пользуйся, для esp8266 видел как то VPN клиента.Для нее есть к де то целый сайт с исходниками, тысячи их, так что АМС это не актуально
Тема встала совсем.
Re: Подключение железа к AMS
Добавлено: Ср сен 12, 2018 10:51 am
Alex
Тема встала совсем.
Но вы всё ещё с нами, отсталыми? Это внушает.
Re: Подключение железа к AMS
Добавлено: Ср сен 12, 2018 11:14 am
alexsis_76
Но вы всё ещё с нами, отсталыми? Это внушает.
Не уже не с вами,отсталыми.
Re: Подключение железа к AMS
Добавлено: Чт сен 13, 2018 8:24 am
nick7zmail
А с кем же, если не секрет? Чем ща шьют esp и меги продвинутые?
Re: Подключение железа к AMS
Добавлено: Чт сен 13, 2018 9:11 am
serghei
С кем понятно из благодарности. Не понятно почему модераторы пропускают открытые оскорбления в адрес ВСЕХ пользователей AMS.