Talaan ng mga Nilalaman:

1 Meter POV Gamit ang IOT Pinagana: 3 Hakbang (na may Mga Larawan)
1 Meter POV Gamit ang IOT Pinagana: 3 Hakbang (na may Mga Larawan)

Video: 1 Meter POV Gamit ang IOT Pinagana: 3 Hakbang (na may Mga Larawan)

Video: 1 Meter POV Gamit ang IOT Pinagana: 3 Hakbang (na may Mga Larawan)
Video: 3-часовой марафон паранормальных и необъяснимых историй - 3 2024, Hulyo
Anonim
Image
Image
1 Meter POV Na Pinagana ang IOT
1 Meter POV Na Pinagana ang IOT
1 Meter POV Na Pinagana ang IOT
1 Meter POV Na Pinagana ang IOT
1 Meter POV Na Pinagana ang IOT
1 Meter POV Na Pinagana ang IOT

Bago simulan ang paliwanag tungkol sa proyektong ito nais kong humingi ng tawad para sa mababang kalidad ng imahe at video, ngunit sa totoo lang mahirap talagang kumuha ng isang matalim at malinaw na imahe mula sa pagpapatakbo ng POV gamit ang normal na camera tulad ng aking mobile camera. Kailangan nito ng napakabilis na diaphragm optical lens upang makuha ang totoong kilos, Ngunit mai-a-upload ko ang mas mahusay na video kapag sa wakas ay makakabili ako ng aking CANON camera

Ano ang POV

Ang POV ay paninindigan para sa Persistence Of Vision Globe na nauugnay sa hindi pangkaraniwang bagay ng paningin ng tao. Ang light stimulus ay nagtatagal bilang isang epekto sa retina para sa halos 1/10 ng isang segundo. Kapag ang light stimuli ay nasunud-sunod sa mabilis na pagkakasunud-sunod, sumanib sila sa isang tuluy-tuloy na imahe. Sa katunayan ito ang batayan para sa mga aparato sa pelikula at telebisyon,. POV gumawa ng tulad ilusyon (linlangin sa amin) at lumikha ng imahe sa pamamagitan ng pag-ikot ng hanay ng mga LED na ilaw sa paligid ng isang solong point o axis

Ano ang pagbabago ng proyekto

Ang off course na POV ay hindi bagong ideya at maraming mga proyekto na mayroon na sa Mga Instructable o sa iba pang mga site, subalit ang mga proyekto na karamihan ay gumagamit ng presetong static na templo o imahe na karamihan ay nababasa mula sa memorya ng MCU o SD card, ngunit sa proyektong ito ginagamit namin ang pag-deploy ng magagandang tampok ng IOT pinagana chip tulad ng ESP8266 sa bagay na ito.

Gamit ang tampok na IOT namin

  1. madaling makapag-upload ng mga bagong imahe sa memorya nang wireless
  2. lumikha ng nais na senaryo ng imaheng palabas sa anumang pagkakasunud-sunod o anumang tagal
  3. hindi na kailangang muling pagprogram ng chip o i-unplug ang memory card at muling i-plug ito para sa bagong animasyon
  4. Ang user friendly na IOT webhost ay ginagawang madali para sa bawat isa na mange POV gamit ang mobile o tablet kahit na malayuan
  5. napakababang pagpapatupad ng hardware na may kapasidad na higit sa 30 magkakaibang mga imahe

Paano gumagana ang POV

Ipinapakita ang POV, isang linear (1-dimensional) na hanay ng mga LED light na umiikot sa isang solong punto, tulad ng isang wheel wheel. Sa pamamagitan ng pagsukat ng kanilang rate ng pag-ikot at pagkontrol sa kanilang mga pag-flash gamit ang millisecond na katumpakan, makakalikha tayo ng ilusyon ng isang 2or 3-dimensional na imahe na nagtatagal sa manipis na hangin. Isaalang-alang Natin ang solong frame ng anumang epekto (imahe, teksto, …), ang bawat frame ay binubuo ng maraming pixel at samakatuwid maraming mga linya sa eroplano o spherical area, ipinapakita ng POV ang solong linya ng imahe na binago ang posisyon kasama ang pag-ikot nito upang punan ang imaheng iyon, kaya ang problema ay kung paano tiyak na makontrol ang kulay ng LED pixel sa paraan ng oras at espasyo upang makalikha ito ng buong imahe na POV na ikinategorya base sa axis ng pag-ikot, maaaring ipakita ang uri ng epekto at kung magkano ang makakalikha ng kulay.

Sa pamamagitan ng iba't ibang axis ng pag-ikot, maaaring makabuo ng planar, cylindrical at spherical POV display

maraming proyekto ng POV ang gumagamit ng simpleng solong kulay na LED o mataas na bilis ng mga smart pixel tulad ng WS2812 o APA104 at sa proyektong ito ginagamit namin ang mabilis na pag-refresh ng chip ng APA102 na may halos 16 MHz na rate ng pag-refresh. ang LED chip na ito ay may 2 linya upang makontrol (Ground, Data, Clock, + 5v)

Hakbang 1: Paano Bumuo ng POV

Paano Bumuo ng POV
Paano Bumuo ng POV
Paano Bumuo ng POV
Paano Bumuo ng POV
Paano Bumuo ng POV
Paano Bumuo ng POV

Sa una kailangan ko ng istraktura upang mai-mount ang hub ng POV, ang paggawa ng istraktura ng metal o hindi metal ay nakasalalay sa kung ano ang mayroon ka sa mga kamay. Maaari mo itong gawin sa anumang magagamit na materyal upang mai-install ito sa isang pader o magdagdag ng mga binti upang tumayo. Ginawa ng aking kaibigan ang simpleng tripod at na-mount ang mekanismo ng timing belt upang mabawasan ang DC motor RPM sa paligid ng 500. Maliit na matematika beses bawat segundo, Tulad ng aking POV na binubuo ng 1 dayagonal LED strip, samakatuwid ang bawat frame ay nakumpleto na may kalahati o pag-ikot, sa ibang salita kailangan namin ng Ideal hub RPM sa paligid ng 600 at sa RPM na ito ang bawat rebolusyon ay tumagal ng halos 100 ms. Ipinapakita ang sumusunod na equation na ang konseptong RPM = (fps / Nb) * 60 na Nb katumbas ng Bilang ng sangay, at sa kasong ito mayroon kamingRPM = (20/2) * 60 = 600my POV paikutin sa paligid ng 430 rpm kaya't ang aking fps ay nasa 15 fsp na medyo mabuti sa bagay na ito. Pagbuo ng mekanikal na bahagi

Sa susunod na hakbang ay gumamit ako ng piraso ng silindro ng PVC na Milled upang hawakan ang LED bar. Upang ikonekta ang hub na may pulley shaft isang M10 bolt ay na-bolt sa likod ng bahagi ng PCV na Dalawang singsing ng Cupper na naka-install sa pulley shaft upang maihatid ang 5 volts DC sa board at LED strip, pagkatapos ay ayon sa mga sumusunod na larawan, ang bahaging ito ay naka-mount sa simpleng pulley time transmission system na konektado sa 12v DC motor bawat bahagi ay may sariling supply ng kuryente at nakapaloob sa puting kahon na nakakabit sa mga binti

Hakbang 2: Pagpapatupad ng Software Bahagi 1

Pagpapatupad ng Software Bahagi 1
Pagpapatupad ng Software Bahagi 1

Upang maipakita ang naibigay na imahe sa LED strip, ang bawat imahe ay dapat na pixelized pagkatapos ay mai-upload sa memorya ng MCU at pagkatapos ay pakainin sa linya ng LED strip sa pamamagitan ng linya, upang gawin iyon na ginawa ko sa software para sa dalawang magkakaibang platform, ang isa ay batay sa java runtime Processing at iba pa sa C ++ para sa MCUProcessing pixelized program ang program na ito ay nagsulat sa Processing IDE at binubuksan lamang nito ang file ng imahe, pagkatapos ay paikutin ito sa mga hakbang upang makuha ang mga pixelized na linya ng imahe. Pinipili ko ang 200 linya para sa pagpapakita ng anumang imahe, kaya paikutin ko ang imahe ng abut (360 /200=1.8 degree) 200 beses upang kunin ang 200 linya. Tulad ng aking LED strip na binubuo ng 144 LED na may naka-embed na APA102 chip kaya ang isang buong imahe ay mayroong 200 * 144 = 28800 pixel. Tulad ng bawat kulay sa APA102 chip display na may 4 byte (W, RGB) samakatuwid ang bawat laki ng imahe ay eksaktong 200 * 144 * 4 = 115200 o 112.5KB kasunod sa Processing code ay nagpapakita ng pagkakasunud-sunod ng pixelization ng imahe, at ang resulta ay magiging isang file ng extension ng bin na maaaring mai-upload sa memorya ng MCU

Img ng PImage, black_b, image_load; Output ng PrintWriter; int SQL; float led_t; byte pov_data; int line_num = 200; String _OUTPUT = "";

walang bisa ang mga setting ()

{selectInput ("Pumili ng isang imahe", "imageChosen"); noLoop (); maghintay (); }

walang bisa ang pag-setup ()

{output = createWriter (_OUTPUT); black_b = createImage (SQL, SQL, RGB); black_b.loadPixels (); para sa (int i = 0; i = line_num) {noLoop (); output.flush (); output.close ();} background (black_b); pushMatrix (); imageMode (CENTER); isalin (SQL / 2, SQL / 2); paikutin (radian (l * 360 / line_num)); imahe (img, 0, 0); popMatrix (); pushMatrix (); para sa (int i = 0; i <144; i ++) {color c = get (int (i * led_t + led_t / 2), int (SQL / 2)); output.print ((char) pula (c) + "" + (char) berde (c) + "" + (char) asul (c)); // print ((char) red (c) + "" + (char) green (c) + "" + (char) blue (c) + ";"); punan (c); straight (i * led_t, (SQL / 2) - (led_t / 2), led_t, led_t); } // println (); popMatrix (); // pagkaantala (500); l ++; }

void keyPressed ()

{output.flush (); // Nagsusulat ng natitirang data sa file output.close (); // Tinatapos ang file exit (); // Humihinto sa programa}

walang bisa ang imageChosen (File f)

{if (f == null) {println ("Ang window ay sarado o ang hit ng user ay nakansela."); exit (); } iba pa {kung (f.exists ()) img = loadImage (f.getAbsolutePath ()); String s = f.getAbsolutePath (); Listahan ng String = split (s, '\'); int n = list.length; String fle = split (listahan [n-1], '.'); println ("Buksan ang file:" + fle [0]); _OUTPUT = fle [0] + ". Bin"; // img = loadImage ("test.jpg"); int w = img.width; int h = img.height; SQL = max (w, h); laki (SQL, SQL); led_t = SQL / 144.0; println ("h =" + h + "w =" + w + "max =" + SQL + "size led =" + led_t); }} void mousePressed () {loop ();}

walang bisa ang mydata ()

{byte b = loadBytes ("something.dat"); // Print bawat halaga, mula 0 hanggang 255 para sa (int i = 0; i <b.length; i ++) {// Tuwing ikasangpung numero, magsimula ng isang bagong linya kung ((i% 10) == 0) println (); // bytes ay mula -128 hanggang 127, nagko-convert ito sa 0 hanggang 255 int a = b & 0xff; i-print (a + ""); } println (); // Print a blank line at the end saveBytes ("number.dat", b); } walang bisa maghintay () {habang (img == null) {pagkaantala (200); } loop (); }

Hakbang 3: Pagpapatupad ng Software Bahagi 2

Image
Image
Pagpapatupad ng Software Bahagi 2
Pagpapatupad ng Software Bahagi 2
Pagpapatupad ng Software Bahagi 2
Pagpapatupad ng Software Bahagi 2

Programa sa pagpapakita ng MCU

ang napakataas na pagganap ng ESP8266 chip ay napili para sa ilang mga kadahilanan, una ay mahusay na nakabuo ng mga bukas na tool ng SDK para samantalahin ang mga tampok na WiFi sa tabi nito memorya sa pagho-host ng isang web-server para sa gumagamit. Gamit ang mga kakayahang ito, ang user friendly web-server na dinisenyo para mag-upload ng pixelized na imahe sa memorya ng MCU at lumikha ng scenario ng tumutukoy sa gumagamit para sa pagpapakita. Sa serye ng 4 Mb ESP-12E maaari naming gamitin ang 1 Mb para sa programa at 3 Mb para sa mga imahe na may sukat na 112.5KB para sa naka-pixel na imahe maaari naming halos 25 imahe na na-upload sa MCU at maaaring gumawa ng anumang pagkakasunud-sunod o anumang panahon ng pagpapakita para sa nai-upload na imaheng ginamit ko Pagpapatupad ng base ng code ng Arduino para sa paggawa ng webserver. ang code ay may tatlong pangunahing pagpapaandar sa loop nito bilang bawat sumusunod

void loop () {if (! SHOW &&! TEST) server.handleClient (); kung (SHOW) {if ((millis () - OpenlastTime)> DURATION [image_index] * 1000) {if (image_index> = IMAGE_NUM) image_index = 0; _memory_pointer = start_address_of_imagefile [image_index]; Serial.printf ("File number =% u name:% s address:% u duration:% u / n", image_index, IMAGES [image_index].c_str (), start_address_of_imagefile [image_index], DURATION [image_index]); Current_imageLine = 0; image_index ++; OpenlastTime = millis (); } kung ((micros () - lastLineShow)> lineInterval) {lastLineShow = micros (); ESP.flashRead (_memory_pointer, (uint32_t *) leds, NUM_LEDS * 3); FastLED.show (); _memory_pointer + = (NUM_LEDS * 3); Current_imageLine ++; antala (LineIntervalDelay); } kung (Current_imageLine> = IMAGES_LINES) {Current_imageLine = 0; _memory_pointer = start_address_of_imagefile [image_index-1]; }} maasahin sa mabuti_yield (1000); }

Ang Server Handler ang server.handleClient (); responsable upang maproseso ang anumang kahilingan ng client sa webhost, ang website na ito ay maaaring maging disenyo ng di-makatwirang mag-upload ng data, baguhin ang pagpapakita ng setting ng anumang ulat ng estado. Ang aking webhost ay binubuo ng tatlong tab bilang mga sumusunod na larawan sa unang tab maaari naming suriin ang kasalukuyang senaryo ng palabas na may pagkakasunud-sunod at tagal para sa bawat imahe, impormasyon din sa network pati na rin ang ipinakita na POV rpm

sa pag-upload ng tab na imahe maaari kaming mag-upload ng isang pixelized na imahe sa memorya ng MCU o tanggalin ang tukoy na imahe

sa tab ng network maaari nating baguhin ang setting ng network tulad ng wifi mode, static ip, pangalan ng network at pass,..

Image Up-loader

ang kahilingan ng client ng function ng client na ito ni Ajax na mag-upload ng pixelized na imahe sa memorya ng MCU, pagkatapos ay isulat ang file sa memorya sa hilaw na format kaya't ang pagbabasa ng file ay maging mabilis hangga't maaari. Simula at tapusin ang tindahan ng lokasyon sa talahanayan para sa pagpapakita sa LED strip

Pag-andar ng display

Ginamit ko ang FastLED lib upang ipakita ang pixel sa LED strip, ang library na ito ay isa sa pinakamatagumpay at mahusay na binuo para sa LED show sa AVR at platform ng ESP. Kailangan lamang na magpadala ng function na FastLED, ang lokasyon ng nakaimbak na LED pixel. nabasa namin ang linya sa pamamagitan ng mga pixel ng linya mula sa memorya at ipinapakita ito sa LED strip at maghintay para sa bagong flag ng pag-ikot na magkatotoo. inulit namin ang pagkakasunud-sunod na ito hanggang sa mabasa ang 200 mga linya ng bawat imahe

ang buong code na matatagpuan sa aking git repository dito

ang sumusunod ay ang video ng POV sa aksyon na naitala ng mobile camera at tulad ng ipinaliwanag ko, ang kalidad ng video ay hindi maganda dahil sa mabagal na bilis ng diaphragm ng hindi propesyonal na camera

Inirerekumendang: