среда, 4 мая 2016 г.

Походная станция на базе ардуино…

Процесс постижения микроконтроллера Arduino идет у нас полным ходом. Как говориться когда есть новые модули и датчики, то хочется их протестировать и тут же найти им применение в новом очередном проекте. Вот и на этот раз… Нет, конечно проект далеко не новый таких проектов оказывается много, и в интернете все найти можно. Но настолько полно там «воды» что разбираться начинающим просто невероятно. Но может быть единицы разобрались и сделали…

Ладно ближе к делу. В прошлый раз мы научились выводить на LCD экран информацию с датчика DHT-11. Провели тестирование датчика в общем получилось неплохо. Но с другой стороны если делать, так делать то что действительно будет нужно. А нужна мне небольшая метеостанция, которую можно было бы взять с собой в экологическую экспедицию. К тому же модуль датчик атмосферного давления GY-68 уже так и ждет когда я его подключу к МК. Так что за дело. С чего нужно начать? Правильно с исследования датчика: как его правильно подключить, и найти нужную библиотеку. Вот здесь поджидал первый сюрприз: датчик оказывается тоже нужно подключить к пинам А4 и А5, но они вроде как уже «заняты» LCD. Попробовал найти даже готовый проект где бы данный датчик подключался через I2C к LCD экрану. Искал долго, но не нашел. Но нашел зато полезную информацию: оказывается к I2C можно подключить одновременно несколько самых разных устройств. Это уже радует. Но опять таки в интернете только одна теория: что такое I2C, как это работает. А вот практики вроде того как же подключить GY-68 через I2C включая LCD экран к Arduino нет ни слова. Даже схемы и то нет. Ладно будем действовать старым проверенным способом: метод проб и ошибок.

Но сначала нужно было еще спаять кое что. В моем случае к датчику GY-68 нужно было припаять штырьковый разъем, а если еще точнее четыре «ножки». В общем это дело простое, и любой с этим справиться. А вот дальше нужно найти библиотеку для датчика. В интернете есть много источников, но почти все эти библиотеки оказались нерабочими. Как только дело доходит до компиляции примера скетча (в самой библиотеке) так тут же всплывает и ошибки. Но все же удалось в конце концов найти и работающую библиотеку. Эта библиотека называется Adafruit_BMP085. Так же не забудьте поставить (если вы еще не установили) библиотеки: LiquidCrystal_I2C1602V1 а так же DHT-sensor-library-master. И последнее очень важно компиляцию и запись скетча в МК осуществляйте старой версией arduino-1.6.4-windows.

Первый тест был связан с проверкой и ответом на вопрос: а вообще работает ли датчик? И случайно я его при пайке не перегрел? В общем в стандартной библиотеке нашелся пример, где можно будет проверить датчик и информацию вывести в монитор порта. Все получилось! Первый шаг сделан – ура. Теперь остается самое главное: переработать (дополнить) скетч который мы с успехом применили в первом проекте. Пришлось добавить библиотеку для датчика GY-68, и написать перерасчет давления из Паскалей в наши родные миллиметры ртутного столба. Еще немного изменить скетч пришлось и в месте, где информация выводиться на экран дисплея. Скетч новый проверил на ошибки, «выловил» две ошибки, и в итоге все. Но это только скетч (загружаем его по ссылке здесь), а еще нужно правильно подключить датчик давления…

Даже не просто подключить датчик давления, но и при этом еще начертить схему. Ведь в итоге на макетной плате появиться еще один модуль и еще четыре провода нужно будет подключить. Благодаря программе sPlan, черчение заняло всего то пару минут. Теперь нужно собрать и саму схему. Присоединяю датчик к макетке, тут же подключаю провода. Да не запутаться бы. Но все пару раз проверил – все точно. А теперь будем пробовать: подключаю ардуино к компьютеру, записываю скетч в МК. Проходит загрузка, экран засветился приветливо и. Ура! Все работает! Получилось точно так, как и планировалось.

Потом разумеется еще немного поработаем над самим скетчем, чтобы выводить информацию на экран более рационально. Тем более что это возможно. В моем случае в верхней строчке через каждые две секунды выводиться показания влажности, потом давления. А нужно сделать чтобы все величины выводились одновременно на экран. Этот недочет исправлю, но уже в другой раз.

А теперь подведем важнейшие итоги:
·         Перед компиляцией скетча не забудьте подключить три библиотеки: Adafruit_BMP085 (датчик давления), LiquidCrystal_I2C1602V1 (работа с LCD дисплеем с I2C модулем), DHT-sensor-library-master (сенсор с которого мы будем получать только влажность, температуру мы будем получать с датчика GY-68).
·         К I2C можно одновременно подключить несколько разных устройств. В моем случая я даже не заморачивался которое из них будет «мастер», а которое «слейв». Все работает и без этих указаний. Подключите все устройства согласно схеме и все обязательно получиться.
·         Для компиляции и записи скетча (скетч метеостанции здесь) в МК используйте старую версию ардуино: arduino-1.6.4-windows. Так как в новой возникает проблема с выводом информации на дисплей: будет выводиться только один символ. Со старой версией такой проблемы нет.

Алексей Тепцов

(RN6LLV)

6 комментариев:

  1. Дисплей можно подключить кстати и через цифровые выводы,например- 2,3,4,5,6,7 подключив соответственно на rs, e,d4,d5,d6,d7 в обход модуля i2c.

    ОтветитьУдалить
  2. Кстати не пойму вашей схемы, А4 и А5-это аналоговые входы, а интерфейс I2C это SCL и SDA в противоположной части платы по диагонали.Соответственно схема нерабочая.

    ОтветитьУдалить
  3. чото не работает пишет "Could not find a valid BMP280 sensor, check wiring!" и не какой реакции нет!!!!!!!!!!

    ОтветитьУдалить
    Ответы
    1. ну я только поменял BMP085 на BMP280 хотя пишут что это аналог

      Удалить
  4. Доброго времени суток! Вопрос, в наличии имеется лёд цифровой led на max7219, "общается" по spi, есть возможность совмещения, т.е. вывод данных в цифре? (У меня в наличии arduino uno atmega 328p) Ссылка тут http://radiolaba.ru/microcotrollers/max7219-drayver-svetodiodnyih-indikatorov.html

    ОтветитьУдалить