- Tarvittavat materiaalit:
- Piirikaavio:
- Android-sovelluksen luominen prosessoinnin avulla:
- Käsittelykoodin ymmärtäminen:
- Arduinon ohjelmointi:
- Piirin ja piirilevyn suunnittelu EasyEDA: n avulla:
- Näytteiden laskeminen ja tilaaminen verkossa:
- Bluetooth Signboard -näytön toiminta:
Olipa kyse sitten pitkistä venytetyistä moottoriteistä tai lääkäreidesi ulko-ovesta, meillä on kaikkialla kylttejä, jotka antavat meille tietoa. Mutta nämä kyltit ovat usein tylsiä, eikä niitä voi määrittää aika ajoin kiinnostuksemme mukaan. Joten tässä projektissa aiomme rakentaa Bluetooth-ohjatun kyltin, jossa on 8 * 8 Matrix -näyttö. Tämän projektin ainutlaatuinen piirre on sen Android-sovellus, jonka avulla käyttäjä voi ohjata kaikkia 64 LEDiä erikseen matkapuhelimesta. Tämän avulla käyttäjä voi luoda mukautettuja malleja helposti ja näyttää ne LED-näytöllä, kuulostaa mielenkiintoiselta? Joten aloitetaan…
Tarvittavat materiaalit:
- Arduino Pro mini
- MAX7219
- HC-05 Bluetooth-moduuli
- 8 * 8 LED-matriisinäyttö
- 20k vastus
- DC Barrel Jack
Piirikaavio:
Piirikaavio Tämä Bluetooth-ohjattu LED-kortti, joka on rakennettu EasyEDA-sovelluksella. Kehitämme siitä piirilevyä ja valmistamme sen EasyEDA: n avulla samoilla kaavioilla.
Piiri on melko suoraviivainen. Koko projekti saa virtansa 12 V: n sovittimesta, joka annetaan suoraan Arduino-kortin Raw-nastalle. Tämä raakajännite säädetään sitten + 5 V: ksi, joka syötetään Bluetooth-moduuliin ja MAX7219 IC: ään. Bluetooth-moduulin Tx- ja Rx-nastat on kytketty Arduinon D11- ja D10-sarjoihin sarjaliitännän mahdollistamiseksi.
Digitaaliset nastat D5 - D7 on kytketty MAX7219 IC: hen tietojen lähettämiseksi ja vastaanottamiseksi SPI-tietoliikenteen kautta. MAX7219: n ISET-nasta vedetään korkealle 20 k: n vastuksen kautta.
Tätä projektia varten olen valmistanut piirilevyn, voit saada piirilevyn suunnittelutiedoston ja käyttää sitä tai rakentaa piirin leipälaudalle. Monimutkaisuutensa vuoksi on kuitenkin suositeltavaa joko ostaa 8x8-näyttömoduuli tai käyttää piirilevyä
8x8-matriisi on erittäin hyödyllinen näyttömoduuli ja sitä voidaan käyttää monissa hienoissa projekteissa:
- 8x8 LED-matriisin hallinta Raspberry Pi: llä
- Tekstinäytön vieritys 8x8 LED-matriisissa Arduino-sovelluksella
- 8x8 LED-matriisi Arduinolla
- 8x8 LED-matriisiliitäntä AVR-mikrokontrollerilla
Android-sovelluksen luominen prosessoinnin avulla:
Ennen kuin voimme aloittaa Arduinon ohjelmoinnin, meidän tulisi tietää, minkä tyyppisiä tietoja vastaanotamme matkapuhelimelta vastaamaan siihen. Joten katsotaanpa, miten Android-sovellus luodaan ja miten voit käyttää sitä älypuhelimellasi 8x8 LED-matriisin ohjaamiseen.
Tämän projektin Android-sovellus luotiin Processing-ohjelmistolla. Se on avoimen lähdekoodin kehityssovellus, jonka voi helposti ladata ja käyttää mielenkiintoisten projektien kehittämiseen Arduinoa tai muita mikrokontrollereita käyttäen, koska se voi kehittää Android-sovelluksia ja järjestelmäsovelluksia. Olemme jo tehneet muutaman projektin Processingilla, ja voit tarkistaa ne napsauttamalla alla olevia linkkejä.
- DIY-FM-radio prosessoinnin avulla
- Virtuaalitodellisuuden / eleen hallinta Arduinolla
- Yksityinen chat-huone Arduinolla.
- Arduino-tutkajärjestelmä, joka käyttää prosessointisovellusta ja ultraäänianturia
- Reaaliaikainen kasvojentunnistus ja seuranta Arduinolla
- Tee DIY-nopeusmittari Arduinolla ja prosessoinnilla
- Ping Pong -peli Arduino-kiihtyvyysmittarilla
- Kaksisuuntainen robotti, joka käyttää Arduinoa
- DIY Arduino -lämpökamera
Palatakseni aiheeseen on mahdotonta selittää Android-sovelluksen täydellistä koodia, joten sinun on opittava itse käsittely ja tarkasteltava koodia sen ymmärtämiseksi. Siksi ihmisille, jotka ovat halukkaita ohittamaan oppimisprosessin, käsittely voi ladata Android-sovelluksen alla olevasta linkistä
- Lataa Android-sovellus
Alla on Android-sovelluksemme käyttöliittymä:
APK-tiedosto voidaan asentaa suoraan mihin tahansa Android-sovellukseen ja käynnistää kuten mikä tahansa muu sovellus. Mutta varmista, että HC-05 Bluetooth-laitteesi nimi on “HC-05”, koska vasta sitten se toimii.
Käsittelykoodin ymmärtäminen:
Ihmiset, jotka ovat kiinnostuneita tietämään, mitä ruudun takana tapahtuu, voivat lukea lisää, muut voivat siirtyä seuraavaan otsikkoon. Pohjimmiltaan Android-sovellus muodostaa yhteyden "HC-05" -nimiseen Bluetooth-laitteeseen käynnistyksen aikana ja näyttää 64 LED-sarjan ympyröinä. Kun käyttäjä painaa ympyrää, ympyrä muuttuu punaiseksi ja ympyrän numero lähetetään Arduinolle Bluetoothin kautta, saatuaan ympyrän numeron Arduino sytyttää LEDin. Katsotaanpa Processing-ohjelman tärkeät linjat ymmärtämään paremmin. Android-sovelluksen täydellinen koodi voidaan ladata alla olevasta linkistä.
- Käsitellään koodia Android-sovellukselle
Käytämme luokkia ja objekteja 64 LED: n näyttämiseen, jotta voimme helposti käsitellä niitä kaikkia. Kuten alla olevasta koodista näet, käytämme for for -silmukkaa iteroimaan välillä 1-64 taulukon avulla. Tällä kullakin LEDillä on oma arvo X-sijainnille, Y-sijainnille ja värille, ja voimme muuttaa niitä helposti.
// upottaa kaikki ledit kohteelle (int i = 1; i <= 64; i ++) led_array.display (); // Kaikki ledit näyttivät luokan Led { float X_Pos; kelluva Y_Pos; väri väri; // RAKENTAJAN Led (kelluva tempx, kelluva tempy, värilämpötila) { X_Pos = tempx; Y_Pos = tempy; väri = tempc; } void display () { täytä (väri); ellipsi (X_Pos, Y_Pos, led_dia, led_dia); } }
LEDit ladataan näytölle samassa järjestyksessä kuin näyttö. Jokainen LED on erotettu etäisyydellä, joka on yhtä suuri kuin LED: n halkaisija, joten voimme helposti erottaa käyttäjän valitseman LED: n. Kuten alla olevassa ohjelmassa on esitetty, luomme taulukon, jossa jokainen elementti sisältää tiedot X: n, Y: n sijainnista ja LEDin väristä.
void load_leds () { led_array = uusi Led; int a = 1; for (int j = 0; j <= 7; j ++) { kelluva y = korkeus / 6 + j * (led_dia * 1,5); for (int i = 0; i <= 7; i ++) { float x = (leveys / 6) + i * (led_dia * 1,5); // täytä (255); // ellipsi (x, y, led_dia, led_dia); led_array = uusi Led (x, y, väri (255,255,255)); a ++; } } }
Ohjelman päävaihe on tarkistaa, onko käyttäjä painanut mitään LEDiä, ja jos kyllä, joudumme vaihtamaan LEDin väriä ja lähettämään LED-numeron Bluetoothin kautta. Koska voimme nyt osoittaa jokaisen LEDin sijainnin ja värin helposti, voimme tehdä tämän vertaamalla vain käyttäjän painamien X, Y-arvoja LEDien X, Y-arvoon. Jos arvot sulautuvat toisiinsa, muutamme LED-valon tilaa ja lähetämme numeron myös Bluetoothin kautta alla olevan kuvan mukaisesti.
// tarkista onko hiiri ledin päällä // Jos kyllä, lähetä (int i = 1; i <= 64; i ++) { if ((mouseX <(led_array.X_Pos + led_dia / 2)) && (mouseX> (led_array.X_Pos - led_dia / 2)) && (hiiriY <(led_array.Y_Pos + led_dia / 2)) && (mouseY> (led_array.Y_Pos - led_dia / 2))) {led_array = uusi Led (led_array.X_Pos, led_array. Y_Pos, led_color); tavutiedot = {tavu (i)}; bt. lähetys (data); } }
Tämän lisäksi ohjelma voi myös nollata koko LED- valon sammuttamalla ne kaikki ja voit myös tehdä LED-valon muuttumaan punaiseksi (ON) tai valkoiseksi (OFF), joten meillä on myös vaihtopainike sitä varten. Vaihtopainike näkyy ja odottaa tuloa. Jos painetaan, vastaava toimenpide suoritetaan. Sama tekevä koodi näkyy alla funktiona, jota kutsutaan piirrospiirin sisään.
void load_buttons () { rectMode (KESKUS); textAlign (KESKUS, KESKUS); noStroke (); täyttö (# 1BF2D4); suora (leveys / 2-leveys / 4, korkeus / 1,3, leveys / 4, korkeus / 12); täyttö (0); teksti ("Palauta", leveys / 2 leveyttä / 4, korkeus / 1,3); // painike 1 if (punainen == true) {täytä (# 080F89); suora (leveys / 2 + leveys / 4, korkeus / 1,3, leveys / 4, korkeus / 12); täyttö (255,0,0); teksti ("PUNAINEN", leveys / 2 + leveys / 4, korkeus / 1,3);} // painike 2 jos (punainen == väärä) {täytä (# 080F89); suora (leveys / 2 + leveys / 4, korkeus / 1,3, leveys / 4, korkeus / 12); täyttö (255); teksti ("VALKOINEN", leveys / 2 + leveys / 4, korkeus / 1,3);} // painike 2 } mitätöi lukupainikkeet () { if (hiiriPainettu && click_flag == tosi) { color_val = get (mouseX, mouseY); click_flag = väärä; if (color_val == - 14945580) { tavutiedot = {0}; bt. lähetys (data); println ("NOLLAA"); load_leds (); // lataa kaikki ledit sijainnissa ja väreissä } if (color_val == - 16248951) { tavutiedot = {100}; bt. lähetys (data); jos (punainen == tosi) punainen = väärä; muuten jos (punainen == väärä) punainen = tosi; println ("TOGGLE"); } väri_val = 0; } }
Arduinon ohjelmointi:
Täydellinen Arduino ohjelma tämän Bluetooth kontrolloi langattoman hallituksen projekti annetaan alareunassa Tämän näytön; voit käyttää sitä suoraan ja ladata sen taulullesi. Ohjelman tärkeät linjat selitetään alla.
Bluetooth-moduuli on yhdistetty tapin 10 ja 11, joten meillä on käyttää ohjelmistoa sarja mahdollistaa sarjaliikenne näiden nastojen ja voimme kuuntelemaan tietoja näitä nastoja. Saamme Bluetooth-moduulista saadut tiedot ja tallennamme ne muuttujaksi, jota kutsutaan saapuvaksi . Jos saapuvan arvon arvo on “0”, sammutamme kaikki LEDit alla olevan koodin avulla
if (BT.available ()) { saapuva = BT.read (); Sarja.println (saapuva); jos (saapuva == 0) m. selkeä (); // Tyhjentää näytön
Saapuvien arvojen avulla on määritettävä, mitä LEDiä käyttäjä on painanut matkapuhelimeen ja säästä kytkeäksesi LEDin päälle tai pois päältä. Joten tarkistamme, onko arvo yhtä suuri kuin 100. Jos arvo on 10, se tarkoittaa, että käyttäjä on pyytänyt vaihtamaan LEDin väriä. Joten vaihdamme muuttujan punaiseksi, jotta tiedämme, onko LED kytkettävä päälle vai pois.
else if (saapuva == 100) // Tarkista, pitäisikö meidän sytyttää tai sammuttaa LED { if (punainen == true) punainen = false; muuten jos (punainen == väärä) punainen = tosi; Sarja.tulos ("PUNAINEN:"); Sarja.println (punainen); }
Lopuksi, jos arvo on yli 65, se tarkoittaa, että käyttäjä on painanut LEDiä. Luvun 1-64 perusteella on määritettävä, mitä LEDiä käyttäjä on painanut. LEDin vaihtamiseksi tarvitsemme kyseisen LEDin rivin ja sarakkeen arvon, jotka lasketaan ja tallennetaan vastaavasti muuttujiin X ja Y ja näytetään alla olevassa koodissa. Lopuksi muuttuvan punaisen arvon perusteella joko sytytämme tai sammutamme LED-valon käyttäjän pyynnön mukaan
else if (saapuva <= 64) {// Laske, mihin PÄÄLLE ro POIS LED- kytkin = true; Y = saapuva / 8; X = saapuva - (Y * 8); jos (saapuva% 8 == 0) {X = 8; Y - = 1;} Sarja.tulosn (X - 1); Sarjaprintln (Y); if (punainen == tosi) m.setDot ((X - 1), (Y), true); // LED palaa muuten, jos (punainen == väärä) m.setDot ((X - 1), (Y), väärä); // LED POIS }
Piirin ja piirilevyn suunnittelu EasyEDA: n avulla:
Tämän Bluetooth-ohjatun matriisinäytön suunnittelemiseksi olemme valinneet online-EDA-työkalun nimeltä EasyEDA. Olen aiemmin käyttänyt EasyEDA: ta monta kertaa ja löytänyt sen erittäin käteväksi käyttää, koska sillä on hyvä kokoelma jalanjälkiä ja se on avoimen lähdekoodin. PCB: n suunnittelun jälkeen voimme tilata PCB-näytteet niiden edullisten PCB-valmistuspalveluiden avulla. Ne tarjoavat myös komponenttien hankintapalvelua, jossa heillä on suuri määrä elektronisia komponentteja ja käyttäjät voivat tilata tarvittavat komponentit piirilevytilauksen mukana.
Piirejä ja piirilevyjä suunniteltaessa voit myös tehdä piireistä ja piirilevyistä julkisia, jotta muut käyttäjät voivat kopioida tai muokata niitä ja hyötyä työstäsi. Olemme myös julkistaneet koko piirin ja piirilevyasettelut tälle piirille, tarkista alla oleva linkki:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
Voit tarkastella mitä tahansa piirilevyn kerrosta (ylä-, ala-, yläsilkki-, pullonsilkki- jne.) Valitsemalla kerroksen 'Tasot' -ikkunasta.
Voit myös tarkastella piirilevyä, miten se näyttää valmistuksen, käyttämällä EasyEDA: n Valokuvanäkymä- painiketta:
Näytteiden laskeminen ja tilaaminen verkossa:
Valmistuttuaan tämän Bluetooth-ohjatun matriisi-piirilevyn, voit tilata piirilevyn JLCPCB.com-sivuston kautta. Jos haluat tilata piirilevyn JLCPCB: ltä, tarvitset Gerber-tiedoston. Lataa PC: n Gerber-tiedostot napsauttamalla EasyEDA-editorisivun Valmistustulos-painiketta ja lataa sitten EasyEDA-piirilevyn tilaussivulta.
Siirry nyt JLCPCB.com-sivustoon ja napsauta Quote Now tai -painiketta, jolloin voit valita tilattavien piirilevyjen määrän, kuinka monta kuparikerrosta tarvitset, piirilevyn paksuuden, kuparin painon ja jopa piirilevyn värin, kuten tilannekuvan nähtävissä alapuolella:
Kun olet valinnut kaikki vaihtoehdot, napsauta "Tallenna ostoskoriin" ja sinut siirretään sivulle, jonne voit ladata GerED-tiedostosi, jonka olemme ladanneet EasyEDA: lta. Lataa Gerber-tiedosto ja napsauta "Tallenna ostoskoriin". Ja lopuksi klikkaa Checkout Secure loppuun tilauksesi, niin saat piirilevyt muutama päivä myöhemmin. He valmistavat piirilevyä erittäin alhaisella nopeudella, joka on 2 dollaria. Niiden rakennusaika on myös hyvin lyhyt, mikä on 48 tuntia, kun DHL-toimitus on 3-5 päivää, periaatteessa saat piirilevyt viikon kuluessa tilauksesta.
Muutaman päivän PCB: n tilaamisen jälkeen sain PCB-näytteet mukavissa pakkauksissa alla olevien kuvien mukaisesti.
Ja saatuaan nämä kappaleet olen juotanut kaikki tarvittavat komponentit piirilevylle.
Piirikortissani tein nollavirheen valitsemalla väärän pinta-alan 8 * 8-näyttömoduulille, joten minun piti käyttää Perf-korttia näytön kiinnittämiseen kuvan mukaisesti. Mutta nyt jalanjälki on päivitetty piirilevyyn, ja voit tilata korjatun piirilevyn ja asentaa näyttömoduulin helposti.
Bluetooth Signboard -näytön toiminta:
Kun olet valmis laitteistoon joko hankkimalla piirilevyn tai muodostamalla yhteyden leipälevylle, käytä sivun lopussa olevaa Arduino-ohjelmaa ja lataa se Arduino-kortillesi. Android-sovellus APK tiedosto on myös yläpuolella, käytä sitä ja asenna sovellus haluamasi Android-laitteen.
Virta laitteistoon ja etsi puhelimesta HC-05-laitteen nimi pariksi sen kanssa. Pass-avain on oletuksena 1234. Sen jälkeen avaa juuri asentamasi sovellus. Sovelluksen pitäisi näyttää " yhdistetty HC-05: een " ruudun yläosassa, sitten voit koskettaa näytön LEDiä ja huomata, että sama LED palaa myös piirilevyssä.
Voit myös sammuttaa kaikki LED-valot painamalla nollauspainiketta ja päättää kytkeä tietyn LEDin päälle tai pois päältä painamalla vaihtopainiketta. Oletusarvon mukaan mikä tahansa LED, jota painat, syttyy. Projektin täydellinen toiminta löytyy alla olevasta videosta. Jos sinulla on ongelmia saada se toimimaan, käytä alla olevaa kommenttikenttää tai kirjoita foorumeillemme saadaksesi teknistä apua. Toivottavasti ymmärrät opetusohjelman ja nautit sen rakentamisesta.