Talaan ng mga Nilalaman:

Magic Answers Ball Sa Arduino Pro Mini at TFT Display: 7 Mga Hakbang
Magic Answers Ball Sa Arduino Pro Mini at TFT Display: 7 Mga Hakbang

Video: Magic Answers Ball Sa Arduino Pro Mini at TFT Display: 7 Mga Hakbang

Video: Magic Answers Ball Sa Arduino Pro Mini at TFT Display: 7 Mga Hakbang
Video: Normal people vs programmer vs hackers compression #coding 2024, Nobyembre
Anonim
Magic Answers Ball Sa Arduino Pro Mini at TFT Display
Magic Answers Ball Sa Arduino Pro Mini at TFT Display
Magic Answers Ball Sa Arduino Pro Mini at TFT Display
Magic Answers Ball Sa Arduino Pro Mini at TFT Display
Magic Answers Ball Sa Arduino Pro Mini at TFT Display
Magic Answers Ball Sa Arduino Pro Mini at TFT Display

Ilang sandali pa, ang aking anak na babae at ako ay kumuha ng isang bola ng Magic 8 upang mapalitan niya ang dalawampung tugon sa mga pinili niya. Regalo ito para sa isang kaibigan niya. Naisip ko iyon kung paano gawin iyon sa isang mas malaking sukat. Maaari ba kaming magkaroon ng higit sa 20 mga tugon? Gamit ang isang elektronikong bersyon maaari naming!

Kaya't ilalarawan nito kung paano ako nag-disassemble ng isang Mattel Magic 8 Ball (paumanhin, Mattel) at gumamit ng isang bilog na display ng TFT upang maipakita ang isang hindi kapani-paniwalang bilang ng mga karagdagang tugon (ang pinakamaliit na micro-SD card na mahahanap ko ay 8GBs, kaya't labis itong labis para sa para saan ito ginagamit). Gumagamit ang bola ng isang Sparkfun Wake-on-shake board upang ma-trigger ang tugon at patayin ang bola pagkatapos upang makatipid ng baterya. Ginagamit ang isang recharging board upang pahintulutan ang baterya na muling ma-recharge mula sa isang koneksyon sa USB.

Mga gamit

Mga Bahagi:

Arduino Pro Mini 328 - 3.3V / 8MHz

SparkFun Wake on Shake

Baterya ng Lithium Ion - 400mAh

Organizer 12 pcs TP4056 Charging Module 5V Micro USB 1A 18650 Lithium Battery Charging Board na may Protection Charger Module (kailangan mo lang ang isa sa mga ito, ngunit ang 12 pack ay mas mababa sa $ 9)

DAOKI 5Pcs Micro SD Storage Board (muli, kailangan mo lamang ng isa, ngunit ang 5 pack ay mas mababa pa rin sa $ 9)

DFRobot 2.2 inch TFT LCD Display Module

Kingston 8 GB microSD (maaaring mayroon kang isang luma sa mga nakahiga sa paligid ng iyong bahay)

Perma-Proto Quarter-sized Breadboard PCB (maaari mo ring gamitin ang nais mong PCB)

Magic 8 Ball

FTDI Basic breakout 3.3V (maaaring mayroon ka ng isa sa mga ito kung nagawa mo ang isang katulad na proyekto sa Arduino Pro Mini o katulad na board)

4 Pin Pabahay na may 2.54mm JST XH Lalaki / Babae Pin Header Dupont Wire Connector Kit (opsyonal, ngunit inirerekomenda para sa pagkonekta ng baterya)

Iba pang mga pangunahing supply:

Sugru Mouldable Glue (maaaring gumamit ng duct tape at mainit na pandikit, ngunit mas gusto ko ito)

Duct tape

Dalawang panig na foam tape

Kawad

Mga tool:

Panghinang

Rotary tool na napili mo (hal. Dremel)

Clamp ng muwebles

Hakbang 1: Gupitin ang Half 8 Magic Ball

Gupitin ang Half 8 Magic Ball
Gupitin ang Half 8 Magic Ball
Gupitin ang Magic 8 Ball sa Half
Gupitin ang Magic 8 Ball sa Half

Una kakailanganin mong hatiin ang Magic 8 Ball sa kalahati. Siniguro ko ang minahan sa isang mesa sa trabaho na may patag na bahagi pababa gamit ang isang clamp ng kasangkapan. Gamit ang isang Dremel na may isang pangunahing disk ng pagputol na nakakabit, gupitin ang seam ng bola. Kakailanganin mong i-cut nang malalim, medyo hanggang sa papayagan ng cutting disk. Dahan-dahan lang. Kahit na matapos mong gupitin ang lahat, maaaring kailangan mong gumamit ng isang flat head screwdriver o pait upang gawin ang panghuling paghihiwalay. Mayroong isang silindro na nagtataglay ng likidong "mahika" at ang icosahedron (dalawampung panig na hugis - oo, kailangan kong tingnan iyon) sa loob. Itapon lang iyon o gamitin ito sa ibang proyekto. Kung gagamitin mo ito sa ibang proyekto, ipaalam sa akin kung ano ang ginawa mo upang malaman ko kung ano ang gagawin sa akin.

Iiwan ka ng dalawang halves tulad ng ipinakita sa mga larawan. Tatlong beses ko nang nagawa ito ngayon at ang pinakahuling oras, ang puting labi ay makinis kaysa magkaroon ng mga taluktok, kaya't ang iyong bola ay maaaring magmukhang bahagyang naiiba kaysa sa nasa larawan.

Magkakaroon pa rin ng ilang plastic slag sa paligid ng panlabas na gilid (ang natunaw at na-rehard na plastik). I-preno mo iyon sa iyong mga kamay, kung maaari mo; Ang paggamit ng isang tool ay nagpapatakbo ng peligro ng scuffing up ang tapusin sa bola at ang slag ay madaling lumabas.

Hakbang 2: Ihanda ang Bola

Ihanda ang Bola
Ihanda ang Bola
Ihanda ang Bola
Ihanda ang Bola
Ihanda ang Bola
Ihanda ang Bola

Mayroong dalawang mga pagbabago na kakailanganin naming gawin sa mga halves ng plastik na bola.

Una, sa bukas na kalahati, ang isa na may nakapinta na "8", kakailanganin naming mag-ahit ng isang lugar na sapat na malaki para sa aming USB charge board upang umupo kasama ang USB port na lumalabas. Ginamit ko ang aking Dremel na may nakakabit na isang magaspang na sanding drum. Nais mo itong kasing payat ng makakakuha ka nang hindi nalilinis. Pagkatapos ay gupitin ang isang maliit na pambungad na sapat lamang upang payagan ang USB port na tumusok sa labas. Gumamit ako ng caliper upang masukat ang USB port, ngunit maaari mo itong eyeball kung kailangan mo. Muli, ginamit ko ang Dremel na may isang maliit na attachment sa paggupit upang gawin ang pagbubukas. Ipinapakita ng unang dalawang larawan ang pambungad at kung ano ang hitsura nito sa likod ng USB board.

Pangalawa, sa kabilang kalahati, ang may butas sa DALAWANG panig at ang puting plastik na labi, naghahanda ng puwesto para makaupo ang display. Sa loob lamang ng pambungad kung saan uupo ang display, may mga plastik na tagaytay at isang goma (?) Flange sa loob ng bukana. Kunin ang flange at itabi. Ibabalik namin iyon sa paglaon, ngunit nais naming iwas sa daan para sa hakbang na ito. Ang display ay may isang hugis-parihaba na pagpilit sa isang gilid na hindi papayagang makaupo ito sa pambungad kung ang ilan sa mga rabung na ito ay hindi tinanggal. Gamit ang magaspang na sanding drum sa Dremel muli, ahitin ang mga ito hangga't maaari. Halika mula sa butas kung saan ang display ay magiging para sa pinakamahusay na anggulo. Ito ay dapat magmukhang mga larawan kapag kumpleto. Tandaan, ipinapakita ng mga larawan ang pagpapakita sa lugar, ngunit HUWAG I-attach ITO pa.

Hakbang 3: Ihanda ang mga Sagot sa Micro-SD Card

Ang hakbang na ito ay medyo mas kumplikado kaysa sa maaari mong isipin. Kung hindi mo nais na lumikha ng iyong sariling listahan ng mga tugon, lumaktaw sa huling talata ng hakbang na ito.

Ang hangarin ay maaari naming ibigay ang bola sa anumang listahan ng mga string na gagamitin bilang posibleng mga tugon at ito ay nakasentro sa screen nang walang anumang mga break sa gitna ng mga salita. Hindi namin nais na gawin ang pagproseso na ito sa microcontroller at nais namin ang isang file na may static na laki ng record upang mabilis na makahanap ng anumang partikular na linya.

Kahit na bilog ang display, functionally ito ng isang virtual na hugis-parihaba na display na may mga pixel lamang sa loob ng bilog na nakikita. Maaaring magpakita ang display ng maramihang laki ng teksto, ngunit ginagamit lamang namin ang pinakamaliit na bersyon na 6 x 8 pixel. Gamit ang laki na ito, mayroong 315 na mga character na maaaring ilagay sa display sa isang screen (21 mga character bawat linya beses 15 na mga linya), ngunit 221 lamang ang nakikita at ang bawat linya ay may iba't ibang bilang ng mga nakikitang mga character. Kita ang problema?

Sumulat ako ng isang programa sa Java upang kumuha ng isang file ng mga hindi nai-format na mga tugon at i-convert ang mga ito sa ganap na nakasentro na mga tala na madaling maipakita sa bilog na TFT. (link upang i-download ang file na "FormatToPicksFileFullyCentered.java").

Nang walang pagpunta sa isang paliwanag ng buong code, ang pangkalahatang ideya ay nagtatrabaho kami pabalik mula sa gitna (ish) at pagpasok ng mga puwang upang matiyak na hindi namin masisira ang mga salita sa mga nakikitang linya, pagkatapos ay gawin ang parehong bagay mula sa pasulong Sa wakas, nililibot namin ang lahat ng mga linya at isentro ang bawat linya sa loob ng buong 21 mga linya ng character upang lumikha ng isang talaan ng eksaktong 316 bytes (315 mga alphanumeric character kasama ang isang bagong linya na character). Ang code ay talagang gumagana sa pamamagitan ng tatlong mga font, x 3, x 2, at x 1 upang makita kung alin ang pinakamalaking font na maaaring magamit at magkasya pa rin sa teksto. Ang centering ay isang maliit na off para sa x 2 at x 3 na mga font, paumanhin. Mag-ingat sa mga character na kukuha ng higit sa isang byte, maaari nitong itapon ang file na output.

Kopyahin ang "picks.txt" na file sa micro-SD card.

Kung hindi mo nais na dumaan sa problema sa paglikha ng iyong sariling listahan ng mga pick, isinama ko ang aking listahan ng mga pick na maaari mo lamang kopyahin sa SD card at gamitin. Hindi ako makapag-upload ng isang.txt file sa mga instrukstil sa oras na ito kaya narito ang isang link kung saan maaari mong i-download ang picks.txt file.

Hakbang 4: Mag-upload ng Code sa Arduino Mini

Mag-upload ng Code sa Arduino Mini
Mag-upload ng Code sa Arduino Mini
Mag-upload ng Code sa Arduino Mini
Mag-upload ng Code sa Arduino Mini
Mag-upload ng Code sa Arduino Mini
Mag-upload ng Code sa Arduino Mini

Una, kung hindi mo pa nagamit ang Arduino Pro Mini dati, hindi mo mai-plug in lamang ang isang USB cable at mag-download; kailangan mong gumamit ng isang board ng FTDI at ikonekta ang mga wire sa naaangkop na mga pin sa mini. Hindi ako magbibigay ng isang tutorial tungkol dito, maraming mga nasa web. Para sa akin, hindi ko nais na maghinang ng isang permanenteng konektor papunta sa board ng microcontroller na magagamit lamang nang isang beses upang mai-download ang code, kaya't lumikha ako ng isang maliit na clip na maaaring magamit upang mai-program ang mini nang walang paghihinang (tingnan ang mga larawan). Ito ay inspirasyon ng mga produktong tulad ni Fiddy, ngunit wala akong madaling pag-access sa isang 3D printer, kaya gumawa ako ng sarili kong clip ng potato chip. Kung ang mga tao ay interesado, gagawa ako ng isang itinuturo para lamang doon.

Bukas sa code. Mayroong isang pares ng mga kagiliw-giliw na bahagi sa code na ito, ngunit ito ay halos tuwid na pasulong.

Sa pag-andar ng pag-setup, mayroong isang disenteng halaga ng code na nakikipag-usap sa pagkuha ng isang mahusay na random na binhi. Ang tipikal na pamamaraan ng paggamit ng analog na pagbabasa mula sa isang hindi magkakaugnay na pin ay hindi nagbibigay ng iba't ibang sapat na tugon sa aking karanasan. Nakukuha ko ang isang numero sa pagitan ng 477 at 482. Dahil ang Arduino random function ay may isa at isang pagkakasunud-sunod lamang at tinutukoy ng binhi kung saan magsisimula sa pagkakasunud-sunod na iyon, tulad ng isang makitid na saklaw ay hindi makagawa ng sapat na posibleng mga tugon sa huli. Tandaan na ang code na ito ay mahalagang nagsisimula sa bawat oras na pinapatay ng Wake-on-shake board ang kapangyarihan at nakabalik, kaya't ang paunang posisyon ng pagkakasunud-sunod na tinutukoy ng binhi ay mahalaga. Upang matulungan ito, nagsusulat ako ng isang napakaliit na file sa SD card upang subaybayan ang huling binhi at idagdag iyon sa isang bagong halaga na nagmumula sa hindi konektadong pin.

Kapag napili ang isang pagpipilian sa pag-andar ng loop at mabasa sa isang character array, hindi lamang namin mai-print ang buong string. Ang display ay may isang limitasyon kung gaano katagal ang isang string na maaari nitong hawakan nang paisa-isa. Para sa kadahilanang iyon, kailangan nating loop sa bawat isa sa labing limang linya at ipadala ang mga ito sa display nang paisa-isa.

Mga kinakailangang panlabas na aklatan:

Library ng ST7687S

DFRobot-Display Library

Hakbang 5: Wire Up ang Mga Components

Wire Up ang Mga Sangkap
Wire Up ang Mga Sangkap
Wire Up ang Mga Sangkap
Wire Up ang Mga Sangkap

Oras upang gawin ang lahat ng paghihinang ng mga wire. Nagkaroon ako ng pagkakamali sa gilid ng bahagyang mas mahahabang mga wire kaysa sa talagang kinakailangan ko, ngunit natapos iyon sa maayos na pag-eehersisyo.

Sa naka-attach na eskematiko, ang display na TFT ay kinakatawan ng isang konektor sa halip na isang larawan ng buong display (na hindi ko makita ang isang bahagi ng Fritzing). Nilagyan ko ng label ang mga wire / pin batay sa kung paano sila may label sa bahagi. Katulad nito, ang SD card ay hindi eksaktong ginamit ko, ngunit nilagyan ko ng label ang mga wires / pin para sa nakalistang bahagi.

Mayroong isang bahagi na hindi ko nag-solder nang sama-sama sa hakbang na ito: ang baterya. Sa halip, gumamit ako ng isang konektor na apat na pin na tinanggal ang dalawang gitnang pin (pangalawang larawan). Pinapayagan akong subukan ang lahat ng mga bahagi na nag-wire nang magkasama at pagkatapos ay idiskonekta ang baterya habang ikinakabit ko ang lahat sa bola.

Sa wakas, gumamit ako ng isang sukat na sukat na permanenteng breadboard PCB upang gawing mas madali ang lakas at mga nakabahaging koneksyon. Makikita mo yan sa mga larawan ng pagpupulong.

Subukan na gumagana ang lahat

Hakbang 6: Ikabit ang Mga Bahagi sa Bola

Ikabit ang Mga Bahagi sa Bola
Ikabit ang Mga Bahagi sa Bola
Ikabit ang Mga Bahagi sa Bola
Ikabit ang Mga Bahagi sa Bola
Ikabit ang Mga Bahagi sa Bola
Ikabit ang Mga Bahagi sa Bola
Ikabit ang Mga Bahagi sa Bola
Ikabit ang Mga Bahagi sa Bola

Una ilagay ang display sa lugar at gamitin ang ilang Sugru upang ma-secure ito (unang dalawang imahe). Huwag kalimutan ang tungkol sa flange na tinanggal mo kanina, dapat mong ibalik ito sa lugar bago i-secure ang display sa lugar.

Susunod, nai-tap ko ang proto-board sa ilalim ng walang laman na kalahati ng bola. Iningatan ko ang lahat ng aking mga nagbebenta sa isang gilid ng pisara, kaya mayroon pa akong kalahati ng board na maaari kong mai-tape. Pagkatapos ay nai-tap ko ang baterya sa tuktok ng parehong kalahati ng proto-board (pangatlong imahe).

Ang parehong mga halves ay konektado ngayon sa pamamagitan ng mga wire. Alamin kung saan magtatapos ang butas ng USB kapag pinagsama mo ang dalawang halves. Kung ang puting labi ay nakadikit ang mga gulugod, tandaan na kailangan itong bumaba na nakasentro sa isa sa mga wedge ng puting labi dahil masisiguro namin ang USB charge board sa pagitan ng dalawa sa mga plastik na tagaytay sa labi.

Gamit ang isang maliit na piraso ng double-sided foam tape, ikabit ang USB charge board. Ang double-sided tape ay hindi dapat masakop ang lahat ng ilalim ng singilin na board dahil ang dulo na may mga kawad na nakakabit ay nakasabit sa gitnang gilid ng puting labi. Kaya't dapat takpan ng tape ang halos tatlong kapat ng ilalim na ibabaw ng board. Ilagay muna ang tape sa ilalim ng pisara, pagkatapos ay pindutin ito sa lugar na napagpasyahan mo. Ang konektor ng USB ay dapat na nasa gilid ng bola, dumidikit sa itim na lugar ng plastik nang hindi lumalabas sa bola. Panghuli, gumamit ng higit pang Sugru sa tuktok ng board at pag-secure sa magkabilang panig. Nagdaragdag lamang ito ng karagdagang lakas para sa kapag ang isang cable ay itinulak sa USB port.

Ilagay ang micro-SD card sa module ng SD card ngayon

Maaari mong i-secure ang iba pang mga bahagi sa puting labi kung nais mo. Inilagay ko lang ang natitirang mga sangkap sa likod ng display.

Hakbang 7: Ibalik ang Dalawang Halves

Ibalik ang Dalawang Halves
Ibalik ang Dalawang Halves
Ibalik ang Dalawang Halves
Ibalik ang Dalawang Halves

I-double check na naipasok mo ang SD card at nasubukan mong magkasama ang lahat ng mga bahagi.

Ok, kung handa ka na, gumawa ng isang mahabang ahas mula sa ilang kola ng Sugru at patakbuhin ito hanggang sa gilid ng kalahati ng bola gamit ang puting labi (unang larawan). Ang pandikit ay dapat na mailagay mismo sa kantong kung saan ang mga itim at puting seksyon ng plastik ay magkakasama. Ang paglalagay ng pandikit dito ay tinitiyak na mayroon kang isang malakas na bono habang pinapaliit ang dami ng pandikit na pinipiga mula sa basag pagkatapos ng dalawang halves ay sumali.

Pindutin ang dalawang halves nang tinitiyak na ang USB port ay dumidikit sa butas na dating gupitin para dito. Gamit ang clamp ng muwebles, i-clamp ang dalawang halves nang sapat lamang upang masikip ang mga halves, hindi na kailangang i-clamp ito nang husto. Ang kola ng Sugru ay titigas sa loob ng 24 na oras.

Kung mayroon kang ilang pandikit na pinisil sa pinagsamang, huwag mag-atubiling i-scrape ito gamit ang iyong daliri o isang makinis na tela / papel na tuwalya.

Inirerekumendang: