Мазмұны:

Контактісіз су бұрқақ: 9 қадам (суреттермен)
Контактісіз су бұрқақ: 9 қадам (суреттермен)

Бейне: Контактісіз су бұрқақ: 9 қадам (суреттермен)

Бейне: Контактісіз су бұрқақ: 9 қадам (суреттермен)
Бейне: КИТАЙ ИЛИ ЕВРОПА? НОВЫЕ ГРУЗОВИКИ НА ВЫСТАВКЕ COMTRANS 2023 2024, Желтоқсан
Anonim
Байланыссыз су бұрқақ
Байланыссыз су бұрқақ

MCT студенті ретінде бірінші курстың соңында маған жыл бойы курстардан алған барлық дағдыларымды қамтитын жоба жасау тапсырылды.

Мен мұғалімдер қойған барлық талаптарды тексеретін және сонымен бірге маған қызықты болатын жоба іздедім. Тақырып іздегенде мен Ковид-19 шабытына бой алдыра алмадым (бұл бүкіл дүниежүзілік індетке дейін болды). Мен су бұрқақ/диспенсері жоқ контактіні таңдадым. су шықпай тұрып, бірнеше түймені баспастан су ішу.

Бұл жобада судың астына шыныаяқ немесе стакан қойылғанын анықтау үшін қашықтық сенсоры қолданылады, содан кейін субұрқақ суды 60 секундқа (100мл / минут) шығарады. Бұл оны дәйекті ету үшін, әйнектің тартылғанын анықтау тапсырманың тым қиын/баяу екенін дәлелдеді, сондықтан таймер орнатылды. Шыныға 100 мл су құйылғаннан кейін сіз 5 секунд күте аласыз, егер әйнек әлі де қашықтық сенсорының алдында тұрса, ол басқа уақытты толтырады (бұл екі түрлі толтыру арасында 5 секундтық үзіліс бар екенін білдіреді) заттар).

Жабдықтар

Компоненттер

- 1x RaspberryPi (мен 4-ші нұсқаны қолдандым, бірақ ескі нұсқалар да жұмыс істеуі мүмкін)- 1x S8050 транзисторы немесе 1x PN2222 транзисторы да жұмыс істей алады- 1x фоторезистор- 1x HC-SR04 (ультрадыбыстық қашықтық сенсоры)- 1x RFID-RC522- 3x әр түрлі түстер светодиодтар (көк, сары, қызыл)- 1x LCD1602- 1x белсенді дыбыстық сигнал- 1x PCF8574- 1x MCP3008- 1x су сорғы (12в перистальтикалық сорғы қолданылды, осы тармаққа сілтеме)

- 1х тұрақты ток көзі (12в, 600мАч)- 3 нүктелі 1х қуат кірпіші- 3 өлшемді тақта (мүмкін, сіз азырақ қолдана аласыз)- RaspberryPi GPIO түйреуіштері үшін T-қапсырмасы- тробель кабелі (пи мен туфли арасындағы байланыс үшін)

Қолданылатын материалдар мен құралдар

- Келесі бұрғылау ұштары бар бұрғы:

- 4 мм (бұрандалар үшін тесіктерді алдын ала бұрғылау үшін) - 15 мм (қашықтық сенсоры үшін тесіктерді бұрғылау үшін)

- Кез келген бұрағыш- ұзындығы 45 мм 30 бұранда- 20 мм 6 бұранда

1 -қадам: схеманы жинау

Тізбекті жинау
Тізбекті жинау
Тізбекті жинау
Тізбекті жинау
Тізбекті жинау
Тізбекті жинау

Схема үшін бізде 2 сенсор, қашықтық сенсоры және фоторезистор бар. Қашықтық сенсоры су бұрқағының диапазонына шыныаяқ қойылғанын анықтау үшін қолданылады, мен міндетті түрде фоторезистор қостым, бұл корпусты оны ашуға болмайтын кез келген адам ашқанын анықтау үшін қолданылады. Оның үстіне бізде RFID оқу құралы бар, оны су қоймасын толтыру үшін немесе басқа да механикалық ақаулар үшін корпусты ашу қажет механикті растау үшін пайдалануға болады.

Бізде LCD1602, белсенді дыбыстық сигнал және перистальтикалық сорғы бар белсенді элементтер үшін СКД күйді көрсету үшін пайдаланылады, мысалы, корпус ашық немесе сорғы жұмыс істеп тұрса, сонымен қатар құрылғының IP -адресі көрсетіледі. іс рұқсат етілмеген жағдайда іс ашылған кезде үрейлі дыбыс шығару үшін қолданылады.

Мен төмендегі схеманың тақтасын және схемалық көріністерін қостым.

2 -қадам: RaspberryPi -ді орнату

Біздің RaspberryPi -ді орнату үшін біз Raspberry сайтынан бейнелеу бағдарламалық жасақтамасын жүктейміз, осылайша сіз өзіңізге қажет Raspbian нұсқасын жүктей аласыз және SDCARD картасын суретке түсіре аласыз. Бұл құрал өз жұмысын аяқтағаннан кейін Windows Explorer -де SDCARD картасын ашуға болады, сіз RaspberryPi жүктеу бөлімін көре аласыз. Мұнда cmdline.txt деп аталатын файлды табамыз (бұл файлды блокнотта ашпаңыз, оны Notepad ++ немесе басқа IDE -де ашыңыз). Біз бұл файлдың соңына ip = 169.254.10.1 қосамыз, біздің құрылғыға Ethernet арқылы қосыла алатындығымызға сенімді болу үшін (файлдың соңына ЕНГІЗУ қосылмайтынына көз жеткізіңіз, әйтпесе сізде қиындықтар болады).

Енді сіз SDCARD картасын RaspberryPi -ге салып, оны жүктей аласыз, Pi -ді компьютерге қосып, SSH арқылы Pi -ге қосылу үшін Putty қолдана аласыз. Мен Putty -ді пайдаланудың орнына Pi -ге қосылу үшін келесі пәрменді қолданамын. «ssh [email protected]» бұл күту уақыты болуы мүмкін, сондықтан шыдамдылық танытып, Pi жүктелуін күтіңіз. Құпия сөз сұралғаннан кейін біз «таңқурай» әдепкі құпия сөзін толтырамыз. Қателескендердің Raspberry Pi -ге кіруіне жол бермеу үшін жүйеге кіргеннен кейін осы құпия сөзді өзгертіңіз.

Біз енді Pi-ді кодымызға қажетті функционалдылықты қамтамасыз ету үшін конфигурациялаймыз. Конфигурация мәзірін ашу үшін «sudo raspi-config» қолданыңыз, осында біз интерфейс опцияларына өтеміз.

Мұнда біз келесі опцияларды қосамыз: SPI- I2C

Pi -де сымсыз интернет байланысын орнату үшін осы нұсқаулықты орындаңыз, мұны сәтті аяқтағаннан кейін біз қажетті пакеттерді орната аламыз.

Пакеттер: (пәрмендерді осында көрсетілген ретпен орындаңыз)

Біздің Pi- sudo apt update && apt upgrade -y бойынша соңғы жаңартуларды алу үшін төмендегілер

MySQL серверін және apache2 mariadb-server веб-серверін орнатыңыз

Мен MySQL Workbench -ті осы нұсқаулықта кейінірек дерекқорды орнату үшін қолданамын, егер сіз оны пайдаланбайтын болсаңыз және phpmyadmin -ды қаласаңыз, оны келесі пәрменмен орната аласыз, сіз кез келген басқа MySQL клиентін қолдана аласыз. дерекқорды дұрыс импорттай алады.- sudo apt install phpmyadmin

Жоғарыда айтылғандардың барлығын орындағаннан кейін, біз өз дерекқорымызға пайдаланушы жасауымыз керек. MySQL серверіне кіру үшін «sudo mysql -u root» пайдаланыңыз, мұнда біз тиісті парольмен db_admin атты пайдаланушыны жасаймыз. бұл құпиясөз кейінірек нұсқаулықта жазылған. БАРЛЫҚ ПРИВИЕЛДЕРДІ ҚОСУҒА БЕРІҢІЗ *. * «db_admin»@«%» ГРАНТТЫ ОПЦИОНДЫҢ «yourPasswordHere» МЕНЕН АНЫҚТАЛДЫ;

MySQL терминалынан шығу үшін «\ q» пәрменін қолданыңыз.

Python пакеттері: Жалғастырмас бұрын бізге әлі де кейбір python бумаларын орнату қажет, бәрі мінсіз тәжірибе үшін бар екеніне көз жеткізу үшін төмендегі пәрменді іске қосыңыз.

sudo pip3 Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev орнатыңыз

Сонымен қатар, келесі MySQL python пакеттерін қосады, apt install python3 -mysql.connector -y

Егер бәрі ойдағыдай болса, енді сіз өзіңіздің Pi браузеріңізге келесі мекен -жаймен кіре аласыз

3 -қадам: Артқы жағын орнату

Артқы жағын орнату
Артқы жағын орнату

Мұнда мен артқы жағын қалай орнатуға болатынын түсіндіремін, алдымен rar файлын төменнен жүктеп алып, оны уақытша каталогқа шығарыңыз. FileZilla немесе WinSCP көмегімен RaspberryPi -ге келесі тіркелгі деректерімен қосылыңыз:

IP: 169.254.10.1 Пайдаланушы: piPassword: таңқурай (егер сіз құпия сөзді өзгерткен болсаңыз, оны да осында жасаңыз)

Содан кейін сіз шешілмеген файлдарды pi пайдаланушысының үй каталогындағы кез келген каталогқа тасымалдауды жалғастыра аласыз. Қарапайымдылық үшін, біз бұл файлды құжаттар каталогына жүктедік деп есептейміз.

Келесі қадам үшін FTP бағдарламасын ашық ұстаңыз!

Енді SSH қосылымымен пәрмен жолын қайта ашыңыз, себебі біз веб -серверге кейбір өзгертулер енгізуіміз керек, сондықтан фронталь артқы жағымен байланысады. Біз әдепкі Apache2 конфигурациялық файлын ашып, оны сәл өзгертеміз: sudo nano /etc/apache2/sites-available/000-default.conf

Біз ашқан конфигурация файлында DocumentRoot астына келесі жолдарды қосыңыз: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Мысал үшін берілген суретті қарауға болады.

4 -қадам: Frontend орнату

Файлдарды жібермес бұрын, біз алдыңғы файлдарды жіберуді бастамас бұрын бірдеңе істеуіміз керек. Бұрын жасалған SSH қосылымымен пәрмен жолын ашыңыз және RaspberryPi -дің түпкі пайдаланушысына ауысу үшін төмендегі пәрменді қолданыңыз: «sudo su - «

Осыдан кейін біз түпнұсқалық пайдаланушының құпия сөзін келесі пәрменмен өзгерте аламыз: «passwd» Бұл сізден жаңа құпия сөзді енгізуді сұрайды, мұны жасағаннан кейін сіз FTP бағдарламаңызға қайта оралып, түбірлік тіркелгі деректерімен кіре аласыз:

IP: 169.254.10.1 Пайдаланушы: rootPassword:

Rar файлын төменнен жүктеп алып, оны уақытша қалтаға шығарыңыз, сіз бұл файлдарды RaspberryPi -ге келесі каталогқа жылжытуға болады/var/www/html/, бұл әрекетті орындағаннан кейін http: /169.254.10.1, сіз әлі өзара әрекеттесе алмайсыз, себебі артқы жақ әлі жұмыс істемейді, мен мұны қалай жасау керектігін осы нұсқаулықта кейінірек көрсетемін.

5 -қадам: Біздің жобаның мәліметтер базасын импорттау

Біздің жобаның мәліметтер базасын импорттау
Біздің жобаның мәліметтер базасын импорттау
Біздің жобаның мәліметтер базасын импорттау
Біздің жобаның мәліметтер базасын импорттау

MySQL серверін басқарудың сүйікті бағдарламасын ашыңыз және 2 -қадамда жасаған тіркелгі деректерімен Raspberry Pi -ге қосылыңыз.

Деректер базасын төменнен жүктеп алыңыз және оны әдеттегідей импорттаңыз, MySQL жұмыс үстелінде сіз File> Open SQL Script тармағына өтіп, жүктелген дерекқор қоқысын таңдайсыз, содан кейін CTRL + SHIFT + ENTER пернелер тіркесімін басыңыз және SQL сценарийі мен құрылымы іске қосылуы керек. мәліметтер базасын құру қажет.

Мен төменде мысал ретінде RaspberryPi үшін пайдаланылған тіркелгі деректерін, сондай -ақ мәліметтер базасының құрылымының бірнеше суретін қостым, сіз оған қарап, барлығы қалай жұмыс істейтіні туралы жалпы түсінік алуға болады.

6 -қадам: Біздің жобаны іске қосу

Біздің жобаны бастау
Біздің жобаны бастау
Біздің жобаны бастау
Біздің жобаны бастау

Жобаны бастамас бұрын, config.py файлындағы дерекқордың тіркелгі деректерін өзгертуіміз қажет, егер сіз нұсқаулықта көрсетілгендей нұсқауларды орындасаңыз, оларды /home/pi/Documents/Backend/src/config.py сайтынан таба аласыз. мұнда db_config айнымалысының тіркелгі деректерін бұрын біздің мәліметтер базасы үшін жасалған мәліметтерге сәйкес өзгерту қажет. Мен төменде осы файлда көретін нәрселердің мысалын қостым.

Осыдан кейін біз.service файлын қосамыз, бұл файл RaspberryPi іске қосылған кезде біздің жобаның басталуын қамтамасыз етеді, каталогты артқы файлдарды орнатқан жерге сәйкес өзгертіңіз. Қызмет файлын жасау үшін келесі пәрменді пайдаланыңыз: sudo nano /etc/systemd/system/dispenser.serviceБұл қызмет файлын жасайды және төмендегі кодты осы файлға көшіреді.

[Құрылғы] Сипаттама = Су диспенсеріАфтор = mysql.service

[Service] Type = simpleRestart = alwaysRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Орнату] WantedBy = multi-user.target

/Home/pi/Documents/Backend/index.py деп аталатын жолды артқы файлдарды орнатқан жерге өзгертіңіз, егер сіз мұны дұрыс жасамасаңыз, жоба дұрыс басталмайды! Мен төменде мысал файлын қосамын.

Сіз мұны істеп, мәтіндік редактордан шыққаннан кейін, біз келесі командалармен қызметті қосамыз:- sudo systemctl демон-қайта жүктеу- sudo systemctl диспенсерді қосу- sudo systemctl іске қосу диспенсері

Қосымша ретінде біз іске қосуға болады: sudo systemctl status dispenserБұл біздің қызмет туралы кейбір ақпаратты көрсетеді, егер ол белсенді болса немесе болмаса …

7 -қадам: іс

Іс
Іс
Іс
Іс
Іс
Іс
Іс
Іс

Құттықтаймыз, біз жақындамыз, мен өзімнің жобам үшін қолданған өлшемдерді дәл көрсететін суреттерді қосамын, мен қалыңдығы 18 мм МДФ плиталарын қолдандым, сіз қалауыңызша басқа қалыңдықты қолдана аласыз. Менің корпусымды сіздің дизайныңызға нұсқаулық ретінде пайдалануға болады немесе сіз мен жасағанды қайта жасай аласыз. (Егер сіз МДФ-ның басқа қалыңдығын қолдансаңыз, онда менің сызбаларым менің дизайнымды жасауға мүмкіндік бермейді, оны бейімдеуді ұмытпаңыз!) Мен жасаған панельдер:- 32см-ден 42см-ге дейінгі 2 панель (бүйірлік панельдер)- 24см-ден 1 панель 32см (астыңғы тақта)- 16см-ден 24см-ге дейінгі 2 панель (СКД орналасқан алдыңғы тақта және көршілес тақта)- 28см-ден 24см-ге дейінгі 1 панель (алдыңғы тақтадан алдыңғы тақта)- 30см-ден 24см-ге дейінгі 1 панель (үстіңгі тақта)

8 -қадам: Соңғы өнімді таңдандырыңыз

Соңғы өнімді таңдандырыңыз
Соңғы өнімді таңдандырыңыз
Соңғы өнімді таңдандырыңыз
Соңғы өнімді таңдандырыңыз

Сіз соңына жеттіңіз және қазір бәрін шындыққа айналдырдыңыз деп үміттенемін. Егер сіз жай оқитын адам болсаңыз, қош келдіңіз, соңғы қадамға дейін оқығаныңыз үшін рахмет!

Мен бұл жобаға көп қан, тер мен көз жасымды жұмсадым, сондықтан сіз түсініктеме қалдырсаңыз, оны бағалайтын боламын, оны жақсарту туралы кез келген сынды құптаймыз!

9 -қадам: Мәселелер

Мен жобаны қазіргі жағдайына көптеген жақсартуларды көре алатын жұмыс прототипі ретінде қояр едім.

Артқы жақтың кодтық негізі бір субұрқақ негізгі фронт ретінде әрекет ететін, ал қалған барлық субұрқақтар деректер мен өзгерістерді мастердің REST api -ге итермелейтін негізгі құлдық қатынасты керемет құруға болатындай етіп құрылған. Сондай -ақ, кодта API таңбалауыш жүйесінің қалдықтары бар, себебі бұл енгізуге арналған, бірақ уақыт шектеулеріне байланысты кейінірек қысқартылды.

Мен өз кодты Gitlab серверіне жүктедім, сіз сол жерде кодты қарап шығуға болады:

Ұсынылған: