Приветствую, знатоки. Решил создать устройство на базе ардуино, которое должно облегчить мне немного жизнь. Но столкнулся с небольшой проблемой, т.к. программирование не мой канёк и как работает МК плохо представляю, поэтому решил обратится к сообществу знатоков.
Что я хочу?
На ардуино мега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, а когда-то это слово было для меня матерным.
Спасибо тем кто дочитал.