Talaan ng mga Nilalaman:

QuizzPi, isang Raspberry Pi Trivia Game na May Python: 7 Hakbang (na may Mga Larawan)
QuizzPi, isang Raspberry Pi Trivia Game na May Python: 7 Hakbang (na may Mga Larawan)
Anonim
Ang QuizzPi, isang Raspberry Pi Trivia Game na May Python
Ang QuizzPi, isang Raspberry Pi Trivia Game na May Python
QuizzPi, isang Raspberry Pi Trivia Game Sa Python
QuizzPi, isang Raspberry Pi Trivia Game Sa Python

Ang QuizzPi ay isang arcade type trivia game. Ipinanganak si QuizzPi dahil sa kailangan kong bigyan ang aking anak ng libangan. Siya ay 7 taong gulang at hinihingi na niya ang paggamit ng mga bagong teknolohiya, ang ideya ay upang lumikha ng isang bagay na kapwa masaya at pang-edukasyon.

Mga kinakailangan ng proyekto:

  • Madaling gamitin
  • Madadala
  • Madaling i-upgrade ang hanay ng mga katanungan at sagot
  • Mesa ng mataas na iskor

Maramihang mga item ang maaaring mai-configure. Maaari kang lumikha ng iyong sariling database ng mga katanungan / sagot o maaari mong gamitin ang isa sa maraming mga server na nag-aalok ng isang database, kung saan magpasya ka sa uri ng mga katanungan, mahirap, … Lumikha ako para sa aking anak na babae ng isang database ng mga unang tanong sa grade, ngunit maaari naming baguhin ang pagsasaayos upang makakuha ng mga katanungan na walang kabuluhan mula sa isang oline server. Ang nakapagtuturo na bersyon na ito ay nakukuha ang mga katanungan mula sa isang nagtutulungan na mga katanungan at mga anwers, ang Open Trivia Database. Pinili ko ang mga pangkalahatang katanungan sa kaalaman ngunit maaari kang pumili ng mga katanungan sa pelikula, palakasan o relihiyon.

Humihingi ako ng paumanhin para sa aking mahirap Ingles. Espanyol ako ngunit ginusto kong likhain ang itinuturo na ito sa Ingles upang maabot ito ng mas maraming tao.

Tara na!

Hakbang 1: Kailangan mo ng Ilang Mga Materyales at Tool …

Kailangan mo ng Ilang Materyales at Tool…
Kailangan mo ng Ilang Materyales at Tool…

Mayroon kang karamihan sa mga materyal sa bahay para sigurado…

  • Raspberry Pi 2/3 na may 8Gb o higit pang SD card (35 $)
  • Raspberry Pi 3.5inch LCD na may case (11 $). Tingnan (opsyonal ito, maaari mong gamitin ang anumang display na mayroon ka, kailangan mo lamang baguhin ang kaso ng QuizzPi para dito)
  • Baterya. Maaari kang gumamit ng isang power bank o maaari kang gumamit ng isang diy 18650 na baterya pack (5 $). Sa aking kaso ginamit ko ang isang Aukey 5000mah power bank (12 $). Tingnan mo
  • Apat na mga pindutan ng arcade. Mayroon akong mga ito sa bahay (3 $, 12 mga pindutan para sa 10 $). Tingnan mo
  • Isang on / off switch (0.25 $). Tingnan mo
  • Dalawang konektor ng USB (0.50 $)
  • Isang USB / micro USB cable
  • Isang murang speaker (opsyonal) (0.25 $). Tingnan mo
  • Isang PAM8403 amplifier (opsyonal) (0.80 $). Tingnan mo
  • Ang ilang mga wires upang mai-link ang mga pindutan, usb konektor at on / off lumipat sa mga GPIO pin (1 $?)
  • Apat na neodymium magnet o maaari mong gamitin ang anumang bagay upang maisara ang pintuan sa likuran. Tingnan mo
  • Plywood. Gumamit ako ng 5mm playwud ngunit maaari mong gamitin ang anumang mayroon ka sa bahay (2 $)

Kailangan mo rin ng ilang mga tool …

  • Mga Utility ng Paghinang
  • Mga driver ng tornilyo
  • Mainit na glue GUN
  • 3D printer (opsyonal)

Tara na!

Hakbang 2: Magdisenyo Tayo ng isang Cool na Kaso ng QuizzPi …

Magdisenyo Tayo ng isang Cool na Kaso ng QuizzPi …
Magdisenyo Tayo ng isang Cool na Kaso ng QuizzPi …
Magdisenyo Tayo ng isang Cool na Kaso ng QuizzPi …
Magdisenyo Tayo ng isang Cool na Kaso ng QuizzPi …

Ang unang bagay na kailangan namin ay upang malaman kung gaano karaming puwang ang kailangan namin upang isama ang hardware (Raspberry + screen + pindutan + baterya + wires). Isinasaalang-alang ang mga bahagi na inilarawan sa nakaraang hakbang na gumawa ako ng isang 3D na disenyo ng kaso gamit ang libreng online 3D 3D na disenyo na Tinkercad (Kita n'yo). Kung nais mong i-print ang 3D na modelo ng kaso maaari mong i-download ito mula sa naka-attach na file na QuizzPi case.stl

Sa sandaling iyon kailangan kong magpasya kung mai-print ang modelo sa aking 3D printer o gawin ito mula sa playwud. Naisip ko na ang pagiging para sa aking anak na babae ay maaaring gumugol ng kaunting oras sa paggawa nito sa playwud. Kaya nakukuha ko ang mga plano mula sa modelo ng 3D at pinutol ang kahoy.

Susunod na hakbang ay mainit na pandikit ang mga bahagi …

Hakbang 3: Paggawa ng Kaso ng Plywood…

Paggawa ng Kaso ng Plywood…
Paggawa ng Kaso ng Plywood…
Paggawa ng Kaso ng Plywood…
Paggawa ng Kaso ng Plywood…
Paggawa ng Kaso ng Plywood…
Paggawa ng Kaso ng Plywood…
Paggawa ng Kaso ng Plywood…
Paggawa ng Kaso ng Plywood…

Kapag naputol ko ang lahat ng mga bahagi ng playwud sa mga susunod na hakbang ay maiinit ang pagdikit sa kanila. Sa ilang mga pagsali ay naglalagay ako ng mga pampalakas upang gawing mas malakas ang kahon. Sa bezel ay iginuhit ko gamit ang lapis ang balangkas ng LCD screen, at gupitin ito. Gumagawa ako ng apat na butas para sa mga turnilyo. Kung gumamit ka ng ibang screen dapat mong baguhin ang bagay na ito.

Nagsasara ang pintuan sa likod na may dalawang magnet na nakadikit sa pintuan at dalawang magnet na pandikit sa kaso, kaya iniiwasan ko ang paggamit ng mga bisagra.

Tapos na ang kaso ng QuizzPi…

Hakbang 4: Mga Kable ng GPIO Pins, Mounting Raspberry + LCD…

Mga Kable ng GPIO Pins, Mounting Raspberry + LCD…
Mga Kable ng GPIO Pins, Mounting Raspberry + LCD…
Mga Kable ng GPIO Pins, Mounting Raspberry + LCD…
Mga Kable ng GPIO Pins, Mounting Raspberry + LCD…
Mga Kable ng GPIO Pins, Mounting Raspberry + LCD…
Mga Kable ng GPIO Pins, Mounting Raspberry + LCD…

Kailangan naming ikonekta ang mga pindutan sa Raspberry Pi upang malaman nito kung anong pindutan ang itinulak. Ang mga pindutan ay konektado sa mga GPIO pin. Kailangan namin ng apat na IN GPIO pin plus isang Gnd GPIO pin. Gumamit ako ng GPIO pin 31 (GPIO6), 33 (GPIO13), 35 (GPIO19), 37 (GPIO26) at 39 (Gnd) para sa pula, dilaw, berde at asul na mga pindutan ayon sa pagkakabanggit. Ang interface na ito ay mayroong interface ng SPI. Nangangahulugan ito na ito ay konektado sa GPIO bank, kaya unang inilalagay ko ang mga wire na natapos sa parisukat sa mga pindutan ng mga pindutan at pagkatapos ay konektado ako sa LCD screen.

Susunod na hakbang ay i-mount ang kaso ng Raspberry + LCD + papunta sa bezel. Ginamit ko ang sariling mga turnilyo ng kaso ng Raspberry Pi.

Ang QuizzPi ay naka-mount …

Hakbang 5: Baterya, Mga Pindutan, Switch at USB Connector…

Baterya, Mga Pindutan, Switch at USB Connector…
Baterya, Mga Pindutan, Switch at USB Connector…
Baterya, Mga Pindutan, Switch at USB Connector…
Baterya, Mga Pindutan, Switch at USB Connector…
Baterya, Mga Pindutan, Switch at USB Connector…
Baterya, Mga Pindutan, Switch at USB Connector…

Ginamit ko muli ang Tinkercad upang mag-disenyo ng isang clip upang hawakan ang power bank sa kaso. Nai-print ko ang clip sa aking 3D printer at sumali sa kaso gamit ang hot glue pistol. Ikinakabit ko ang.stl file ng modelo sa ibaba. Kung walang access sa isang 3D printer maaari kang sumali sa power bank gamit ang velcro tape.

Susunod na hakbang ay upang ikonekta ang on / off switch sa pagitan ng power bank at ng Raspberry Pi. Kumuha ako ng isang USB cable at pinutol ko lamang ang wire ng kuryente, pagkatapos ay nag-solder ako ng isang dulo ng kawad sa isang pin ng on / off switch at ang iba pang wire end sa kabilang pin ng on / off switch. Kaya't kapag ang switch in off power ay hindi dumaan sa swtich at ang Raspberry ay off at kapag ang switch in on power ay dumaan sa swtich at ang Raspberry ay nakabukas.

Kapag ang paglabas ng power bank ay isang problema upang ilabas ang kaso upang singilin ito, kaya't hindi ko nais na ilabas ito tuwing sisingilin. Ang problema ay ang power bank charge port na USC type C, at mayroon lang akong cable ng power bank. Kaya naghinang ako ng dalawang babaeng konektor ng USB at inilagay sa kaso. Ang konektor sa loob upang ikonekta ang power bank cable, at ang panlabas na konektor upang ikonekta ang isang USB power cable.

Upang mailagay ang mga pindutan at mga kable sa mga ito ay madali. Ang mga pindutan ay may 2 mga pin, isang pin ng bawat pindutan ay kumokonekta sa isang pangkaraniwang cable na papunta sa isang ground GPIO pin, at ang iba pang pin ng pindutan ay kumokonekta sa kani-kanilang GPIO pin ng raspberry. Ang diagram ng mga kable ay ipinapakita sa kalakip na diagram.

Ang sound system ay batay sa PAM8403, isang murang sound amplifier. Ito ay kinakailangan dahil ang tunog na nakuha mula sa jack ng Raspberry Pi ay hindi masyadong malakas upang gumana ang isang speaker. Kailangan mong i-power ito gamit ang 5v o higit pa. Sa mga naka-attach na imahe maaari mong makita kung paano i-wire ang amplifier at ang speaker. Kailangan namin ng isang lalaki na 3.5mm jack upang kumonekta sa audio / video jack ng Rapberry. Naghinang ako ng 3 wires sa jack: audio, video at ground. Ipinapakita ng naka-attach na diagram kung anong pin ang lahat. Pagkatapos ay naghinang ako ng isang kawad sa switch na On / Off para kumuha ng kuryente, at isa pang kawad sa ground wire mula sa power bank cable. Pagkatapos ay ikonekta ko ang mga wire mula sa speaker sa mga output ng amplifier. Ang madaling bahagi ay upang ilaan ang sound system sa kasong ito. Maaari mong makita sa mga imahe.

Ang QuizzPi ay naka-mount, sa huling larawan maaari pa rin nating makita ang mga marka ng lapis sa kahoy, ngunit oras na ng software … pumunta tayo upang lumikha ng isang maliit na engine ng pagsusulit …

Hakbang 6: Imahe ng Rasbi at Programming ang Quiz Engine…

Larawan ng Rasbian at Programming ang Quiz Engine…
Larawan ng Rasbian at Programming ang Quiz Engine…
Larawan ng Rasbian at Programming ang Quiz Engine…
Larawan ng Rasbian at Programming ang Quiz Engine…
Larawan ng Rasbian at Programming ang Quiz Engine…
Larawan ng Rasbian at Programming ang Quiz Engine…
Larawan ng Rasbian at Programming ang Quiz Engine…
Larawan ng Rasbian at Programming ang Quiz Engine…

Pinindot namin ang power button. Walang nangyari. Oh Diyos ko! Hindi ito gumana! Ano ang maaaring mali? Anumang cable na walang koneksyon? Huwag magalala, kailangan naming mag-install ng isang imahe sa SD card…

Ang quiz engine ay na-write sa Python 3, kaya kailangan namin ng isang imahe ng Raspbian na naka-install ang tagatala ng Python. Sa puntong ito kailangan nating isaalang-alang ang uri ng screen na na-install namin. Ang aking screen ay interface ng SPI, at ang nagbebenta ay nagbibigay ng isang imahe na Raspbian kasama ang lahat ng mga naka-install na driver ng screen. Ang bersyon na ito ng Raspbian ay mayroon ding Python engine din. Maaari mong i-download ang imaheng ito sa link na ito.

Kung mayroon kang isang screen ng HDMI o RCA maaari mong i-download ang huling imahe ng Raspbian na magagamit sa raspberrypi.org site. Pansin: kailangan mo ng bersyon ng Desktop Rasbian, kaya iwasang mag-download ng imahe ng Lite Raspbian. Naglalaman ang mga imaheng ito ng Python compiler.

Upang mai-install ang imahe sa SD card maaari kaming gumamit ng anumang aplication. Gumagamit ako ng Win32diskimager. Pagkatapos ay ipinasok namin ang SD card sa Raspberry at itulak ang / off switch. Gumagana siya! Ngayon kailangan naming lumikha ng isang programa ng Python gamit ang quizz engine.

Susunod na hakbang ay upang i-download ang mga file ng quiz engine. Inilakip ko ang source code sa file na QuizzPi.zip. I-download ang mapagkukunan at lumikha ng isang folder sa Raspberry Pi:

# mkdir / home / pi / QuizzPi

at i-unzip ang file na na-download sa folder na ito.

Naglalaman ang QuizzPi.zip ng mga file na ito:

  • QuizzPi.py - naglalaman ito ng code
  • Mga file ng imahe ng-p.webp" />
  • Mga file ng tunog ng MP3 - maaari kang magbago upang isapersonal
  • losmejores.txt - naglalaman ito ng talahanayan ng High Scores, maaari mo itong i-delete upang simulan ang talahanayan
  • Panuto.txt

Hindi ako magbibigay ng isang lubusang paliwanag kung paano ko na-program ang engine code sa Python dahil mahirap para sa mga taong walang kaalaman sa programa. Kailangan lamang nilang i-save ang mga file sa Raspberry. Ang mga taong may kaalaman sa pagprogram ay mababago ito nang walang anumang paliwanag;)

Ang mga tanong at sagot ay mula sa isang nagtutulungan na database ng Pagtatanong at Mga Sagot na tinatawag na Open Trivia Database, mahahanap mo rito. Maaari mong baguhin ang kategorya at mahirap ng mga katanungan na binabago ang isang linya sa file na QuizzPi.py:

#Cargo desde URLurl = 'https://opentdb.com/api.php?amount=10&type=multiple'

nagbabago sa url na nakuha mula sa api configurator

Dinisenyo ko ang mga screen ng laro sa Photoshop, maaari mong baguhin ang mga ito. Kailangan mo lamang pangalagaan ang ilang mga puting lugar sa screen ng tanong, sa screen ng mga resulta at ang mga screen ng mataas na marka dahil nagsusulat ang engine ng laro sa kanila.

Maaari mong i-personalize din ang mga tunog ng laro. Kailangan mo lamang baguhin ang.mp3 na mga file ng iba na gusto mo, dapat mong mapanatili ang parehong mga pangalan. Maaari kang makakuha ng maraming mga tunog mula sa mga online na database, nakakakuha ako ng mga mina mula sa Mga Libreng Sound Effect.

Ngayon ay kailangan mong baguhin ang iyong Raspbian upang awtomatikong patakbuhin ang QuizzPi. Maaari mong basahin ang artikulong ito kung saan ipaliwanag kung paano ito gawin:

Kami ay tapos na!!!

Hakbang 7: Pagpapakita…

Image
Image

Upang tapusin ang itinuturo na ito maaari mong makita ang video na ito. Maaari mong makita itong madaling gamitin at ang mahirap ng mga katanungan ay nakasalalay sa iyo …

I-edit: na-update ang video na may tunog!

Paligsahan ng Microcontroller
Paligsahan ng Microcontroller

Runner Up sa Microcontroller Contest

Inirerekumendang: