Мазмуну:
- Жабдуулар
- 1 -кадам: Raspberry Pi орнотуу
- 2 -кадам: Байланыш түзүү жана Rpi Wirelessти жергиликтүү тармагыңызга туташтыруу
- 3-кадам: DS18B20 сенсору (температура)-1-зым
- 4 -кадам: MCP3008 - Аналогдук сезүү
- 5 -кадам: Аппараттык
- 6 -кадам: Mariadb маалымат базасын түзүү
- 7 -кадам: Github коду жана тестирлөө
- 8 -кадам: Жүктөө учурунда кодду иштетүү
- 9 -кадам: Вебсайтты орнотуу
- 10 -кадам: Кошумча - Миниатюралык прототип
Video: TheAir - Газ сенсорунун долбоору: 10 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Көмүр кычкылы жана көмүр кычкыл газы, ошондой эле СО жана СО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 орнотуу
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 -> компьютер менен Rpi ортосундагы Ethernet кабелин туташтырабыз.
-
Putty баштаңыз жана муну толтуруңуз:
- Хосттун аты (же IP дареги): 169.254.10.1
- Порт: 22
-
Терминал ачылат жана сиз демейки колдонуучу атын жана сырсөздү териңиз:
- Колдонуучунун аты: pi
- Сырсөз: малина
Азыр биз жергиликтүү деңгээлде rpi менен туташып калгандыктан, Rpi сиздин wifi менен байланышы болушун каалайбыз.
- Кошумча: "sudo raspi-config" териңиз
- Бул жерде сиз pi колдонуучусунун сырсөзүн алмаштырышыңыз керек болот (коопсуздук себептери)
- Андан кийин Локалдаштыруу Жолдоруна өтүңүз -> Убакытты өзгөртүү (туура бирин тандаңыз) -> Андан кийин Wifi өлкөсүнө өтүңүз -> өлкөнү тандаңыз.
- Raspi-config жабыңыз жана кайра жүктөңүз.
- Киргенде, өзүңүздү убактылуу колдонуучу кылыңыз -> sudo -i
-
Тармагыңызды 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 зымды талап кылат, мен муну түшүндүрбөйм, бирок мен аны жок дегенде кантип иштетүүнү түшүндүрөм.
Бул үчүн биз Rpiдеги raspi-configга кайтуубуз керек, жакшы көк экран.
- Interfacing параметрлерине өтүңүз
- 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 жардамга келет, биз дагы 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ди 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 коду жана тестирлөө
Биз долбоорубуздун аягына жакындап калдык.
Биз кодду алардан мурун, кээ бир модулдарды 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 -кадам: Кошумча - Миниатюралык прототип
Тестирлөө себептеринен улам мен ичиндеги бардык жабдыктары бар кутунун прототибин түздүм, ошондо мен бардыгы заказ менен иштээрин көрө алам.
Адатта бул долбоор чоң масштабда болмок. Мисалы: бөлмө, үй, фабрика, дүкөн ж.
Бирок, албетте, биз дубалдарды тешип баштаардан мурун (жакшы рифма). Биз адегенде анын жөн эле иштээрин көргүбүз келет. Сыноо үчүн куту жасоонун кажети жок, бирок кээ бир кол өнөрчүлүктү жасоо ар дайым кызыктуу.
Мына менин мисалым.
Сунушталууда:
Кыймыл сенсорунун сигнализациясы: 5 кадам
Кыймыл сенсорунун ойготкучу: Сиз ар дайым эшигиңизде ким турганын текшерип турасызбы? Бул сиз үчүн эң сонун нерсе. Менин эшигимдин сыртында билбегендер барбы же жокпу, билгим келет. Мен бул Кыймыл Сенсорунун Сигналын LED лампалары менен түздүм
ARDUINO ЭКСИГЕН СЕНСОРУНУН КАЛИБРАЦИЯСЫ ЧЕЧИЛДИ: 4 кадам
ARDUINO ЧЫГАРЫЛГАН ОКСИГЕН СЕНСОРУНУН КАЛИБРАЦИЯСЫ: Бул окуу куралында биз Atlas Scientificтин EZO эриген кычкылтегин (D.O) сенсорун Arduino Uno аркылуу калибрлеп алабыз. Калибрлөө эң оңой
ARDUINO ТУЗДУК СЕНСОРУНУН КАЛИБРАЦИЯСЫ: 9 кадам
ARDUINO SALINITY SENSOR CALIBRATION: Бул үйрөткүчтө биз Arduino Uno аркылуу Atlas Scientific EZO туздуулугу/өткөрүмдүүлүгү K1.0 сенсорун калибрлеп алабыз. Калибрлөө теориясы Эң оңой
Arduino менен LM35 температура сенсорунун интерфейси: 4 кадам
Arduino менен LM35 температура сенсорунун интерфейси: Термометрлер температураны өлчөө үчүн узак убакыт бою колдонулган пайдалуу аппарат. Бул долбоордо биз учурдагы айлана -чөйрөнүн температурасын жана температурасынын өзгөрүшүн ЖКда көрсөтүү үчүн Arduino негизделген санарип термометрин жасадык. Депл болушу мүмкүн
Arduino автоматташтырылган көлөкө экраны долбоору үчүн кадам моторун жана драйверди тандоо: 12 кадам (сүрөттөр менен)
Arduino автоматташтырылган көлөкө экраны долбоору үчүн тепкич моторун жана драйверди тандоо: Бул Нускамада мен Automated Shade Screen долбоорунун прототипине Step Motor жана Driver тандоо үчүн жасаган кадамдарымдан өтөм. Көлөкөлүү экрандар - бул популярдуу жана арзан Coolaroo кол менен жасалган моделдер, мен аны алмаштыргым келди