Taula de continguts:

Taula de centre interactiva LED Arduino: 6 passos (amb imatges)
Taula de centre interactiva LED Arduino: 6 passos (amb imatges)

Vídeo: Taula de centre interactiva LED Arduino: 6 passos (amb imatges)

Vídeo: Taula de centre interactiva LED Arduino: 6 passos (amb imatges)
Vídeo: ✅ Como construir una Fresadora CNC casera 3 ejes, Convertible a impresora 3D #5 2024, Juliol
Anonim
Image
Image
Taula de centre LED interactiva Arduino
Taula de centre LED interactiva Arduino

Vaig fer una taula de cafè interactiva que encén els llums led sota un objecte quan l’objecte es col·loca sobre la taula. Només s’encendran els leds que hi ha sota aquest objecte. Ho fa utilitzant efectivament sensors de proximitat i, quan el sensor de proximitat detecta que un objecte està prou a prop, il·luminarà un node sota aquest objecte. També utilitza un Arduino per crear animacions que no necessiten els sensors de proximitat, però afegeixen un efecte molt fresc que m’encanta.

Els sensors de proximitat estan formats per fotodíodes i emissors d’IR. Els emissors fan servir llum infraroja (que l’ull humà no pot veure) per fer brillar la llum fora de la taula i els fotodíodes reben la llum infraroja reflectida en un objecte. Com més llum es reflecteixi (més a prop l’objecte), més fluctua la tensió que prové dels fotodíodes. S’utilitza com a indicador per indicar quin node s’ha d’il·luminar. Els nodes són una col·lecció de leds ws2812b i un sensor de proximitat.

El vídeo adjunt repassa tot el procés de compilació, mentre que explico més detalls a continuació.

Subministraments

  1. ws2812b Bombetes LED -
  2. Font d'alimentació de 5V:
  3. Qualsevol Arduino que vaig utilitzar el 2560 -
  4. Fotodíodes
  5. Emissors IR
  6. Resistències de 10 ohms
  7. 1 resistències MOhms
  8. Condensadors de 47 pF
  9. CD4051B Multiplexors
  10. SN74HC595 Registres de torns
  11. ULN2803A Matrius de Darlington
  12. Qualsevol substrat per utilitzar com a tauler gran per als leds, he utilitzat un tauler compost de paper del magatzem de casa

Pas 1: Creeu el tauler i introduïu els LED

Creeu el tauler i inseriu els LED
Creeu el tauler i inseriu els LED
Creeu el tauler i inseriu els LED
Creeu el tauler i inseriu els LED
Creeu el tauler i inseriu els LED
Creeu el tauler i inseriu els LED
Creeu el tauler i inseriu els LED
Creeu el tauler i inseriu els LED

El primer que vaig fer va ser crear el tauler que contindrà els leds que posarem dins de la taula de centre. Vaig fer servir un tros de taulell compost de paper del magatzem de casa i el vaig tallar a les dimensions adequades per a la taula de centre que tenia. Després de tallar el tauler a mida, he forat tots els forats per on anaven els leds. El propi tauler tenia 8 files i 12 columnes de leds ws2812b separats a 3 centímetres de distància, i estaven units en un patró serpentí. Vaig utilitzar cola calenta per fixar-les al seu lloc.

També vaig haver de foradar el centre del que es convertirà en el node: 4 leds ws2812b que formen un quadrat, 2 díodes fotogràfics i 2 emissors d’IR en un quadrat més petit al centre d’aquest. Aquests 4 forats al centre del node serien els punts dels fotodíodes i els emissors d’ir (2 de cadascun). Els vaig alternar per assegurar una exposició màxima i els vaig situar a una polzada aproximadament al centre de cada node. No calia enganxar-los al seu lloc, només vaig doblegar els cables de l’altra banda per assegurar-me que no sortissin de l’altra banda. També em vaig assegurar de doblegar els extrems positius i negatius en determinades direccions, de manera que estiguessin orientats correctament al circuit. Totes les oportunitats positives es trobaven a la part esquerra de la part posterior del tauler, mentre que totes les oportunitats negatives es trobaven al costat dret del tauler.

Pas 2: entendre el circuit

Comprendre el circuit
Comprendre el circuit
Comprendre el circuit
Comprendre el circuit
Entendre el circuit
Entendre el circuit

Nota: Tots els dibuixos animats no són exactes a la implementació (alguns pins arduino són diferents, i en faig uns quants, més detalls més endavant). El resultat final va ser una mica diferent a causa de la complexitat del circuit, però tots els circuits animats serveixen de base per entendre com prototipar cada part. L'esquema i el diagrama de circuits regulars són tals com es mostren al PCB utilitzat en el projecte.

El codi PCB que conté el projecte KiCad i els fitxers gerber es pot trobar aquí: https://github.com/tmckay1/interactive_coffee_tabl…, en cas que vulgueu demanar els PCB i crear un projecte similar. He utilitzat NextPCB per crear els taulers.

Bàsicament hi ha tres circuits diferents que componen aquesta taula. El primer no el repassarem en detall i és un circuit senzill que alimenta els leds ws2812b. Un senyal de dades PWM s’envia des de l’Arduino a les bombetes led ws2812b i controla quins colors es mostren on. Estem utilitzant leds ws2812b, ja que són adreçables individualment, de manera que podrem controlar quin dels leds s’encén i quin s’ha d’apagar. Els leds ws2812b s’alimenten d’una font d’energia externa de 5V, ja que l’arduino no té prou potència per encendre totes les llums. Al diagrama animat adjunt utilitzen una resistència de tracció de 330 Ohms, però no la faig servir a la meva versió.

El segon circuit engega els emissors d’IR. Aquest circuit utilitza un registre de desplaçament per controlar una matriu darlington que envia energia als emissors d’IR. Un registre de desplaçament és un circuit integrat que és capaç d’enviar senyals ALTA i BAIXA a diversos pins des d’una petita quantitat de pins. En el nostre cas, fem servir un registre de desplaçament SN74HC595 que es pot controlar des de 3 entrades, però que controla fins a 8 sortides. L’avantatge d’utilitzar-ho amb l’arduino és que podeu encadenar fins a 8 registres de desplaçament seguits (l’arduino només en pot gestionar fins a 8). Això significa que només necessiteu 3 pins de l’arduino per activar i apagar 64 emissors d’IR. La matriu Darlington us permet alimentar un dispositiu des d’una font externa si el senyal d’entrada és ALT o apagueu el dispositiu si el senyal d’entrada és BAIX. Per tant, en el nostre exemple, fem servir una matriu darlington ULN2803A, que permet una font d’energia externa de 5V per encendre i apagar fins a vuit dels emissors d’IR. Utilitzem una resistència de 10 Ohm amb els emissors d’IR en sèrie per obtenir l’amperatge màxim dels emissors d’IR.

El tercer circuit utilitza un multiplexor per rebre diverses entrades dels fotodíodes i envia la sortida en un senyal de dades. Un multiplexor és un dispositiu que s’utilitza per agafar diverses entrades que voleu llegir i que només necessita uns quants pins per llegir-les. També pot fer el contrari (demultiplex), però aquí no l’utilitzem per a aquesta aplicació. Per tant, en el nostre cas fem servir un multiplexor CD4051B per captar fins a 8 senyals dels fotodíodes i només necessitem 3 entrades per llegir-les. A més, podem encadenar fins a 8 multiplexors (Arduino només en pot gestionar fins a 8). Això significa que l’arduino pot llegir des de 64 dels senyals del fotodiode de només 3 pins digitals. Els fotodíodes estan orientats inversament esbiaixats, cosa que significa que en lloc d’orientar-se en la direcció normal amb el cable positiu unit a la font de tensió positiva, assignem el cable negatiu a la font de tensió positiva. Això converteix efectivament els fotodíodes en resistències fotogràfiques, que canvien de resistència en funció de la quantitat de llum que rep. A continuació, creem un divisor de tensió per llegir una tensió dependent de la resistència variable dels fotodíodes afegint una resistència de 1 MOhms altament resistent a terra. Això ens permet rebre tensions més altes i més baixes a l’arduino depenent de la quantitat de llum IR que rebin els fotodíodes.

Vaig seguir la major part d’aquest disseny d’una altra persona que ho va fer aquí: https://www.instructables.com/Infrared-Proximity-S… En aquest disseny també van afegir un condensador de 47pF, com ho fem, davant de la resistència d’1 MOhm s’utilitza per crear el divisor de tensió amb els fotodíodes. La raó per la qual va afegir-lo va ser perquè fluctuava i desviava els emissors d’IR amb un senyal PWM i, en fer-ho, va provocar una petita caiguda de voltatge dels fotodíodes quan els emissors d’IR es van activar immediatament. Això va fer que els díodes fotogràfics canviessin la resistència fins i tot quan no rebien més llum IR d'un objecte perquè els emissors IR compartien la mateixa font d'alimentació de 5V que els fotodíodes. El condensador es va fer servir per assegurar-se que no hi hagués cap caiguda de tensió quan els emissors IR es van encendre i apagar. Originalment tenia previst fer aquesta mateixa estratègia, però em vaig quedar sense temps per provar-la, així que, en canvi, vaig deixar els emissors d’IR sempre actius. M'agradaria canviar-ho en el futur, però fins que no rediseño el codi i el circuit, ara mateix la PCB està dissenyada per tenir els llums IR encesos en tot moment i he mantingut els condensadors de totes maneres. No hauríeu de necessitar el condensador si utilitzeu aquest disseny de PCB, però vaig a presentar una altra versió del PCB que accepta una entrada addicional al registre de desplaçament que us permetrà modular els emissors d’IR activats i desactivats. Això estalviarà molt en el consum d’energia.

Podeu consultar els diagrames animats adjunts per obtenir una configuració de prototipus per provar-los al vostre arduino. També hi ha un esquema de colors més detallat per a cada circuit que descriu la configuració i l'orientació dels dispositius electrònics. A l’esquema de PCB adjunt, tenim 4 circuits totals, 2 circuits que s’utilitzen per encendre els emissors d’IR i 2 circuits per llegir dels fotodíodes. S’orienten sobre els PCB 2 grups un al costat de l’altre amb un grup format per 1 circuit emissor d’IR i 1 circuit de fotodiode, de manera que es poden col·locar 2 columnes de 8 nodes en una sola PCB. També encadenem els dos circuits junts, de manera que tres pins de l'arduino poden controlar els dos registres de desplaçament i 3 pins addicionals poden controlar els dos multiplexors de la placa. Hi ha una capçalera de sortida addicional per poder encadenar a PCB addicionals.

Aquests són alguns recursos que he seguit per fer prototips:

  • https://lastminuteengineers.com/74hc595-shift-regi…
  • https://techtutorialsx.com/2016/02/08/using-a-uln2…
  • https://tok.hakynda.com/article/detail/144/cd4051be…

Pas 3: soldeu els cables al node

Cables de soldar al node
Cables de soldar al node
Cables de soldar al node
Cables de soldar al node
Cables de soldar al node
Cables de soldar al node
Cables de soldar al node
Cables de soldar al node

Ara que enteneu com es fa el circuit, seguiu endavant i soldeu els cables a cada node. Vaig soldar els fotodíodes en paral·lel (filferros grocs i grisos) i els emissors d’ir en sèrie (filferro taronja). Després he soldat un cable groc més llarg als fotodíodes en paral·lel que s’adjuntarà a la font d’energia de 5V i un cable blau que s’adjuntarà a l’entrada de fotodiode de la placa base. He soldat un llarg cable vermell al circuit de l’emissor IR que s’utilitzarà per connectar-se a la font d’energia de 5V i un cable negre que es connectarà a l’entrada de l’emissor IR de la PCB. De fet, els cables s’han acabat una mica o poc, així que al final només he pogut connectar 5 dels nodes de cada columna (en lloc de 7). Penso solucionar-ho més endavant.

Pas 4: soldeu els components del PCB i poseu-los al tauler

Soldeu els components del PCB i poseu-los al tauler
Soldeu els components del PCB i poseu-los al tauler
Soldeu els components del PCB i poseu-los al tauler
Soldeu els components del PCB i poseu-los al tauler
Soldeu els components del PCB i poseu-los al tauler
Soldeu els components del PCB i poseu-los al tauler

Nota: El PCB de la imatge adjunta és la primera versió que he fet i que no tenia entrades i sortides d’alimentació i també una cadena de sortida per a cada circuit interior. El nou disseny de PCB corregeix aquest error.

Aquí només heu de seguir l'esquema del PCB per soldar els components al PCB i, un cop fet això, soldeu el PCB al tauler. He utilitzat plaques de circuits externs per connectar el senyal d’alimentació de 5 V, que he distribuït a tots els cables grocs i vermells. En retrospectiva, no necessitava cables vermells i grocs tan llargs i podia haver connectat els nodes entre ells (en lloc de connectar-los a una placa de circuit externa comuna). Això haurà reduït realment la quantitat de desordre a la part posterior del tauler.

Com que tenia 8 files de leds ws2812b i 12 columnes, vaig acabar amb 7 files i 11 columnes de nodes (77 nodes en total). La idea és utilitzar un costat del PCB per a una columna de nodes i l’altre costat per a l’altra columna. Per tant, com que tenia 11 columnes, necessitava 6 PCB (l’últim només necessitava un grup de components). Com que vaig fer els cables massa curts, només podia connectar 55 nodes, 11 columnes i 5 files. Com veieu a la imatge, he comès un error i heu soldat els cables crus a la placa, cosa que estaria bé si els cables fossin prou prims, però en el meu cas eren massa gruixuts. Això significava que tenia extrems de filferro molt a prop l'un de l'altre per a cada entrada d'emissor IR i entrada de fotodiode, de manera que hi havia una gran quantitat de depuració de tots els cables en curt. En el futur utilitzaré connectors per connectar la PCB als cables de la placa per evitar curtmetratges i netejar les coses.

Com que l'Arduino només pot encadenar fins a 8 registres de desplaçament i multiplexors, he creat dues cadenes separades, una ocupant les primeres 8 columnes i una altra ocupant les 3 columnes restants. Llavors vaig connectar cada cadena a un altre PCB que tenia només 2 multiplexors, de manera que podia llegir cada cadena de senyals de dades del multiplexor d’aquests dos multiplexors a l’arduino. Aquests dos multiplexors també estaven encadenats en margarida. Això vol dir que hi havia un total de 16 senyals de sortida i 2 entrades analògiques utilitzades a l’arduino: 1 senyal de sortida per controlar els leds ws2812b, 3 senyals de sortida per a la primera cadena de registres de desplaçament, 3 senyals de sortida per a la primera cadena de multiplexors, 3 senyals de sortida per a la segona cadena de registres de desplaçament, 3 senyals de sortida per a la segona cadena de multiplexors, 3 senyals de sortida per als 2 multiplexors que agrupen cada senyal de dades del PCB i, finalment, 2 entrades analògiques per a cada senyal de dades dels 2 multiplexors agregats.

Pas 5: reviseu el codi

Nota: A més del codi interactiu següent, he utilitzat una biblioteca de tercers per produir animacions per als leds ws2812b. Ho podeu trobar aquí:

Podeu trobar el codi que he utilitzat aquí:

A la part superior defineixo els pins arduino que es connectaran a cada part del PCB. En el mètode de configuració, he configurat els pins de sortida per als multiplexors, activo els emissors d’IR, estableixo una matriu baseVal que fa un seguiment de la lectura de llum ambiental per a cada fotodiode i inicialitzo FastLED que escriurà als leds ws2812b. En el mètode del bucle, restablim la llista de leds assignats a la tira ws2812b. A continuació, llegim els valors dels fotodíodes de les cadenes del multiplexor i establim els leds ws2812b que se suposa que estan activats si la lectura del fotodiode del node supera un determinat llindar definit a partir del valor base de les lectures de llum ambiental. A continuació, representem els LEDs si hi ha algun canvi en el node que hauria d’estar encès. En cas contrari, es manté en bucle fins que alguna cosa canvia per accelerar les coses.

Probablement es podria millorar el codi i estic pensant en fer-ho, però hi ha aproximadament un retard d’1 a 2 segons des que s’encenen els llums després de col·locar un objecte a la taula. Crec que el problema subjacent és que FastLED triga un temps a representar els 96 leds de la taula i el codi ha de passar un bucle i llegir 77 entrades de la taula. He provat aquest codi amb 8 leds i he trobat que era gairebé instantani, però estic buscant el punt dolç dels LED que funcionaran amb aquest codi i seran gairebé instantanis, a més de millorar el codi.

Pas 6: engegueu l'Arduino

Enceneu l'Arduino
Enceneu l'Arduino
Enceneu l'Arduino
Enceneu l'Arduino
Enceneu l'Arduino
Enceneu l'Arduino

Ara tot el que heu de fer és activar l’arduino i veure la funció de taula. Utilitzant la biblioteca d’animacions esmentada anteriorment, podeu posar animacions leds ws2812b o podeu posar el codi de la taula de centre i veure’l com s’il·lumina a cada secció. No dubteu a comentar cap pregunta o opinió i intentaré contactar-vos amb temps. Ànims!

Recomanat: