1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 8

Arduino Mega. Контроллер теплицы. Хроники - 2

Тема в разделе "Теплицы и парники", создана пользователем DIYMan, 06.06.16.

Статус темы:
Закрыта.
  1. alexnik2011
    Регистрация:
    28.02.16
    Сообщения:
    15
    Благодарности:
    2

    alexnik2011

    Участник

    alexnik2011

    Участник

    Регистрация:
    28.02.16
    Сообщения:
    15
    Благодарности:
    2
    Добрый день.
    кто подключал универсальные датчики, помогите
    D8 - управление питанием линий DS18B20, I2C и аналогового входа для датчика влажности почвы - что это значит?
    заранее спасибо
     
  2. АлкН1
    Регистрация:
    14.04.16
    Сообщения:
    468
    Благодарности:
    1.171

    АлкН1

    Живу здесь

    АлкН1

    Живу здесь

    Регистрация:
    14.04.16
    Сообщения:
    468
    Благодарности:
    1.171
    это значит - возможность энергосбережения (управления питанием от батарей)
     
  3. alexnik2011
    Регистрация:
    28.02.16
    Сообщения:
    15
    Благодарности:
    2

    alexnik2011

    Участник

    alexnik2011

    Участник

    Регистрация:
    28.02.16
    Сообщения:
    15
    Благодарности:
    2
    При регистрации выдает найден неподдерживаемый тип датчика
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Маленький вопрос: вы читали тему? Видели сообщения, что универсальные модули худо-бедно пока работают только на Arduino Uno, и то - не совсем устойчиво? Видели мои сообщения, где я писал, что клиентский код универсальных модулей надо переписывать, и я этим займусь, как будет свободное время? Собственно, в этих сообщениях все ответы на ваши вопросы ;)
     
  5. alexnik2011
    Регистрация:
    28.02.16
    Сообщения:
    15
    Благодарности:
    2

    alexnik2011

    Участник

    alexnik2011

    Участник

    Регистрация:
    28.02.16
    Сообщения:
    15
    Благодарности:
    2
    @Vlodya, добрый день, вы с open server разобрались?
    А то бьюсь с графиками и ничего не получаеться
     
  6. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    @alexnik2011,
    Для особо одаренных процитирую Дмитрия еще раз
    Выкладывал в ветке ранее даже скриншеты. Посмотреть лень?
     
  7. necrjd
    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98

    necrjd

    Живу здесь

    necrjd

    Живу здесь

    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98
    Подключил SIM800L.Скорость порта Serial1 поставил 9600 (на 57600 пока не удалось завести). В модуле поменял команды ATH на ATH0 (отбой), AT+CMGD=0,4 на AT+CMGD=4 (удаление всех смс). Основные команды отрабатывает нормально.
    Хотелось бы "прикрутить" запрос баланса, и выдачу статистики на народный мониторинг.
    Вот такая функция у меня сейчас этим занимается на ардуино Леонардо. Раз в шесть минут скидывает показания датчиков и баланс карты. Своих мозгов пока не хватает интегрировать ее в этот замечательный проект.
    void loop()
    {
    / включаем GPRS
    gprs. powerOn();
    / проверяем есть ли связь с GPRS устройством
    while (!gprs.init() {
    / если связи нет, ждём 1 секунду. и выводим сообщение об ошибке. процесс повторяется в цикле
    / пока не появится ответ от GPRS устройства
    delay (1000);
    Serial. print("GPRS Init error\r\n");
    }
    / вывод об удачной инициализации GPRS Shield
    Serial. println("GPRS init success");

    delay (3000);
    / пытаемся установить GPRS-соединение с заданными настройками, которые предоставляются операторами связи
    while (!gprs.join("internet.mts.ru", "mts", "mts") {
    / если GPRS-соединения нет выводим сообщение об ошибке и ждём 1 секунду
    / процесс повторяется в цикле пока не появится положительный ответ от GPRS устройства
    Serial. println("Gprs join network error");
    delay (1000);
    }
    / выводим сообщение об удачной установке GPRS-соединения
    Serial. println("GPRS OK");
    / запрос баланса
    Serial1.write("ATD#100#\n");
    Serial. println("ATD#100#");
    delay (4000);

    if (Serial1.available() /если модуль что-то послал
    {
    while (Serial1.available()
    {
    ch = Serial1.read();
    val += char (ch); /собираем принятые символы в строку
    /delay (3);
    / Serial. println (val);
    }
    Serial. println("Otvet");

    if (val.indexOf("+CUSD") > -1) /если есть входящее sms
    {
    if (val.indexOf("Balance") > -1) / смотрим, что за команда
    {
    val = val. substring (val.indexOf("Balance:") + 8, val. indexOf("r"); /парсим сам баланс
    Serial. println (val);
    val. replace(",", "."); /меняем запятую на точку
    Serial. println (val);
    val. toCharArray (myStr, val. length() + 1); / копирование String в массив myStr8
    } } }

    / пытаемся подключиться к серверу указывая тип соединения, адрес сервера и номер порта
    while (!gprs.connect (TCP, "narodmon.ru", 8283) {
    / если сервер не отвечает или отвечает ошибкой/ выводим сообщение об ошибке и ждём 1 секунду
    / процесс повторяется в цикле/ пока не появится положительный ответ от сервера
    Serial. println("Connect error");
    delay (1000);
    }
    / выводим сообщение об удачном подключении к серверу
    Serial. println("Connect success");
    / вызываем функцию считывания всех показателей с датчиков
    readSensors();
    / выводим показания датчиков в последовательный порт
    serialPrint();
    / вызываем функцию, которая формирует и отправляет tcp-запрос
    / в специальном формате для «народного мониторинга»
    tcpRequest();
    / разрываем все GPRS-соединения
    gprs. close();
    / деактивируем интерфейс GPRS
    gprs. disconnect();
    / выводим сообщение об удачном завершении операции
    Serial. println("OK");
    / выключаем GPRS-шилд
    gprs. powerOff();
    / проверяем не прошел ли нужный интервал времени
    while (millis() - previousMillis < INTERVAL) {
    / ждём 5 минут
    }
    /если прошел, то сохраняем текущее время
    previousMillis = millis();
    }
     
  8. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Раз в шесть минут скидывает показания датчиков и баланс карты

    Во сколько денег это вам обходится? Я пытался сделать отправку данных раз в 15 секунд на сервер, и за -13- 14 часов ушло примерно 90 руб. на самом дешёвом тарифе от. теле2. Оказалось, что операторы сотовой связи округляют трафик в бОльшую сторону (150Мб) или около того. за любую передачу данных. Пришлось отказаться от этой " хотелки"! Как дела у вас?
     
  9. necrjd
    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98

    necrjd

    Живу здесь

    necrjd

    Живу здесь

    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98
    60-70 копеек в сутки. Скидываю раз в 6 минут (чаще чем раз в 5 минут народмон не позволяет).
    Тариф МТС коннект 4. Поднимаю GPRS соединение.
     

    Вложения:

    • narodmon.png
  10. necrjd
    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98

    necrjd

    Живу здесь

    necrjd

    Живу здесь

    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98
  11. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Пока " С Ходу" не разобрался... С утра попытаюсь изучить повнимательнее! :son::|::aga:
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Спасибо большое за проделанную работу! Скажите, без смены этих команд не работало? Мне просто нужно знать, чтобы в прошивке сделать настройку - какой модуль используется: SIM800L или многострадальный Neoway :)
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Запрос баланса - можно, в принципе, но, как водится - чуть позже, не сразу ;) Насчёт народного мониторинга - надо думать, эта задача чуть посложнее в плане интеграции.
     
  14. necrjd
    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98

    necrjd

    Живу здесь

    necrjd

    Живу здесь

    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98
    По поводу команд - сразу предупрежу, что с ардуино недавно, могу быть в чем-то не прав. Учусь.
    В списке команд на SIM не нашел ATH, поэтому поменял на ATH0 по смыслу. Хотя и с командой ATH сброс звонка происходит.
    По поводу команды очистки сообщений: в debug режиме команда AT+CMGD=0,4 отрабатывалась с ошибкой. На эту - AT+CMGD=4 - ответ "ОК". Я не понял почему так - по описанию команды допускаются 2 параметра. Постараюсь разобраться.
    По поводу скорости обмена: пытался на SIM800 через терминал выставить 57600 - выставляется и на ней работает. Но при переподключении к плате проекта, видимо, скорость сбрасывается на дефолтную 9600 при снятии питания, и MEGA не может достучаться до SIM. Возможно, есть команда на сохранение настроек в SIM. Проще оказалось для проверки работоспособности связки поставить 9600 в конфигураторе. Думаю, что решу вопрос и с 57600.
    Кстати, проверил, что работает блок по приему и отправке "своих" СМС - например, на запрос по СМС "#30" - выставить на пине 30 высокий уровень. Уровень выставляется и приходит ответное СМС. Очень удобно. Можно управлять любыми нагрузками.
    При звонке "в теплицу" приходит СМС в ответ с данными 2х температур и статусом форточек и полива.
    Считаю, что заложенный на данном этапе функционал для M590 полностью работает на SIM800L.
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Это всё потому, что вы не записали настройки в энергонезависимую память SIM800L. ЕМНИП, там есть либо команда для сохранения настроек, либо - команда по выставлению скорости, которая сразу сохраняется, а не применяется только до пересброса питания ;)
    Значит, эту команду оставляем нетронутой.
    А вот для этой - можно сделать настроечку, не вопрос. Сегодня постараюсь обновить прошивку.
    Так и задумывалось ;)
     
Статус темы:
Закрыта.