Проблема взаимодействия

Ответить
Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

Проблема взаимодействия

#1

Сообщение Mikhail72 » 23.12.2016{, 19:05}

Приветствую, знатоки. Решил создать устройство на базе ардуино, которое должно облегчить мне немного жизнь. Но столкнулся с небольшой проблемой, т.к. программирование не мой канёк и как работает МК плохо представляю, поэтому решил обратится к сообществу знатоков.
Что я хочу?
На ардуино мега2560 создать устройство, которое бы:
1. Управляло и контролировало работу локальной очистной системой (ЛОС),
2. Система контроля и управления доступом (калитка и распашные ворота),
3. Миниметео-станция, на 1 датчик температуры(или DS18B20, или DHT22) и возможно освещенности,
4. Отправка статистики и взаимодействие с сервером MajorDoMo.

Что имеем?
1. Arduino Mega2560,
2. Блок реле (управление насосами,компрессором, магнитным замком, воротами),
3. DS1302 часы реального времени,
4. JSN-SR04T влагозащищённый Ultrasonic,
5. Ethernet w5100,
6. Датчик освещенности,
7. Датчик температуры DS18B20 (герметичный),
8. Датчик давления газа.

Принцип работы ЛОС:
В течении дня работает поочередно компрессор 2 часа, потом 1 час дренажный насос. Ночью в 3:00 режим тишины в течении 1:15, затем на 15 мин. включается 2-й дренажный насос для откачки очищенной воды и пошло опять по кругу. DS18B20 контролирует температуру воды в канализации, а Ultrasonic уровень. Датчик освещённости активируется во время откачки о контролирует прозрачность воды. Датчик давления контролирует работу компрессора. Все изменения состояний отсылаются на сервер MajorDoMo.

Принцип СКУД:
Управление эл. приводами ворот и магнитным замком калитки, а также контроль их концевиков (геркон).

Отправка статистики подразумевает взаимодействие Arduino и MajorDoMo по ModbusTCP, и вот тут начались первые проблемы.
Прочитать суть проблемы. Пришлось немного извращаться, думаю что отсюда и дальнейшие проблемы работы меги, флаги я пишу по ModbusTCP, а состояния и измерения отправляю в Get.

До подключения 18B20 и Ultrasonic (Давления и освещённости еще не было) все работало как запланировано, после начались зависания МК. температура должна была отправляться каждые 5 мин, а уровень каждые 30 мин. и это работало до отключения 1-го насоса, потом зависало, а на выходах привязанных к открыванию ворот и калитки появлялись единички. Без подключения ЛОС и СКУД 18B20 и Ultrasonic работают нормально.

При дальнейшей отладке заметил, что по истечении времени опроса датчика ds18b20 (установленного в настройках) дважды моргает светодиод L на 13 пине (при подключенном по I2C дисплее в этот момент тухнет подсветка), ethernet начинает слать все GET-запросы, а реле насоса если включено продолжает работать. По гуглил, по этим признакам похоже на программный reset и отсюда первый вопрос:

Это программный reset, так и должно быть или я что-то не так делаю?

Думаю зависание и происходило из-за Get-запросов, т.к. в одно и тоже время их отправлялось несколько, даже статусы СКУД, которые по моим расчётам должны отсылаться только при изменении. Поставил задержки на GET и проблема вроде разрешилась. Решил добавить датчик освещённости, который должен отсылать свои данные всё тем же GET с 4:15 каждую секунду хотя бы секунд 15-20 и опять такое же зависание, пока не понимаю почему, вроде бы уже и Get не пересекаются, и считывание с датчика должно происходить в указанное время, а зависает через непродолжительное время после включения в любое время.

Взываю к помощи знатоков. Проект прилагаю.

P.S. Автору программы большое спасибо, готов поддерживать проект на постоянной основе, если проект будет и дальше развиваться. Зная немного азы схемотехники, логики и языка С и посмотрев Ваши видео начал осваивать Arduino, а когда-то это слово было для меня матерным.

Спасибо тем кто дочитал.
Для скачивания вложений Вы должны быть зарегистрированы.

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

Проблема взаимодействия

#2

Сообщение Mikhail72 » 16.01.2017{, 17:08}

Внес небольшие изменения в проект и отказался от ModbusTCP заменив его на WebServerPage, всё вроде заработало как надо, кроме DS18b20 и WebServerPage. Термодатчик работает несколько часов, потом присылает 0, хотя к макетке никто не лезет и ничего не отключает. А WebServerPage работает как положено около 2-х часов, а потом при обращении к нему запросы уходят, но не отрабатываются, а Get-запросы WebClient от Меги идут как положено даже после отказа WebServerPage.
Установил FLprog 2.3 скомпилировал и уже почти сутки DS18B20 работает как положено, а WEB-сервер по-прежнему без изменений.

Кто-нибудь использует WebServerPage в своих проектах продолжительное время? Что может быть не так?
Для скачивания вложений Вы должны быть зарегистрированы.

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

Проблема взаимодействия

#3

Сообщение Mikhail72 » 16.01.2017{, 18:45}

Внес небольшие изменения в проект и отказался от ModbusTCP заменив его на WebServerPage, всё вроде заработало как надо, кроме DS18b20 и WebServerPage. Термодатчик работает несколько часов, потом присылает 0, хотя к макетке никто не лезет и ничего не отключает. А WebServerPage работает как положено около 2-х часов, а потом при обращении к нему запросы уходят, но не отрабатываются, а Get-запросы WebClient от Меги идут как положено даже после отказа WebServerPage.
Установил FLprog 2.3 скомпилировал и уже почти сутки DS18B20 работает как положено, а WEB-сервер по-прежнему без изменений.

Кто-нибудь использует WebServerPage в своих проектах продолжительное время? Что может быть не так?
Для скачивания вложений Вы должны быть зарегистрированы.

Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06.09.2015{, 13:12}
Репутация: 5
Откуда: Тюмень-Баку
Имя: Максим

Проблема взаимодействия

#4

Сообщение Max » 16.01.2017{, 23:16}

Зависания часто бывают следствием некачественного питания.

Надо разделять питание релейных модулей и самой Ардуино. Ставить фильтра, оптроны, экранирование.

И все же надо заводить переменные.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 25
Откуда: Новосибирск

Проблема взаимодействия

#5

Сообщение Слимпер » 17.01.2017{, 08:22}

Mikhail72 писал(а):то-нибудь использует WebServerPage в своих проектах продолжительное время? Что может быть не так?
Настроен, но не скажу_ что смотрю туда часто.
Параллельно натрона передача на народный мониторинг.

А так работает уже два года.
Но зависания иногда случаются, притом я уверен, что сама плата работает нормально, а виснет 
Mikhail72 писал(а):5. Ethernet w5100,
Проверти температуру чипа, у многих он греется и если в закрытом корпусе, то может и сбоить.

Аватара пользователя
Siberian
Лейтенант
Сообщения: 473
Зарегистрирован: 07.09.2015{, 11:51}
Репутация: 8
Откуда: СССР
Имя: Александр

Проблема взаимодействия

#6

Сообщение Siberian » 17.01.2017{, 09:36}

Когда-то давно я уже описывал проблему при подключении ультразвукового датчика.
При подключении не работают генераторы (если используются в проекте), и точно уже не помню, но вроде были какие-то глюки с таймерами...

А собака зарыта в самой программе работы с ультразвуковым датчиком, основа лежит в функции прерывания.
Я в те давние времена, задавал вопрос автору программы, но на тот момент ничего нельзя было изменить.
Наверное так всё и осталось.

Чтобы убедиться, можно собрать весь проект без ультразвукового датчика (не использовать его вобще в проекте), и посмотреть работоспособность всего остального, не имеющего отношения к ультразвуковому датчику.

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

Проблема взаимодействия

#7

Сообщение Mikhail72 » 05.02.2017{, 15:38}

Спасибо, откликнувшимся, всё функционирует нормально, даже после последнего обновления DS18B20 стал работать как задумано, но проблема в другом. Вчера ещё подправил программу и сделал вывод значений с датчиков на хостовую страницу WebServerPage. Сегодня посмотрел с утра хостовая работает данные на нее выводятся, а при обращении к другим страницам (адрес/1, адрес/2, адрес/3, адрес/4) должны появляться единицы на соответствующих выходах, при первом запуске и перезагрузки Меги они работают, проверял вчера через 2 часа после запуска всё работало, ушёл спать, а утром выходы не работают. W5100 работает к ней претензий нет, хоть и греется, я на нее поставил радиатор от малины.

От меги на сервер данные приходят, но мне нужно чтобы при обращении к ней, она дергала ножки, т.е. например удалённо открыть калитку или ворота, хотел использовать ModbusTCP, но сервер MajorDoMo не корректно с Мегой взаимодействует. Нужно чтобы один из разработчиков той(MDM) или этой(FLProg) программы допилили этот протокол, а лучше скооперировались и допилили.

Как ещё можно активировать выходы ардуино удалённо?


СпойлерПоказать
Добавлено (05.02.2017, 15:38)
---------------------------------------------
Посмотрел видео, почитал информацию по протокол MQTT и решил остановится на нём, перевёл написанную программу на MQTT и уже сутки всё работает так как и планировалось. Если сравнивать температуру чипа w5100, то при использовании MQTT чип чуть тёплый в районе 50 градусов, при использовании GET и ModbasTCP через 5-10 сек палец невозможно держать на чипе. Спасибо ещё раз Слимперу за созданные блоки MQTT.
Для скачивания вложений Вы должны быть зарегистрированы.

Ответить

Вернуться в «Другие»