Подключение железа к AMS
Модератор: Alex
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Подключение железа к AMS
Что бы таким образом прочитать данные от любого датчика ,Вам надо сделать модуль пустышку. Так , что бы он появился рядом с другими модулями. Иначе , даже если Вы Добавите правильный скетч ,АМС может его не увидеть. Критерием правильных действий является вывод в сериале нового пртизвольного модуля. А уже потом внутрь вставляем свой код.
Пример покажу завтра или посмотрите в библиотеке готовых решений.
Пример покажу завтра или посмотрите в библиотеке готовых решений.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: Подключение железа к AMS
как это АМС может не увидеть код?АМС может его не увидеть.
.критерием является правильная работа, вывод в сериал это бесполезная трата и без того небольших ресурсов меги(памяти, системного времени) и нужно только на этапе отладки.Код и так тормозной а ты хочешь еще больше его... того.....Критерием правильных действий является вывод в сериале нового произвольного модуля
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Подключение железа к AMS
Честно говоря - я сам немного ещё путался, когда писал этот скетч.schel4ok писал(а): ↑Вт сен 11, 2018 7:11 pmздравствуйте,nick7zmail писал(а): ↑Вс апр 24, 2016 10:31 am1) Оборудование: Датчик температуры 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, но хотя бы в мониторе порта.
Но ничего не появилось.
Хотя в скетче есть код вывода чего-то в монитор.И в самом коде модуля у меня очень вопросов. Сам код какой-то непонятный. Есть какой-то мануал? Когда я брал какие-то простые примеры скетчи подключения датчиков к ардуино и вывод значения в браузер, то проблем с пониманием не было, а тут кругом какие-то массивы с непонятными названиями переменных.Код: Выделить всё
Serial.println(current_temp[n]);
И каждая строчка кода неясна. Я надеялся найти какое-то пояснение по функциям в библиотеке, но не нашел библиотеку 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 в массив к далласам, или же переименовать массивы. Тут уж сами решайте.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Подключение железа к AMS
Первый раз я пытался донести до народа эту благую весть (концепцию) ещё в 2013 году на примере MajorDoMo.По-моему данная концепция была описана у Алекса на сайте.
viewtopic.php?f=4&t=531#p3588
serghei имел в виду, что если данные появились в мониторе — значит модуль подключён правильно. Что касается вывода в сериал, то да, это бесполезная трата ресурсов, но даже на Меге эти издержки пренебрежимо малы и я перестал этим заморачиваться — шлю в монитор всё что надо и не парюсь по этому поводу..критерием является правильная работа, вывод в сериал это бесполезная трата и без того небольших ресурсов меги(памяти, системного времени)
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Подключение железа к AMS
Объединять или переделывать скетч под новое железо - плохое занятие . Правильнее всего создать новый модуль. Например правильно подключить DHT датчики. Как это сделать - на примере кода ESP32. Для Меги могут поменяться только названия. И лучше всего протестировать на простой UNO или Nano.
Первое. Смотрим как назначены модули в скетче и добавляем новый " dht "
И дальше в первой вкладке продолжаем по смыслу
Просто сетап из примеров заменяем на init , а loop на work ( или Werks как у остальных модулей)
А дальше создаем новую вкладку в IDE и по образу самого простого модуля контактов добавляем код для DHT .
Всё. Проверяем в сериале , что у нас появился новый модуль , он стартанул и мы увидели данные в мониторе.
В комплекте с библиотекой идет пример использования датчика. Код надо брать оттуда. Часто Адафруит требует дополнительных библиотек. Они должны идти в комплекте.
Как это вытащить на страницу - чуть позже . ( Работа ....)
Первое. Смотрим как назначены модули в скетче и добавляем новый " 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
Код: Выделить всё
/*
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
В комплекте с библиотекой идет пример использования датчика. Код надо брать оттуда. Часто Адафруит требует дополнительных библиотек. Они должны идти в комплекте.
Как это вытащить на страницу - чуть позже . ( Работа ....)
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: Подключение железа к AMS
ну это как раз и не сложноОбъединять или переделывать скетч под новое железо - плохое занятие . Правильнее всего создать новый модуль
на гитхабе и вообще в инете есть огромная куча кода , бери и пользуйся, для esp8266 видел как то VPN клиента.Для нее есть к де то целый сайт с исходниками, тысячи их, так что АМС это не актуальноНапример правильно подключить DHT датчики. Как это сделать - на примере кода ESP32
Тема встала совсем.
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: Подключение железа к AMS
Не уже не с вами,отсталыми.Но вы всё ещё с нами, отсталыми? Это внушает.
- За это сообщение автора alexsis_76 поблагодарил:
- ANARHIST1984 (Ср сен 12, 2018 6:50 pm)
- Рейтинг: 1.16%
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Подключение железа к AMS
А с кем же, если не секрет? Чем ща шьют esp и меги продвинутые?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Подключение железа к AMS
С кем понятно из благодарности. Не понятно почему модераторы пропускают открытые оскорбления в адрес ВСЕХ пользователей AMS.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS