Cov txheej txheem:

Chaw Nres Tsheb Huab Cua Hauv Zos: 8 Kauj Ruam (nrog Duab)
Chaw Nres Tsheb Huab Cua Hauv Zos: 8 Kauj Ruam (nrog Duab)

Video: Chaw Nres Tsheb Huab Cua Hauv Zos: 8 Kauj Ruam (nrog Duab)

Video: Chaw Nres Tsheb Huab Cua Hauv Zos: 8 Kauj Ruam (nrog Duab)
Video: Saib Mis paub Poj niam (hluas nkauj) tus yam ntxwv lub siab 2024, Lub Xya hli ntuj
Anonim
Chaw Nyob Huab Cua Hauv Zos
Chaw Nyob Huab Cua Hauv Zos

Raws li kuv tab tom nrhiav txoj haujlwm zoo los ua rau kuv thawj xyoo kawm ntawv txoj haujlwm Kuv muaj ntau lub tswv yim ntawm yuav ua dab tsi tab sis tsis muaj ib qho uas kuv pom tias nyuaj.

Tom qab ntawd kuv xav txog kev ua Chaw Ua Haujlwm Huab Cua uas muaj qee yam tshwj xeeb rau nws. Kuv xav kom muaj peev xwm khaws tag nrho kuv cov ntaub ntawv thiab tom qab siv qhov no rau kev txheeb cais. Txoj haujlwm no yuav tshwj xeeb ua rau cov tib neeg uas muaj kev txaus siab rau huab cua thiab xav tau lub tsev tsim cov chaw nres tsheb huab cua uas tsis raug nqi ntau npaum li qhov muaj nyob hauv khw. Txoj haujlwm no kuj tseem ua kom muaj peev xwm ntxiv lossis tshem tawm cov cim tau txhua lub sijhawm.

Kuv zoo siab heev thaum kuv pom kuv qhov txiaj ntsig kawg uas ua tau zoo dua li qhov xav tau.

Nws yog tsim los ntawm Raspberry Pi 4 khiav linux.

  • Apache Lub Vev Xaib (html css js)
  • Eventlet (backend server lub vev xaib)
  • MariaDB (database neeg rau zaub mov)

Khoom siv

  • Raspberry Pi 4:

    sd-daim npav (min 16gb)

  • Sensors:

    1. QS-FS cua ceev sensor
    2. Cua Sensor Vaj Teeb Pom Kev Aluminium Alloy Cua Direction Sensor Cua Vane Ceev Ntsuas Ntsuas https://www.banggood.com/Wind-Sensor-Garden-Signal-Output-Aluminium-Alloy-Wind-Direction-Sensor-Wind-Vane-Speed -Measuring-Instrument-p-1624988.html? Rmmds = myorder & cur_warehouse = CN
    3. DHT22 (av noo)
    4. BMP280 (huab cua siab)
    5. DS18B20 (ntsuas kub)
  • Power Supply cov

    • 5v fais fab mov (RPi)
    • 9v fais fab mov (nyob rau sab nrauv daim phiaj fais fab mov)
  • Daim ntawv qhia zaub mov (x2)

    T-cobbler ntxiv rau RPi 4

  • jumper cov xov hlau
  • IC cov

    • YWB 3008
    • PCF8574 UA
  • LCD Zaub 16x2
  • LED (liab
  • Casing (optinal)

    • crates cawv
    • ntoo ncej (2m)
    • ntoo ntoo (1m)

Kauj Ruam 1: Npaj Yam Khoom Npaj

Nws ib txwm muaj qhov tseem ceeb kom tau txais txhua yam khoom koj xav tau ua ntej koj pib ua haujlwm ntawm ib qib. Qhov no yuav txuag koj ntau lub sijhawm thaum ua haujlwm hla nws.

Yog li ua ntej, Koj xav tau dab tsi:

  • Raspberry Pi 4:

    sd-daim npav (min 16gb)

  • Sensors:

    1. QS-FS cua ceev sensor
    2. Cua Sensor Vaj Teeb Pom Kev Txhuas Txhuas Txhuas Alloy Cua Kev Taw Qhia Sensor Cua Vane Ceev Ntsuas Ntsuas
    3. DHT22 (av noo)
    4. BMP280 (huab cua siab)
    5. DS18B20 (kub)
  • Power Supply cov

    • 5v fais fab mov (RPi)
    • 9v fais fab mov (nyob rau sab nrauv daim phiaj fais fab mov)
  • Daim ntawv qhia zaub mov (x2)
  • T-cobbler ntxiv rau RPi 4
  • jumper cov xov hlau
  • IC cov

    • YWB 3008
    • PCF8574 UA
  • LCD Zaub 16x2
  • LED (liab)
  • Casing (optinal)

    • cawv crateswooden
    • ntoo ntoo (1m)
    • ncej (2m)

Koj tuaj yeem pom txhua qhov txuas uas kuv yuav cov no hauv ntu khoom siv hauv qab qhia.

Kauj Ruam 2: Teeb RPi

Kev teeb tsa RPi
Kev teeb tsa RPi

Rau peb txoj haujlwm peb xav tau RPi nrog rau cov software tau teeb tsa.

  • Apache Lub Vev Xaib (html css js)
  • Flask Socket-IO (backend server lub vev xaib)
  • MariaDB (database neeg rau zaub mov)

Ua ntej txhim kho nws ib txwm ua tau zoo kom ntseeg tau tias koj muaj qhov software tshiab tshaj plaws nruab rau ntawm koj RPi. Txhawm rau ua qhov no tsuas yog ua raws cov lus txib hauv qab no:

sudo apt hloov tshiab

Apache:

Ua ntej cia tham txog Apache. Apache yog lub vev xaib uas siv thoob plaws ntiaj teb. Nws khiav koj lub vev xaib flawlessly. Qhov tsuas yog koj yuav tsum ua yog nruab nws thiab tso koj lub vev xaib rau hauv daim nplaub tshev raug thiab nws muaj.

sudo apt nruab apache2 -y

Qhov ntawd yog nws!

Kom paub tseeb tias txhua yam tau teeb tsa kom raug nthwv dej rau koj li raspberry pi Ip-address hauv koj tus browser thiab saib yog tias koj tau txais lub vev xaib tsis raug. Yog tias koj muaj teeb meem hais txog cov kauj ruam no koj tuaj yeem tshawb xyuas RPi lub vev xaib ntawm no.

Txheej xwm:

Tam sim no cia nruab Eventlet. Nws yuav ua haujlwm peb lub backend server thiab yuav ua kom muaj kev sib txuas los ntawm peb cov sensors mus rau peb lub vev xaib. Rau qhov ntawd peb xav tau ob peb pob khoom.

Flask-socketIO:

pip3 nruab flask-socketio

Txheej xwm:

pip3 nruab eventlet

Gevent:

pip3 nruab gevent

Mariadb:

Mariadb yog MySQL raws cov database uas ua rau cov ntaub ntawv txheeb ze. Nws feem ntau siv hauv RPi thiab yog li ntawd muaj kev pab ntau yam uas koj tuaj yeem nrhiav tau hauv internet. Yog xav paub ntxiv koj tuaj yeem mus rau qhov txuas no.

apt nruab mariadb-server

Kauj Ruam 3: Txuas Cov Cuab Yeej thiab Ntxiv Txoj Cai

Txuas Cov Cuab Yeej thiab Ntxiv Txoj Cai
Txuas Cov Cuab Yeej thiab Ntxiv Txoj Cai
Txuas Cov Cuab Yeej thiab Ntxiv Txoj Cai
Txuas Cov Cuab Yeej thiab Ntxiv Txoj Cai
Txuas Cov Cuab Yeej thiab Ntxiv Txoj Cai
Txuas Cov Cuab Yeej thiab Ntxiv Txoj Cai

Txhawm rau txuas cov ntsuas rau peb RPi peb tuaj yeem siv T-Cobbler ntxiv rau. Nov yog qhov khoom siv me me uas ua rau nws muaj peev xwm siv tag nrho koj cov pins ntawm koj RPi ntawm lub khob cij.

Hauv kuv qhov project kuv muaj 5 tus ntsuas:

  1. QS-FS cua ceev sensor
  2. Cua Sensor Vaj Teeb Pom Kev Txhuas Txhuas Txhuas Alloy Cua Kev Taw Qhia Sensor Cua Vane Ceev Ntsuas Ntsuas
  3. DHT22 (av noo)
  4. BMP280 (huab cua siab)
  5. DS18B20 (kub)

Cua ceev sensor:

Ua ntej tshaj txhua yam kuv tau pib nrog lub ntsuas cua nrawm vim kuv feem ntau zoo siab txog qhov ntsuas no. Nws yog lub ntsuas hluav taws xob nrog lub teeb liab sib piv ntawm 0-5v tso tawm thiab xav tau qhov hluav taws xob tsawg kawg 7 volts los ua haujlwm. Kuv xaiv rau tus 9 volts adapter kom nws.

Txhawm rau nyeem hauv qhov ntsuas no kuv siv MCP3008 uas yog IC nyeem hauv Analog cov cim. IC tuaj yeem ua haujlwm ntawm 3.3V lossis 5V tab sis kuv xaiv 3.3V txhawm rau ua kom nws sib xws nrog RPi. Qhov no txhais tau tias kuv xav hloov pauv qhov hluav taws xob los ntawm 5V txog 3.3V Kuv tau ua qhov no los ntawm kev ntxiv qhov faib hluav taws xob tsim los ntawm 2 resistors (2k thiab 1k ohm).

Cua Taw Qhia Sensor:

Kev taw qhia cua yog qhov tseem ceeb raws li cua nrawm yog li kuv yuav txuas qhov txuas mus ntxiv no.

Qhov ntsuas no muaj qhov tshwj xeeb ib yam li cua ceev sensor. Nws tseem yuav ua haujlwm ntawm 9V thiab muaj qhov hluav taws xob tso tawm ntawm 5 volts. Qhov ntsuas no peb yuav txuas rau MCP3008 ntawm qhov faib hluav taws xob.

DHT22 (av noo):

DHT22 nyeem cov av noo. Nws muab tus nqi rau koj feem pua thiab nws tus nqi tuaj yeem nyeem tau los ntawm kev siv I2C raws tu qauv ntawm RPi. Yog li koj yuav tsum pab kom I2C cov chaw nres nkoj hauv Raspi-teeb tsa. Xav paub ntau ntxiv ntawm no.

BMP280 (huab cua siab):

BMP280 yog siv los nyeem huab cua siab. Nws tus nqi tau txais los ntawm SPI npav ntawm RPi. Cov txheej txheem no tseem yuav tsum tau ua kom nyob hauv Raspi-teeb tsa. Rau kuv tus lej kuv siv Adafruit lub tsev qiv ntawv.

DS18B20 (kub):

Qhov kawg sensor ntsuas qhov kub thiab txias. lub ntsuas no yog los ntawm Dallas thiab yog tias koj tau muaj kev paub me ntsis nrog Dallas koj yuav tsum tau zaum twb paub lawm tias lawv siv 1Wire-npav. Tsis txhob poob siab yog tias kuv hais tias cov txheej txheem no tseem yuav tsum tau ua kom nyob hauv Raspi-teeb tsa.

Yuav ua li cas kuv txuas cov sensors:

Raws li pdf Kuv tau tshaj tawm cov phiaj xwm hluav taws xob thiab daim ntawv qhia zaub mov kom yooj yim me ntsis.

Tom qab muaj peev xwm txuas lub ntsuas hluav taws xob tau zoo thiab koj ntxiv cov cai yuav tsum tau nyeem tag nrho cov ntsuas koj tuaj yeem mus tom ntej thiab mus rau theem tom ntej. Yog tias koj nyiam tso lub sensor tom qab lossis xav ntxiv ntau ntxiv koj tuaj yeem ua tau.

Kauj Ruam 4: Tsim Web Ui

Tsim Web Ui
Tsim Web Ui
Tsim Web Ui
Tsim Web Ui
Tsim Web Ui
Tsim Web Ui

Tam sim no peb txuas nrog cov sensors peb xav tau tus tsim rau peb lub vev xaib.

Peb xav kom lub vev xaib tsim kom yooj yim saib thaum tso tawm txhua lub sijhawm tiag tiag-cov ntaub ntawv ntawm cov ntsuas.

Tsis tas li peb xav kom tuaj yeem pom keeb kwm ntawm cov ntsuas ntsuas no nyob rau ib lub sijhawm twg.

Yog li Ua Ntej Kuv pib saib ib puag ncig hauv lub vev xaib rau qee qhov kev tshoov siab. Feem ntau ntawm txhua qhov uas tsuas yog cov ntaub ntawv qhia chaw tsis muaj qhov tsim tiag kuv tab tom nrhiav. Cov chaw huab cua uas twb tau nyob hauv kev ua lag luam feem ntau yuav muaj cov zaub. Thiab tawm ntawm qhov tso saib kuv qhov kev tshoov siab tuaj. Cov lus qhia feem ntau muaj kev tsim qauv nrog daim phiaj zoo. Qhov no tau muab kuv lub tswv yim los tsim lub vev xaib uas txhua qhov ntsuas yuav pom.

Tab sis, kuv kuj tau hais tias kuv xav ua nplooj ntawv uas koj tuaj yeem pom keeb kwm ntawm txhua qhov ntsuas nws qhov txiaj ntsig.

Vim yog vim li cas kuv kuj tau ua nplooj ntawv 2 hauv kuv tus qauv tsim muaj qhov no. Ntawm nplooj ntawv no kuv tuaj yeem pom qee cov ntaub ntawv ntxiv txog kuv lub ntsuas cua uas yuav tsis tshwm rau ntawm kuv lub hauv ntej-nplooj ntawv thiab tsis yog keeb kwm ib feem.

Tom qab ob peb teev kuv tau ua tiav kuv cov qauv tsim tawm!

Kev tsim qauv tau tsim los siv Adobe XD.

Kauj ruam 5: Tsim Database

Tsim Database
Tsim Database

Kom tau so ntawm qhov tsim qauv ib feem kuv pib ntawm kuv cov ntaub ntawv.

Cov ntaub ntawv no yuav suav nrog txhua tus ntsuas (5), txhua tus ua haujlwm (2) thiab qhov muaj txiaj ntsig uas cov ntsuas tau muaj.

Cov database yog qhov yooj yim heev thiab muaj qee qhov kev sib raug zoo.

Koj tuaj yeem pom tus qauv database hauv daim duab.

Kauj Ruam 6: Coding Lub Vev Xaib: Frontend (html Css)

Rov qab mus rau Lub Vev Xaib!

Tam sim no kuv muaj tus tsim Kuv tuaj yeem pib coding nws li html css kom siv nws tiag.

Hauv qhov home-page:

Kuv pib los ntawm kev txiav txim siab txhua lub sensor ua lub hauv paus ntawm kuv lub vev xaib. Yog li ntawd kuv tuaj yeem tom qab tso qhov no tsim los ntawm kuv tus lej Javascript.

Kuv kuj tau tso cov chav kawm JS-tuav rau hauv cov ntsiab lus. Cov no yuav ua rau nws hloov pauv cov ntsiab lus ntawm cov khoom ntawd

Qhov no coj kuv ntau lub sijhawm vim tias kuv tsis zoo nyob hauv cov lus tshwj xeeb no.

Ua tiav qhov home-page nws yog lub sijhawm pib ntawm nplooj ntawv keeb kwm.

Hauv keeb kwm-nplooj ntawv:

Nplooj ntawv no yooj yim dua los tsim dua tshiab. Hauv nplooj ntawv no tseem muaj js-tuav kom tau txais cov ntaub ntawv hais txog lub ntsuas pa hauv, lub sijhawm muaj txiaj ntsig qhov txiaj ntsig thiab los tso saib cov lus nrog rau qhov ntsuas qhov tseem ceeb.

Txhawm rau tsim lub tab-xaiv ntawm kuv lub vev xaib los xaiv ntawm Table lossis Chart Kuv tau yuav tsum ntxiv me ntsis ntawm Javascript los ua cov ntsiab lus tsis pom lossis ua kom pom.

Tam sim no peb muaj lub vev xaib zoo kawg tab sis tsis tuaj yeem qhia dab tsi ntawm nws? Wb kho qhov ntawd.

Koj tuaj yeem pom kuv tus lej ntawm kuv qhov chaw cia khoom github:

Kauj Ruam 7: Coding Lub Vev Xaib: Backend (eventlet) + Coding Frontend (javascript)

Backend:

Thaum lub backend server twb tau teeb tsa lawm peb tseem xav tau siv qhov no hauv peb qhov haujlwm. Ua ntej peb yuav tsum tau ntxiv qee qhov kev xa khoom los ua kom txhua yam ua haujlwm tau zoo.

los ntawm lub raj mis ntshuam Flask, thov, jsonify los ntawm flask_socketio ntshuam SocketIO los ntawm flask_cors ntshuam CORS

Txhawm rau ua kom lub server pib peb yuav tsum ntxiv cov hauv qab no:

socketio.run (app, debug = Cuav, host = '0.0.0.0')

Tam sim no tus neeg rau zaub mov yog online tab sis nws yuav tsis tuaj yeem tham nrog lub ntsej muag.

Nws tsis tau txais lossis xa rov qab dab tsi. Wb hloov qhov ntawd.

Txhawm rau nug txhua tus ntsuas hauv cov ntaub ntawv wel yuav ntxiv txoj hauv kev:

@app.route (endpoint + '/sensors', method = ['GET']) def get_sensors (): yog thov.method == 'GET': s = DataRepository.get_sensors () rov qab jsonify (sensors = s), 200

Txoj cai no siv chav kawm hu ua DataRepository thiab hais lus rau lub database. Ntawm no nws muab rov qab rau peb cov sensors peb thov.

Peb kuj xav tau txoj hauv kev los nug cov ntaub ntawv hais txog 1 lub ntsuas tshwj xeeb thiab lwm qhov rau qhov txiaj ntsig ntawm qhov ntsuas tau muab.

Cov no yog txhua txoj hauv kev tab sis ua kom cov ntaub ntawv tiag tiag ua tau. Peb yuav tsum xa txhua lub sijhawm sib nrug cov ntaub ntawv uas lub ntsuas ntsuas tsuas yog nyeem. Txhawm rau ua qhov no peb siv Socket-IO kev txuas. Nws yog kev sib txuas tsim los ntawm lub sijhawm uas ib tus neeg rub lub vev xaib nrog JS thiab nws ua kom qhov kev sib txuas no qhib. Qhov no yog kev txuas ob-duplex uas txhais tau tias nws yog kev sib txuas uas ua haujlwm hauv ob txoj hauv kev (xa thiab txais) tib lub sijhawm. Txhawm rau siv qhov no peb yuav tsum ntxiv cov cai hauv qab no.

@socketio.on ('txuas') def initial_connection (): luam tawm ('Ib tus neeg siv tshiab txuas') socketio.send ("U khoov geconnecteerd") # # Xa mus rau tus neeg siv khoom!

Qhov kev thaj yeeb nyab xeeb ntawm cov cai tau khiav thaum tus neeg siv khoom sib txuas.

Txhawm rau tau txais cov lus los ntawm tus frontend koj tuaj yeem siv tus lej no.

@socketio.on ('message') def message_recieved (): dhau

Koj kuj tuaj yeem xa lus. Qhov no ua tiav los ntawm cov hauv qab no.

socketio.emit ('Update_RTD', dict_results, tshaj tawm = Tseeb)

Thawj qhov kev sib cav tuaj yeem yog txhua yam koj xav tau tab sis yuav sib haum rau qhov koj muab tso rau hauv koj JS thiab koj tuaj yeem xa cov khoom nrog nws ib yam. Qhov no yog nyob ntawm yeem.

Javascript:

Nws yog ib qho tseem ceeb kom ntxiv me ntsis ntawm JS kom tau txais lub server txuas nrog lub backend server kom tuaj yeem tso tawm cov ntaub ntawv tam sim no thiab tau txais cov ntaub ntawv los ntawm lub hauv paus.

Peb yuav hu xov tooj rau socketIO cov haujlwm peb tau ua kom tau txais thiab xa cov ntaub ntawv.

Thaum peb tau txais cov ntaub ntawv ua Json Object peb yuav tshem nws kom tau cov ntaub ntawv peb xav tau thiab tom qab ntawd muab tso rau hauv JS-tuav peb muab tso rau hauv peb lub vev xaib.

Koj tuaj yeem pom kuv tus lej ntawm kuv qhov chaw cia khoom github:

Kauj Ruam 8: Ua Casing

Ua Casing
Ua Casing
Ua Casing
Ua Casing
Ua Casing
Ua Casing
Ua Casing
Ua Casing

Lub casing tau siv ntau txoj haujlwm thiab tuaj yeem ua tiav los ntawm txhua txoj hauv kev uas koj xav tau. Nov yog qhov kuv tau ua.

Kuv coj ib co Wine Crates.

Ib ntawm lawv kuv tau siv ua lub thawv kom muaj kuv RPi thiab feem ntau ntawm kuv lub ntsuas cua.

Cua ceev sensor thiab cua qhia sensor tau ntawm chav kawm tsis tau muab tso rau sab hauv tab sis nyob rau sab saum toj ntawm tus ntoo khaub lig muab tso rau ntawm tus ncej. Ntawm tus ncej no kuv dai tus cawv txiv hmab uas kuv kuj ua lub qhov rooj rau.

Koj tuaj yeem pom yuav ua li cas kuv ua tiav kuv txoj haujlwm los ntawm kev saib cov duab.

Nov yog qhov piv txwv ntawm yuav ua li cas koj thiaj ua tau. Koj tuaj yeem ua nrog nws txhua yam koj xav tau.

Pom zoo: