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

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

Тема в разделе "Теплицы и парники", создана пользователем Анкор Плюс, 19.05.18.

Статус темы:
Закрыта.
  1. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Получены первые данные с метеостанции. Связь по радиоканалу LoRa. Отображение скорости ветра и наличия дождя отличное. :victory: А вот с определением сторон света пока нужна настройка резисторной цепочки. Параметры подстрою. Но в программе контроллера нужно установить контроль параметров сторон света. Иначе на экране возникает сбой изображения. Возможно нужно установить ограничители и протестировать код. :faq: Может что то в библиотеке отображения стрелок сторон света. Короче, думаю нужно подставить значения (пока у Димы не запущена станция) и посмотреть что отображается.
     

    Вложения:

    • IMG_20190421_194032N.jpg
    • IMG_20190421_194317N.jpg
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Это может быть моя ошибка, хотя я вроде проверял. Можно в LogicManageModule, в функции GetWindDirection (по памяти пишу) - попробовать повозвращать то одну, то другую константу из определения CompassPoints: cpWest, cpNorth, cpEast, cpSouth - и посмотреть, что отрисовывается на экране. Я сегодня проверю таким образом, посмотрю, мож где ошибка реально. По результатам - отпишусь.
     
  3. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    @promavto, да, Саш, с отрисовкой направления ветра - это моя ошибка, разбираюсь.
     
  4. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Проверил датчики температуры DS1820 с расширителем портов датчиков. Датчики прописываются и регистрируются нормально. При перестановке местами или отключения датчика, индексы не меняются. Что и требовалось! :hello: Устранил проблему с модулем LoRa. В программе все нормально. Как всегда виноваты китайцы (продали полудохлый транзистор включения питания), ну и я немного лох. Не поменял уровни включения с HIGH на LOW. Короче все нормально работает. :victory: Ну и немного раздражителя. Может где нибудь на десятом экране вывести показания уровня сигнала LoRa, что бы понимать какую антенну прилепить. Каждый модуль отправляет отчет по силе сигнала. Осталось только отобразить его где нибудь. :close:
     
  5. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Проверку делал на 4 датчиках. Это так к сведению.
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Хватит меня раздражать с этими уровнями сигналов :) Если надо отображать packetRssi последнего принятого по LoRa пакета - как-нибудь, в следующей пятилетке, приделаю (для этого, как минимум, у мну должно быть что-нибудь, работающее по LoRa, как понимаешь). Но, как я понимаю - это только для принятых пакетов, как узнать уровень сигнала при отправке - хз, сходу не нашёл такой инфы. На последнем подэкране экрана ожидания есть один свободный бокс - туда можно выводить, по идее. Надо для начала подумать, чтобы не впороть горячки.

    Ну хоть с DS18B20 угодил, славатехоспади :)

    З. Ы. Прошивку обновил, пофиксил отрисовку направления ветра. Я там хотел ещё строчки писать, не только значок - в этом был и косяк. Пока убрал строчки, показывается только значок направления, как и было раньше. Код - общий для всех типов показаний, поэтому пока грамотнее - убрать неправильную часть отрисовки, чем поломать всё остальное ;)

    Качай, пробуй.
     
  7. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    @DIYMan,
    #define SOIL_MOISTURE_0_PERCENT 612 / вольтаж для 0% влажности почвы, китайский датчик влажности (0-1023)
    #define SOIL_MOISTURE_100_PERCENT 243 / вольтаж для 100% влажности почвы, китайский датчик влажности (0-1023)
    Конфигуратор выдает 0,255% и не меняется. ?
     
  8. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Саш, ты пробовал крайнюю версию, где я закомментировал строчки LoRa. receive(); ?

    Если да - надо попробовать, как было, я щас раскомментирую эти строчки, обновлю прошивку - и отпишусь.
     
  10. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    А на АЦП сколько? Щас попробую посмотреть, может, надо добавить принудительную уставку в границы. Отпишусь.
     
  12. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Твой модуль метеостанции собрал. Проверять можно: проводом, RS485, LoRa 1278, nRF24L01 + PA. Осталось собрать контроллер последней модели. В процессе сборки 7 штук.
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Качай, обновилось.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Фактор калибровки для датчика можно задавать и через конфигуратор, кстати. Вот весь код чтения с китайского датчика:
    Код:
       int val = analogRead(sett.Pin);
       
       int soilMoisture0Percent = map(scratchpadS.calibration_factor1,0,255,0,1023);
       int soilMoisture100Percent = map(scratchpadS.calibration_factor2,0,255,0,1023);
    
       int percentsInterval = map(val,min(soilMoisture0Percent,soilMoisture100Percent),max(soilMoisture0Percent,soilMoisture100Percent),0,10000);
       
      // теперь, если у нас значение 0% влажности больше, чем значение 100% влажности - надо от 10000 отнять полученное значение
      if(soilMoisture0Percent > soilMoisture100Percent)
        percentsInterval = 10000 - percentsInterval;
    Перевожу: прочитать с АЦП. Отразить значение 0% влажности с диапазона 0-255 в диапазон 0-1023. Отразить значение 100% влажности с диапазона 0-255 в диапазон 0-1023. Получить процентное значение интервала, отразив его с диапазона 0-1023 на диапазон 0-10000. Проверить, если значение АЦП для 0% влажности больше, чем значение АЦП для 100% влажности (реверсивное измерение) - то реверсировать полученное значение, отняв от 100% вычисленное.

    Сходу не вижу ошибок, примерно такой же код работает и в контроллере.
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    @Shelllonn, сейчас попробую подставить конкретные цифры, и высчитать ручками - возможно, увижу упущение.
     
Статус темы:
Закрыта.