Датчик температуры Raspberry Pi с выводом на ЖК-экран

Отобразим текущую температуру окружающей среды и среднее значение в течение определенного дня на ЖК-дисплее с помощью Raspberry Pi.

Что нам понадобится?

Аппаратные средства/комплектующие:

  • Raspberry Pi 3 Модель B+ (примерно $60)
  • Аналоговый датчик температуры (примерно $8)
  • Модуль преобразователя AD/DA (примерно $9)
  • ЖК-экран LCD1602 (примерно $12)

Все эти комплектующие нам помогут отобразить текущую температуру окружающей среды и средний показатель за определенный день на ЖК-дисплее, используя Raspberry Pi, aWhere API и библиотеки SunFounder.

Датчик температуры Raspberry Pi

В уроке использован Sensor Kit V2.0 от SunFounder, который поставляется с аналоговым температурным датчиком, и их PCF8591, который является устройством сбора данных. Мы использовали схему проекта от SunFounder, как показано ниже:

После правильной сборки схемы используйте код для проверки конфигурации. Вы можете скачать его на официальной странице здесь. Их код идет как на Python, так и на C, мы будем использовать Python.

Если вы делаете всё дистанционно, вы можете загрузить код на свой компьютер и использовать FileZilla, чтобы перенести его на свой Raspberry Pi.

Чтобы протестировать схему, запустите файл "18_thermistor.py". Результат должен выглядеть примерно так.

Использование ЖК-дисплея Raspberry Pi

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

ЖК-дисплей и датчик температуры перекрываются на контактах «SDA1» и «SCL1». Он работает с этими контактами.

Чтобы отобразить текущую температуру на ЖК-дисплее, создайте новый каталог, например «LCDTemp», и скопируйте два файла, выделенные ниже на рисунке из каталога кода SunFounder, в ваш новый каталог. Это библиотеки, специфичные для оборудования SunFounder Kit (мы не тестировали их работу с другими датчиками).

Теперь, когда у вас есть эти библиотеки, настало время начать писать код для отображения текущей температуры на ЖК-дисплее:

При правильном соединении всех деталей код выше сработает так, что ваш результат будет выглядеть как на фотографии ниже, в зависимости от вашей температуры:

Получение исторических данных погоды с использованием API aWhere

Самый простой бесплатный API, который получилось найти для получения средних исторических температур для определенного местоположения, - использовать aWhere. С помощью aWhere вы можете получать всевозможные исторические данные о погоде.

Вы можете получить на бесплатную учетную запись на сайте aWhere здесь. Зарегистрировавшись, перейдите в «Моя учетная запись» (англ. - My Account) в верхнем правом углу и нажмите на «Мои приложения» (англ. - My apps). Внутри «Мои приложения» нажмите синюю кнопку «Добавить новое приложение» (англ. - Add a new App), как показано ниже:

Создав приложение, вы получите ключ «Consumer Key» и «Consumer Secret», мы будем использовать их, чтобы получить токен аутентификации в приведенном ниже коде.

Создание поля

Ощущение, что сервис aWhere больше направлен на сельскохозяйственное направление, поэтому, естественно, чтобы указать местоположение, чтобы получить температуру, нам нужно «добавить поле» (англ. - add a field) в наше приложение.

Документацию для добавления поля можно найти по ссылке. Сначала мы попробовали два разных способа, используя запросы «requests» и «urllib», но не смогли заставить всё работать. Единственный пример Python, который был найден, который работал, был в разделе ответов здесь, и именно на этом основан код ниже:

После выполнения кода выше, если вы успешно добавили поле, результат должен выглядеть примерно так (в зависимости от выбранного вами местоположения):

Получение исторических данных о погоде

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

Этот шаг довольно прост, приведенный ниже код должен только вернуть среднюю температуру за этот день за последние 10 лет.

Результат должен выглядеть примерно так:

Цифра 15 на рисунке выше - средняя температура в градусах Цельсия.

Собираем всё вместе

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

Код предназначен для обновления температуры окружающей среды каждую секунду, но средняя температура - только один раз в день. Он сравнивает день с помощью счетчика «currDay»:

Код был прокомментирован с пояснениями, но конечный результат должен выглядеть примерно так, как показано на рисунке ниже:

На этом пока всё. Больше о проектах на Raspberry в следующих публикациях.