Учебник для начинающих по IoT: стриминг данных температуры с Raspberry Pi
«Hello World!» — скорее всего, это был вывод первой программы, которую вы написали, учась кодить. Настройка устройства для стриминга данных температуры быстро становится де-факто «Hello World!» проектом Интернета вещей (IoT). Если печать «Hello World!» в первый раз была долгой, мучительной задачей, возможно, вы бы никогда не написали вторую программу. Ваш первый IoT-проект должен вызывать только широкую улыбку. Этот весёлый, лёгкий проект познакомит вас с прекрасным миром стриминга IoT-данных.
Видео-туториал всего проекта доступен по адресу:
https://youtu.be/HMqPbfvCshs
Вот список необходимых комплектующих:
- Raspberry Pi с доступом в интернет (или любая другая одноплатная плата).
- Датчик температуры DS18B20 (https://www.adafruit.com/product/381).
- Макетная плата для сборки простой схемы (входит в стартовый набор Adafruit Pi).
- Резистор 4,7–10 кОм (также в стартовом наборе Adafruit Pi).
Шаг 1: Подключение железа
Датчик температуры DS18B20 хорошо работает с Raspberry Pi, потому что у него цифровой выход, а у Pi нет встроенного АЦП. Raspbian включает интерфейс для чтения выходных данных датчика. Нам просто нужно написать немного кода, чтобы извлечь и разобрать температуру. У Adafruit есть отличное руководство по DS18B20, мы просто следуем ему и модифицируем для стриминга температуры вместо вывода на экран.
Подключение простое: красный провод DS18B20 к 3,3 В, чёрный к GND, синий к подтягивающему резистору и к GPIO 4 Pi.
Шаг 2: Чтение температуры
Для запуска интерфейса чтения датчика нужно выполнить две команды. Откройте командную строку на Pi или зайдите по SSH. Введите:
sudo modprobe w1-gpio
sudo modprobe w1-therm
Вывод датчика теперь записывается в файл на Pi. Чтобы найти этот файл:
cd /sys/bus/w1/devices
В этой директории будет поддиректория, начинающаяся на «28-». То, что после «28-» — серийный номер вашего датчика. Зайдите в неё. Внутри файл w1_slave содержит вывод датчика. Содержимое выглядит примерно так:
a2 01 4b 46 7f ff 0e 10 d8 : crc=d8 YES
a2 01 4b 46 7f ff 0e 10 d8 t=26125
Число после «t=» — то, что нам нужно. Это температура в 1/1000 градуса Цельсия (в примере — 26,125 °C). Нужен простой скрипт, читающий этот файл и извлекающий это число. К счастью, Adafruit уже написали Python-скрипт, который делает именно это и выводит температуру на экран. Создайте новый файл на Pi (например, temperature.py) и вставьте туда следующий код:
Нажмите здесь, чтобы увидеть код
Запустите скрипт (sudo python temperature.py) — вы увидите показания датчика на экране.
Шаг 3: Стриминг температуры
Именно здесь мы отклоняемся от руководства Adafruit. Вывод температуры на экран скучно. Мы хотим стримить эти данные куда-то, где можно увидеть не только текущую температуру, но и историю замеров (плюс, кто хочет «читать» кучу температур текстом; хочется красивой визуализации). Сначала установите стример Initial State, чтобы дать нашим измерениям место назначения (инструкции по настройке Initial State streamer — это очень просто и занимает менее двух минут). Мы модифицируем скрипт выше, чтобы стримить температуру в наш аккаунт Initial State вместо вывода на экран. Вот изменения:
Нажмите здесь, чтобы увидеть код
Вам нужно скопировать клиентский ключ вашего аккаунта Initial State в кавычки на строке 6, где написано client_key = "". Ключ можно найти в настройках аккаунта или на лендинге после входа.
Вот сделанные изменения:
- Строка 4: импорт модуля стримера Initial State.
- Строка 6: создание нового бакета «Temperature Stream» и привязка к аккаунту через клиентский ключ.
- Строка 30: функция
read_temp()теперь возвращает только температуру в Цельсиях. - Строка 34: конвертация результата
read_temp()в Фаренгейты. - Строки 35 и 36: стриминг двух температур.
Подробнее: IoT 101 Project: Stream Temperature from your Raspberry Pi
Производственный процесс
- Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
- Точный температурный профиль Raspberry Pi с Python, SQLite и LabVIEW
- Raspberry Pi сетевой монитор температуры и влажности — руководство по DIY сборке
- Как считывать температуру с DS18B20 на Raspberry Pi 2
- Профессиональный мониторинг температуры на Raspberry Pi с датчиком DS18B20
- Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Точный мониторинг температуры в серверной на Raspberry Pi
- Raspberry Pi BMP085: точные показания температуры и давления по I2C
- Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20