Բովանդակություն:

TheAir - Գազի տվիչների նախագիծ. 10 քայլ
TheAir - Գազի տվիչների նախագիծ. 10 քայլ

Video: TheAir - Գազի տվիչների նախագիծ. 10 քայլ

Video: TheAir - Գազի տվիչների նախագիծ. 10 քայլ
Video: Scentroid's DR2000 Flying Laboratory Product Seminar B 09.09.2020 (Subtitled) 2024, Նոյեմբեր
Anonim
TheAir - Գազի տվիչների նախագիծ
TheAir - Գազի տվիչների նախագիծ

Ածխածնի երկօքսիդ և ածխաթթու գազ, որոնք հայտնի են նաև որպես CO և CO2: Գազեր, որոնք անգույն, անհոտ, անճաշակ և անկեղծորեն վտանգավոր են, երբ փակ սենյակում մեծ կոնցենտրացիաների են: Եթե դուք ապրում եք, ասեք, օրինակ, ուսանողական սենյակում, որը վատ մեկուսացված է, լավ օդի հոսք չկա, և ինչ -ինչ պատճառներով կենացը տարօրինակ աղմուկ է բարձրացնում: Այնուհետև դուք կարող եք շփվել այս գազերի հետ, և երբ դա տեղի ունենա, հուսանք, որ այն կավարտվի միայն մի փոքր գլխացավով, ինչը բարձր կոնցենտրացիայի դեպքում կարող է ձեզ անգործունակ կամ նույնիսկ սպանել (թեև շատ հազվադեպ):

Այսպիսով, ես որոշեցի հանդես գալ այս նախագծով: Իմ գաղափարը պարզ է, օդափոխիչ օգտագործելու համար օգտագործեք երկրպագուներ: Այսպես ասած, լավ օդը ներսում է, իսկ վատը ՝ դուրս: Լրացուցիչ օգտակարության համար ես ավելացրեցի լրացուցիչ ջերմաստիճանի տվիչ, կոճակ ձեռքով ակտիվացման երկրպագուների համար, ինչպես նաև կայք նրանց համար, ովքեր սիրում են տեսնել վիճակագրություն և/կամ ակտիվացնել երկրպագուները իրենց համակարգչից:

Որպես ուսանող, ծնող, միայնակ կամ կենդանի էակ: Սա մի բան է, որից դուք սովորաբար կցանկանայիք խուսափել սեփական տան հարմարավետության պայմաններում ապրելիս: Սա օգնում է նրանց, ովքեր սիրում են իրենց կյանքը մի փոքր հեշտացնել:

Պարագաներ

  • Ազնվամորի 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 էկրան
  • Pushbutton
  • MCP3008
  • Տրամաբանական մակարդակի փոխարկիչ
  • Ethernet մալուխ (տեղադրման պատճառներով)

Քայլ 1: Ազնվամորի Պի կարգավորում

Raspberry Pi- ի կարգավորում
Raspberry Pi- ի կարգավորում
Raspberry Pi- ի կարգավորում
Raspberry Pi- ի կարգավորում

Նախքան Rpi- ի հետ աշխատելը, մեզ անհրաժեշտ կլինի որոշ ծրագրակազմ:

  • WinSCP կամ FilleZilla (ըստ ցանկության, եթե ցանկանում եք ֆայլերը ձեր համակարգչից փոխանցել Rpi)
  • Win32 սկավառակ կամ Etcher (որն ավելի շատ եք նախընտրում)
  • Tyեփամածիկ կամ 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- ն DHCP- ով ip չունի, ապա հեշտությամբ օգտագործում եք ստատիկ ip- ն:

Քայլ 2. Միացում և Rpi անլար միացում ձեր տեղական ցանցին

Միացում և Rpi անլար միացում ձեր տեղական ցանցին
Միացում և Rpi անլար միացում ձեր տեղական ցանցին
Միացում և Rpi անլար միացում ձեր տեղական ցանցին
Միացում և Rpi անլար միացում ձեր տեղական ցանցին
Միացում և Rpi անլար միացում ձեր տեղական ցանցին
Միացում և Rpi անլար միացում ձեր տեղական ցանցին
Միացում և Rpi անլար միացում ձեր տեղական ցանցին
Միացում և Rpi անլար միացում ձեր տեղական ցանցին

Մենք պատրաստվում ենք գործարկել Rpi -> միացնել Ethernet մալուխը համակարգչի և Rpi- ի միջև:

  1. Սկսեք ծեփոն և լրացրեք սա.

    • Հյուրընկալողի անունը (կամ IP հասցեն) ՝ 169.254.10.1
    • Նավահանգիստ: 22
  2. Տերմինալ է հայտնվում, և դուք մուտքագրում եք կանխադրված օգտվողի անունը և գաղտնաբառը.

    • Մականուն: pi
    • Գաղտնաբառ `ազնվամորի

Այժմ, երբ մենք տեղականորեն միացված ենք rpi- ին, մենք ցանկանում ենք, որ Rpi- ն կապ ունենա ձեր WiFi- ի հետ:

  1. Լրացուցիչ. Մուտքագրեք «sudo raspi-config»
  2. Այստեղ դուք պետք է փոխեք գաղտնաբառը pi օգտվողի համար (անվտանգության նկատառումներով)
  3. Այնուհետև գնացեք Տեղայնացման ընտրանքներ -> Փոխել ժամանակը (ընտրեք ճիշտը) -> Այնուհետև գնացեք Wifi երկիր -> ընտրեք երկիր:
  4. Փակեք raspi-config- ը և վերագործարկեք:
  5. Մուտք գործելով ՝ ժամանակավորապես ինքներդ ձեզ արմատային օգտվող դարձրեք -> 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 լար, որը ես չեմ բացատրի, թե ինչու, բայց ես կբացատրեմ, թե ինչպես այն առնվազն աշխատել:

Դրա համար մենք պետք է վերադառնանք Rpi- ի raspi-config ՝ գեղեցիկ կապույտ էկրանին:

  1. Գնացեք Ինտերֆեյսի ընտրանքներ
  2. Ընտրեք 1-Wire և ընտրեք միացնել:

Կատարած…

Պարզապես կատակում եմ.

Այժմ մենք պետք է կարգավորենք /boot/config.txt

sudo nano /boot/config.txt

Ավելացրեք այս տողը ներքևում:

# Միացնել անլար հաղորդումը

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

Գնացեք Interfacing Options -> Select SPI -> enable:

Հետո Ավարտել:

Քայլ 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- ը Rpi- ով:

sudo apt-get տեղադրել mariadb-server

Տեղադրվելուց հետո եկեք օգտագործենք այն:

mysql -u արմատ

Գաղտնաբառը դատարկ է, այնպես որ մուտքագրելու ոչինչ չկա: Սեղմեք enter:

Եկեք հիմա օգտվող ստեղծենք:

ՍՏԵԵԼ Օգտվողի 'օգտվող'@'%' IDENTIFIED BY 'userdb';

ՏՐԱՄԱԴՐԵԼ ԲՈԼՈՐ ՊՐՈՎԵԼԻՈԹՅՈՆՆԵՐԸ *. * 'Օգտվողին'@'%' ԳՐԱՆՏԱԿԱԼՈԹՅՈՆՈՎ;

FLԱՌԱՅԻՆ ԱՌԱIՆՈԹՅՈՆՆԵՐ;

Սեղմեք Ctrl + C ՝ ծառայությունից դուրս գալու և արագ վերագործարկելու համար.

sudo ծառայություն mysql վերագործարկեք

Մուտք գործեք օգտվողի անունով ՝ օգտվող և գաղտնաբառ ՝ userdb:

mysql -u օգտվող -p

Այժմ տվյալների բազա ստեղծելու ժամանակն է:

Ստեղծել տվյալների շտեմարան project_db ՆԱԽԱԳԱՀԻ ՆԵՐԿԱՅԱՈԹՅՈՆ SET utf8;

ՕԳՏԱԳՈՐԵԼ project_db

Ստեղծեք աղյուսակ «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;

Եվ voila, տվյալների բազան կազմված է:

Քայլ 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 -րդ քայլին:

Մենք այս թվերը կավելացնենք ծածկագրին, քանի որ այն օգտագործելիս պետք է իմանա ճիշտ տվիչը:

Theերմաստիճանի թղթապանակով տերմինալը կգտնեք 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.pin- երը: Սրանում իմ իմացած առավելությունները չկան:

Քայլ 8: Գործարկեք կոդը Boot Up- ում

Գործարկել կոդը Boot Up- ում
Գործարկել կոդը Boot Up- ում

Մենք ցանկանում ենք, որ այս 2 պիթոնի սցենարներն աշխատեն այն պահին, երբ մեր Rpi- ն կբարձրանա, և եթե սցենարը խափանվի, այն պետք է ինքնուրույն վերագործարկվի: Դա անելու համար մենք պատրաստվում ենք կատարել 2 ծառայություն:

Դա անելու համար մուտքագրեք.

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

Պատճենեք և տեղադրեք սա ջերմաստիճանի համար: ծառայություն.

[Միավոր] Նկարագրություն = peratերմաստիճանի սպասարկում հետո = multi-user.target

[Serviceառայություն] Տեսակ = պարզ

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- ի համար.

Առաջին բաց տեքստը.

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

Այնուհետև կրկին պատճենեք և տեղադրեք.

[Միավոր] Նկարագրություն = backend_project Service

Հետո = 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 daemon-reload

sudo systemctl միացնել ջերմաստիճանը: ծառայություն sudo reboot

Այժմ մեր 2 պիթոնի սցենարները պետք է ինքնաբերաբար գործարկվեն բեռնման ժամանակ:

Քայլ 9: Կայքի տեղադրում

Երբ դուք բեռնում եք պահեստը, դուք պետք է նաև ձեռք բերեք մի թղթապանակ, որը կոչվում է առջև: Այստեղ է, որ բովանդակությունը կայքի համար է:

Նախ պանակը օգտագործելուց առաջ մեզ apache է պետք: Հետևեք այս հղման ուղեցույցին apache- ի համար:

Երբ պատրաստ լինես: Գնացեք այնտեղ, որտեղ գտնվում է առջևի թղթապանակը.

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

Այնուհետեւ մուտքագրեք.

sudo mv ճակատ/var/www/html

Երբ դա արվի, գնացեք html թղթապանակը, պատրաստվեք ինչ -որ հոգնեցուցիչ աշխատանքի (իմ մեղքով):

cd/var/www/html/

ապա մտեք առջևի թղթապանակ և սկսեք ամեն ինչ տեղափոխել html պանակ:

օրինակ:

sudo mv css/var/www/html

Այնուհետեւ ջնջեք առջեւի թղթապանակը:

Եվ մենք ավարտեցինք ամեն ինչ:

Հաջողություն:).

Քայլ 10. Լրացուցիչ - մանրանկարչություն նախատիպ

Լրացուցիչ - մանրանկարչական նախատիպ
Լրացուցիչ - մանրանկարչական նախատիպ
Լրացուցիչ - մանրանկարչական նախատիպ
Լրացուցիչ - մանրանկարչական նախատիպ

Փորձարկման պատճառներով ես պատրաստեցի տուփի նախատիպ ՝ ներսում առկա բոլոր սարքավորումներով, որպեսզի կարողանամ տեսնել, թե արդյոք ամեն ինչ պատվերով է աշխատում:

Սովորաբար այս նախագիծը կկատարվեր ավելի մեծ մասշտաբով: Օրինակ ՝ սենյակ, տուն, գործարան, խանութ և այլն…

Բայց ակնհայտորեն նախքան պատերի մեջ անցքեր սկսելը (գեղեցիկ հանգ): Մենք նախ ուզում ենք տեսնել, արդյոք այն պարզապես աշխատում է: Փաստորեն, փորձարկման համար տուփ պատրաստելը պետք չէ, բայց որոշ արհեստներ պատրաստելը միշտ էլ հաճելի է:

Ահա իմ օրինակը:

Խորհուրդ ենք տալիս: