Мазмұны:

Raspberry Pi IoT футболдан үстел: 11 қадам
Raspberry Pi IoT футболдан үстел: 11 қадам

Бейне: Raspberry Pi IoT футболдан үстел: 11 қадам

Бейне: Raspberry Pi IoT футболдан үстел: 11 қадам
Бейне: my raspberry pi robotic car football player score a goal 2024, Қараша
Anonim
Raspberry Pi IoT футболдан үстел
Raspberry Pi IoT футболдан үстел

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

Негізгі қондырғы - бұл Raspberry Pi -ге қосылған бар футбол үстелін пайдалану, ол келесі тапсырмалардың барлығын орындай алады:

  • IR жарықдиодты/қабылдағыштар мен 8х8 нүктелік матрицалық модульдерді басқару үшін GPIO түйреуіштерін қолданады
  • Nginx көмегімен Flask веб -сайтын жүргізеді
  • Деректерді сақтауға арналған MySQL/MariaDB мәліметтер базасын іске қосады

Бұл жобаны қайта құру үшін сізге келесі дағдылар қажет:

Артқы жағы:

  • Веб -сайт клиенті үшін HTML/CSS/Javascript түсінігі
  • Веб-сайттың серверлік жағы үшін Flask/Flask-SocketIO/Jinja2 көмегімен Python-ды түсіну
  • MySQL туралы негізгі білім
  • Веб -серверді басқаруды біліңіз

Прототип

  • Электр тізбегін сымға қосу туралы негізгі білім
  • Дәнекерлеу
  • Python тілінде сценарий жазу туралы негізгі түсінік
  • Linux -пен жұмыс (Raspbian)
  • Шыдамдылық таныту керек, себебі көптеген қателерді түзету қажет болады

1 -қадам: материалдар

Міне кестенің барлық қажетті бөліктері бар тізім:

  • Raspberry Pi Model 3 (қаптамасы бар)
  • Пиді тақтаға қосуға арналған T-Cobbler
  • Футболдан үстел
  • MAX7219 Arduino нүктелік матрицалық модулі (2)
  • IR жарықдиодты сәуле шығарғыштары (2+, себебі олар сынған, ұқсас)
  • IR қабылдағыштар (2+, себебі олар да бұзылады, осы сияқты)
  • Негізгі дәнекерленбеген нан тақтасы
  • Көп және көп сымдар (футбол үстелінің көлеміне байланысты)
  • еркек қосқыштар (30+)
  • аналық қосқыштар (10+)
  • 100-220 Ом резисторлары (4+)
  • дәнекерлеу материалдары
  • сымдар
  • Жарықдиодты ұстағыштар
  • Егер сіз допты шұңқырға жібергіңіз келсе, бірнеше ағаш/бұрандалар

Бұл жобаның жалпы құны сіздің футбол үстелінің құнына байланысты (қымбат). Үстелден басқа материалдар максимум 150 еуроны құрайды.

2 -қадам: Электр тізбегі

Электр тізбегі
Электр тізбегі
Электр тізбегі
Электр тізбегі
Электр тізбегі
Электр тізбегі

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

Алдымен мен 74HC595 ауысым регистрі (бірінші сурет) мен транзисторлық массиві бар 8x8 жарықдиодты матрицаны енгізуге тырыстым, бірақ мен сымдардың көптігі мен MAX7219 нүктелік матрицалық модуліне ауыстым, себебі ол тек 5 сымды қабылдайды және тікелей басқарылады. SPI автобусы.

Ақырында мен қолданған схема Фритзингпен салынған. Есіңізде болсын, IR светодиодтары мен қабылдағыштарын кез келген тегін GPIO түйреуіштеріне қосуға болады.

Инфрақызыл қабылдағыштар мен жарық диодтары бір -біріне тікелей қарама -қарсы орналасуы керек, ал жарық диодтың жоғарғы жағы қабылдағышқа қарай бағытталуы керек. Біз доптың қозғалысы арқылы сынуы мүмкін тікелей сәулені модельдегіміз келеді, бұл жағдайда ресивердің DATA желісінің күйі 0 -ден 1 -ге дейін өзгереді.

3 -қадам: сенсорларды кодтау

Сенсорларды кодтау
Сенсорларды кодтау

Мен бұл жобаның көп бөлігін Pycharm көмегімен кодтадым, себебі ол қашықтағы аудармашының көмегімен сіздің Raspberry Pi -ге SSH -ті оңай орналастыруға мүмкіндік береді. Мен бұл бағдарламаның қалай жұмыс істейтіні туралы егжей -тегжейлі айтпаймын, бірақ көптеген ақпаратты pycharm веб -сайтынан табуға болады.

Мен қазір жобамен жұмыс жасаймын, бірақ бәрі аяқталғаннан кейін бүкіл жоба менің github профилімде қол жетімді болады

Датчиктердің коды Flask серверіндегі фондық ағынмен орындалатын 3 сыныптан тұрады (ол кейінірек түсіндіріледі):

  1. Мақсат класы (сілтеме) -Бұл файл SPI құрылғысын/шинаны және пин нөмірін дұрыс енгізу арқылы шақырылатын барлық жеке компоненттерді бастайды.
  2. Матрица класы (сілтеме) -Бұл MAX7219 модулін қосатын негізгі класс
  3. Жарық диодты және қабылдағыш класы (сілтеме) - бұл RPi процессор жүктемесін азайту үшін бөлек жіптерді қолдана отырып, инфрақызыл сәулені қосудың негізгі класы.

Жарықдиодты және қабылдағыш 38 кГц жиілікте жұмыс істейді, ал қабылдағыштар әрқашан 50% жоғары және 50% төмен импульс дұрыс жұмыс істеуін күтеді.

4 -қадам: сенсорларды дайындау және орналастыру

Датчиктерді дайындау және орналастыру
Датчиктерді дайындау және орналастыру
Датчиктерді дайындау және орналастыру
Датчиктерді дайындау және орналастыру
Датчиктерді дайындау және орналастыру
Датчиктерді дайындау және орналастыру

Енді біз IR жарықдиодты мен қабылдағышты дайындаймыз. Кесте суретінен сіз RPi мен сенсорларды орналастыру керек орындарды таба аласыз.

Бірақ алдымен сымдарды дайындау керек:

  1. RPi/нан тақтасынан сенсорға дейінгі сымның қажетті мөлшерін өлшегеніңізге көз жеткізіңіз
  2. IR қабылдағышты сымның бір ұшына дәнекерлеңіз (COM/GND/V+)
  3. Сымның екінші шетіндегі еркек қосқыш бөліктерін дәнекерлеңіз

Енді біз кестені дайындаймыз:

  1. Қайда бұрғылау керектігі туралы негізгі суретті (сурет бойынша) жасаңыз. 2 тесіктің бір -біріне сәйкес келуі өте маңызды, себебі бұл сәуленің орналасуы болады.
  2. Тесіктерді бұрғылаңыз
  3. Егер сізде бірнеше жарық диодты ұстағыштар болса (сілтеме), оларды берік ету үшін оларды тесікке қоюға болады
  4. Жарық диодты + қабылдағышты екі жаққа + таспамен салыңыз
  5. Сымдарды байлаңыз + оларды ағашқа таспамен бекітіңіз, олар тым көп өтпейді
  6. Еркек түйреуіштерді нан тақтасына бұрын берілген схемаға сәйкес салыңыз

5 -қадам: Матрицалық модульді дайындау және орналастыру

Матрицалық модульді дайындау және орналастыру
Матрицалық модульді дайындау және орналастыру

Келесіде біз 2 жарықдиодты матрицалық модульді қосамыз

Ескерту:

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

Сымдарды дайындау үшін:

  1. Тақтадағы сымды үстелдің жоғарғы жағына қарай өлшеңіз
  2. Кейбір аналық коннекторларды сымның бірінші ұшына дәнекерлеңіз
  3. Кейбір ер коннекторларды сымның екінші шетіне дәнекерлеңіз

Матрицаны орналастыру:

  1. Матрицаны жоғарғы жағындағы тесік арқылы шығарыңыз
  2. Өтпеу үшін сымдарды ағашқа бекітіңіз +
  3. Еркек түйреуіштерді тақтаға бұрын берілген схемаға сәйкес салыңыз

Бір сәтте мен матрицалық модульге корпус қосу үшін кішкене DIY қадамын қосамын, бірақ әзірге олар жалаңаш.

6 -қадам: IoT жасау

IoT жасау
IoT жасау

Егер сіз жай ғана тіркегіңіз келсе және ұпайларды көрсеткіңіз келсе, сіз ұпайлардың бірі 9 -ға жеткенше айналатын, содан кейін қалпына келтірілетін кіші питон сценарийін жазып, жобаны аяқтай аласыз.

Егер сіз кестеңізді интернетке қосқыңыз келсе, келесі бірнеше қадам дәл сіздің көшеңізде болуы керек.

Келесі бірнеше қадамдарда біз келесі мәселелерді қарастырамыз:

  • Raspberry Pi конфигурациясы
  • Сақтау үшін мәліметтер базасын құру
  • Веб -сайтты құру
  • Оны желіге енгізу

Осы сәтте, егер сіз git -пен таныс болсаңыз, мен сізге файлдарды бақылау үшін GitHub/GitLab -те репозиторий жасауды ұсынамын. Егер олай болмаса, сіз суреттегідей құрылымы бар қалта жасай аласыз.

Толық жоба жақын арада GitHub -те қол жетімді болады. Бірақ барлық қажетті файлдары бар уақытша rar файлы қол жетімді.

7 -қадам: Raspberry Pi қосылу

Содан кейін біз raspberry pi ортасын орнатамыз, ол үшін келесі әрекеттерді орындау қажет:

  • SSH арқылы Rasberry Pi -ге қосылыңыз (PuTTY пайдалануға болады)
  • Қалтаны жасаңыз (мысалы mkdir жобасы) және cd пәрменін қолдана отырып, осы қалтаға өтіңіз
  • Бұл қалтада python3 -m venv --system-site-packages env пәрменін қолданып виртуалды Python ортасын жасаңыз
  • Source/env/bin/activate командасымен виртуалды аудармашыны іске қосыңыз
  • Python -m pip install pack -name пәрменімен requirements.txt бумаларын орнатыңыз
  • Бұрын берілген project_example.rar файлындағы файлдарды жоба қалтасындағы SSH арқылы тасымалдаңыз

Енді сіз толық жобаны Raspberry Pi -де іске қоса аласыз. Мен сізге Python IDE -ді PyCharm сияқты пайдалануға кеңес беремін, ол сізге қашықтағы аудармашының көмегімен SSH арқылы күйін келтіруге және қажет болған жағдайда өзгерістерді тікелей жүктеуге мүмкіндік береді.

8 -қадам: мәліметтер қорын орнату

Мәліметтер қорын орнату
Мәліметтер қорын орнату

Енді осы модельге негізделген өте қарапайым мәліметтер базасын құру қажет.

Мұны істеудің ең оңай жолы - MySQL жұмыс үстелінде мәліметтер базасын құру, онда сіз тестілеуді де жасай аласыз.

Аяқтағаннан кейін сіз дерекқордың қоқысын экспорттай аласыз және оны RPi -ге жүктей аласыз, содан кейін оны sudo mariadb <pathtofile/file.sql көмегімен орындауға болады

9 -қадам: веб -сайт құру

Веб -сайт құру
Веб -сайт құру
Веб -сайт құру
Веб -сайт құру
Веб -сайт құру
Веб -сайт құру

Келесіде сіз project_example.rar файлында берілген кодты талдай аласыз (және қолдана аласыз).

Негізгі файл - бұл жобаның наны мен майы болып табылатын Flask.py:

  • Веб-сайттың артқы жағын өңдейтін Flask-SocketIO қосымшасын іске қосады
  • Мәліметтер базасы мен Колбаның арасында байланыс орнатады
  • Кіруді растауды және пайдаланушыны тіркеуді қамтамасыз етеді
  • Ойынды қалай ойнау керектігі туралы қажетті кодты қамтамасыз етеді, бұл ойын кезінде веб -сайтты нақты уақытта жаңарту үшін socketio қолданады
  • Ойын нәтижелерін мәліметтер қорына енгізеді

Статикалық және шаблон қалталарында сіз веб -сайттың алдыңғы бөлігін қамтамасыз ететін HTML/CSS/JS таба аласыз. Оларды өз қалауыңыз бойынша өзгертіңіз.

10 -қадам: бүкіләлемдік желіге қосылу

Біздің веб -сайтты желіге қосу үшін біз nginx және uwsgi қолданамыз. Жоба мысалында conf қалтасынан қажетті файлдарды таба аласыз.

Ең алдымен, сіз келесі файлдарды жаңартуыңыз керек:

  • Uwsgi-flask.ini ішінде сіз аудармашыға virtualenv параметрінің жолын өзгертуіңіз керек.
  • Project1-flask.service қызметінде файлдың [Қызмет] бөлігін тіркелгі деректерімен және байланысты файлдардың жолдарымен жаңарту қажет.
  • Nginx файлында серверді және байланысты розетканың орнын / жолын жаңарту қажет

Содан кейін nginx конфигурация файлының орнына әдепкі nginx веб -серверінің файлын ауыстыру қажет, мұны істеу үшін Linux командаларының мысалы келтірілген.

  • me@my-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
  • me@my-rpi: ~/project1 $ sudo rm/etc/nginx/sites-enabled/defaul t
  • me@my-rpi: ~/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
  • me@my-rpi: ~/project1 $ sudo systemctl nginx.service қайта іске қосыңыз

Ақырында, жүйелік қалтаға реттелетін қызметтерді қосу қажет, бұл оны қалай жасауға болатыны туралы мысал:

  • me@my-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
  • me@my-rpi: ~/project1 $ sudo systemctl демонды қайта жүктеу
  • me@my-rpi: ~/project1 $ sudo systemctl start project1-*
  • me@my-rpi: ~/project1 $ sudo systemctl status project1-*

Егер сіз веб-сервердің сіздің таңқурай pi-ні жүктеуді бастауын қаласаңыз, sudo systemctl enable project1-*. Қызмет пәрменін пайдалануыңыз қажет.

Егер дұрыс орындалса, жүйе қайта жүктелгеннен кейін сіздің веб -сайтыңыз сіздің IP -адресіңізде жұмыс істеуі керек. Егер сіз осы конфигурациялық файлдардың біреуін өңдегіңіз келсе, сіз әрқашан қызметті тоқтатып, файлдарды қайта жүктеп, демонды қайта жүктеу пәрменін қолданып, старт алуыңыз керек, әйтпесе өзгерістер тиімді болмайды.

11 -қадам: Аяқтау

Аяқтау
Аяқтау

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

Мен мұны 2,5 аптаның ішінде жасау үшін сансыз сағат жұмсадым. Барлығы асығыс болса да, мен әлі де жеткен жетістіктерімді мақтан тұтамын. Құрастыру кезеңінде мен көптеген қателіктерге/қателерге/ақаулы сенсорларға тап болдым, сондықтан егер бәрі бірінші рет жұмыс істемесе жұмыс жасамаңыз.

Сіз жасай алатын ең жақсы нәрсе - интернеттен көмек сұрау немесе іздеу, сізге көмектесуге ынтасы бар, әлдеқайда жақсы білімі бар адамдар көп.

Ақырында, мен жаңа медиа мен коммуникация технологиясының мұғалімдеріне маған көп кеңес беріп, осы жобаны аяқтауға көмектескені үшін алғыс айтқым келеді.

Ұсынылған: