Lampa ADN

Introducere

  • Scopul proiectului este de a crea o lampa cu lumini dispuse intr-un helix care ofera moduri de iluminare diverse. Acestea pot fi controlate manual dintr-o aplicatie mobila sau din butoane. De asemenea,lampa dispune de un mod automat bazat pe lumina si temperatura din camera.
  • Am avut ideea de a crea o lampa care poate fi personalizata si controlata usor deoarece iluminarea potrivita poate influenta semnificativ starea noastra si cat de productivi suntem atunci cand lucram. Este un proiect util pentru a gasi combinatia de lumini si culori potrivite pentru fiecare persoana in functie de atmosfera dorita.
  • Intr-o nota personala, etapa de dezvoltare a acestui proiect imi da ocazia sa-mi consolidez abilitatile tehnice prin programare, printare 3D si construire de hardware si in acelasi timp ma obliga sa gasesc solutii inventive pentru a perfectiona toate componentele propuse.

Descriere generală

In contextul realizarii proiectului, am inceput prin a identifica toate modulele hardware si software pe care mi-am propus sa le folosesc. Schema bloc se alcatuieste pe baza modulelor de Arduino Uno cu ATMega, lampa cu LED-uri si motor stepper, butoane, senzorii, modulul WiFi si Interfata Web.

Modulele Hardware sunt conectate la Arduino prin intermediul pinilor digitali si analogici, in timp ce modulul WiFi este conectat prin intermediul portului serial. Modulele Software includ programul Arduino care controleaza modurile de iluminare si butoanele si primeste input de la senzori, precum si Interfata Web care permite controlul lampii prin reteaua WiFi.

  • Arduino Uno cu ATMega: este microcontroller-ul care gestioneaza functiile proiectului, precum controlul LED-urilor, citirea butoanelor si a senzorilor si comunicatia cu modulul WiFi.
  • Lampa cu LED-uri: este componenta care produce efecte de lumina si se invarte, controlata prin intermediul pinilor digitali de pe Arduino.
  • Butoane: permit utilizatorului sa schimbe modul de iluminare.
  • Modulul Wifi: permite comunicarea wireless cu proiectul prin intermediul protocolului TCP/IP.
  • Interfata Web: este interfata grafica care permite utilizatorului sa controleze lampa.
  • Senzori: senzorii de lumina si temperatura capteaza informatii despre mediul exterior.

In ceea ce priveste modul in care interactioneaza modulele intre ele, fluxul de informatii are loc astfel:

  1. Butoanele sunt citite de catre Arduino si transmit informatii despre modul de iluminare selectat. Intr-o maniera asemanatoare, senzorii trimit informatii catre Arduino despre lumina si temperatura din camera.
  2. Prin intermediul Interfetei Web, utilizatorii pot selecta manual modul de iluminare dorit si informatiile sunt transmise catre modulul WiFi prin intermediul protocolului TCP/IP.
  3. Modulul Arduino controleaza LED-urile si motorul in functie de informatiile primite.

Hardware Design

Lista de piese

  • Arduino Uno cu ATmega 328P
  • Banda LED WS2812
  • Sursa de alimentare (adaptor de curent continuu de 5V)
  • 1 rezistor 560Ohm
  • 3 rezistori 1Kohm
  • 3 rezistori 10kohm
  • 2 Butoane
  • Smartphone
  • Motor Stepper Nema17
  • Driver de motor pas cu pas A4988
  • Imprimanta 3D
  • Filament negru
  • Filament transparent
  • Fotorezistor
  • Termistor
  • Modul WiFi ESP8266
  • Condensator 100uF

Conectarea Arduino Uno cu banda de LED-uri

  • Pinul de alimentare de 5V de pe Arduino va fi conectat la cel de alimentare de pe banda de LED-uri.
  • Analog, pinul de GROUND de pe Arduino va fi conectat la cel de pe banda.
  • Un pin digital de pe Arduino va fi conectat la pinul de date al LED-urilor, protejat de un rezistor de 560Ohm.

Conectarea butoanelor

  • Un pin digital va fi conectat la unul dintre pinii butonului.
  • Celalalt pin al butonului va fi conectat la 5V (HIGH).
  • O rezistenta de pull-down va fi conectata intre pinul digital si GND (10khom).

Conectarea senzorilor

  • Va fi necesar un divizor de tensiune pentru a masura variatia de tensiune pe fotorezistor si pe termistor. Un pin analogic de pe Arduino va fi conectat la senzor.
  • Senzorul va fi conectat la Vcc (5V) de pe Arduino.
  • Intre senzor si pinul analogic de pe Arduino va fi conectata o rezistenta de 10k.

Conectarea motorului

  • Motorul stepper va fi conectat la Arduino Uno cu ajutorul unui driver de motor.
  • 2 pini sunt folositi pentru alimentarea driverului, conectati la 3.3V si la ground.
  • 2 pini sunt conectati la motor.
  • Motoruleste alimentat cu o baterie (2 pini) care are un condensator de 100uF in paralel cu alimentarea.
  • Pinii Step si Direction vor fi conectati la 2 pini digitali de pe Arduino Uno.

Conectarea Modulului WiFi

  • Pinul Vcc al modulului va fi conectat la pinul 3.3V de pe Arduino.
  • Pinul GND va fi conectat la GND pe Arduino.
  • Pinul RX va fi conectat la pinul de transmitere TX de pe Arduino (am folosit un rezistor de 1kohm spre TX de pe Arduino si 2 spre ground).
  • Pinul TX va fi conectat la pinul de receptie RX de pe Arduino (direct).

Software Design

Mediul de dezvoltare folosit va fi Arduino IDE pentru a scrie si incarca codul pe Microcontroller.

Biblioteci necesare

  • Biblioteca standard AnalogRead pentru a citi valorile de la termistor si fotorezistor
  • FastLED Pentru a controla culorile si modurile de iluminare ale benzii de LED-uri
  • AccelStepper pentru a conecta motorul stepper si pentru a controla viteza acestuia
  • ESP8266WiFi pentru a permite trimiterea si primirea datelor de pe internet pentru modulul WiFi

Interactiunea utilizatorului cu lampa se va putea face prin intermediul interfetei grafice de pe telefon, in care vor fi afisate diferite moduri de iluminare pe care utlizatorul le poate selecta.

In ceea ce priveste sursele folosite, acestea vor fi in principal diferite tutoriale pentru folosirea bibliotecilor mentionate mai sus si pentru a adapta codul la nevoile specifice.

Codul pentru lampa: adn_lamp.txt

Jurnal

14.05.2023

In primul rand, am realizat scheletul hardware folosind un breadboard pentru a putea face schimbari intr-un mod simplu inainte de a lipi tot proiectul.

Am intampinat cateva dificultati in timpul realizarii proiectului. Mi-am dat seama destul de tarziu ca imi lipseste o rezistenta de 2Ohm, asa ca am improvizat cu 2 rezistente de 1Ohm. Cand am conectat motorul cu ajutorul driverului, am observat ca este nevoie de 2 surse de alimentare, una pentru motor si una pentru driver, aspect pe care nu l-am luat in considerare, asa ca am folosit pentru alimentarea motorului o baterie.

Cea mai interesanta si mai dificila parte a fost lipirea firelor de pinii benzii cu leduri. Desi au fost necesare doar 3 lipituri, a durat foarte mult timp pana am considerat ca lipiturile sunt suficient de bune. Este necesar de mentionat ca Ledconul pe care l-am folosit a fost destul de ieftin si nu se incalzea prea bine, deci este posibil ca acest lucru sa fi influentat dificultatea procesului.

18.05.2023

Am facut modelul de print 3D pentru lampa efectiva si le-am pus la printat. Am uitat sa adaug gauri pentru senzori, asa ca ele trebuie facute de mana.

19.05.2023

Am realizat codul pentru 4 moduri de iluminare si modul automat dupa senzori. La apasarea butonului automat, lampa isi va modifica luminozitatea ledurilor si culoarea lor in functie de lumina respectiv temperatura. De asemenea, motorul se invarte. In cod, acest lucru se realizeaza prin functia handleAutoMode.

Cand se da toggle la manual mode, se itereaza prin 4 moduri. Se comuta fizic la fiecare apasare de buton. Cele 4 moduri definite sunt de rotire cu lumini roz, rotire si cercuri cu culori multiple, fara rotire si culoare galbena, rotire si culori alternante.

Codul pentru lampa: adn_lamp.txt

Am intampinat probleme la rotirea motorului, care nu are suficienta putere sa se roteasca folosind o baterie.

Demo:

Mod 1

Mod 2

Mod 3

Mod 4

Bibliografie/Resurse

pm/prj2023/alucaci/dna_lamp.txt · Last modified: 2023/05/28 21:30 by adina.grecu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0