Съдържание:

Проектът TheAir - сензор за газ: 10 стъпки
Проектът TheAir - сензор за газ: 10 стъпки

Видео: Проектът TheAir - сензор за газ: 10 стъпки

Видео: Проектът TheAir - сензор за газ: 10 стъпки
Видео: +10 до нивото на вашето здраве! Преглед на детектор за въглероден диоксид 2024, Ноември
Anonim
Проектът TheAir - сензор за газ
Проектът TheAir - сензор за газ

Въглероден окис и въглероден диоксид, известен също като CO и CO2. Газове, които са безцветни, без мирис, без вкус и откровено опасни, когато са във високи концентрации в затворено помещение. Ако живеете, например в студентска стая, която е лошо изолирана, без добър въздушен поток и по някаква причина тостерът издава странен шум, докато прави тост. Тогава може да влезете в контакт с тези газове и когато това се случи, да се надяваме, че ще завърши само с леко главоболие, защото при висока концентрация може да ви обезсмисли или дори да ви убие (макар и много рядко).

Затова реших да измисля този проект. Идеята ми е проста, използвайте вентилатори, за да направите въздушен поток. Добър въздух навътре и лош въздух, така да се каже. За допълнителна помощна програма добавих допълнителен температурен сензор, бутон за вентилатори за ръчно активиране, както и уебсайт за тези, които обичат да виждат статистика и/или да активират вентилатори от компютъра си.

Като ученик, родител, самотен човек или живо същество. Това е нещо, което обикновено бихте искали да избягвате, когато живеете в уюта на собствената си къща. Това помага на тези, които обичат да улеснят живота си малко.

Консумативи

  • Raspberry Pi 3+
  • Мини-USB зарядно устройство 5V/2.5A
  • Micro-sd карта
  • Сензори

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (температура)
  • 2 x 12V DC вентилатор
  • 2 x 2n2222 транзистора
  • LCD 16*2 дисплей
  • Натисни бутона
  • MCP3008
  • Конвертор на ниво Logi
  • Ethernet кабел (поради причини за настройка)

Стъпка 1: Настройка на Raspberry Pi

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

Преди да започнем работа с Rpi, ще ни трябва някакъв софтуер.

  • WinSCP или FilleZilla (по избор, ако искате да прехвърлите файлове от вашия компютър към Rpi)
  • Win32 диск или Etcher (който предпочитате повече)
  • Замазка или MobaXterm (който предпочитате повече)
  • Raspbian изображение с десктоп

Преди да започна, бих искал да спомена, че когато правя този урок, когато избирам програма над другата, НЕ означава, че я препоръчвам. Например обичам да използвам etcher, защото е по -удобен за потребителя, но Win32 има възможност да прави резервни копия. Сега това е извън моята система, нека започнем.

Ако вече имате Rpi, който е свързан към вашата wifi мрежа, преминете към стъпка 3.

Първо ще използваме Etcher, за да поставим Raspbian изображението на вашата sd карта. Сега, преди да извадим SD картата, ще променим някои "неща" във файла cmdline.txt, които могат да бъдат намерени в изображението. Отворете.txt файла -> Добавете този ред „ip = 169.254.10.1“(без кавички) в края на реда (всички на 1 ред) -> Запазване на файл

Второ направете празна папка, наречена "ssh" в зареждащия дял (без кавички).

След това можете безопасно да извадите Microsd и да го поставите в Rpi.

Причината за твърдо кодирания статичен IP е да улесни свързването към Rpi. Ако по някаква причина Rpi няма ip с DHCP, лесно можете да използвате статичния ip.

Стъпка 2: Осъществяване на връзка и свързване на Rpi безжична връзка към вашата локална мрежа

Осъществяване на връзка и свързване на Rpi безжично към вашата локална мрежа
Осъществяване на връзка и свързване на Rpi безжично към вашата локална мрежа
Осъществяване на връзка и свързване на Rpi безжично към вашата локална мрежа
Осъществяване на връзка и свързване на Rpi безжично към вашата локална мрежа
Осъществяване на връзка и свързване на Rpi безжично към вашата локална мрежа
Осъществяване на връзка и свързване на Rpi безжично към вашата локална мрежа
Осъществяване на връзка и свързване на Rpi безжично към вашата локална мрежа
Осъществяване на връзка и свързване на Rpi безжично към вашата локална мрежа

Ще стартираме Rpi -> свързваме Ethernet кабела между компютър и Rpi.

  1. Стартирайте Putty и попълнете това:

    • Име на хост (или IP адрес): 169.254.10.1
    • Пристанище: 22
  2. Появява се терминал и въвеждате потребителското име и паролата по подразбиране:

    • Потребителско име: pi
    • Парола: малина

Сега, когато сме свързани локално с rpi, искаме Rpi да има връзка с вашия wifi.

  1. Допълнително: въведете „sudo raspi-config“
  2. Тук ще трябва да смените паролата за потребителя на pi (от съображения за безопасност)
  3. След това отидете на Опции за локализация -> Промяна на времето (изберете правилното) -> След това отидете на Wifi държава -> изберете държава.
  4. Затворете raspi-config и рестартирайте.
  5. Когато сте влезли, временно се направете root потребител -> sudo -i
  6. Напишете тази команда, за да добавите вашата мрежа към Rpi (код под списъка)

    • парола = "парола" (с кавички)
    • Име на мрежа = "SSID"
    • Не забравяйте да използвате двойно >>! Важно!

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

Сега рестартирайте отново

Когато се свързвате отново, проверете вашия ip, като въведете:

ifconfig

и проверете wlan0, до inet.

Сега, когато имаме връзка с интернет, нека направим „бърза“актуализация.

sudo apt актуализация

sudo apt dist -upgrade -y

Това може да отнеме известно време.

Стъпка 3: Сензор DS18B20 (температура)-1-проводник

Сензор DS18B20 (температура)-1-жичен
Сензор DS18B20 (температура)-1-жичен
Сензор DS18B20 (температура)-1-жичен
Сензор DS18B20 (температура)-1-жичен

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

Този път го имаме с температурния сензор DS18B20, който изисква 1-проводник, което няма да обяснявам защо, но ще обясня как да го накарам да работи поне.

За това трябва да се върнем към raspi-config на Rpi, хубавия син екран.

  1. Отидете на Опции за взаимодействие
  2. Изберете 1-Wire и изберете активиране.

Свършен…

Само се шегувам.

Сега ще трябва да коригираме /boot/config.txt

sudo nano /boot/config.txt

Добавете този ред в долната част.

# Активирайте onewire

dtoverlay = w1-gpio

Сега sudo рестартирайте това нещо и сега сме готови.

За да проверите дали работи, свържете сензора към Rpi, след това се върнете към терминала и въведете този код (Вижте следващата стъпка Хардуер за това как да свържете температурен сензор).

cd/sys/bus/w1/devices/w1_bus_master1

ls

Трябва да видите нещо с цифри и букви в тъмно синьо горе вляво, не забравяйте да напишете тази информация за по -късно, когато ще работим с кода от github.

Ако по някаква причина не работи, проверете тази връзка, която навлиза по -дълбоко в нея.

Стъпка 4: MCP3008 - Аналогово откриване

MCP3008 - Аналогово откриване
MCP3008 - Аналогово откриване
MCP3008 - Аналогово откриване
MCP3008 - Аналогово откриване

Тъй като направихме промяна за температурния сензор, ние също трябва да направим някои промени за другите сензори, тъй като те трябва да се четат в аналогови данни. Тук, когато MCP3008 е полезен, трябва също да променим SPI интерфейса.

sudo raspi-config

Отидете на Опции за свързване -> Изберете SPI -> активиране.

След това Finish.

Стъпка 5: Хардуер

Не сме приключили изцяло с Rpi, но достатъчно, за да можем да започнем да изграждаме и сглобяваме хардуера.

Някои съвети са да проверите добре връзките си при изграждането, за да сте сигурни, че не … взривявате Rpi.

Също така в схемата ще забележите, че някои компоненти са върху нея само веднъж, въпреки че ще работим с повече от 1 от същия компонент. Това просто означава, че трябва да повторите същия процес на изграждане на този 1 компонент. Има 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 корен

Паролата е празна, така че няма какво да пишете. Натиснете enter.

Нека сега създадем потребител.

CREATE USER 'user'@'%' IDENTIFIED BY 'userdb';

ПРЕДОСТАВЕТЕ ВСИЧКИ ПРИВИЛЕГИИ НА *. * НА 'потребител'@'%' С ОПЦИЯ ЗА ГРАНТ;

ФЛУШ ПРИВИЛЕГИ;

Натиснете Ctrl + C, за да излезете и да направите бързо рестартиране на услугата:

рестартиране на услугата sudo mysql

Влезте с потребителско име: потребител и парола: userdb:

mysql -u потребител -p

Време е да създадете база данни сега.

CREATE DATABASE project_db DEFAULT CHARACTER SET utf8;

ИЗПОЛЗВАЙТЕ project_db

Създайте таблица „historiek“(означава история).

СЪЗДАЙТЕ ТАБЛИЦА, АКО НЯМА „historiek“(„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 клониране

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

ls

Сега ще ви трябват 2 терминала, така че е удобно да щракнете с десния бутон върху терминала и да щракнете върху Дублирани сесии:

Отидете на backend_project и температура с помощта на командата cd.

Сега, преди да стартираме програмите за целите на тестването. Помните ли още Стъпка 3 с 1-проводния сензор, където трябва да запишете някои числа? Не се притеснявайте, ако имате, просто надникнете отново в стъпка 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 фена.

Ако искате да използвате повече от 2 вентилатора, копирайте и поставете същия код под него, но с различен номер. Недостатък на това е по -личната работа за вас и по -малко налични gpio.pins. Няма предимства в това, за които знам.

Стъпка 8: Стартирайте кода при стартиране

Стартирайте кода при стартиране
Стартирайте кода при стартиране

Искаме тези 2 скрипта на python да се изпълняват в момента, в който се зареди Rpi и в случай, че скриптът се срине, той трябва да се рестартира сам. За да направим това, ще направим 2 услуги.

За да направите това, въведете:

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

Копирайте и поставете това за temperature.service:

[Единица] Описание = Обслужване на температурата След = многопотребителска цел

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

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

StandardInput = tty-force

Рестартиране = при неизправност

RestartSec = 60s

[Инсталирай]

WantedBy = многопотребителска цел

Затворете и направете отново, но след това за backend_project.service:

Първият отворен текст:

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

След това отново копирайте и поставете:

[Единица] Описание = backend_project услуга

След = многопотребителски таргет

[Обслужване]

Тип = прост

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

StandardInput = tty-force

Рестартиране = при неизправност

RestartSec = 60s

[Инсталирай]

WantedBy = многопотребителска цел

Запази и затвори.

Последната част е да напишете това:

sudo systemctl демон-презареждане

sudo systemctl активиране на temperature.service sudo рестартиране

Сега нашите 2 скрипта на python трябва да се изпълняват автоматично при зареждане.

Стъпка 9: Настройка на уебсайт

Когато сте изтеглили хранилището, трябва да сте получили и папка, наречена front. Тук е съдържанието на уебсайта.

Първо се нуждаем от apache, преди да можем да използваме папката. Следвайте ръководството на тази връзка за apache.

Когато сте готови. Отидете там, където се намира предната папка:

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

След това въведете:

sudo mv front/var/www/html

Когато това стане, отидете в папката html, подгответе се за някаква досадна работа (моя вина).

cd/var/www/html/

след това отидете в предната папка и започнете да премествате всичко в папката html.

пример:

sudo mv css/var/www/html

След това изтрийте предната папка.

И сме готови с всичко.

Късмет:).

Стъпка 10: По избор - Миниатюрен прототип

По избор - Миниатюрен прототип
По избор - Миниатюрен прототип
По избор - Миниатюрен прототип
По избор - Миниатюрен прототип

От съображения за тестване направих прототип само на кутия с целия хардуер вътре, за да видя дали всичко работи по поръчка.

Обикновено този проект ще се реализира в по -голям мащаб. Например: стая, къща, фабрика, магазин и така нататък …

Но очевидно преди да започнем да правим дупки в стените (хубава рима). Първо искаме да видим дали просто работи. Всъщност не е нужно да правите кутия за тестване, но винаги е забавно да се занимавате с изработка.

Ето моя пример.

Препоръчано: