Блок с датойБлок с временемБлок с возрастом сайта
Mr.ALB

    Анатолий Беляев (aka Mr.ALB). Персональный сайт

    Да пребудут с вами Силы СВЕТА!

     

    Ардуино (Arduino). #5

    Барометр на BMP280, BME280

    Продолжаю модернизацию скетча, размещённого на предыдущей странице #4 Тестируем BMP280. Подключаем графический экран Nokia 5110, на который будем выводить информацию о давлении, температуре и высоте.

    В процессе разработки и тестирования базовой программы, добавил пришедший из Китая датчик влажности DHT22. А из-за выявленной капризности дисплея Nokia5110, далее переделал программу для вывода информации на малюсенький дисплейчик типа OLED SSD1306 с разрешением 128*64. Мой вариант – как вывести полную информацию на русском языке улыбка.

    На странице ниже переделка программы для вывода информации на дисплей типа TFT ST7735 1.8 дюйма с разрешением 128*160 точек.

    Пришла посылка с датчиком BME280. Он позволяет измерять давление, высоту, температуру и влажность одновременно. Барометр на этом датчике.

    По просьбам читателей у барометра на BME280 применён вывод давления в разных системах измерения (мм рт.ст. или кПа).


    Использование дисплея Nokia 5110

    Для вывода большего количества информации удобно использовать графический дисплей.

    Графический экран Nokia 5110 имеет размеры 84 * 84 пикселя (точки). Размер самой платы экрана 43 * 45 мм. Подключение осуществляется через 8 контактов внизу экрана.

    Дисплей Nokia5110
    Pic 1. Дисплей Nokia5110

    Напряжение питания Nokia 5110 составляет 3.3В, как и у модуля BMP280.

    Для вывода информации на экран, используются библиотеки <Adafruit_GFX.h> и <Adafruit_PCD8544.h>.

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

    Схема для скетча #5
    Pic 2. Схема для скетча #5

    На монтажную панельку добавляем ещё одну кнопку SB2, с помощью которой будем управлять яркостью подсветки экрана.

    Реализация скетча #5
    Pic 3. Реализация скетча #5

    Вывод информации на экране осуществляется в три строки....

    Работа дисплея Nokia5110
    Pic 4. Работа дисплея Nokia5110

    Четвёртая строка внизу используется для вывода шага подсветки. Шаг подсветки равен 10%. После 100% яркости подсветки, нажатие кнопки SB2 переводит в отключение подсветки, т.е. яркость равна 0%. Изменение градации подсветки циклическое.

    Работа подсветки дисплея Nokia5110
    Pic 5. Работа подсветки дисплея Nokia5110

    После всех подключений модулей к плате Arduino, переходим к скетчу (программе).

    Скетч барометра на модуле BMP280 и
    экране Nokia 5110

    Особо трудных моментов при подключении дисплея нет. Используя библиотеки, делаем соответствующую настройку.

    Ниже скетч барометра:

    Теперь в моей программе значение выводится ещё и на дисплей, и если оформить всю конструкцию в корпус с автономным питанием (батарея или аккумулятор), то будет небольшой электронный барометр-высотомер.

    Если необходимо уменьшить код, то вывод информации в последовательный порт можно удалить и оставить лишь вывод на дисплей.

    Для модернизации этого скетча можно предложить создать барограф, то есть на графический экран выводить кроме цифрового значения ещё и график изменения давления, к примеру, через час. По резкости изменения давления можно уже судить об изменении погоды. Ещё можно добавить свои пиктограммки: облако, солнышко, дождь, ветер и т.п.

    Возможно сделаю такую модернизацию программы и ниже на странице её размещу, если будет интерес продолжить это направление.

    Код закоментирован достаточно подробно и понятно.

    2018-06-10


    P.S. Попользовался таким дисплеем и обратил внимание, что он какой-то капризный. Всё время у него гуляет контакт на индикатор. Всё время плавает контрастность от совсем невидимого до чёрного даже фона. Может быть это мне такой попался экземпляр.

    P.P.S. Программу изменил и дополнил. Теперь у меня добавлен датчик влажности DHT22. На дисплей выводится температура и значение влажности и с него. А яркость подсветки дисплея выводится на чистый экран с дополнительным прогресс баром.

    Используемые библиотеки и скетч:

    2018-07-23
    2018-08-16

    Использование дисплея OLED SSD1306

    Из-за капризности дисплея Nokia5110, переделал программу для вывода информации на малюсенький графический дисплейчик типа OLED SSD1306 с разрешением 128*64 точки.

    Использование дисплея OLED SSD1306
    Pic 6. Использование дисплея OLED SSD1306

    При использовании библиотеки <iarduino_OLED_txt.h> можно установить шрифт SmallFontRus, который выводит на экран символы 6*8 пикселей, что позволяет вывести на экран 8 строк информации. Мелковато, конечно, лучше бы использовать, больший дисплей, что позволит вывести символы с разрешением 12*16 пикселей. При использовании OLED дисплея есть приятное преимущество – нет необходимости использования подсветки, в итоге используется лишь одна кнопка для обнуления высоты.

    2018-08-22

    Использование дисплея TFT ST7735 128*160 1.8 дюйма

    Это уже более качественный графический диспей. Позволяет выводить любые изображения в цвете.

    Получил посылку из Китая с новым цветным TFT ЖК-дисплеем. Контроллер обработки дисплея ST7735. Разрешение 128*160 точек размером 1.8 дюйма.

    Ниже представлена схема соединений. Контакты Ардуино выбраны для использования аппаратного подключения дисплея для быстроты обновления экрана.

    Схема для скетча #5 v3.2
    Pic 7. Схема для скетча #5 v3.2

    Предыдущий дисплейчик слишком маленький, а этот в самый раз, причём оказалось, что довольно недорогой для его размера и качества. При использовании библиотеки <Adafruit_ST7735.h> можно устанавливать шрифты разных размеров и использовать любые из 65 тысяч цветов в формате RGB565 – красный и синий по 5 бит, а зелёный 6 бит. Недостаток этой библиотеки – отсутствие русского шрифта.

    В скетче использую разный цвет при выводе значения влажности. До 30% – красный, от 30% до 60% – жёлтый, от 60% до 75% – зелёный, свыше 75% – синий. Так визуально легко ориентироваться на диапазон влажности..

    Использование дисплея TFT ST7735 128*160
    Pic 8. Использование дисплея TFT ST7735 128*160
    Использование дисплея TFT ST7735 128*160
    Pic 9. Использование дисплея TFT ST7735 128*160

    При использовании этого дисплея вернул кнопку подсветки, как с дисплеем Nikia5110. Этой кнопкой можно регулировать подсветку ЖК-дисплея, подавая ШИМ на вывод BL. По умолчанию поставил на 10% – для экономии энергии. При нажатии на кнопку прибавляется 10% яркости, после почти 100%(реальная 98%) яркость выключается (0%) и т.д. по кругу.

    Режим регулировки подсветки экрана
    Pic 10. Режим регулировки подсветки экрана

    Скетч обновлённой программы тут: TFT_128_160_bmp280.zip

    2018-09-04

    Модернизировал скетч под мобильный вариант. Теперь можно собрать конструкцию и получится карманный барометр-погодная станция. Через порт А0 (контакт 14) происходит измерение напряжения питания Li-Ion +3.7В батареи и выводится значение на экран в виде цифрового значения и пиктограммки. Li-Ion батарея питает DC-DC преобразователь выдающий +5В, которым запитывается Arduino с дисплеем и модулями. Скетч обновлённой программы тут: TFT_128_160_bmp280_v3.1.zip

    2018-09-06

    Ещё одна модернизация. Заметил, что не совсем хорошо, когда обновляются все надписи на экране, поэтому в новой версии обновляются только изменяющиеся значения. Дополнительно основные блоки выделены в функции. Ещё, если Arduino подключено к компьютеру, то значение напряжения питания батареи и её пиктограмка не выводятся. Скетч обновлённой программы тут: TFT_128_160_bmp280_v3.2.zip


    Барометр на Arduino Pro Mini и датчиках BMP280 и DHT22

    Схема этого варианта создана на базе Arduino Pro Mini, она включает в себя стабилизатор на +3.3В, подробнее про который можно посмотреть на странице Ардуино (Arduino). #7. В остальном схема подобна предыдущей.

    Схема для скетча #5 v3.3 на Arduino Pro Mini
    Pic 11. Схема для скетча #5 v3.3 на Arduino Pro Mini
    Вариант на Arduino Pro Mini
    Pic 12. Вариант на Arduino Pro Mini
    Вариант на Arduino Pro Mini
    Pic 13. Вариант на Arduino Pro Mini

    На фото видно использование самодельного модуля стабилизатора на 3.3В, для питания модуля барометра BMP280.


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

    2018-09-08

    Используемая библиотека: Adafruit_ST7735.zip


    Барометр на Arduino Pro Mini и датчике BME280

    Некоторые читатели просили сделать вариант на датчике BME280. Поэтому купил на Алиэкспрессе такой датчик и построил новый вариант барометра.

    Схема этого варианта создана на основе предыдущего. Вместо датчиков BMP280 и DHT22 применён датчик BME280, который позволяет измерять одновременно давление, высоту, температуру и влажность, что очень удобно для создания карманного варианта барометра.

    Для правильного управления цветом дисплеев TFT на контроллере ST7735, был создан вычислитель соответствия цветов кодировок RGB888 и RGB565 (Ардуино (Arduino). #9. Вычислитель RGB888 и RGB565), чем и воспользовался при программировании в этом варианте.

    Этот барометр построен, как и предыдущий, на Ардуино Про Мини, но можно использовать любую другую плату, без особой переделки схемы.

    У моего BME280 напряжение питания от 1.8 В до 5 В, поэтому отпадает необходимость в стабилизаторе на +3.3 В. Схема упрощается.

    Ниже на фото видны компоненты барометра: Адруино Про Мини, BME280, DC-DC преобразователь на +5 В, аккумулятор от сотового телефона Li-Ion +3.7 В, две кнопки.


    Вариант на Arduino Pro Mini и датчике BME280
    Pic 14. Вариант на Arduino Pro Mini и датчике BME280
    Вариант на Arduino Pro Mini и датчике BME280
    Pic 15. Вариант на Arduino Pro Mini и датчике BME280

    Ниже публикую скетч, его можно скопировать в ARDUINO IDE, но можно использовать уже готовый файл TFT_128x160_BME280.ino, см. ниже скетча.

    Используемые библиотеки (обновлены) и скетч:

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

    2019-05-10

    Барометр c разными системами измерения давления

    Некоторые читатели просили сделать вариант, в котором бы давление измерялось не в мм рт. ст., как в России, а в Европейском варианте, к примеру, в Паскалях или кило Паскалях. Вариант с кПа более удобен.

    Библиотеку с опросом кнопок я использую как и прежде, только переименовал, так как среда IDE пытается под именем Button обновить библиотеку от совершенно другого автора. Чтобы не перепуталось, переименовал в Buttons (На мой взгляд предыдущее название Button_2 несколько неудобное).

    Особенностью новой версии является то, что кнопка установки нулевого уровня для измерения высоты применяется и для изменения системы измерения. При нажатии на эту кнопку в течении 2.1 секунды и более происходит смена системы измерения с мм рт. ст. на кПа. Если была система измерения в кПа, то по нажатии на кнопку происходит переход на измерение обратно в мм рт. ст.

    При быстром клике на кнопке – происходит обнуление высоты, как и в передыдущей версии.

    Модернизированный скетч представлен ниже и для скачивания имеется уже готовый вариант (см. ниже).

    Если использовать EEPROM, то можно сохранять систему измерения и при выключении питания, выбор системы будет сохранён. При последующем включении давление будет уже измеряться в выбранной системе.

    Используемые библиотеки (обновлены) и скетч:

    Оказывается, что и это ещё не окончание, так как есть мысль добавить внешний датчик измерения температуры, тогда этот барометр станет более универсальным. Позволит измерять не только внутреннюю температуру по датчику BME280, но и внешнюю температуру. Для точных измерений подходит датчик ф. Даллас DS18B20 и ему подобные.

    Такой датчик я уже использовал при разработке МТР-1.2. Его и применим в дальнейшей модернизации этого барометра, который уже превращается в погодную станцию.

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

    Продолжение смотрите на странице #12 Погодная станция на BME280 + DS1820.

    2019-12-28


    . Mr.ALB
    Предыдущая страница Страница 6 Далее