Sadržaj:
- Korak 1: Kako izgraditi POV
- Korak 2: Implementacija softvera 1. dio
- Korak 3: Implementacija softvera, drugi dio
Video: 1 metar POV sa omogućenim IOT -om: 3 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Prije nego što počnem s objašnjenjem ovog projekta, želio bih se ispričati zbog loše kvalitete slike i videa, ali iskreno, zaista je teško snimiti oštru i jasnu sliku iz pokretanja POV -a normalnom kamerom poput moje mobilne kamere. Potreban mu je vrlo brz optički objektiv s membranom za snimanje pravog pokreta, ali ja ću postaviti bolji video kad konačno mogu kupiti svoju kameru CANON
Šta je POV
POV je kratica za Persistence Of Vision Globe koja se odnosi na fenomen ljudskog vida. Svjetlosni podražaj ostaje kao posljedica na mrežnicu oko 1/10 sekunde. Kada se svjetlosni stimulusi sekvenciraju u brzom slijedu, oni se stapaju u jednu kontinuiranu sliku. Zapravo, to je osnova za filmske i televizijske uređaje,. POV napravi takvu iluziju (prevari nas) i stvori sliku okretanjem niza LED svjetala oko jedne točke ili osi
Šta je inovacija projekta
Naravno, POV nije nova ideja i mnogo projekata već postoji u Instructables -u ili na drugim web mjestima, međutim ti projekti uglavnom koriste unaprijed postavljene statičke hramove ili slike koji se uglavnom čitaju iz MCU memorije ili SD kartice, ali u ovom projektu koristimo implementaciju lijepih funkcija čipa koji podržava IOT, poput ESP8266, po ovom pitanju.
Sa ovim IOT karakteristikama mi
- mogao je lako bežično postaviti nove slike u memoriju
- stvorite željeni scenarij prikaza slike s bilo kojim nizom ili bilo kojim trajanjem
- nema potrebe za ponovnim programiranjem čipa ili iskopčavanjem memorijske kartice i ponovnim uključivanjem za novu animaciju
- user -friendly IOT webhost olakšava svima upravljanje POV -om putem mobilnog telefona ili tableta čak i na daljinu
- vrlo niska cijena hardverske implementacije s kapacitetom od više od 30 različitih slika
Kako POV funkcionira
POV displeji, linearni (1-dimenzionalni) niz LED svjetala rotira oko jedne točke, poput kotača bicikla. Mjereći njihovu brzinu rotacije i kontrolirajući njihove bljeskove s milisekundnom preciznošću, možemo stvoriti iluziju 2 ili 3-dimenzionalne slike koja se zadržava u zraku. Razmotrimo pojedinačni okvir bilo kojeg efekta (sliku, tekst, …), svaki okvir se sastoji od mnogo piksela, pa otuda i mnogo linija u ravnini ili sferičnom području, POV prikazuje ovu sliku s jednom linijom slike koja se mijenja zajedno s rotacijom da se ispuni tu sliku, pa je problem kako precizno kontrolirati boju LED piksela u smislu vremena i prostora kako bi se stvorila cijela slika. POV su kategorizirane na osnovu osi rotacije, vrste efekta koji se može prikazati i koliko boja može stvoriti.
Različitom osi rotacije može proizvesti ravni, cilindrični i sferni POV zaslon
mnogi POV projekti koriste jednostavne jednobojne LED ili velike brzine pametnih piksela poput WS2812 ili APA104, a u ovom projektu koristimo brzo osvježavanje LED čipova APA102 sa brzinom osvježavanja od oko 16 MHz. ovaj LED čip ima 2 linije za kontrolu (uzemljenje, podaci, sat, +5V)
Korak 1: Kako izgraditi POV
U početku mi je potrebna struktura za postavljanje POV čvorišta, a izrada metalne ili nemetalne konstrukcije ovisi o tome što imate u rukama. Možete ga izraditi od bilo kojeg dostupnog materijala za ugradnju na zid ili dodati noge za izradu postolja. Moj prijatelj izrađuje jednostavan tronožac i montira mehanizam razvodnog remena kako bi se smanjio broj okretaja istosmjernog motora oko 500. Mala matematikaZa jasnu i koherentnu sliku potrebno nam je osvježavanje kadra oko 20 fps, znači da imamo jasnu sliku koju moramo stalno prikazivati oko 20 puta u sekundi, budući da se moj POV sastoji od 1 dijagonalne LED trake, dakle svaki okvir upotpunjen sa pola ili rotacijom, drugom riječju potreban nam je idealni broj okretaja čvorišta oko 600, a s ovim je okretajem svaki okretaj trajao oko 100 ms. Sljedeća jednadžba pokazuje da je koncept RPM = (fps/Nb)*60 koji je Nb jednak broju grana, a u ovom slučaju imamo RPM = (20/2)*60 = 600moji POV rotira oko 430 o/min, pa je moj fps oko 15 fsp što je prilično dobro po ovom pitanju. Izrada mehaničkog dijela
U sljedećem koraku sam upotrijebio komad PVC cilindra glodanog za držanje LED šipke. Za spajanje glavčine s osovinom remenice jedan vijak M10 je pričvršćen na stražnju stranu PCV dijela Dva čahura postavljena na osovini remenice za prijenos 5 volti istosmjerne struje na ploču i LED traku, a zatim prema sljedećim slikama, ovaj dio je montiran na jednostavnu remenicu sistem za prijenos vremena koji je spojen na 12V DC motor svaki dio ima svoje napajanje i zatvoren je u bijelu kutiju pričvršćenu za noge
Korak 2: Implementacija softvera 1. dio
Da bi se prikazana slika prikazala u LED traci, svaku sliku je potrebno pikselizirati, zatim otpremiti u MCU memoriju, a zatim uvesti u LED traku liniju po liniju, što je učinjeno softverom za dvije različite platforme, jedna je bazirana na java runtime obradi i drugi u C ++ za MCUPObrada pikseliziranog programa ovaj program je napisao u Processing IDE -u i jednostavno je otvorio datoteku slike, a zatim je rotirao u koracima za izdvajanje pikseliziranih linija slike. Odabirem 200 redaka za prikaz bilo koje slike, pa rotiram sliku (360 /200=1,8 stepeni) 200 puta za izdvajanje 200 linija. Kako se moja LED traka sastoji od 144 LED diode sa ugrađenim čipom APA102, tako da cijela slika ima 200*144 = 28800 piksela. Budući da je svaka boja u APA102 čipu prikazana sa 4 bajta (W, RGB), stoga je svaka veličina slike točno 200*144*4 = 115200 ili 112,5KB slijedeći. Kod za obradu pokazuje slijed pikselizacije slike, a rezultat će biti datoteka proširenja kante koja može biti učitani u MCU memoriju
PImage img, black_b, image_load; PrintWriter izlaz; int SQL; float led_t; byte pov_data; int red_broj = 200; String _OUTPUT = "";
postavke void ()
{selectInput ("Odaberite sliku", "imageChosen"); noLoop (); wait (); }
void setup ()
{output = createWriter (_OUTPUT); black_b = createImage (SQL, SQL, RGB); black_b.loadPixels (); za (int i = 0; i = red_broj) {noLoop (); output.flush (); output.close ();} background (black_b); pushMatrix (); imageMode (CENTAR); prevesti (SQL/2, SQL/2); rotirati (radijani (l*360/red_broj)); slika (img, 0, 0); popMatrix (); pushMatrix (); za (int i = 0; i <144; i ++) {boja c = get (int (i*led_t+led_t/2), int (SQL/2)); output.print ((char) crveno (c)+""+(char) zeleno (c)+""+(char) plavo (c)); // ispisati ((char) crveno (c)+""+(char) zeleno (c)+""+(char) plavo (c)+";"); ispuniti (c); rect (i*led_t, (SQL/2)-(led_t/2), led_t, led_t); } // println (); popMatrix (); // kašnjenje (500); l ++; }
void keyPressed ()
{output.flush (); // Zapisuje preostale podatke u datoteku output.close (); // Završava izlaz datoteke (); // Zaustavlja program}
void imageChosen (Datoteka f)
{if (f == null) {println ("Prozor je zatvoren ili je korisnik pritisnuo Cancel."); exit (); } else {if (f.exists ()) img = loadImage (f.getAbsolutePath ()); String s = f.getAbsolutePath (); String list = split (s, '\'); int n = list.length; String fle = split (lista [n-1], '.'); println ("Otvori datoteku:"+fle [0]); _OUTPUT = fle [0]+". Bin"; // img = loadImage ("test.jpg"); int w = img.width; int h = img.height; SQL = max (w, h); veličina (SQL, SQL); led_t = SQL/144.0; println ("h ="+h+"w ="+w+"max ="+SQL+"veličina led ="+led_t); }} void mousePressed () {loop ();}
void mydata ()
{bajt b = loadBytes ("something.dat"); // Odštampajte svaku vrijednost, od 0 do 255 za (int i = 0; i <b.length; i ++) {// Svaki deseti broj, započnite novi red if ((i % 10) == 0) println (); // bajtovi su od -128 do 127, ovo se pretvara u 0 do 255 int a = b & 0xff; print (a + ""); } println (); // Odštampaj prazan red na kraju saveBytes ("numbers.dat", b); } void wait () {while (img == null) {delay (200); } petlja(); }
Korak 3: Implementacija softvera, drugi dio
MCU displej program
ESP8266 čip visokih performansi izabran je iz nekoliko razloga, prvo je dobro razvio otvorene SDK alate za iskorištavanje WiFi funkcija uz memoriju za hosting web poslužitelja za korisnike. S ovim mogućnostima, web-poslužitelj prilagođen korisniku dizajniran za postavljanje pikselizirane slike u MCU memoriju i kreiranje korisnički definiranog scenarija za prikaz. Sa serijom od 4 Mb ESP-12E možemo koristiti 1 Mb za program i 3 Mb za slike koje bismo veličine 112,5 KB za pikseliziranu sliku mogle otprilike 25 slika postaviti na MCU i mogle napraviti bilo koji slijed ili bilo koji period prikaza za postavljenu sliku koju koristim Implementacija Arduino koda za izradu web poslužitelja. kôd ima tri glavne funkcije u svojoj petlji kako slijedi
void loop () {if (! SHOW &&! TEST) server.handleClient (); if (SHOW) {if ((millis ()- OpenlastTime)> DURATION [image_index]*1000) {if (image_index> = IMAGE_NUM) image_index = 0; _memorije_pointer = početna_adresa_slike_datoteke [image_index]; Serial.printf ("Broj datoteke =%u ime:%s adresa:%u trajanje:%u / n", image_index, IMAGES [image_index].c_str (), start_address_of_imagefile [image_index], DURATION [image_index]); Trenutna_slikovna linija = 0; image_index ++; OpenlastTime = millis (); } if ((micros ()-lastLineShow)> lineInterval) {lastLineShow = micros (); ESP.flashRead (_memory_pointer, (uint32_t *) LED diode, NUM_LEDS *3); FastLED.show (); _memory_pointer+= (NUM_LEDS*3); Current_imageLine ++; kašnjenje (LineIntervalDelay); } if (Trenutna linija slike> = IMAGES_LINES) {Trenutna linija slike = 0; _memorije_pointer = početna_adresa_datoteke slike [image_index-1]; }} optimistic_yield (1000); }
Server Handler server.handleClient (); odgovorna za obradu bilo kojeg zahtjeva klijenta na webhostu, ova web stranica može biti proizvoljnog dizajna za učitavanje podataka, promjenu postavki prikaza bilo kojeg izvještaja o stanju. Moj webhost sastoji se od tri kartice, a sljedeće slike na prvoj kartici bi mogle provjeriti trenutni scenarij prikazivanja sa redoslijedom i trajanjem za svaku sliku, također prikazane informacije o mreži, kao i prikazani POV okretaji
na kartici otpremanje slike mogli bismo postaviti pikseliziranu sliku u memoriju MCU -a ili izbrisati određenu sliku
na kartici mreža mogli bismo promijeniti mrežne postavke kao što su WiFi način, statički ip, naziv mreže i propusnica,..
Image Up-loader
ovaj zahtjev klijenta poslužitelja funkcije od strane Ajaxa za postavljanje pikselizirane slike u MCU memoriju, zatim zapis datoteke u memoriju u sirovom formatu kako bi čitanje datoteke bilo što brže. Memorijska početna i krajnja lokacija pohranjuju se u tablicu za prikaz u LED traci
Funkcija prikaza
Koristio sam FastLED lib za prikazivanje piksela u LED traci, ova biblioteka je jedna od najuspješnijih i najbolje razvijenih za LED emisije na AVR i ESP platformi. Potrebno je samo poslati FastLED funkciju, lokaciju pohranjenog LED piksela. čitamo piksele po red piksela iz memorije i prikazujemo ih u LED traci i čekamo da se obnovi zastavica rotacije. ponavljali smo ovu sekvencu dok se nije pročitalo 200 redova svake slike
cijeli kod koji se nalazi u mom git spremištu ovdje
slijedi video snimak POV -a u akciji koji je snimljen mobilnom kamerom i kao što sam objasnio, kvaliteta videa nije dobra zbog spore brzine dijafragme neprofesionalne kamere
Preporučuje se:
ARDUINO PH METAR: 6 koraka (sa slikama)
ARDUINO PH METAR: U ovom projektu napravit ćemo stolni pH metar koristeći analogni pH krug gravitacije i sondu iz Atlas Scientific -a i Arduino Uno -a. Očitavanja će biti prikazana na ekranu sa tečnim kristalima (LCD). Napomena:- Ovaj merač je razvijen u sistemu Windows
Jeftini Dirt-O-metar za prljavštinu-9 USD Arduino zvučni visinomjer: 4 koraka (sa slikama)
Jeftini Dirt-O-metar za prljavštinu-9 USD Arduino zvučni visinomjer: Dytters (A.K.A Audible Altimeters) spasili su živote padobrancima toliko godina. Sada će i Audible Abby uštedjeti novac. Bašić Dytters ima četiri alarma, jedan na putu prema gore, a tri na putu prema dolje. Tokom vožnje avionom, padobranci moraju znati kada
IoT APIS V2 - Autonomni sistem za navodnjavanje biljaka sa omogućenim IoT -om: 17 koraka (sa slikama)
IoT APIS V2 - Autonomni automatizovani sistem za navodnjavanje biljaka sa omogućenim IoT -om: Ovaj projekat je evolucija mojih prethodnih instrukcija: APIS - Automatizovani sistem za navodnjavanje biljakaKoristim APIS već skoro godinu dana i želeo sam da unapredim prethodni dizajn: Sposobnost daljinski nadzirati biljku. Ovako
Aparat za kavu s omogućenim IoT -om: 9 koraka (sa slikama)
Aparat za kavu s omogućenim IoT -om: Ova instrukcija je prijavljena na IoT takmičenje - ako vam se sviđa, glasajte za nju! AŽURIRANO: Sada podržava dvosmjerne komunikacije i OTA ažuriranja Već neko vrijeme imam Jura aparat za kavu i oduvijek sam želio da to nekako automatiziram. Morao sam biti
Centar za prikupljanje podataka senzora s omogućenim IoT -om s ESP8266 i PubNub: 9 koraka (sa slikama)
Centar za prikupljanje podataka senzora s omogućenim IoT -om s ESP8266 i PubNub -om: Većina vodiča o ESP8266 ili je za početnike (daljinski treperi LED dioda) ili je previše složeno za nekoga tko traži nešto što bi mogao poboljšati i nadograditi na svojim LED trepćućim vještinama. instruktivni ciljevi da premoste ovaj jaz do stvaranja