Мазмуну:

Raspberry Pi IoT Foosball столу: 11 кадам
Raspberry Pi IoT Foosball столу: 11 кадам

Video: Raspberry Pi IoT Foosball столу: 11 кадам

Video: Raspberry Pi IoT Foosball столу: 11 кадам
Video: Футбольный стол с функцией Интернета вещей 2024, Ноябрь
Anonim
Raspberry Pi IoT Foosball столу
Raspberry Pi IoT Foosball столу

Жаңы медиа жана коммуникация технологиясы боюнча студенттик долбоордун алкагында менин фокус столунун менин версиясына кош келиңиз. Мен негизи футбол жана бассейндин тегерегинде чоңойгом, ошондуктан бул түзмөктөрдүн бирин интернетке туташтыруу абдан жакшы болмок деп ойлогом.

Негизги орнотуу Raspberry Pi менен байланышкан учурдагы стол столун колдонуу, ал төмөнкү тапшырмаларды аткара алат:

  • IR LED/Receivers жана 8x8 чекиттүү матрицанын модулдарын айдоо үчүн GPIO казыктарын колдонот
  • Nginxти колдонуп Flask веб -сайтын иштетет
  • Маалыматтарды сактоо үчүн MySQL/MariaDB маалымат базасын иштетет

Бул долбоорду кайра түзүү үчүн сизге төмөнкү көндүмдөр керек болот:

Арткы бети:

  • Вебсайттын кардары үчүн HTML/CSS/Javascriptти түшүнүү
  • Вебсайттын сервер тарабында Flask/Flask-SocketIO/Jinja2 менен Pythonду түшүнүү
  • MySQL боюнча негизги билим
  • Веб -серверди кантип иштетүүнү билиңиз

Прототип

  • Электр чынжырын зымга салуу боюнча негизги билим
  • Soldering
  • Pythonдо скрипт жазуу боюнча негизги түшүнүк
  • Linux менен иштөө (Raspbian)
  • Чыдамдуу болуу, анткени мүчүлүштүктөрдү оңдоо көп болот

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

Бул жерде столго керектүү бөлүктөрү бар тизме:

  • Raspberry Pi Model 3 (корпусу менен)
  • T-Cobbler пиини нанга туташтыруу үчүн
  • Футбол столу (Мен буга окшош абдан эски столду колдондум. Тешип чыгууга даяр болуш керек)
  • MAX7219 Arduino Dot Matrix Module (2)
  • IR LED эмитенттери (2+, анткени алар сынат, окшош)
  • IR кабылдагычтар (2+, анткени алар да бузат, буга окшош)
  • Негизги soldersless нан
  • Зымдар көп жана көп (фосбол столунун өлчөмүнө жараша)
  • эркек коннекторлор (30+)
  • аял коннекторлору (10+)
  • 100-220 Ом резисторлору (4+)
  • ширетүүчү материалдар
  • зым боолор
  • LED кармагычтар
  • кээ бир жыгачтар/бурамалар, эгерде сиз топту топуракка ыргытып салгыңыз келсе

Бул долбоордун жалпы наркы толугу менен фосбол столунун наркынан көз каранды (кымбат). Столдун үстүндө материалдар максималдуу 150 евро болот.

2 -кадам: Электр схемасы

Электр схемасы
Электр схемасы
Электр схемасы
Электр схемасы
Электр схемасы
Электр схемасы

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

Башында мен 8H8 LED Matrixти 74HC595 сменалык реестри (биринчи сүрөт) жана транзистор массиви менен ишке ашырууга аракет кылдым, бирок көп зымдар жана өтө аз өндүрүшкө байланыштуу MAX7219 Dot Matrix модулуна которулдум, анткени ал 5 зымды гана алат жана түз SPI автобус.

Мен акыры колдонгон схема Fritzing менен тартылган. Сураныч, IR LEDS жана алуучуларды бекер GPIO казыктарына туташтырууга болот.

IR кабылдагычтар жана LED түздөн -түз бири -бирине карама -каршы коюлушу керек жана LEDдин үстү кабыл алуучу тарапка багытталышы керек. Анткени биз топтун кыймылы менен үзүлүшү мүмкүн болгон түз нурду окшоштургубуз келет, бул учурда ресивердин DATA линиясынын 0дөн 1ге чейин абалы өзгөрөт.

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

Сенсорлорду коддоо
Сенсорлорду коддоо

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

Мен азыр деле долбоордун үстүндө иштеп жатам, бирок баары бүткөндөн кийин бүт долбоор менин github профилимде жеткиликтүү болот

Сенсорлордун коду Flask серверимде фондо иштелген 3 класстан турат (бул кийинчерээк түшүндүрүлөт):

  1. Максат Класс (шилтеме) -Бул файл бардык SPI түзмөгүн/шинаны жана пин номерин киргизүү аркылуу чакырылышы мүмкүн болгон бардык бөлүктөрдү демилгелейт.
  2. Matrix Class (шилтеме) -Бул MAX7219 модулун иштетүү үчүн негизги класс
  3. LED жана алуучу классы (шилтеме) - Бул RPi процессинин жүктөмүн азайтуу үчүн өзүнчө жиптерди колдонуу менен инфракызыл нурун иштетүү үчүн негизги класс.

Светодиод жана алуучу экөө тең 38 кГц жыштыкта иштешет, алуучулар дайыма 50% өйдө жана 50% төмөн импульс туура иштешин күтүшөт.

4 -кадам: сенсорлорду даярдоо жана жайгаштыруу

Сенсорлорду даярдоо жана жайгаштыруу
Сенсорлорду даярдоо жана жайгаштыруу
Сенсорлорду даярдоо жана жайгаштыруу
Сенсорлорду даярдоо жана жайгаштыруу
Сенсорлорду даярдоо жана жайгаштыруу
Сенсорлорду даярдоо жана жайгаштыруу

Эми биз IR LED жана ресиверди даярдайбыз. Таблицанын сүрөтүндө RPi жана сенсорлор жайгаштырылышы керек болгон жерлерди таба аласыз.

Бирок адегенде зымдарды даярдообуз керек:

  1. RPi/breadboard жеринен сенсор жайгашкан жерге чейин керектүү зымдын көлөмүн өлчөгүлө
  2. IR кабылдагычты зымдын бир четине туташтырыңыз (COM/GND/V+)
  3. Зымдын экинчи учунда эркек туташтыргычтарды ширеткиле

Эми биз дасторкон даярдайбыз:

  1. Кайда бургулоо керектиги боюнча негизги сүрөттү (сүрөттүн негизинде) жасаңыз. Бул 2 тешиктин бири -бирине тегизделиши абдан маанилүү, анткени бул устундун орду болот.
  2. Тешиктерди бургулаңыз
  3. Эгерде сизде LED кармагычтар болсо (шилтеме), буларды тешиктин ичине салып, аны бышыкыраак кылыңыз
  4. LED + ресиверди эки жагына кыстаруу +
  5. Зымдарды + байлап, жыгачка байлап койгула, андыктан алар өтө көп өтүшпөйт
  6. Эркек төөнөгүчтөрдү мурунку схемага ылайык нан тактасына салыңыз

5 -кадам: Матрицанын модулун даярдоо жана жайгаштыруу

Матрицанын модулун даярдоо жана жайгаштыруу
Матрицанын модулун даярдоо жана жайгаштыруу

Кийинки биз 2 LED матрицасынын модулдарын туташтырабыз

Эскертүү:

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

Зымдарды даярдоо үчүн:

  1. Нан тактасынан зымды үстөлдүн үстү жагына карай өлчөгүлө
  2. Кээ бир аял коннекторлорун зымдын биринчи учуна чейин туташтырыңыз
  3. Кээ бир эркек туташтыргычтарды зымдын экинчи четине кошуңуз

Матрицаны жайгаштыруу:

  1. Матрицаны үстүңкү тешиктен алып чыгыңыз
  2. Өткөөлдү болтурбоо үчүн, зымдарды жыгачтын ичине байлаңыз +
  3. Эркек төөнөгүчтөрдү нан тактасына мурда берилген циркиге ылайык киргизиңиз

Качандыр бир кезде мен матрицанын модулуна корпус кошуу үчүн кичинекей DIY кадамын кошом, бирок азырынча алар жылаңач.

6 -кадам: IoT жасоо

IoT жасоо
IoT жасоо

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

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

Кийинки бир нече кадамдарда биз төмөнкүлөрдү чечебиз:

  • Raspberry Pi конфигурациясы
  • Сактоо үчүн маалымат базасын түзүү
  • Вебсайтты түзүү
  • Аны онлайнга коюу

Бул жерде, эгер сиз git менен тааныш болсоңуз, мен сизге файлдарыңызды көзөмөлдөө үчүн GitHub/GitLab боюнча репозиторий жасоону сунуштайм. Эгер андай болбосоңуз, сүрөттөгүдөй түзүлүштөгү папканы түзө аласыз.

Толук долбоор жакында GitHubда жеткиликтүү болот. Бирок бардык керектүү файлдары бар убактылуу rar файлы бар.

7 -кадам: Raspberry Pi менен туташуу

Кийинки, биз малина пи чөйрөсүн орнотобуз, муну үчүн сиз төмөнкү кадамдарды аткарышыңыз керек:

  • SSH аркылуу Rasberry Pi менен туташыңыз (PuTTY колдоно аласыз)
  • Папканы түзүңүз (мисалы mkdir проекти) жана cd буйругун колдонуу менен бул папкага өтүңүз
  • Бул папкада python3 -m venv --system-site-packages env командасын колдонуп виртуалдык Python чөйрөсүн түзүңүз
  • Source/env/bin/activate буйругу менен виртуалдык котормочуну жандырыңыз
  • Пакеттерди талаптар.txtтан python -m пип орнотуу пакет -ат командасы менен орнотуңуз
  • Мурун берилген project_example.rar файлынан файлдарды SSH аркылуу долбоор папкаңызга өткөрүп бериңиз

Эми сиз Raspberry Pi'де толук долбоорду иштете алышыңыз керек. Мен сизге PyCharm сыяктуу Python IDE колдонууну сунуштайм, ал сизге SSH аркылуу алыскы котормочуңуздан мүчүлүштүктөрдү оңдоого жана керек болсо түздөн -түз жүктөөлөрдү жүктөөгө мүмкүнчүлүк берет.

8 -кадам: Маалыматтар базасын орнотуу

Маалыматтар базасын орнотуу
Маалыматтар базасын орнотуу

Эми сиз бул моделдин негизинде эң негизги базаны орнотушуңуз керек.

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

Бүткөндөн кийин, сиз маалымат базаңыздын таштандысын экспорттой аласыз жана аны RPiге жүктөп, андан кийин sudo mariadb <pathtofile/file.sql менен аткарсаңыз болот

9 -кадам: Вебсайтты түзүү

Вебсайтты түзүү
Вебсайтты түзүү
Вебсайтты түзүү
Вебсайтты түзүү
Вебсайтты түзүү
Вебсайтты түзүү

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

Негизги файл бул долбоордун нан жана майы болгон Flask.py:

  • Вебсайттын арткы жагын иштетүүчү Flask-SocketIO тиркемесин иштетет
  • Берилиштер базасы менен Колбанын ортосунда байланыш түзөт
  • Кирүү ырастоосун жана колдонуучуну каттоону камсыз кылат
  • Оюнду кантип ойноо боюнча керектүү кодду камсыз кылат, оюн учурунда веб -сайтты реалдуу убакытта жаңыртуу үчүн socketio колдонот
  • Оюндун жыйынтыктарын маалымат базасына киргизет

Статикалык жана шаблондор папкаларында сиз веб -сайттын алдыңкы бөлүгүн камсыз кылган HTML/CSS/JS таба аласыз. Буларды өзүңүздүн каалооңузга жараша өзгөртө аласыз.

10 -кадам: World Wide Webке туташуу

Веб -сайтыбызды интернетке туташтыруу үчүн nginx жана uwsgi колдонобуз. Долбоордун мисалында конф папкасынан керектүү файлдарды таба аласыз.

Биринчи кезекте бул файлдарда төмөнкүлөрдү жаңыртышыңыз керек:

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

Кийинки u 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 Daemon-reload
  • me@my-rpi: ~/project1 $ sudo systemctl start project1-*
  • me@my-rpi: ~/project1 $ sudo systemctl status project1-*

Эгерде сиз веб-сервердин сиздин малина пиңиздин жүктөлүшүн башташын кааласаңыз, sudo systemctl активдештирүү project1-*. Кызмат буйругун колдонушуңуз керек.

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

11 -кадам: Бүтүрүү

Аяктоо
Аяктоо

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

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

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

Эң акырында, Жаңы Медиа жана Байланыш Технологиясы боюнча мугалимдериме мага көп кеңештерди берип, бул долбоорду бүтүрүүгө жардам бергени үчүн ыраазычылык билдиргим келет.

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