Skip to content

tolvubraut/VESM3-V22-Pong

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VESM3-Vorönn-2022-Pong

Lokaverkefni í Verksmiðju 3

Lýsing

Stefna verkefnsins er að búa til tveggja manna pingpong leik á LED skjá sem er samsettur af fjórum 64x64 LED Matrix skjáum sem eru tengdir við Raspberry Pi Zero og er stýrður af Leap Motion tækni í gegnum vefþjónustu.


Myndbönd

https://youtube.com/shorts/1pWx-meHa_w?feature=share

https://youtube.com/shorts/JRmPaELFF5w?feature=share

https://youtube.com/shorts/fBoOpwotSGA?feature=share


Samsetning

Samsetning var mestmegnis byggð á sand toy verkefni frá adafruit frá adafruit og hjálp frá led matrix libraryinu.

Raspberry Pi var festur á 3D prentaða festingu sem var síðan fest við einn af skjáunum síðan var tengt tölvuna við RGB Matrix Bonnet. Mikilvægt er að lóða vír á GPIO 18 og 4 eins og á mynd 1 til þess að skjárinn keyri betur ásamt því að lóða bút milli 8 og miðju eins og á seinni myndinni til þess að bonnettinn virki með 64x64 skjáinn

Bonnettinn og raspberry pi fá rafmagn frá 5v 8 amper batterí sem tengist síðan frá bonettinum í tvo skjái, hinir tveir fá sér 5v 8 amper batterí.

  • 64x64 can draw up to 7.68A so you will want to be using a 5V @ 10A power supply with this device.
  • Each pixel can draw up to 0.06 Amps each if on full white. The total max per panel is thus 64 * 0.06 = 3.95 Amps or 128 * 0.06 = 7.68 Amps

Þegar það er verið að raðtengja skjáinna þá er mikilvægt að tengja þá eins og sýnt er fyrir neðan tið að forðast allt mapping vesen.

[<][<] }----- Raspberry Pi connector
[>][>]

Notast var við fjórar grindur skrúfaðar saman og segla sem skrúfast á skjáinna og sett voru fjórar litlar festingar í miðjunni á skjánum. Best væri að setja fleiri festingar til þess að tryggja að engin bil myndist frá þyngd.


Leap motion controller

Að setja upp

Til að setja upp leap motion á Linux þarf að setja upp leap deamon, þessi daemon er bara executable sem verður settur upp í /usr/sbin/leapd svo það þarf að búa til service skráina.

/lib/systemd/system/leapd.service

[Unit]
Description=LeapMotion Daemon
After=syslog.target


[Service]
Type=simple
ExecStart=/usr/sbin/leapd


[Install]
WantedBy=multi-user.target

og svo nota sudo systemctl start leapd.service þegar maður ætlar að nota leap motion controller

Frá minni reynslu er daemonin frekar lélegur, það tók ca mínútu að stoppa eða enduræsa deamonin, þess vegna er ekki góð hugmynd að nota sudo systemctl enable leapd.service því að þá mun það alltaf taka mínútu að slökkva á tölvuni. Eftir þetta ættu leap motion forrit eins og visualizer að virka.

Python 3

Vandamálið með python 3 á leap motion controller er að leap motion virkar ekki á python 3. Lausnin á þessu er að taka saman Leap sdk uppá nýtt með swig.

Við notuðum Leap sdk Python3 til að gera þetta, en því að við notuðum Swig 4.0.2 þá virkaði það ekki, því að __swig_getmethods__, _swig_property og smá fleira er ekki lengur til í þessari útgáfu. Þessar línur eru sammt ekki mikilvægar svo það var hægt að taka það út. Sjáðu leap-modified í code/ á línu 830, 885, 1317.


Leikurinn

OpenGL

Það er mikilvægt að vita að Raspberry Pi Zero getur ekki notað nýjari en OpenGL 4.6 og OpenGL ES 3.2, sem þýðir að sum libraries fyrir leiki gætu ekki virkað, við notuðum bara Pillow fyrir rendering og bygðum leikinn frá grunni til þess að vera viss um að við þurfum ekki nýajri útgáfu af OpenGL.

Að búa til on_update

Til þess að gera update function erum við að gera start_time = time.time() og svo í while loop current_time = time.time() svo er hægt að finna munin með því að nota start_time - current_time það er svo hægt að nota if statement til þess að framkvæma update functions hverja 0.1 sekondur.

Að rendera mynd

Til að rendera leikinn erum við að nota Pillow (ImageDraw og Image), það virkar með því að búa til nýja mynd (þarf að vera RGB því að matrix tekur ekki svart-hvítt). Það er svo notað Player.draw() function til að teikna rétthyrningana fyrir spilarana, Ball.draw() sem teiknar rétthyrning fyrir kúluna og svo teiknum við textan bara beint. Til þess að teikna myndina á skjáin getur maður notað Matrix.SetImage(PIL_Image).


MQTT

Að setja upp server

Við notuðum eigin MQTT server sem var létt að setja upp, það þurfti bara að gera sudo apt install mosquitto, og búa til config skrá eins og í code/mosquitto-config. Eftir það var hægt að nota mosquitto command til þess að kveikja á serverinum.


LED Matrix Kóðinn

Að setja upp

Við notuðum þessa scriptu til þess að setja upp fyrir Raspberry Pi:

curl https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/rgb-matrix.sh > rgb-matrix.sh

Þessa skripta nær í allt sem þarf og tekur saman RGB Matrix library á sama tíma. Scriptan settur líka upp fyrir Python3 og það ætti að vera inní bindings.

Stillingar

Í Python libraryinu er RGBMatrixOptions class, þetta er notað til að setja stillingar á skjáinum. Það er nokkrar mikilvægar stillingar, í rows og cols á að sitja sömu stillingu og á að nota fyrri einn skjá en það þarf að sitja chain stillinguna á magnið af skjáum sem maður er með. Í margskjá setup þarf líka að stilla pixel_mapper_config til U-mapper og svo er Rotate bara notað til að segja hvernig skjárin á að snúast.


Kóði


About

Lokaverkefni í Verksmiðju 3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%