Съдържание:
- Стъпка 1: Материалите
- Стъпка 2: Електрическата верига
- Стъпка 3: Кодиране на сензорите
- Стъпка 4: Подготовка и поставяне на сензорите
- Стъпка 5: Подготовка и поставяне на матричния модул
- Стъпка 6: Направете го IoT
- Стъпка 7: Свързване на Raspberry Pi
- Стъпка 8: Настройване на базата данни
- Стъпка 9: Създаване на уебсайт
- Стъпка 10: Свързване към World Wide Web
- Стъпка 11: Довършване
Видео: Raspberry Pi IoT Foosball Table: 11 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Добре дошли в моята версия на хакната маса за футбол, като част от студентски проект за нови медии и комуникационни технологии. Основно съм израснал около настолен футбол и билярдни маси, затова реших, че би било чудесно да се опитам да свържа едно от тези устройства към интернет.
Основната настройка използва съществуваща маса за футбол, свързана с Raspberry Pi, която може да изпълнява всички следните задачи:
- Използва GPIO щифтове за задвижване на IR LED/приемниците и 8x8 матричните модули
- Изпълнява уеб сайт на Flask с помощта на nginx
- Изпълнява база данни MySQL/MariaDB за съхранение на данни
За да можете да пресъздадете този проект, ще ви трябват следните умения:
Бекенд:
- Разбиране на HTML/CSS/Javascript за клиента на уебсайта
- Разбиране на Python с Flask/Flask-SocketIO/Jinja2 за сървърната страна на уебсайта
- Основни познания за MySQL
- Знайте как да стартирате уеб сървър
Прототип
- Основни познания за това как да свържете електрическа верига
- Запояване
- Основно разбиране за това как да напишете скрипт в Python
- Работа с Linux (Raspbian)
- Имайки много търпение, защото ще има много отстраняване на грешки
Стъпка 1: Материалите
Ето списъка с всички необходими части за таблицата:
- Raspberry Pi Model 3 (с корпус)
- T-Cobbler за свързване на Pi към платката
- Маса за футбол (използвах много стара маса, подобна на тази. Трябва да има желание да пробие дупки в нея)
- MAX7219 Arduino Dot Matrix Module (2)
- IR LED излъчватели (2+, защото се счупват, подобно на този)
- IR приемници (2+, защото също се счупват, подобно на този)
- Основна дъска за запояване
- Много и много тел (зависи от размера на масата за футбол)
- мъжки конектори (30+)
- женски конектори (10+)
- 100-220 ома резистори (4+)
- материали за запояване
- телени ленти
- LED държачи
- малко дърво/винтове в случай, че искате да прехвърлите топката в улука
Общата стойност на този проект зависи изцяло от цената на вашата маса за футбол (скъпо). Освен масата материалите ще бъдат максимум 150 евро.
Стъпка 2: Електрическата верига
Преди да опитате да запоите, сглобете всички компоненти, горещо препоръчвам първо да го тествате на макет. По -лесно е да смените дефектните компоненти, преди да сте прекарали часове да ги запоявате.
Първоначално се опитах да внедря 8x8 LED матрица с регистър на смяна 74HC595 (първо изображение) и транзисторен масив, но поради многото проводници и много ниския изход преминах към MAX7219 Dot Matrix Module, защото отнема само 5 проводника и се задвижва директно от SPI автобус.
Веригата, която в крайна сметка използвах, е нарисувана с Fritzing. Моля, обърнете внимание, че IR LEDS и приемниците могат да бъдат свързани към всеки от вашите безплатни GPIO пинове.
Инфрачервените приемници и светодиодът трябва да са директно един срещу друг, а горната част на светодиода трябва да е насочена към приемника. Тъй като искаме да симулираме директен лъч, който може да бъде прекъснат от движението на топката, в този случай ще има промяна в състоянието на DATA линията на приемника от 0 до 1.
Стъпка 3: Кодиране на сензорите
Кодирах по -голямата част от този проект, използвайки Pycharm, защото позволява лесно разгръщане на SSH на вашия Raspberry Pi с помощта на отдалечен интерпретатор. Няма да опиша подробно как работи тази програма, но много информация може да бъде намерена на уебсайта на pycharm.
В момента все още работя по проекта, но след като всичко е направено, целият проект ще бъде достъпен в моя github профил
Кодът за сензорите се състои от 3 класа, които се изпълняват във фонова нишка на моя Flask сървър (което ще бъде обяснено по -късно):
- Класът на целите (връзка) -Този файл инициира всички отделни компоненти, които могат да бъдат извикани чрез вмъкване на правилното SPI устройство/шина и пинов номер
- Класът на матрицата (връзка) -Това е основният клас за захранване на модула MAX7219
- Класът на светодиодите и приемника (връзка) - Това е основният клас за захранване на инфрачервения лъч с помощта на отделни нишки за намаляване на натоварването на процесора на RPi
Светодиодът и приемникът работят на честота от 38 kHz и приемниците винаги очакват да работят правилно 50% нагоре и 50% импулс.
Стъпка 4: Подготовка и поставяне на сензорите
Сега ще подготвим IR LED и приемника. На снимката на таблицата можете да намерите местата, където трябва да бъдат поставени RPi и сензорите.
Но първо трябва да подготвим окабеляването:
- Уверете се, че измервате необходимото количество проводник от местоположението на RPi/макет до местоположението на сензора
- Запоявайте щифтовете на IR приемника към единия край на проводника (COM/GND/V+)
- Запоявайте мъжкия съединител на другия край на проводника
Сега ще подготвим таблицата:
- Направете основен чертеж (въз основа на картината) къде да пробиете. Много е важно 2 -те отвора да са подравнени една спрямо друга, защото това ще бъде мястото на гредата.
- Пробийте дупките
- Ако имате някои държачи за LED (връзка), можете да ги поставите в отвора, за да го направите по -здрав
- Поставете + лента LED + приемника от двете страни
- Затегнете проводниците + залепете ги с дървена лента, така че да не се пресичат твърде много
- Поставете мъжки щифтове на макета съгласно предварително предвидената схема
Стъпка 5: Подготовка и поставяне на матричния модул
След това ще свържем 2 -те LED матрични модула
Забележка:
Тъй като използвах стара маса за футбол, вече имаше дупки, които се издигаха към горната част поради държачи за цигари. Ако нямате тези, ще трябва да ги създадете.
За да подготвите проводниците:
- Измерете проводника от платката към горната част на масата
- Запояйте няколко женски конектора към първия край на проводника
- Запояйте няколко мъжки конектора към другия край на проводника
Поставяне на матрицата:
- Извадете матрицата през отвора отгоре
- Каишка + залепете проводниците вътре върху дървото, за да избегнете пресичане
- Поставете мъжки щифтове в чертежа съгласно предварително предоставените схеми
В един момент ще добавя малка стъпка „Направи си сам“, за да добавя обвивка за матричния модул, но засега те са голи.
Стъпка 6: Направете го IoT
Ако просто искате да регистрирате и покажете резултатите, можете да завършите проекта, като напишете малък стартиращ скрипт на python, който се завърта, докато един от резултатите достигне 9 и след това се нулира.
Ако обаче искате да свържете масата си с интернет, следващите няколко стъпки трябва да доведат до вашата алея.
В следващите няколко стъпки ще разгледаме следното:
- Конфигуриране на Raspberry Pi
- Създаване на база данни за съхранение
- Създаване на уебсайт
- Пускането му онлайн
В този момент, ако сте запознати с git, препоръчвам ви да направите хранилище в GitHub/GitLab, за да следите вашите файлове. Ако не сте, можете да създадете папка със същата структура като на снимката.
Пълният проект скоро ще бъде достъпен на GitHub. Наличен е обаче временен rar файл с всички необходими файлове.
Стъпка 7: Свързване на Raspberry Pi
След това ще настроим малиновата пи среда, за да направите това, трябва да изпълните следните стъпки:
- Свържете се през SSH към вашия Rasberry Pi (можете да използвате PuTTY)
- Създайте папка (пример проект mkdir) и преминете към тази папка с помощта на командата cd
- Създайте виртуална среда на Python в тази папка с помощта на командата env python3 -m venv --system-site-packages
- Активирайте виртуалния интерпретатор с командата source/env/bin/активирайте
- Инсталирайте пакетите от requirements.txt с командата python -m pip install package -name
- Прехвърлете файловете от предварително предоставения файл 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, което обработва бекенда на уебсайта
- Създава връзка между базата данни и Flask
- Осигурява валидиране на вход и регистрация на потребител
- Предоставя необходимия код за това как да играете игра, използва socketio за актуализиране на уебсайта в реално време по време на играта
- Поставя резултатите от играта в базата данни
В статичните папки и шаблоните можете да намерите HTML/CSS/JS, които предоставят частта на уебсайта. Чувствайте се свободни да ги променяте според вашите предпочитания.
Стъпка 10: Свързване към World Wide Web
За да свържем нашия уебсайт с мрежата, ще използваме nginx и uwsgi. В примера на проекта можете да намерите необходимите файлове в папката conf.
Първо трябва да актуализирате следното в тези файлове:
- В uwsgi-flask.ini трябва да промените пътя на параметъра virtualenv към вашия интерпретатор
- В project1-flask.service трябва да актуализирате частта [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
И накрая, трябва да добавите персонализираните услуги към папката systemd, това е пример за това как да го направите:
- me@my-rpi: ~/project1 $ sudo cp conf/project1-*. услуга/etc/systemd/system/
- me@my-rpi: ~/project1 $ sudo systemctl демон-презареждане
- me@my-rpi: ~/project1 $ sudo systemctl стартиране на проект1-*
- me@my-rpi: ~/project1 $ sudo systemctl статус project1-*
Ако искате уеб сървърът да стартира при стартиране на вашето малиново пи, трябва да използвате командата sudo systemctl enable project1-*. Service.
Ако е направено правилно, след рестартиране на системата вашият уебсайт трябва да работи на вашия IP адрес. Ако искате да редактирате един от тези конфигурационни файлове, винаги трябва да спрете услугата, да изтеглите отново файловете и да използвате командата daemon-reload, последвана от стартиране, в противен случай промените няма да бъдат ефективни.
Стъпка 11: Довършване
Докато пишете последната част от тази инструкция, този малък училищен проект все още е в процес на работа.
Прекарах безброй часове, за да направя това за 2,5 седмици. Въпреки че всичко беше прибързано, все още се гордея с постигнатото. По време на фазата на сглобяване срещнах безброй бъгове/грешки/дефектни сензори, така че не се обезсърчавайте, ако всичко не работи при първия опит.
Най -доброто, което можете да направите, е да поискате или потърсите помощ в интернет, има много хора с много по -добри познания, които са много нетърпеливи да ви помогнат.
Не на последно място искам да благодаря на моите учители от Новите медии и комуникационните технологии, че ми дадоха много съвети и ми помогнаха да завърша този проект.
Препоръчано:
Arduino Smart Table Mat: 5 стъпки
Arduino Smart Table Mat: Това е подложка за маса, която ще се увери, че масата ви е чиста, когато напускате. Бюрото ми винаги е разхвърляно, затова измислих начин да се принудя да го почистя, преди да си тръгна. Когато си тръгвам, винаги взимам телефона си със себе си, така че подложката за маса да работи така: Ш
Осъществяване на Android приложение за малък бизнес с помощта на MIT APP и Google Fusion Table: 7 стъпки
Осъществяване на приложение за Android за малък бизнес с помощта на MIT APP и Google Fusion Table: Искали ли сте някога да направите свое собствено приложение, което да бъде достъпно в магазина за игра на Google !!! Ако имате бизнес, този урок ще промени живота ви. След като прочетете внимателно това, ще можете да направите свое собствено приложение. Бефо
Инсталиране на Raspbian в Raspberry Pi 3 B без HDMI - Първи стъпки с Raspberry Pi 3B - Настройка на вашия Raspberry Pi 3: 6 стъпки
Инсталиране на Raspbian в Raspberry Pi 3 B без HDMI | Първи стъпки с Raspberry Pi 3B | Настройка на вашия Raspberry Pi 3: Както някои от вас знаят, компютрите на Raspberry Pi са доста страхотни и можете да поставите целия компютър само на една малка дъска. Raspberry Pi 3 Модел B разполага с четириядрен 64-битов ARM Cortex A53 с тактова честота 1,2 GHz. Това поставя Pi 3 приблизително на 50
Retropie Ikea Arcade Table: 13 стъпки (със снимки)
Retropie Ikea Arcade Table: Аркадната маса на Ikea Raspberry Pi е страхотен начин да хакнете серията мебели за хол Ikea Lack в напълно функционираща ретро аркадна система plug and play. Изисква само основни познания по компютри и дограма и прави зашеметяване
Arduino Servo Foosball: 5 стъпки
Arduino Servo Foosball: от Дейвид Джой и Андрю Готард