Mundarija:
- 1 -qadam: Materiallar
- 2 -qadam: Elektr davri
- 3 -qadam: Sensorlarni kodlash
- 4 -qadam: Datchiklarni tayyorlash va joylashtirish
- 5 -qadam: Matrix modulini tayyorlash va joylashtirish
- 6 -qadam: uni Internetga aylantirish
- 7 -qadam: Raspberry Pi -ni ulash
- 8 -qadam: Ma'lumotlar bazasini o'rnatish
- 9 -qadam: veb -sayt yaratish
- 10 -qadam: Internet tarmog'iga ulanish
- 11 -qadam: tugatish
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-23 15:14
Yangi media va kommunikatsiya texnologiyalari bo'yicha talabalar loyihasi doirasida, mening buzilgan stol usti versiyasiga xush kelibsiz. Men asosan futbol va basseynlar atrofida o'sganman, shuning uchun bu qurilmalardan birini internetga ulash juda yaxshi bo'lardi deb o'yladim.
Asosiy sozlash - bu Raspberry Pi -ga ulangan mavjud futbol stolidan foydalanish, u quyidagi vazifalarni bajarishi mumkin:
- IR LED/Qabul qiluvchilarni va 8x8 nuqta matritsali modullarni haydash uchun GPIO pinlaridan foydalanadi
- Nginx yordamida Flask veb -saytini ishga tushiradi
- Ma'lumotlarni saqlash uchun MySQL/MariaDB ma'lumotlar bazasini ishga tushiradi
Loyihani qayta tiklash uchun sizga quyidagi ko'nikmalar kerak bo'ladi.
Orqa taraf:
- Veb -sayt mijozi uchun HTML/CSS/Javascript -ni tushunish
- Veb-saytning server tomoni uchun Flask/Flask-SocketIO/Jinja2 bilan Pythonni tushunish.
- MySQL haqida asosiy bilimlar
- Veb -serverni qanday boshqarishni biling
Prototip
- Elektr zanjirini simga ulash bo'yicha asosiy bilimlar
- Lehimlash
- Python -da skript yozish haqida asosiy tushuncha
- Linux bilan ishlash (Raspbian)
- Ko'p sabr -toqatli bo'lish, chunki tuzatishlar ko'p bo'ladi
1 -qadam: Materiallar
Mana, jadval uchun zarur bo'lgan barcha qismlar ro'yxati:
- Raspberry Pi Model 3 (korpus bilan)
- Pi-ni non paneliga ulash uchun T-Cobbler
- Futbol to'pi (men shunga o'xshash eski stolni ishlatardim. Teshiklarni burg'ilashga tayyor bo'lishi kerak)
- MAX7219 Arduino nuqta matritsasi moduli (2)
- IQ LED yoritgichlari (2+, chunki ular singan, shunga o'xshash)
- IR qabul qiluvchilar (2+, chunki ular ham singan)
- Asosiy lehimsiz non paneli
- Ko'p va ko'p simlar (futbol stolining hajmiga bog'liq)
- erkak ulagichlar (30+)
- ayol ulagichlar (10+)
- 100-220 Ohm qarshilik (4+)
- lehim materiallari
- tel bilaguzuklar
- LED ushlagichlari
- ba'zi yog'och/vintlardek, agar siz to'pni kanalga o'tkazmoqchi bo'lsangiz
Loyihaning umumiy qiymati futbol stolining narxiga bog'liq (qimmat). Stoldan tashqari, materiallar 150 evrodan oshmaydi.
2 -qadam: Elektr davri
Lehimlashdan oldin, barcha komponentlarni yig'ing, men uni non panelida sinab ko'rishni maslahat beraman. Bir necha soat lehimlashdan oldin, nosoz komponentlarni almashtirish osonroq.
Avvaliga men 74xC595 smenali registri (birinchi rasm) va tranzistorli massivli 8x8 LED matritsasini amalga oshirishga harakat qildim, lekin ko'p simlar va juda past chiqish tufayli MAX7219 nuqta matritsali modulga o'tdim, chunki u faqat 5 simni oladi va to'g'ridan -to'g'ri boshqariladi. SPI avtobusi.
Oxir -oqibat men ishlatgan sxema Fritzing bilan chizilgan. E'tibor bering, IQ LEDlari va qabul qiluvchilarni har qanday bepul GPIO pinlariga ulash mumkin.
IQ qabul qiluvchilar va LED to'g'ridan -to'g'ri bir -biriga qarama -qarshi bo'lishi kerak va LEDning yuqori qismi qabul qilgich tomon yo'naltirilgan bo'lishi kerak. Biz to'g'ridan -to'g'ri nurni simulyatsiya qilishni xohlaymiz, uni to'p harakati buzishi mumkin, bu holda qabul qiluvchining DATA chizig'i 0 dan 1 gacha o'zgaradi.
3 -qadam: Sensorlarni kodlash
Men ushbu loyihaning ko'p qismini Pycharm -dan foydalanib kodladim, chunki u masofadan tarjimon yordamida Raspberry Pi -ga SSH -ni oson joylashtirish imkonini beradi. Men bu dastur qanday ishlashini batafsil aytmayman, lekin ko'p ma'lumotni pycharm veb -saytida topish mumkin.
Men hozir ham loyiha ustida ishlayapman, lekin hamma narsa bajarilgach, butun loyiha mening github profilimda bo'ladi
Datchiklar kodi mening Flask serverimning orqa fonida ishlaydigan 3 ta sinfdan iborat (ular keyinroq tushuntiriladi):
- Maqsadlar klassi (havola) -Bu fayl SPI qurilmasi/avtobus va pin raqamini to'g'ri kiritish orqali chaqirilishi mumkin bo'lgan barcha alohida komponentlarni ishga tushiradi.
- Matrix klassi (havola) -Bu MAX7219 modulini yoqish uchun asosiy sinf
- LED va qabul qiluvchilar sinfi (havola) - bu RPi protsessor yukini kamaytirish uchun alohida iplardan foydalangan holda infraqizil nurni yoqishning asosiy klassi.
LED va qabul qilgich 38 kHz chastotada ishlaydi va qabul qiluvchilar har doim 50% yuqoriga va 50% pastga pulsning to'g'ri ishlashini kutishadi.
4 -qadam: Datchiklarni tayyorlash va joylashtirish
Endi biz IR LED va qabul qilgichni tayyorlaymiz. Jadval rasmida siz RPi va datchiklar joylashtiriladigan joylarni topishingiz mumkin.
Lekin oldin biz simlarni tayyorlashimiz kerak:
- RPi/non panelidan sensor joyigacha kerakli sim miqdorini o'lchaganingizga ishonch hosil qiling
- IQ qabul qilgichni simning bir uchiga lehimlang (COM/GND/V+)
- Erkak ulagich qismlarini simning boshqa uchiga lehimlang
Endi biz stolni tayyorlaymiz:
- Qaerda burg'ulash kerakligi haqida asosiy rasmni (rasmga asoslanib) tuzing. 2 teshik bir -biriga to'g'ri kelishi juda muhim, chunki bu nur joyi bo'ladi.
- Teshiklarni burang
- Agar sizda bir nechta LED ushlagichlari (havola) bo'lsa, ularni yanada mustahkam qilish uchun ularni teshik ichiga qo'yishingiz mumkin
- LED + qabul qilgichni har ikki tomonga ham joylashtiring
- Simlarni bog'lab qo'ying +, ularni yog'ochga yopishtiring, shunda ular juda ko'p o'tmaydi
- Erkak pimlarini non paneliga ilgari berilgan sxemaga ko'ra joylashtiring
5 -qadam: Matrix modulini tayyorlash va joylashtirish
Keyin biz ikkita LED matritsali modulni ulaymiz
Eslatma:
Men eski futbol stolidan foydalanganim uchun, sigaret tutqichlari tufayli tepada teshiklar bor edi. Agar sizda bu bo'lmasa, ularni yaratish kerak bo'ladi.
Simlarni tayyorlash uchun:
- Non panelidagi simni stolning yuqori qismiga qarab o'lchab ko'ring
- Ba'zi ayol konnektorlarini simning birinchi uchiga lehimlang
- Ba'zi erkak konnektorlarni simning boshqa uchiga lehimlang
Matritsani joylashtirish:
- Matritsani yuqoridagi teshikdan chiqaring
- O'tkazib yubormaslik uchun simlarni yog'ochga bog'lab qo'ying
- Erkak pimlarini non taxtasiga ilgari berilgan sxemaga muvofiq joylashtiring
Men matritsa moduliga korpus qo'shish uchun kichik bir DIY qadamini qo'shaman, lekin hozircha ular yalang'och.
6 -qadam: uni Internetga aylantirish
Agar siz faqat ro'yxatdan o'tishni va ballarni ko'rsatishni xohlasangiz, loyihani tugatishingiz mumkin, u kichik ishlaydigan python skriptini yozib, ballardan biri 9 ga yetguncha, so'ngra tiklanadi.
Ammo, agar siz stolingizni Internetga ulamoqchi bo'lsangiz, keyingi bir necha qadam sizning xiyoboningizda bo'lishi kerak.
Keyingi bir necha bosqichda biz quyidagilarni ko'rib chiqamiz:
- Raspberry Pi -ni sozlash
- Saqlash uchun ma'lumotlar bazasini yaratish
- Veb -sayt yaratish
- Internetga joylashtirish
Agar siz git bilan tanish bo'lsangiz, men sizga fayllaringizni kuzatib borish uchun GitHub/GitLab -da ombor yaratishni maslahat beraman. Agar yo'q bo'lsangiz, rasmdagi kabi tuzilishga ega papka yaratishingiz mumkin.
To'liq loyiha tez orada GitHub -da bo'ladi. Biroq, barcha kerakli fayllar bilan vaqtinchalik rar fayli mavjud.
7 -qadam: Raspberry Pi -ni ulash
Keyin biz malina pi muhitini o'rnatmoqchimiz, buning uchun quyidagi amallarni bajarish kerak:
- SSH orqali Rasberry Pi -ga ulaning (PuTTY -dan foydalanishingiz mumkin)
- Jild yarating (misol mkdir loyihasi) va cd buyrug'i yordamida ushbu papkaga o'ting
- Python3 -m venv --system-site-packages env buyrug'i yordamida ushbu papkada virtual Python muhitini yarating.
- Manba/env/bin/faollashtirish buyrug'i bilan virtual tarjimonni yoqing
- Paketlarni python -m pip install pack -name buyrug'i bilan talablar.txt -dan o'rnating
- Fayllarni oldindan berilgan project_example.rar faylidan loyiha papkasida SSH orqali o'tkazing
Endi siz Raspberry Pi -da to'liq loyihani ishga tushirishingiz kerak. Men sizga PyCharm kabi Python IDE -dan foydalanishni maslahat beraman, bu sizga SSH orqali masofaviy tarjimondan disk raskadrovka qilish va kerak bo'lganda o'zgarishlarni to'g'ridan -to'g'ri yuklash imkonini beradi.
8 -qadam: Ma'lumotlar bazasini o'rnatish
Endi siz ushbu modelga asoslangan juda oddiy ma'lumotlar bazasini o'rnatishingiz kerak.
Buning eng oson yo'li - MySQL ishchi stolida ma'lumotlar bazasini yaratish, bu erda siz testlarni ham o'tkazishingiz mumkin.
Bajarilgandan so'ng, siz ma'lumotlar bazasi chiqindisini eksport qilishingiz va uni RPi -ga yuklashingiz va keyin uni sudo mariadb <pathtofile/file.sql bilan bajarishingiz mumkin.
9 -qadam: veb -sayt yaratish
Keyin siz project_example.rar faylida berilgan kodni tahlil qilishingiz (va ishlatishingiz) mumkin.
Asosiy fayl - bu loyihaning noni va yog'i bo'lgan Flask.py:
- Veb-saytning orqa qismini boshqaradigan Flask-SocketIO ilovasini ishga tushiradi
- Ma'lumotlar bazasi va Flask o'rtasida aloqa o'rnatadi
- Kirish tekshiruvi va foydalanuvchini ro'yxatdan o'tkazishni ta'minlaydi
- O'yin qanday o'ynash haqida kerakli kodni beradi, o'yin vaqtida veb -saytni yangilash uchun socketio -dan foydalanadi
- O'yin natijalarini ma'lumotlar bazasiga joylashtiradi
Statik va shablon papkalarida siz veb -saytning oldingi qismini ta'minlaydigan HTML/CSS/JS -ni topishingiz mumkin. O'z xohishingizga ko'ra, ularni o'zgartirishga jur'at eting.
10 -qadam: Internet tarmog'iga ulanish
Veb -saytimizni Internetga ulash uchun biz nginx va uwsgi -dan foydalanamiz. Loyiha misolida conf papkasida kerakli fayllarni topishingiz mumkin.
Avvalo, siz ushbu fayllarda quyidagilarni yangilashingiz kerak:
- Uwsgi-flask.ini-da siz virtualenv parametrining yo'lini tarjimoningizga o'zgartirishingiz kerak.
- Project1-flask.service da faylning [Xizmat] qismini hisobga olish ma'lumotlari va tegishli fayllar yo'llari bilan yangilash kerak.
- Nginx faylida siz u bilan bog'liq bo'lgan rozetkaga server va manzil / yo'lni yangilashingiz kerak
Keyin standart nginx veb -server faylini nginx konfiguratsiya faylining joylashuvi bilan almashtirishingiz kerak, buning uchun quyida Linux buyruqlarining namunasi keltirilgan.
- 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-ni qayta ishga tushiring
Oxir -oqibat, siz systemd papkasiga maxsus xizmatlarni qo'shishingiz kerak, buni qanday qilish mumkinligi haqidagi misol:
- 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-*
Agar siz veb-server sizning malina pi-ni yuklashni boshlashni xohlasangiz, sudo systemctl enable project1-*. Xizmat buyrug'idan foydalanishingiz kerak.
Agar to'g'ri bajarilgan bo'lsa, tizim qayta ishga tushirilgandan so'ng, sizning veb -saytingiz IP -manzilingizda ishlashi kerak. Agar siz ushbu konfiguratsiya fayllaridan birini tahrir qilmoqchi bo'lsangiz, u har doim xizmatni to'xtatib turishi, fayllarni qayta yuklashi va demonni qayta yuklash buyrug'idan so'ng ishga tushirilishi kerak, aks holda o'zgarishlar samarali bo'lmaydi.
11 -qadam: tugatish
Bu ko'rsatmali ma'lumotning oxirgi qismini yozayotganda, bu kichik maktab loyihasi hali ham davom etmoqda.
Men buni 2,5 hafta ichida bajarish uchun son -sanoqsiz soat sarfladim. Hamma narsa shoshilinch bo'lsa ham, men erishgan yutuqlarim bilan faxrlanaman. O'rnatish bosqichida men son -sanoqsiz xatolarga/xatolarga/nosoz sensorlarga duch keldim, shuning uchun hammasi birinchi urinishda ishlamasa, tushkunlikka tushmang.
Siz qila oladigan eng yaxshi narsa - bu Internetda yordam so'rash yoki qidirish, sizga yordam berishga tayyor bo'lgan juda yaxshi bilimga ega odamlar bor.
Oxir -oqibat, men yangi maslahatlar va kommunikatsiya texnologiyalari bo'yicha o'qituvchilarimga menga ko'p maslahatlar bergani va ushbu loyihani tugatishga yordam berganlari uchun minnatdorchilik bildirmoqchiman.
Tavsiya:
Raspberry Pi reyting jadvali: 4 qadam
Raspberry Pi skorbord: Bugun men malina pi tomonidan boshqariladigan va 5V quvvat manbai bilan ishlaydigan bu jadvalni qanday yaratganimni tushuntiraman. Yoritish uchun ws2811 va ws2812b lampalar kombinatsiyasidan foydalaniladi va konstruksiya kontrplak va qizil emandan qilingan. Tavsif uchun
LED tovushli reaktiv cheksiz kubikni tugatish jadvali: 6 qadam (rasmlar bilan)
LED tovushli reaktiv cheksizlik kubining oxirgi jadvali: Voy! Voy! Qanday ajoyib effekt! - Qo'llanmani to'ldirgandan so'ng, siz eshitadigan ba'zi narsalar. Aql bovar qilmaydigan, chiroyli, gipnozli, tovushga reaktiv cheksiz kub. Bu juda kam rivojlangan lehim loyihasi, menga 12 kishi kerak bo'ldi
VA YO'Q !! (interaktiv haqiqat jadvali): 4 qadam
VA YO'Q !! (interaktiv Thruth Table): Salom bolalar, umid qilamanki, siz hammangiz o'z uyingizda yaxshisiz va mavjud materiallardan nimani o'ylab topishni o'ylayapsizmi? Xavotir olmang, bu maqola sizga oddiy sxemani tuzishda yordam beradi !! Mantiq eshiklarini tushunish ikkalasi uchun ham juda muhimdir
Yengil diskoteka jadvali: 27 qadam (rasmlar bilan)
Yengil diskoteka jadvali: Har bir kvartiraga ajoyib mebel kerak, shuning uchun nima uchun uni o'zingiz qilmaysiz? Bu kofe stolida turli xil naqsh va ranglarga mos keladigan LED chiziqlar mavjud. Chiroqlar Arduino va yashirin tugma bilan boshqariladi va hamma narsa
Futbol roboti (yoki futbol, agar siz hovuzning narigi tomonida yashasangiz): 9 qadam (rasmlar bilan)
Futbol roboti (yoki futbol, agar siz hovuzning narigi tomonida yashasangiz): men robototexnikani tinker-robot-labs.tk da o'rgataman, mening o'quvchilarim futbol o'ynaydigan robotlarni yaratgan (yoki agar siz boshqa tomonda yashasangiz hovuz). Bu loyihadan maqsadim bolalarga robot orqali Bluetooth orqali muloqot qilishni o'rgatish edi