Raspberry Pi IoT futbol to'pi jadvali: 11 qadam
Raspberry Pi IoT futbol to'pi jadvali: 11 qadam
Anonim
Raspberry Pi IoT futbol to'pi jadvali
Raspberry Pi IoT futbol to'pi jadvali

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

Elektr davri
Elektr davri
Elektr davri
Elektr davri
Elektr davri
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

Sensorlarni kodlash
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):

  1. 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.
  2. Matrix klassi (havola) -Bu MAX7219 modulini yoqish uchun asosiy sinf
  3. 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

Sensorlarni tayyorlash va joylashtirish
Sensorlarni tayyorlash va joylashtirish
Sensorlarni tayyorlash va joylashtirish
Sensorlarni tayyorlash va joylashtirish
Sensorlarni tayyorlash va joylashtirish
Sensorlarni 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:

  1. RPi/non panelidan sensor joyigacha kerakli sim miqdorini o'lchaganingizga ishonch hosil qiling
  2. IQ qabul qilgichni simning bir uchiga lehimlang (COM/GND/V+)
  3. Erkak ulagich qismlarini simning boshqa uchiga lehimlang

Endi biz stolni tayyorlaymiz:

  1. 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.
  2. Teshiklarni burang
  3. Agar sizda bir nechta LED ushlagichlari (havola) bo'lsa, ularni yanada mustahkam qilish uchun ularni teshik ichiga qo'yishingiz mumkin
  4. LED + qabul qilgichni har ikki tomonga ham joylashtiring
  5. Simlarni bog'lab qo'ying +, ularni yog'ochga yopishtiring, shunda ular juda ko'p o'tmaydi
  6. Erkak pimlarini non paneliga ilgari berilgan sxemaga ko'ra joylashtiring

5 -qadam: Matrix modulini tayyorlash va joylashtirish

Matrix modulini tayyorlash va joylashtirish
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:

  1. Non panelidagi simni stolning yuqori qismiga qarab o'lchab ko'ring
  2. Ba'zi ayol konnektorlarini simning birinchi uchiga lehimlang
  3. Ba'zi erkak konnektorlarni simning boshqa uchiga lehimlang

Matritsani joylashtirish:

  1. Matritsani yuqoridagi teshikdan chiqaring
  2. O'tkazib yubormaslik uchun simlarni yog'ochga bog'lab qo'ying
  3. 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

IoT qilish
IoT qilish

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

Ma'lumotlar bazasini sozlash
Ma'lumotlar bazasini sozlash

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

Veb -sayt yaratish
Veb -sayt yaratish
Veb -sayt yaratish
Veb -sayt yaratish
Veb -sayt yaratish
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

Tugatish
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: