Spisu treści:

Projekt czujnika gazu: 10 kroków
Projekt czujnika gazu: 10 kroków

Wideo: Projekt czujnika gazu: 10 kroków

Wideo: Projekt czujnika gazu: 10 kroków
Wideo: Projekt - czujnik gazu 2024, Listopad
Anonim
Projekt czujnika powietrza - gazu
Projekt czujnika powietrza - gazu

Tlenek węgla i dwutlenek węgla, znane również jako CO i CO2. Gazy, które są bezbarwne, bezwonne, bez smaku i szczerze mówiąc niebezpieczne w wysokich stężeniach w zamkniętym pomieszczeniu. Jeśli mieszkasz, powiedzmy na przykład w pokoju studenckim, który jest źle odizolowany, nie ma dobrego przepływu powietrza iz jakiegoś powodu toster wydaje dziwny dźwięk podczas robienia tosta. Wtedy możesz wejść w kontakt z tymi gazami, a gdy tak się stanie, miejmy nadzieję, że skończy się to tylko małym bólem głowy, ponieważ w dużym stężeniu może cię obezwładnić lub nawet zabić (choć bardzo rzadko).

Postanowiłem więc wymyślić ten projekt. Mój pomysł jest prosty, użyj wentylatorów, aby zrobić przepływ powietrza. Dobre powietrze i złe powietrze, że tak powiem. Aby uzyskać dodatkowe narzędzie, dodałem dodatkowy czujnik temperatury, przycisk do ręcznej aktywacji wentylatorów, a także stronę internetową dla tych, którzy lubią przeglądać statystyki i/lub aktywować wentylatory ze swojego komputera.

Jako uczeń, rodzic, osoba samotna lub żywa istota. Jest to coś, czego normalnie chciałbyś uniknąć, mieszkając w zaciszu własnego domu. To pomaga tym, którzy lubią ułatwiać sobie życie.

Kieszonkowe dzieci

  • Raspberry Pi 3+
  • Ładowarka miniUSB 5V/2,5A
  • Karta micro sd
  • Czujniki

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatura)
  • 2 wentylatory 12 V DC
  • 2 tranzystory 2n2222
  • Wyświetlacz LCD 16*2
  • Naciśnij przycisk
  • MCP3008
  • Konwerter poziomów logicznych
  • Kabel Ethernet (ze względów konfiguracyjnych)

Krok 1: Konfiguracja Raspberry Pi

Konfiguracja Raspberry Pi
Konfiguracja Raspberry Pi
Konfiguracja Raspberry Pi
Konfiguracja Raspberry Pi

Przed rozpoczęciem pracy z Rpi będziemy potrzebować oprogramowania.

  • WinSCP lub FilleZilla (opcjonalnie, jeśli chcesz przesłać pliki z komputera do Rpi)
  • Dysk Win32 lub Etcher (który wolisz bardziej)
  • Putty lub MobaXterm (które wolisz bardziej)
  • Obraz raspbian z pulpitem

Zanim zacznę, chciałbym wspomnieć, że kiedy robię ten samouczek, kiedy wybieram jakiś program, NIE oznacza to, że go polecam. Na przykład lubię używać etchera, ponieważ jest on bardziej przyjazny dla użytkownika, ale Win32 ma opcję tworzenia kopii zapasowych. Teraz to jest poza moim systemem, zacznijmy.

Jeśli masz już Rpi, który jest podłączony do Twojej sieci Wi-Fi, przejdź do kroku 3.

Najpierw użyjemy Etchera, aby umieścić obraz Raspbian na karcie SD. Teraz, zanim wyciągniemy kartę SD, zmienimy trochę „rzeczy” w pliku cmdline.txt, który można znaleźć na obrazku. Otwórz plik.txt -> Dodaj tę linię "ip=169.254.10.1" (bez cudzysłowów) na końcu linii (wszystko w 1 linii) -> Zapisz plik

Po drugie, utwórz pusty folder o nazwie „ssh” w partycji rozruchowej (bez cudzysłowów).

Następnie możesz bezpiecznie wysunąć Microsd i umieścić go w Rpi.

Powodem zakodowanego na stałe statycznego adresu IP jest ułatwienie łączenia się z Rpi. Jeśli z jakiegoś powodu Rpi nie ma adresu IP z DHCP, możesz łatwo użyć statycznego adresu IP.

Krok 2: Nawiązywanie połączenia i podłączanie Rpi Wireless do sieci lokalnej

Nawiązywanie połączenia i podłączanie Rpi Wireless do sieci lokalnej
Nawiązywanie połączenia i podłączanie Rpi Wireless do sieci lokalnej
Nawiązywanie połączenia i podłączanie Rpi Wireless do sieci lokalnej
Nawiązywanie połączenia i podłączanie Rpi Wireless do sieci lokalnej
Nawiązywanie połączenia i podłączanie Rpi Wireless do sieci lokalnej
Nawiązywanie połączenia i podłączanie Rpi Wireless do sieci lokalnej
Nawiązywanie połączenia i podłączanie Rpi Wireless do sieci lokalnej
Nawiązywanie połączenia i podłączanie Rpi Wireless do sieci lokalnej

Zamierzamy uruchomić Rpi -> podłącz kabel Ethernet między komputerem a Rpi.

  1. Uruchom Putty i wypełnij to:

    • Nazwa hosta (lub adres IP): 169.254.10.1
    • Port: 22
  2. Pojawi się terminal i wpisz domyślną nazwę użytkownika i hasło:

    • Nazwa użytkownika: pi
    • Hasło: malina

Teraz, gdy jesteśmy połączeni lokalnie z RPI, chcemy, aby Rpi miało połączenie z Wi-Fi.

  1. Dodatkowo: wpisz "sudo raspi-config"
  2. Tutaj będziesz musiał zmienić hasło dla użytkownika pi (ze względów bezpieczeństwa)
  3. Następnie przejdź do Opcje lokalizacji -> Zmień czas (wybierz właściwy) -> Następnie przejdź do Kraj Wifi -> wybierz kraj.
  4. Zamknij raspi-config i uruchom ponownie.
  5. Po zalogowaniu tymczasowo stań się użytkownikiem root -> sudo -i
  6. Napisz to polecenie, aby dodać swoją sieć do Rpi (kod poniżej listy)

    • hasło = "hasło" (w cudzysłowie)
    • Nazwa sieci = „SSID”
    • Pamiętaj, aby użyć podwójnego >> !Ważne!

echo "hasło" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Teraz uruchom ponownie

Po ponownym połączeniu sprawdź swój adres IP, wpisując:

ifconfig

i sprawdź wlan0, obok inet.

Teraz, gdy mamy połączenie z Internetem, zróbmy „szybką” aktualizację.

aktualizacja sudo apt

sudo apt dist-upgrade -y

To może trochę potrwać.

Krok 3: Czujnik DS18B20 (temperatura) -- 1-przewodowy

Czujnik DS18B20 (temperatura) -- 1-przewodowy
Czujnik DS18B20 (temperatura) -- 1-przewodowy
Czujnik DS18B20 (temperatura) -- 1-przewodowy
Czujnik DS18B20 (temperatura) -- 1-przewodowy

W każdym projekcie zawsze będzie coś wyjątkowego, co trzeba zrobić, bo inaczej to nie zadziała.

Tym razem mamy go z czujnikiem temperatury DS18B20, który wymaga 1-wire, czego nie wyjaśnię, ale wyjaśnię przynajmniej jak to zrobić.

W tym celu musimy wrócić do raspi-config na Rpi, ładnego niebieskiego ekranu.

  1. Przejdź do opcji interfejsu
  2. Wybierz 1-Wire i włącz.

Gotowe…

Żartuję.

Teraz musimy dostosować /boot/config.txt

sudo nano /boot/config.txt

Dodaj tę linię na dole.

# Włącz onewire

dtoverlay=w1-gpio

Teraz sudo zrestartuj tę rzecz i gotowe.

Aby sprawdzić, czy działa, podłącz czujnik do Rpi, a następnie wróć do terminala i wpisz ten kod (patrz następny krok Sprzęt dotyczący podłączania czujnika temperatury).

cd /sys/bus/w1/devices/w1_bus_master1

ls

Powinieneś zobaczyć coś z cyframi i literami w kolorze ciemnoniebieskim w lewym górnym rogu, pamiętaj, aby zapisać tę informację na później, gdy będziemy pracować z kodem z github.

Jeśli z jakiegoś powodu to nie działa, sprawdź ten link, który wchodzi w to głębiej.

Krok 4: MCP3008 - wykrywanie analogowe

MCP3008 - Wykrywanie analogowe
MCP3008 - Wykrywanie analogowe
MCP3008 - Wykrywanie analogowe
MCP3008 - Wykrywanie analogowe

Ponieważ dokonaliśmy zmiany czujnika temperatury, musimy również dokonać pewnych zmian dla innych czujników, ponieważ musimy odczytywać dane analogowe. Tutaj przydaje się MCP3008, musimy również zmienić interfejs SPI.

sudo raspi-config

Przejdź do Opcje interfejsu -> Wybierz SPI -> włącz.

Następnie Zakończ.

Krok 5: Sprzęt

Nie skończyliśmy całkowicie z Rpi, ale wystarczająco, abyśmy mogli zacząć budować i składać sprzęt razem.

Pewną radą jest dokładne sprawdzenie połączeń podczas budowania, aby upewnić się, że… nie wysadzisz Rpi.

Ponadto na schemacie zauważysz, że niektóre komponenty znajdują się na nim tylko raz, mimo że będziemy pracować z więcej niż jednym takim samym komponentem. Oznacza to po prostu, że musisz powtórzyć ten sam proces budowania tego 1 komponentu. Jest jeden mały wyjątek, czujniki mq-x nie wymagają dodatkowego przetwornika poziomu ani MCP3008. Wystarczy dodać dodatkowy zielony kabel (w formacie pdf) do konwertera poziomów i MCP3008.

Dodatkowa edycja: wentylatory muszą używać tranzystora jako przełącznika. Używam tranzystora 2n2222A na 1 wentylator, ponieważ 2 wentylatory mogą być zbyt dużym obciążeniem.

Jeśli masz tranzystor, który może wytrzymać większy prąd niż dobry, pomiń ostatnią część tego kroku.

Jeśli nie masz takiego jak ja, to musisz to zrobić tak, 1 wentylator = 1 tranzystor, 2 wentylatory = 2 tranzystory i tak dalej (każdy wentylator ma własny tranzystor + dioda jak w pdf).

Będziesz także musiał dodać trochę kodu do app.py w backend_project później w kroku 7: Kod Git….

Krok 6: Tworzenie bazy danych Mariadb

Tworzenie bazy danych Mariadb
Tworzenie bazy danych Mariadb

Jak sugeruje tytuł, stworzymy bazę danych, abyśmy mieli miejsce do przechowywania naszych danych z czujników.

Po pierwsze, pobierz Mariadb na Rpi.

sudo apt-get zainstaluj serwer mariadb

Po instalacji skorzystajmy z niego.

mysql -u root

Hasło jest puste, więc nic do wpisania. Naciśnij enter.

Stwórzmy teraz użytkownika.

UTWÓRZ UŻYTKOWNIKA 'użytkownik'@'%' ZIDENTYFIKOWANY PRZEZ 'userdb';

PRZYZNAJ WSZYSTKIE UPRAWNIENIA NA *.* 'użytkownik'@'%' Z OPCJĄ PRZYZNANIA;

PRZYWILEJE WSPÓŁPRACUJĄCE;

Naciśnij Ctrl + C, aby wyjść i wykonaj szybkie ponowne uruchomienie usługi:

usługa sudo restart mysql

Zaloguj się za pomocą nazwy użytkownika: użytkownik i hasło: userdb:

mysql -u użytkownik -p

Czas na stworzenie bazy danych.

CREATE DATABASE project_db DOMYŚLNY ZESTAW ZNAKÓW utf8;

UŻYJ projektu_db

Utwórz tabelę "historiek" (czyli historię).

CREATE TABLE IF NOT EXISTS `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;

I voila, baza danych jest stworzona.

Krok 7: Kod i testowanie na Github

Kod i testowanie na Github
Kod i testowanie na Github

Zbliżamy się do końca naszego projektu.

Zanim otrzymamy kod, będziemy musieli zaimportować kilka modułów do Rpi:

pip3 zainstaluj Flask_MySQL

pip3 zainstaluj kolbę-socketio

pip3 zainstalować -U kolby-cors

pip3 zainstaluj spidev

Teraz potrzebujemy kodu, aby to zadziałało, wpisz w terminalu:

klon git

Sprawdź, czy jest tam folder z:

ls

Teraz będziesz potrzebować 2 terminali, więc wygodnie jest kliknąć prawym przyciskiem myszy terminal i kliknąć Powiel sesje:

Przejdź do backend_project i temperatury za pomocą polecenia cd.

Teraz zanim uruchomimy programy do celów testowych. Pamiętasz jeszcze krok 3 z czujnikiem 1-wire, w którym musisz zapisać jakieś liczby? Nie martw się, jeśli tak, po prostu zerknij ponownie na krok 3.

Dodamy te liczby do kodu, ponieważ będzie musiał znać właściwy czujnik podczas jego używania.

Terminal z folderem temperatury znajdziesz app.py. Otworzymy to.

sudo nano app.py

Poszukaj funkcji, która nazywa się "def temperatuur():", tam będziesz musiał zastąpić "**" wpisanymi przez siebie liczbami. W moim przypadku dostałbym tę linię kodu (każdy numer jest unikalny).

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

Czas testowania. Oba terminale w folderze backend_project i temperature wpisz:

python3 aplikacja.py

Teraz zapamiętaj krok 5: sprzęt, w którym musisz dodać kod, jeśli używasz wielu wentylatorów i tranzystorów?

Dobrze, jeśli nie, wróć do kroku 5.

Teraz musimy dodać kod, jak wspomniałem, do app.py w backend_project. Aby było łatwiej, zrobiłem przykład w kodzie. W każdym wierszu kodu komentarza, który zawiera „fan1”, odkomentuj te wiersze i voila, teraz możesz użyć 2 wentylatorów.

Jeśli chcesz użyć więcej niż tylko 2 wentylatorów, skopiuj i wklej ten sam kod pod nim, ale z innym numerem. Wadą tego jest bardziej osobista praca dla Ciebie i mniej dostępnych gpio.pins. Nie ma z tego żadnych korzyści, o których wiem.

Krok 8: Uruchom kod podczas uruchamiania

Uruchom kod podczas uruchamiania
Uruchom kod podczas uruchamiania

Chcemy, aby te 2 skrypty Pythona działały w momencie uruchomienia naszego Rpi, a w przypadku awarii skryptu powinien on sam się zrestartować. W tym celu wykonamy 2 usługi.

Aby to zrobić, wpisz:

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

Skopiuj i wklej to dla temperature.service:

[Jednostka]Opis=Usługa temperatury po=multi-user.target

[Usługa] Typ=prosty

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

StandardInput=tty-force

Restart = w przypadku awarii

RestartSec=60s

[Zainstalować]

WantedBy=wielu użytkowników.cel

Zamknij i zrób ponownie, ale potem dla backend_project.service:

Pierwszy otwarty tekst:

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

Następnie ponownie skopiuj i wklej:

[Jednostka]Opis=usługa backend_project

After=multi-user.target

[Praca]

Typ=prosty

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

StandardInput=tty-force

Restart = w przypadku awarii

RestartSec=60s

[Zainstalować]

WantedBy=wielu użytkowników.cel

Zapisz i zamknij.

Ostatnia część to wpisanie tego:

sudo systemctl demon-reload

sudo systemctl włącz temperature.service sudo reboot

Teraz nasze 2 skrypty Pythona powinny działać automatycznie podczas rozruchu.

Krok 9: Skonfiguruj stronę internetową

Po pobraniu repozytorium powinieneś również otrzymać folder o nazwie front. Tutaj znajdują się treści na stronę internetową.

Najpierw potrzebujemy apache, zanim będziemy mogli korzystać z folderu. Postępuj zgodnie z przewodnikiem pod tym linkiem dla Apache.

Kiedy będziesz gotowy. Przejdź do miejsca, w którym znajduje się przedni folder:

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

Następnie wpisz:

sudo mv przód/var/www/html

Kiedy to zrobisz, przejdź do folderu html, przygotuj się do żmudnej pracy (moja wina).

cd /var/www/html/

następnie przejdź do folderu przedniego i zacznij przenosić wszystko do folderu html.

przykład:

sudo mv css /var/www/html

Następnie usuń przedni folder.

I ze wszystkim skończyliśmy.

Powodzenia:).

Krok 10: Opcjonalnie - miniaturowy prototyp

Opcjonalnie - miniaturowy prototyp
Opcjonalnie - miniaturowy prototyp
Opcjonalnie - miniaturowy prototyp
Opcjonalnie - miniaturowy prototyp

Ze względów testowych zrobiłem prototyp tylko pudełka z całym sprzętem w środku, abym mógł sprawdzić, czy wszystko działa na zamówienie.

Normalnie ten projekt byłby realizowany na większą skalę. Na przykład: pokój, dom, fabryka, sklep i tak dalej…

Ale oczywiście zanim zaczniemy robić dziury w ścianach (ładny wierszyk). Najpierw chcemy sprawdzić, czy to po prostu działa. Właściwie nie musisz robić pudełka do testów, ale zawsze fajnie jest zrobić trochę rzemiosła.

Oto mój przykład.

Zalecana: