Сегодня я собираюсь показать вам, как сделать мини-метеостанцию с Raspberry Pi. Это мой постоянный проект, с которым я возился, поэтому я поделюсь с вами своими знаниями. Это началось с проекта, который я написал некоторое время назад , и является его улучшением.
Основной частью движения «Интернет вещей» является идея устройств, которые собирают данные и отправляют их в Интернет. Эти данные затем обрабатываются или наблюдаются для дальнейшего использования. Это простая концепция, которая продолжается некоторое время, но в последнее время она становится все дешевле и проще. Этот проект является отличным примером этого.
Хотя это похоже на длинный урок, его выполнение занимает всего около 30 минут. Давайте начнем.
Как только вы завершите этот проект, ваш Raspberry Pi будет измерять:
- температура
- влажность
- Атмосферное давление
- Люкс
Вы можете отправить свои результаты по адресу:
- Таблица Google на вашем Google Диске
- ASP.Net Web API на вашем сайте
Что вам нужно
Для этого проекта вам понадобится:
- Raspberry Pi 2 или Model B — ( Получите один здесь за 35 $! )
- AM2302 Датчик температуры / влажности
- Датчик температуры / атмосферного давления BMP180
- DS18B20 Водонепроницаемый датчик температуры
- TSL2561 Цифровой датчик яркости
Необязательный:
Ничто из этого не было бы так легко, если бы не такие компании, как Adafruit . Я рекомендую получить ваши датчики от них, чтобы поддержать их инновации в этой области. Ньюарк является одним из оригинальных дистрибьюторов Raspberry Pi, они быстрые и очень уважаемые.
электропроводка
Схема подключения для этого проекта показана ниже:
Хотя на первый взгляд это может показаться странным, это довольно стандартная настройка для каждого датчика. Вот некоторая дополнительная информация о том, как подключить каждый из них, если диаграмма бесполезна.
Установка программного обеспечения
Этот учебник был протестирован с новой установкой Raspian. Инструкции должны быть достаточно точными и для других дистрибутивов Linux.
SSH в пи (или откройте командное окно) и начните с вашего домашнего каталога и создайте папку для ваших источников.
cd ~
mkdir sources
cd sources
Настройте AM2302
AM2302 — это датчик температуры и влажности. Это датчик DHT22, который подключен с нагрузочным резистором и корпусом. Мне было легче использовать этот, чем просто набор DHT22.
Для этого датчика мы будем использовать библиотеку Adafruit Python DHT:
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo apt-get update
sudo apt-get install build-essential python-dev python-openssl
sudo python setup.py install
Это установит программное обеспечение, необходимое для взаимодействия с AM2302
Проверьте AM2302
Существует тестовый скрипт, который вы можете использовать для проверки работы датчика. Запустите AdafruitDHT.py, и «2302» — это датчик, а «22» — это используемый вами вывод. Измените его, если вы подключили его к другому контакту.
cd examples
sudo ./AdafruitDHT.py 2302 22
Вы должны увидеть что-то похожее на это:
DSB18B20
DSB18B20 — это цифровой однопроводный термометр (однопроводный протокол Далласа). Если вы получаете «с дополнениями», он поставляется со шнуром и водонепроницаемым корпусом, что я и сделал.
Вам нужно будет добавить один провод поддержки. Откройте конфигурацию загрузки:
sudo nano /boot/config.txt
Добавьте следующий текст в этот файл: dtoverlay=w1-gpio
Сохраните файл и перезагрузите компьютер:
sudo reboot
Тестирование DSB18B20
Чтобы проверить это, вам нужно загрузить следующие модули в ваше ядро:
sudo modprobe w1-gpio
sudo modprobe w1-therm
Примечание: вы можете сделать следующее, чтобы добавить их в ядро при загрузке:
sudo nano /etc/modules
Добавьте следующие строки:
w1-gpio
w1-therm
Сохраните файл, и при следующем запуске они будут загружены автоматически.
Чтобы проверить ваше устройство:
cd /sys/bus/w1/devices
ls -la
Вы увидите папку, начинающуюся с 28 — это ваше устройство на основе серийного номера.
cd 28-xxxx (change this to match what serial number pops up)
cat w1_slave
Вы должны увидеть что-то вроде следующего:
Если он говорит «ДА», это работает. Если нет, вам может потребоваться проверить проводку.
Настройка I2C
Далее вам необходимо настроить I2C для вашей системы:
sudo apt-get install python-smbus
sudo apt-get install i2c-tools
Вы можете получать «уже установленные» сообщения от этого, в зависимости от того, как настроена ваша система.
Добавьте модули в ваше ядро при запуске. Откройте / etc / modules
sudo nano /etc/modules
Добавьте к этому следующее:
i2c-bcm2708
i2c-dev
Теперь вам нужно изменить конфигурацию загрузки:
sudo nano /boot/config.txt
sudo nano /boot/config.txt
dtparam=i2c1=on
dtparam=i2c_arm=on
Перезагрузите свой Pi:
sudo reboot
Тестирование I2C
Вы можете увидеть, какие устройства подключены к вашей шине I2C, выполнив следующую команду:
sudo i2cdetect -y 1
Вы должны увидеть что-то вроде этого:
Вы готовы к работе!
Датчик TSL2561
TSL2561 — это датчик Lux, он измеряет количество обнаруживаемого света, полезно видеть, насколько ярким является небо в этот день.
Давайте возьмем несколько источников, чтобы помочь с этим:
cd ~/sources
wget https://raw.githubusercontent.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/master/Adafruit_I2C/Adafruit_I2C.py
wget https://raw.githubusercontent.com/seanbechhofer/raspberrypi/master/python/TSL2561.py
Тестирование TSL2561
Чтобы проверить ваш датчик, выполните следующее:
sudo python Adafruit_I2C.py
sudo python TSL2561.py
Вы должны увидеть что-то похожее на это:
Работает!
BMP180
BMP180 — датчик атмосферного давления с термометром. Также очень легко начать работать. Еще раз мы будем использовать некоторые библиотеки Adafruit:
git clone https://github.com/adafruit/Adafruit_Python_BMP.git
cd Adafruit_Python_BMP
sudo python setup.py install
Тестирование BMP180
Чтобы проверить это:
cd examples
sudo python simpletest.py
Это должно выглядеть так:
Сбор данных со всех датчиков
Здесь мы соберем данные со всех датчиков, используя приложение, которое я написал. Этот читатель соберет всю информацию и отобразит ее на консоли или отправит в Интернет.
cd ~
git clone https://github.com/JeremyMorgan/Raspberry_Pi_Weather_Station.git reader
Это скопирует сценарии в папку с именем «reader». Чтобы проверить их, введите:
sudo python readings.py dryrun
Это делает «пробный запуск», который не отправляет данные куда-либо, но отображает их на экране:
Вы готовы к работе! Если вы запустите его без параметра «dryrun», он создаст объект JSON и попытается отправить его на конечную веб-точку, что я покажу вам, как создать позже в этом уроке.
Необязательно: таблицы Google
Вы можете выводить данные в электронную таблицу Google, используя мое приложение, которое вы загрузили с GitHub. Вам нужно будет настроить OAuth с помощью Google и создать файл JSON. Инструкции здесь:
http://gspread.readthedocs.org/en/latest/oauth2.html
Вы захотите сохранить сгенерированный файл JSON в папке / home / pi / reader /.
Вам нужно будет открыть этот файл OAuth JSON и найти «client_email». Это должно выглядеть так:
«Client_email»: «1233453343244-asdlkjried8ss98eeEic@developer.gserviceaccount.com»,
После того, как вы создадите свою электронную таблицу, вам нужно будет добавить этот адрес электронной почты как тот, кто может получить доступ к листу в настройках общего доступа:
Затем откройте следующий скрипт в папке:
sudo nano google.py
Замените значение GDOCS_OOAUTH_JSON именем загруженного вами файла JSON. Задайте для GDOCS_SPREADSHEET_NAME имя вашего листа. Сохрани это.
Введите:
sudo python google.py
если вся ваша информация верна, она начнет работать и добавлять строки в вашу электронную таблицу каждые 30 секунд:
Поздравляем! Теперь вы можете отправить свои данные в электронную таблицу Google. Вы можете запустить это как сервис, если хотите, и хранить все свои данные на Google Диске.
Отправить его в облако
Одна вещь, которую я сделал со своей установкой, — это создание веб-сайта Microsoft Azure, который будет служить конечной точкой для моей установки. Вы также можете запустить это на любом веб-сайте ASP.Net с хостом, который поддерживает Web API, например, Arvixe .
Настройте API
Вы можете клонировать следующий репозиторий и открыть его в Visual Studio (должен работать в 2012 году и выше): https://github.com/JeremyMorgan/Raspberry_Pi_Weather_Station_API.git
Вам нужно будет создать базу данных, скрипт создания находится в папке / Install SQL. Затем вставьте эти значения в ваш Web.config, установите папку как приложение и запустите ее!
На этом этапе вы захотите открыть файл readings.py и изменить поле «url» в нижней части конечной точки, например:
url = "http://mysite.com/api/readings
Я обнаружил, что для этого очень просто создать сайт в Microsoft Azure, и вы получаете 5 бесплатных сайтов, так почему бы и нет? Вы всегда можете указать его на другой сервер SQL, если захотите.
Настройте веб-интерфейс
Я создал для этого классный небольшой пользовательский интерфейс, который использует AngularJS и некоторые плагины для создания некоторой классной визуализации:
Если вы хотите запустить это, вы можете загрузить его с Github и запустить на любом веб-сайте, поддерживающем HTML: https://github.com/JeremyMorgan/Raspberry_Pi_Weather_Station
Убедитесь, что изменили настройки в home.services.js, чтобы они отражали ваш сайт:
Скоро я внесу в него некоторые изменения, но пока это небольшая классная визуализация для вашей установки.
Резюме
Что ж, я надеюсь, что вы проделали весь этот путь до конца и настроили это. Сбор данных — это одна из самых интересных частей IoT, но что вы собираетесь с этим делать? Возможности безграничны. Вы можете поместить это в своем доме, чтобы выполнить регулировку термостата, или поместить его в зону хранения, чтобы убедиться, что что-то ценное безопасно. Я надеюсь, что этот проект вдохновит вас на создание новых вещей.
Чтобы следить за ходом этого проекта, следите за мной на GitHub или проверяйте мои обновления в Твиттере, чтобы узнать, что будет дальше. У меня есть много интересных вещей в магазине.