Оглавление:

TheAir - Проект газового датчика: 10 шагов
TheAir - Проект газового датчика: 10 шагов

Видео: TheAir - Проект газового датчика: 10 шагов

Видео: TheAir - Проект газового датчика: 10 шагов
Видео: Котика ударило током, 10 т. Вольт 2024, Июль
Anonim
TheAir - Проект газового датчика
TheAir - Проект газового датчика

Окись углерода и двуокись углерода, также известные как CO и CO2. Бесцветные, без запаха, вкуса и откровенно опасные газы в высоких концентрациях в закрытом помещении. Если вы живете, например, в студенческой комнате, которая плохо изолирована, нет хорошего воздушного потока и по какой-то причине тостер издает странный шум, когда готовит тосты. Затем вы можете вступить в контакт с этими газами, и когда это произойдет, можно надеяться, что это закончится лишь небольшой головной болью, потому что при высокой концентрации это может вывести из строя или даже убить вас (хотя очень редко).

Поэтому я решил заняться этим проектом. Моя идея проста, используйте вентиляторы, чтобы создать воздушный поток. Хороший воздух на входе и плохой, так сказать, на выходе. В качестве дополнительной полезности я добавил дополнительный датчик температуры, кнопку для ручной активации вентиляторов, а также веб-сайт для тех, кто хочет видеть статистику и / или активировать вентиляторы со своего компьютера.

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

Запасы

  • Raspberry Pi 3+
  • Зарядное устройство mini-usb 5V / 2.5A
  • Micro-SD карта
  • Датчики

    • MQ-7 (CO)
    • MQ-135 (СО2)
    • DS18B20 (температура)
  • 2 вентилятора 12 В постоянного тока
  • 2 х 2n2222 транзистора
  • ЖК-дисплей 16 * 2
  • Нажать кнопку
  • MCP3008
  • Конвертер уровней логи
  • Кабель Ethernet (для настройки)

Шаг 1: Настройка Raspberry Pi

Настройка Raspberry Pi
Настройка Raspberry Pi
Настройка Raspberry Pi
Настройка Raspberry Pi

Перед работой с Rpi нам понадобится программное обеспечение.

  • WinSCP или FilleZilla (необязательно, если вы хотите передавать файлы со своего компьютера в Rpi)
  • Диск Win32 или Etcher (что вам больше нравится)
  • Putty или MobaXterm (что вам больше нравится)
  • Образ Raspbian с рабочим столом

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

Если у вас уже есть Rpi, подключенный к вашей сети Wi-Fi, перейдите к шагу 3.

Сначала мы собираемся использовать Etcher, чтобы поместить образ Raspbian на вашу SD-карту. Теперь, прежде чем вытащить SD-карту, мы собираемся изменить некоторые "вещи" в файле cmdline.txt, который можно найти на изображении. Откройте файл.txt -> Добавьте эту строку «ip = 169.254.10.1» (без кавычек) в конце строки (все в одной строке) -> Сохранить файл

Во-вторых, создайте в загрузочном разделе пустую папку с именем «ssh» (без кавычек).

После этого вы можете безопасно извлечь Microsd и вставить его в Rpi.

Причина жестко запрограммированного статического IP-адреса состоит в том, чтобы упростить подключение к Rpi. Если по какой-то причине у Rpi нет IP-адреса с DHCP, вы легко можете использовать статический IP-адрес.

Шаг 2. Установление соединения и подключение Rpi Wireless к вашей локальной сети

Выполнение подключения и подключение Rpi Wireless к вашей локальной сети
Выполнение подключения и подключение Rpi Wireless к вашей локальной сети
Выполнение подключения и подключение Rpi Wireless к вашей локальной сети
Выполнение подключения и подключение Rpi Wireless к вашей локальной сети
Выполнение подключения и подключение Rpi Wireless к вашей локальной сети
Выполнение подключения и подключение Rpi Wireless к вашей локальной сети
Выполнение подключения и подключение Rpi Wireless к вашей локальной сети
Выполнение подключения и подключение Rpi Wireless к вашей локальной сети

Мы собираемся загрузить Rpi -> подключить кабель Ethernet между компьютером и Rpi.

  1. Запустите Putty и заполните это:

    • Имя хоста (или IP-адрес): 169.254.10.1
    • Порт: 22
  2. Появляется терминал, и вы вводите имя пользователя и пароль по умолчанию:

    • Имя пользователя: pi
    • Пароль: малина

Теперь, когда мы подключены локально к rpi, мы хотим, чтобы Rpi имел подключение к вашему Wi-Fi.

  1. Дополнительно: введите "sudo raspi-config"
  2. Здесь вам нужно будет сменить пароль для пользователя pi (из соображений безопасности)
  3. После этого перейдите в Параметры локализации -> Изменить время (выберите правильное) -> Затем перейдите в Страна Wi-Fi -> выберите страну.
  4. Закройте raspi-config и перезагрузитесь.
  5. При входе в систему временно сделайте себя пользователем root -> sudo -i
  6. Напишите эту команду, чтобы добавить вашу сеть в Rpi (код ниже в списке)

    • пароль = "пароль" (в кавычках)
    • Название сети = "SSID"
    • Не забудьте использовать double >>! Важно!

эхо "пароль" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Теперь снова перезагрузитесь

При повторном подключении проверьте свой ip, набрав:

ifconfig

и проверьте wlan0 рядом с inet.

Теперь, когда у нас есть подключение к Интернету, давайте сделаем «быстрое» обновление.

sudo apt update

sudo apt dist-upgrade -y

Это может занять некоторое время.

Шаг 3: Датчик DS18B20 (температура) - 1-проводный

Датчик DS18B20 (температуры) - 1-проводный
Датчик DS18B20 (температуры) - 1-проводный
Датчик DS18B20 (температуры) - 1-проводный
Датчик DS18B20 (температуры) - 1-проводный

В каждом проекте всегда будет что-то особенное, что нужно сделать, иначе это не сработает.

На этот раз у нас есть датчик температуры DS18B20, для которого требуется 1-Wire. Я не буду объяснять, почему, но я объясню, как заставить его работать.

Для этого нам нужно вернуться к raspi-config на Rpi, красивом синем экране.

  1. Перейти к параметрам сопряжения
  2. Выберите 1-Wire и выберите включить.

Выполнено…

Просто шучу.

Теперь нам нужно настроить /boot/config.txt

судо нано /boot/config.txt

Добавьте эту строку внизу.

# Включить onewire

dtoverlay = w1-gpio

Теперь sudo перезагрузите эту штуку, и теперь все готово.

Чтобы проверить, работает ли он, подключите датчик к Rpi, затем вернитесь к терминалу и введите этот код (см. Следующий шаг «Оборудование» о том, как подключить датчик температуры).

компакт-диск / системная / шина / w1 / устройства / w1_bus_master1

ls

Вы должны увидеть что-то с цифрами и буквами темно-синего цвета в левом верхнем углу. Обязательно запишите эту информацию на будущее, когда мы будем работать с кодом из github.

Если по какой-то причине это не работает, проверьте эту ссылку, которая идет глубже.

Шаг 4: MCP3008 - Аналоговое зондирование

MCP3008 - Аналоговое зондирование
MCP3008 - Аналоговое зондирование
MCP3008 - Аналоговое зондирование
MCP3008 - Аналоговое зондирование

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

sudo raspi-config

Перейдите в Параметры интерфейса -> Выберите SPI -> включить.

Тогда Готово.

Шаг 5: Оборудование

Мы не полностью закончили с Rpi, но достаточно, чтобы мы могли начать сборку и сборку оборудования.

Некоторые советы - тщательно проверять свои соединения при сборке, чтобы убедиться, что вы не… взрываете Rpi.

Кроме того, на схеме вы заметите, что некоторые компоненты присутствуют на ней только один раз, хотя мы будем работать с более чем одним одним и тем же компонентом. Это просто означает, что вам нужно повторить тот же процесс создания этого 1 компонента. Есть одно небольшое исключение: датчики mq-x не нуждаются в дополнительном преобразователе уровня или MCP3008. Просто добавьте дополнительный зеленый кабель (в формате pdf) к преобразователю уровня и MCP3008.

Дополнительная правка: фанатам необходимо использовать транзистор в качестве переключателя. Я использую транзистор 2n2222A для 1 вентилятора, потому что 2 вентилятора могут быть очень нагружены.

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

Если у вас нет такого, как я, то вам нужно будет сделать это так: 1 вентилятор = 1 транзистор, 2 вентилятора = 2 транзистора и так далее (у каждого вентилятора свой транзистор + диод, как в pdf).

Вам также нужно будет добавить код в app.py в backend_project позже, на шаге 7: код Git….

Шаг 6: Создание базы данных Mariadb

Создание базы данных Mariadb
Создание базы данных Mariadb

Как следует из названия, мы собираемся создать базу данных, чтобы у нас было место для хранения данных наших датчиков.

Перво-наперво загрузите Mariadb на Rpi.

sudo apt-get install mariadb-server

После установки воспользуемся.

mysql -u корень

Пароль пуст, вводить нечего. Нажмите Ввод.

Давайте сейчас создадим пользователя.

СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'user' @ '%' ИДЕНТИФИЦИРОВАНО 'userdb';

ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА *. * 'User' @ '%' С ОПЦИЕЙ GRANT;

ПРИВИЛЕГИИ ПРОМЫВКИ;

Нажмите Ctrl + C, чтобы выйти и быстро перезапустить службу:

перезапуск службы sudo mysql

Войдите в систему с именем пользователя: user & password: userdb:

mysql -u пользователь -p

Пришло время создать базу данных.

СОЗДАТЬ БАЗУ ДАННЫХ project_db НАБОР СИМВОЛОВ ПО УМОЛЧАНИЮ utf8;

ИСПОЛЬЗОВАТЬ project_db

Создайте таблицу «историек» (значит история).

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ `historyiek` (` id` INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR (5) NOT NULL,` datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, PRIMARY KEY (` id`)) ENGINE = InnoDB;

И вуаля, база данных создана.

Шаг 7: Код Github и тестирование

Код Github и тестирование
Код Github и тестирование

Мы приближаемся к завершению нашего проекта.

Прежде чем мы получим код, нам нужно будет импортировать некоторые модули в Rpi:

pip3 установить Flask_MySQL

pip3 установить flask-socketio

pip3 install -U flask-cors

pip3 установить spidev

Теперь нам нужен код, чтобы он заработал, введите в терминале:

git clone

Проверьте, есть ли там папка с:

ls

Теперь вам понадобятся 2 терминала, поэтому удобно щелкнуть терминал правой кнопкой мыши и выбрать Дублировать сеансы:

Перейдите к backend_project и температуре с помощью команды cd.

Теперь, прежде чем мы запустим программы для тестирования. Вы все еще помните шаг 3 с датчиком 1-Wire, где вам нужно записать какие-то числа? Не беспокойтесь, если у вас есть, просто еще раз взгляните на шаг 3.

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

Терминал с температурной папкой вы найдете app.py. Мы собираемся его открыть.

sudo nano app.py

Найдите функцию, которая называется "def temperatuur ():", там вам нужно будет заменить "**" числами, которые вы написали. В моем случае я бы получил эту строку кода (каждый номер уникален).

sensor_file_name = '/ sys / devices / w1_bus_master1 / 28-0316a4be59ff / w1_slave

Время тестирования. Оба терминала находятся как в папке backend_project, так и в папке температуры, введите:

python3 app.py

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

Хорошо, если нет, вернитесь к шагу 5.

Теперь нам нужно добавить код, как я уже упоминал, в app.py в backend_project. Чтобы упростить задачу, я сделал пример этого в коде. Каждую строку кода комментария, в которой есть "fan1", раскомментируйте эти строки и вуаля, теперь вы можете использовать 2 вентилятора.

Если вы хотите использовать более двух вентиляторов, скопируйте и вставьте под ним тот же код, но с другим номером. Недостатком этого является более личная работа для вас и меньшее количество доступных gpio.pins. Насколько мне известно, в этом нет никаких преимуществ.

Шаг 8: запускать код при загрузке

Запускать код при загрузке
Запускать код при загрузке

Мы хотим, чтобы эти два сценария python запускались в момент загрузки нашего Rpi, и в случае сбоя сценария он должен перезапуститься самостоятельно. Для этого сделаем 2 сервиса.

Для этого наберите:

sudo nano /etc/systemd/system/temperature.service

Скопируйте и вставьте это для услуги temperature.service:

[Единица] Описание = Температура Служба После = multi-user.target

[Услуга] Тип = простой

ExecStart = / usr / bin / python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/temperature/app.py

StandardInput = tty-force

Перезагрузка = при сбое

RestartSec = 60 с

[Установить]

WantedBy = multi-user.target

Закройте и сделайте еще раз, но затем для backend_project.service:

Первый открытый текст:

судо нано /etc/systemd/system/backend_project.service

Затем снова скопируйте и вставьте:

[Unit] Описание = служба backend_project

После = multi-user.target

[Услуга]

Тип = простой

ExecStart = / usr / bin / python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py

StandardInput = tty-force

Перезагрузка = при сбое

RestartSec = 60 с

[Установить]

WantedBy = multi-user.target

Сохрани и закрой.

Последняя часть набирает это:

sudo systemctl демон-перезагрузка

sudo systemctl включить temperature.service sudo reboot

Теперь два наших скрипта Python должны запускаться автоматически при загрузке.

Шаг 9. Настройка веб-сайта

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

Прежде чем мы сможем использовать папку, нам понадобится apache. Следуйте инструкциям по этой ссылке для apache.

Когда будешь готов. Перейдите туда, где находится передняя папка:

cd / Documents / nmct-s2-project-1-TheryBrian

Затем введите:

судо мв перед / вар / www / html

Когда это будет сделано, перейдите в папку html, приготовьтесь к утомительной работе (моя вина).

cd / var / www / html /

затем перейдите в переднюю папку и начните перемещать все в папку html.

пример:

судо мв css / var / www / html

Затем удалите лицевую папку.

И мы со всем покончили.

Удачи:).

Шаг 10: Необязательно - Миниатюрный прототип

Необязательно - миниатюрный прототип
Необязательно - миниатюрный прототип
Необязательно - миниатюрный прототип
Необязательно - миниатюрный прототип

По причинам тестирования я сделал прототип коробки со всем оборудованием внутри, чтобы я мог видеть, все ли работает по порядку.

Обычно этот проект выполнялся бы в большем масштабе. Например: комната, дом, фабрика, магазин и так далее…

Но, очевидно, до того, как мы начнем проделывать дыры в стенах (хорошая рифма). Сначала мы хотим посмотреть, работает ли это. На самом деле вам не нужно делать коробку для тестирования, но всегда интересно сделать что-нибудь.

Вот мой пример.

Рекомендуемые: