Мазмуну:

TheAir - Газ сенсорунун долбоору: 10 кадам
TheAir - Газ сенсорунун долбоору: 10 кадам

Video: TheAir - Газ сенсорунун долбоору: 10 кадам

Video: TheAir - Газ сенсорунун долбоору: 10 кадам
Video: Закаспийская ЖД и Транссиб на карте. Строительство 2024, Ноябрь
Anonim
TheAir - Газ сенсорунун долбоору
TheAir - Газ сенсорунун долбоору

Көмүр кычкылы жана көмүр кычкыл газы, ошондой эле СО жана СО2 деп аталат. Түссүз, жытсыз, даамсыз жана жабык бөлмөдө жогорку концентрацияда болгондо ачык түрдө коркунучтуу газдар. Эгерде сиз жашап жаткан болсоңуз, мисалы, студенттик бөлмөдө, начар обочолонгон, жакшы аба агымы жок жана кандайдыр бир себептерден улам, тостер тост жасоодо кызыктай үн чыгарат. Андан кийин сиз бул газдар менен байланышта болушуңуз мүмкүн жана мындай болгондо, ал кичинекей баш оорусу менен бүтөт деп үмүттөнөбүз, анткени жогорку концентрацияда ал сизди майып кылышы же өлтүрүшү мүмкүн (өтө сейрек болсо да).

Ошентип, мен бул долбоор менен келүүнү чечтим. Менин оюм жөнөкөй, желдеткичтерди колдонуп аба агымын жасаңыз. Жакшы аба менен жаман аба мындайча айтканда. Кошумча пайдалуулук үчүн мен кошумча температура сенсорун, күйгүзүү күйөрмандары үчүн баскычты жана статистиканы көрүүнү жана/же күйөрмандарды компьютерден иштетүүнү каалагандар үчүн веб -сайтты коштум.

Студент, ата -эне, жалгыз бой адам же тирүү жан катары. Бул, адатта, өз үйүңүздүн сооронучунда жашоодон качкыңыз келген нерсе. Бул жашоосун бир аз жеңилдетүүнү каалагандарга жардам берет.

Жабдуулар

  • 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 дисплей
  • Pushbutton
  • MCP3008
  • Логи деңгээлинин конвертери
  • Ethernet кабели (орнотуу себептерден улам)

1 -кадам: Raspberry Pi орнотуу

Raspberry Pi орнотуусу
Raspberry Pi орнотуусу
Raspberry Pi орнотуусу
Raspberry Pi орнотуусу

Rpi менен иштөөдөн мурун, биз кээ бир программаларга муктаж болобуз.

  • WinSCP же FilleZilla (эгер сиз файлдарды компьютериңизден Rpiге өткөргүңүз келсе, милдеттүү эмес)
  • Win32 диск же Etcher (сизге көбүрөөк жаккан)
  • Putty же MobaXterm (сизге көбүрөөк жаккан)
  • Иш столунда Raspbian сүрөтү

Баштоодон мурун, бул үйрөткүчтү жасоодо, мен башка программаны тандап алганымда, мен сунуштайм дегенди билдирбейт. Мисалы, мен этчерди колдонууну жакшы көрөм, анткени колдонуучуга ыңгайлуу, бирок Win32де камдык көчүрүү мүмкүнчүлүгү бар. Эми бул менин системамда жок, баштайлы.

Эгерде сизде WiFi тармагына туташкан Rpi бар болсо, 3 -кадамга өтүңүз.

Биринчиден, Raspbian сүрөтүн SD картаңызга коюу үчүн Etcherди колдонобуз. Эми sd картасын чыгарардан мурун, биз сүрөттө табылган cmdline.txt файлындагы кээ бир "нерселерди" өзгөртөбүз.. Txt файлын ачыңыз -> Бул сапты кошуңуз "ip = 169.254.10.1" (тырмакча жок) саптын аягына (бардыгы 1 сапта) -> Файлды сактоо

Экинчиден, жүктөөчү бөлүктө "ssh" деп аталган бош папканы жасаңыз (тырмакчасыз).

Андан кийин, сиз Microsdти аман -эсен чыгарып, Rpiге койсоңуз болот.

Катуу коддолгон статикалык IPнин себеби Rpiге туташууну жеңилдетүү. Эгерде кандайдыр бир себептерден улам Rpiде DHCP менен IP жок болсо, анда сиз статикалык ipди оңой колдоносуз.

2 -кадам: Байланыш түзүү жана Rpi Wirelessти жергиликтүү тармагыңызга туташтыруу

Байланыш түзүү жана Rpi Wirelessти жергиликтүү тармагыңызга туташтыруу
Байланыш түзүү жана Rpi Wirelessти жергиликтүү тармагыңызга туташтыруу
Байланыш түзүү жана Rpi Wirelessти жергиликтүү тармагыңызга туташтыруу
Байланыш түзүү жана Rpi Wirelessти жергиликтүү тармагыңызга туташтыруу
Байланыш түзүү жана Rpi Wirelessти жергиликтүү тармагыңызга туташтыруу
Байланыш түзүү жана Rpi Wirelessти жергиликтүү тармагыңызга туташтыруу
Байланыш түзүү жана Rpi Wirelessти жергиликтүү тармагыңызга туташтыруу
Байланыш түзүү жана Rpi Wirelessти жергиликтүү тармагыңызга туташтыруу

Биз Rpi -> компьютер менен Rpi ортосундагы Ethernet кабелин туташтырабыз.

  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. Киргенде, өзүңүздү убактылуу колдонуучу кылыңыз -> sudo -i
  6. Тармагыңызды Rpiге кошуу үчүн бул буйрукту жазыңыз (тизме астындагы код)

    • пароль = "пароль" (тырмакча менен)
    • Тармактын аты = "SSID"
    • Кош >> колдонууну унутпаңыз! Маанилүү!

echo "password" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Эми кайра өчүрүңүз

Кайра туташып жатканда, IPиңизди терүү аркылуу текшериңиз:

ifconfig

жана inetтин жанындагы wlan0 текшериңиз.

Эми бизде интернет байланышы бар, "тез" жаңыртууну жасайлы.

sudo apt update

sudo apt dist -upgrade -y

Буга бир аз убакыт кетиши мүмкүн.

3-кадам: DS18B20 сенсору (температура)-1-зым

Сенсор DS18B20 (температура)-1 зымдуу
Сенсор DS18B20 (температура)-1 зымдуу
Сенсор DS18B20 (температура)-1 зымдуу
Сенсор DS18B20 (температура)-1 зымдуу

Ар бир долбоордо дайыма өзгөчө бир нерсе болушу керек, антпесе ал иштебейт.

Бул жолу бизде DS18B20 температура сенсору бар, ал 1 зымды талап кылат, мен муну түшүндүрбөйм, бирок мен аны жок дегенде кантип иштетүүнү түшүндүрөм.

Бул үчүн биз Rpiдеги raspi-configга кайтуубуз керек, жакшы көк экран.

  1. Interfacing параметрлерине өтүңүз
  2. 1-зымды тандап, иштетүүнү тандаңыз.

Бүттү…

Тамашалап жатам.

Эми биз /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

Interfacing Options -> SPI тандоо -> иштетүү бөлүмүнө өтүңүз.

Андан кийин бүтүрүү.

5 -кадам: Аппараттык

Биз толугу менен Rpi менен бүткөн жокпуз, бирок биз аппаратты курууну жана бириктирүүнү башташыбыз үчүн жетиштүү.

Кээ бир кеңештер, Rpi'ди жардырбоо үчүн … куруп жатканда байланыштарыңызды кылдат текшерүү.

Ошондой эле, схемада кээ бир компоненттердин бир эле жолу бар экенин байкайсыз, бирок биз бир эле компоненттин 1ден ашыгы менен иштейбиз. Бул жөн эле ошол 1 компонентти куруу процессин кайталаш керек дегенди билдирет. 1 кичинекей өзгөчө жагдай бар, mq-x сенсорлоруна кошумча деңгээлдеги конвертор же MCP3008 кереги жок. Жөн эле кошумча конверторго жана жашыл кабелди кошуңуз (pdf форматында) жана MCP3008.

Кошумча түзөтүү: Күйөрмандар которгуч катары транзисторду колдонушу керек. Мен 1 күйөрман үчүн 2n2222A транзисторун колдоном, анткени 2 күйөрман оор жүк болушу мүмкүн.

Эгерде сизде чоңураак токту башкара турган транзистор болсо, анда бул кадамдын акыркы бөлүгүн өткөрүп жибериңиз.

Эгерде сизде мага окшош болбосо, анда сиз муну ушундай кылышыңыз керек болот, 1 желдеткич = 1 транзистор, 2 желдеткич = 2 транзистор ж.б.

Ошондой эле, backend_project ичинде app.pyге кээ бир кодду кийинчерээк 7 -кадамда кошушуңуз керек болот: Git коду….

6 -кадам: Mariadb маалымат базасын түзүү

Mariadb маалымат базасын түзүү
Mariadb маалымат базасын түзүү

Аталышынан көрүнүп тургандай, биз маалымат базасын түзөбүз, ошондо сенсордук маалыматтарды сактай турган жерибиз бар.

Биринчи кезекте, Mariadbди Rpiге жүктөп алыңыз.

sudo apt-get mariadb-серверин орнотуңуз

Орноткондон кийин аны колдонолу.

mysql -u тамыры

Сырсөз бош, андыктан терүүгө эч нерсе жок. Enter басыңыз.

Эми колдонуучу түзөлү.

Колдонуучуну жаратуу 'user'@'%' IDENTIFIED BY 'userdb';

БАРДЫК СЫЙЛЫКТАРДЫ БЕРГИЛЕ *. * TO 'user'@'%' ГРАНТ ОПЦИОНУ МЕНЕН;

FLUSH артыкчылыктары;

Чыгуу үчүн Ctrl + C басыңыз жана кызматты тез өчүрүп күйгүзүңүз:

sudo кызматы mysql кайра

Колдонуучу аты менен кириңиз: колдонуучу жана пароль: userdb:

mysql -u колдонуучу -p

Азыр маалымат базасын түзүүгө убакыт келди.

DATABASE CREATE 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;

Жана voila, маалымат базасы түзүлөт.

7 -кадам: Github коду жана тестирлөө

Github коду жана тестирлөө
Github коду жана тестирлөө

Биз долбоорубуздун аягына жакындап калдык.

Биз кодду алардан мурун, кээ бир модулдарды Rpiге импорттошубуз керек болот:

pip3 Flask_MySQL орнотуу

pip3 колбасы-сокетин орнотуу

pip3 орнотуу -U колбасы -корс

pip3 орнотуу spidev

Эми иштеши үчүн бизге код керек, терминалга териңиз:

git клону

Папка бар экенин текшериңиз:

ls

Эми сизге 2 терминал керек болот, андыктан терминалды оң баскыч менен чыкылдатып, Сессияларды кайталоону чыкылдатыңыз:

CD буйругун колдонуп backend_project жана температурага өтүңүз.

Азыр биз тестирлөө үчүн программаларды баштоодон мурун. 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 -кадамга кайтпасаңыз.

Эми биз backend_project ичинде app.pyге айткандай кодду кошушубуз керек. Муну оңой кылуу үчүн, мен муну коддо мисал кылдым. Комментарийлердин ар бир сабында "fan1" бар, бул саптарды жана воиланы комментарийлебеңиз, эми сиз 2 күйөрманы колдонсоңуз болот.

Эгерде сиз дагы 2 күйөрманды көбүрөөк колдонууну кааласаңыз, ошол эле кодду башка номерге көчүрүп, чаптаңыз. Мунун кемчилиги - бул сиз үчүн жеке иш жана азыраак gpio.pins. Мунун мен билген эч кандай артыкчылыгы жок.

8 -кадам: Жүктөө учурунда кодду иштетүү

Жүктөө учурунда кодду иштетүү
Жүктөө учурунда кодду иштетүү

Биз бул 2 python скрипттери биздин Rpi жүктөлгөн учурда иштешин каалайбыз жана эгер сценарий бузулса, ал өзүнөн өзү кайра башталуусу керек. Бул үчүн биз 2 кызматты түзөбүз.

Бул үчүн териңиз:

sudo нано /etc/systemd/system/temperature.service

Муну температура үчүн көчүрүү жана чаптоо.кызмат:

[Unit] Description = Температура кызматы кийин = multi-user.target

[Кызмат] Түрү = жөнөкөй

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

StandardInput = tty-force

Кайра баштоо = иштен чыгуу

RestartSec = 60s

[Орнотуу]

WantedBy = multi-user.target

Жабуу жана кайра жасоо, бирок кийин backend_project.service үчүн:

Биринчи ачык текст:

sudo нано /etc/systemd/system/backend_project.service

Анан кайра көчүрүү жана чаптоо:

[Unit] Description = 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 = 60s

[Орнотуу]

WantedBy = multi-user.target

Сактоо жана жабуу.

Акыркы бөлүгү муну терип жатат:

sudo systemctl демон-кайра жүктөө

sudo systemctl температураны күйгүзүү. кызмат sudo кайра жүктөө

Эми биздин 2 python сценарийлери жүктөөдө автоматтык түрдө иштеши керек.

9 -кадам: Вебсайтты орнотуу

Репозиторийди жүктөп алганыңызда, алдыңкы деп аталган папканы да алышыңыз керек болчу. Бул жерде веб -сайт үчүн мазмун бар.

Папканы колдонуудан мурун, бизге апачы керек. 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 -кадам: Кошумча - Миниатюралык прототип

Кошумча - Миниатюралык прототип
Кошумча - Миниатюралык прототип
Кошумча - Миниатюралык прототип
Кошумча - Миниатюралык прототип

Тестирлөө себептеринен улам мен ичиндеги бардык жабдыктары бар кутунун прототибин түздүм, ошондо мен бардыгы заказ менен иштээрин көрө алам.

Адатта бул долбоор чоң масштабда болмок. Мисалы: бөлмө, үй, фабрика, дүкөн ж.

Бирок, албетте, биз дубалдарды тешип баштаардан мурун (жакшы рифма). Биз адегенде анын жөн эле иштээрин көргүбүз келет. Сыноо үчүн куту жасоонун кажети жок, бирок кээ бир кол өнөрчүлүктү жасоо ар дайым кызыктуу.

Мына менин мисалым.

Сунушталууда: