Оглавление:
- Запасы
- Шаг 1: Настройка Raspberry Pi
- Шаг 2. Установление соединения и подключение Rpi Wireless к вашей локальной сети
- Шаг 3: Датчик DS18B20 (температура) - 1-проводный
- Шаг 4: MCP3008 - Аналоговое зондирование
- Шаг 5: Оборудование
- Шаг 6: Создание базы данных Mariadb
- Шаг 7: Код Github и тестирование
- Шаг 8: запускать код при загрузке
- Шаг 9. Настройка веб-сайта
- Шаг 10: Необязательно - Миниатюрный прототип
Видео: TheAir - Проект газового датчика: 10 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Окись углерода и двуокись углерода, также известные как 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
Перед работой с 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 -> подключить кабель Ethernet между компьютером и Rpi.
-
Запустите Putty и заполните это:
- Имя хоста (или IP-адрес): 169.254.10.1
- Порт: 22
-
Появляется терминал, и вы вводите имя пользователя и пароль по умолчанию:
- Имя пользователя: pi
- Пароль: малина
Теперь, когда мы подключены локально к rpi, мы хотим, чтобы Rpi имел подключение к вашему Wi-Fi.
- Дополнительно: введите "sudo raspi-config"
- Здесь вам нужно будет сменить пароль для пользователя pi (из соображений безопасности)
- После этого перейдите в Параметры локализации -> Изменить время (выберите правильное) -> Затем перейдите в Страна Wi-Fi -> выберите страну.
- Закройте raspi-config и перезагрузитесь.
- При входе в систему временно сделайте себя пользователем root -> sudo -i
-
Напишите эту команду, чтобы добавить вашу сеть в 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-Wire. Я не буду объяснять, почему, но я объясню, как заставить его работать.
Для этого нам нужно вернуться к raspi-config на Rpi, красивом синем экране.
- Перейти к параметрам сопряжения
- Выберите 1-Wire и выберите включить.
Выполнено…
Просто шучу.
Теперь нам нужно настроить /boot/config.txt
судо нано /boot/config.txt
Добавьте эту строку внизу.
# Включить onewire
dtoverlay = w1-gpio
Теперь sudo перезагрузите эту штуку, и теперь все готово.
Чтобы проверить, работает ли он, подключите датчик к Rpi, затем вернитесь к терминалу и введите этот код (см. Следующий шаг «Оборудование» о том, как подключить датчик температуры).
компакт-диск / системная / шина / w1 / устройства / w1_bus_master1
ls
Вы должны увидеть что-то с цифрами и буквами темно-синего цвета в левом верхнем углу. Обязательно запишите эту информацию на будущее, когда мы будем работать с кодом из github.
Если по какой-то причине это не работает, проверьте эту ссылку, которая идет глубже.
Шаг 4: 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 на 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 и тестирование
Мы приближаемся к завершению нашего проекта.
Прежде чем мы получим код, нам нужно будет импортировать некоторые модули в 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: Необязательно - Миниатюрный прототип
По причинам тестирования я сделал прототип коробки со всем оборудованием внутри, чтобы я мог видеть, все ли работает по порядку.
Обычно этот проект выполнялся бы в большем масштабе. Например: комната, дом, фабрика, магазин и так далее…
Но, очевидно, до того, как мы начнем проделывать дыры в стенах (хорошая рифма). Сначала мы хотим посмотреть, работает ли это. На самом деле вам не нужно делать коробку для тестирования, но всегда интересно сделать что-нибудь.
Вот мой пример.
Рекомендуемые:
Сопряжение емкостного датчика отпечатков пальцев с Arduino UNO: 7 шагов
Сопряжение емкостного датчика отпечатков пальцев с Arduino UNO: Эй, как дела, ребята! Акарш здесь от CETech. Сегодня мы собираемся добавить защитный слой в наши проекты. Не волнуйтесь, мы не будем назначать для этого телохранителей. Это будет симпатичный сенсор отпечатков пальцев от DFRobot. Так что
Робот для объезда препятствий с помощью ультразвукового датчика (Proteus): 12 шагов
Робот для уклонения от препятствий, использующий ультразвуковой датчик (Proteus): Обычно мы сталкиваемся с роботом для уклонения от препятствий повсюду. Аппаратное моделирование этого робота является частью соревнований во многих колледжах и на многих мероприятиях. Но программное моделирование робота-препятствия встречается редко. Даже если мы сможем его где-то найти
Подключение газового датчика к Arduino: 4 шага
Сопряжение газового датчика с Arduino: датчик дыма MQ-2 чувствителен к дыму и следующим легковоспламеняющимся газам: сжиженный нефтяной газ, бутан, пропан, метан, спирт, водород. Сопротивление датчика разное в зависимости от типа газа. Датчик дыма имеет встроенный потенциометр
Ограничитель оборотов Arduino для газового двигателя: 5 шагов
Ограничитель оборотов Arduino для бензинового двигателя: демонстрация на Youtube Это для замены регулятора для ограничения скорости бензинового двигателя. Этот ограничитель оборотов можно переключать на 3 различные настройки на лету. Я установил это на одноцилиндровый двигатель Briggs and Stratton и использовал Ardu
Методы определения уровня воды Arduino с помощью ультразвукового датчика и датчика воды Funduino: 4 шага
Методы определения уровня воды Arduino с помощью ультразвукового датчика и датчика воды Funduino: в этом проекте я покажу вам, как создать недорогой датчик воды, используя два метода: 1. Ультразвуковой датчик (HC-SR04) 2. Датчик воды Funduino