Подключение железа к AMS

Модератор: Alex

serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Подключение железа к AMS

Сообщение serghei » Ср сен 12, 2018 12:52 am

Что бы таким образом прочитать данные от любого датчика ,Вам надо сделать модуль пустышку. Так , что бы он появился рядом с другими модулями. Иначе , даже если Вы Добавите правильный скетч ,АМС может его не увидеть. Критерием правильных действий является вывод в сериале нового пртизвольного модуля. А уже потом внутрь вставляем свой код.
Пример покажу завтра или посмотрите в библиотеке готовых решений.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Подключение железа к AMS

Сообщение alexsis_76 » Ср сен 12, 2018 3:31 am

АМС может его не увидеть.
как это АМС может не увидеть код?
Критерием правильных действий является вывод в сериале нового произвольного модуля
.критерием является правильная работа, вывод в сериал это бесполезная трата и без того небольших ресурсов меги(памяти, системного времени) и нужно только на этапе отладки.Код и так тормозной а ты хочешь еще больше его... того.....
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Подключение железа к AMS

Сообщение nick7zmail » Ср сен 12, 2018 6:38 am

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, но хотя бы в мониторе порта.
Но ничего не появилось.
Хотя в скетче есть код вывода чего-то в монитор.

Код: Выделить всё

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
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Подключение железа к AMS

Сообщение Alex » Ср сен 12, 2018 7:09 am

По-моему данная концепция была описана у Алекса на сайте.
Первый раз я пытался донести до народа эту благую весть (концепцию) ещё в 2013 году на примере MajorDoMo.

viewtopic.php?f=4&t=531#p3588
.критерием является правильная работа, вывод в сериал это бесполезная трата и без того небольших ресурсов меги(памяти, системного времени)
serghei имел в виду, что если данные появились в мониторе — значит модуль подключён правильно. Что касается вывода в сериал, то да, это бесполезная трата ресурсов, но даже на Меге эти издержки пренебрежимо малы и я перестал этим заморачиваться — шлю в монитор всё что надо и не парюсь по этому поводу.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Подключение железа к AMS

Сообщение serghei » Ср сен 12, 2018 8:26 am

Объединять или переделывать скетч под новое железо - плохое занятие . Правильнее всего создать новый модуль. Например правильно подключить 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
Всё. Проверяем в сериале , что у нас появился новый модуль , он стартанул и мы увидели данные в мониторе.
В комплекте с библиотекой идет пример использования датчика. Код надо брать оттуда. Часто Адафруит требует дополнительных библиотек. Они должны идти в комплекте.

Как это вытащить на страницу - чуть позже . ( Работа ....)
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Подключение железа к AMS

Сообщение alexsis_76 » Ср сен 12, 2018 8:47 am

Объединять или переделывать скетч под новое железо - плохое занятие . Правильнее всего создать новый модуль
ну это как раз и не сложно
Например правильно подключить DHT датчики. Как это сделать - на примере кода ESP32
на гитхабе и вообще в инете есть огромная куча кода , бери и пользуйся, для esp8266 видел как то VPN клиента.Для нее есть к де то целый сайт с исходниками, тысячи их, так что АМС это не актуально ;)
Тема встала совсем.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Подключение железа к AMS

Сообщение Alex » Ср сен 12, 2018 10:51 am

Тема встала совсем.
Но вы всё ещё с нами, отсталыми? Это внушает.
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Подключение железа к AMS

Сообщение alexsis_76 » Ср сен 12, 2018 11:14 am

Но вы всё ещё с нами, отсталыми? Это внушает.
Не уже не с вами,отсталыми.
За это сообщение автора alexsis_76 поблагодарил:
ANARHIST1984 (Ср сен 12, 2018 6:50 pm)
Рейтинг: 1.16%
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Подключение железа к AMS

Сообщение nick7zmail » Чт сен 13, 2018 8:24 am

А с кем же, если не секрет? Чем ща шьют esp и меги продвинутые?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Подключение железа к AMS

Сообщение serghei » Чт сен 13, 2018 9:11 am

С кем понятно из благодарности. Не понятно почему модераторы пропускают открытые оскорбления в адрес ВСЕХ пользователей AMS.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Ответить