Casa / Padroneggiare il PC / Lampada intelligente con Arduino. Schema del sensore di luce su fotoresistenza e relè

Lampada intelligente con Arduino. Schema del sensore di luce su fotoresistenza e relè

Buon pomeriggio o buona notte, come stai? Oggi condividerò le istruzioni per realizzare una piccola luce notturna. La base sarà: un diffusore opaco da una lampadina a LED bruciata. E all'interno collocheremo Arduino Pro Mini e i LED SW2812. Pubblicherò solo uno schizzo, ma ci possono essere molte opzioni per i colori o le trasfusioni. Iniziamo, come sempre, con un elenco del necessario:

Diffusore lampada led, base E27
- Alimentazione 5V
- Arduino Pro Mini 5V
- USB-TTL (per caricare lo sketch su arduino)
- LED WS2812
- Plastica sottile
- Nastro biadesivo
- Non è necessaria la ricarica dal telefono, ma funzionante
- saldatore
- Fili
- Saldare, colofonia
- Pistola per colla a caldo

Passaggio 1. Realizzazione del caso.
Per prima cosa dobbiamo procurarci un diffusore. Prendiamo una lampadina a LED, con attacco E27. È meglio, ovviamente, prendere una lampadina che ha già funzionato:

Con una mano teniamo la lampadina per la base e la custodia in plastica, con l'altra prendiamo il diffusore e rompiamo la lampadina. Il diffusore dovrebbe allontanarsi facilmente dal corpo, in quanto poggia solo sul sigillante:

Ora dobbiamo realizzare una base su cui incolleremo i LED. Per fare questo, prendiamo plastica sottile, è adatta una copertina da una cartella di plastica. Ora misuriamo il diametro interno del foro di montaggio del diffusore e dobbiamo anche misurare la profondità del diffusore. Passiamo alla realizzazione della base. Avrà la forma di un cilindro, il cui diametro dovrebbe essere 5 mm inferiore al diametro interno del foro di montaggio del diffusore. E l'altezza è di 7 mm inferiore alla profondità del diffusore. Dovrebbe assomigliare a qualcosa di simile a questo:

Finiamo questo per ora.

Fase 2 Elettricità
Come dicevo prima, il controller sarà l'Arduino Pro Mini, la versione a 5 volt. La striscia LED è collegata in modo molto semplice, per questo è necessario collegare il contatto + 5V al positivo dell'alimentazione a 5 volt e GND al meno. Collegare il pin DIN (ingresso) al pin 6 di Arduino. La porta di connessione del nastro può essere cambiata in qualsiasi comoda nello schizzo. Arduino sarà alimentato dallo stesso alimentatore. Poiché utilizzeremo un alimentatore stabilizzato, colleghiamo il plus dell'alimentatore al pin 5V su Arduino. Il meno dell'alimentatore deve essere collegato a GND di Arduino. Lo schema è questo:

Quindi, un LED, alla massima luminosità di tutti e tre i colori, consuma 60 mA. Ne ho 25, quindi risulta:

25 x 60 mA = 1500 mA = 1,5 A

Cioè, ho bisogno di un alimentatore di 5 V, 1,5 A. Questa è la massima intensità di corrente che sarà quando tutti i LED saranno accesi nella modalità di luminosità massima di tutti e tre i colori.

Come alimentatore, prendi il vecchio caricabatterie dal telefono. L'alimentatore deve essere selezionato per 5 volt e, in termini di potenza, calcola quanti LED puoi inserire:

Tagliamo la spina e saldiamo i fili direttamente sul nastro, non dimenticare di controllare la polarità con un tester o un multimetro. Dovresti anche realizzare cavi per alimentare Arduino. E un cavo di segnale dal nastro all'Arduino.

Facciamo una fessura nella parte inferiore del cilindro per far passare i contatti del nastro con i fili saldati all'interno:

Ho inserito l'estremità del nastro con i fili nella fessura, l'ho fissata con la colla a caldo. Quindi, incolla il nastro in un cerchio, sollevalo leggermente, in modo da ottenere una spirale di nastro. Incolliamo anche il nastro sulla parte superiore del cilindro, il numero di diodi dipende dal diametro, avevo al massimo due LED in diagonale sulla parte superiore e anche in modo che i contatti pendessero:

Se hai fatto lo stesso, non scoraggiarti, basta tagliare il nastro che pende dai bordi e saldare i fili direttamente ai LED. Contatti WS2812:

Nota, Luce di striscia LED sul WS2812B ha una direzione, da un lato (inizio o ingresso) ha contatti DIN, + 5V, GND. E dall'altro lato (fine o uscita) DO, +5V, GND. Se si salda direttamente ai LED, guardare la posizione dei contatti, concentrandosi sulla chiave (taglio d'angolo). Per semplificare l'installazione, sul nastro sono disegnate delle frecce per indicare la direzione. Attenzione speciale dare la transizione verso l'alto, risulta una curva molto acuta, c'è un'alta probabilità di rompere il nastro. L'ho preso così:


Dall'alto saldato direttamente ai LED:

E nel mezzo, il secondo livello, un altro paio di LED:

E per affidabilità, riempi i fili con colla a caldo:

Ora inseriamo il nostro cilindro con i LED all'interno della sfera della lampadina. Usando la colla a caldo, fissiamo il cilindro all'interno della sfera in un cerchio:

Non dimenticare di creare uno slot per estrarre il cavo di alimentazione:

Passaggio 3. Preparare l'ambiente e il firmware.
Per caricare lo sketch (o il firmware) utilizzeremo l'IDE di Arduino. Download dall'ufficiale ultima versione e installarlo.

Per fare ciò, prima scarica l'archivio. Quindi decomprimi questo archivio. E sposta i file decompressi nella cartella "librerie", che si trova nella cartella con l'IDE Arduino installato. Può essere reso più facile. Avvia l'IDE Arduino. Non decomprimere l'archivio scaricato. Proprio nell'IDE di Arduino, seleziona la voce di menu Sketch - Connect Library. Nella parte superiore dell'elenco a discesa, seleziona la voce "Aggiungi libreria zip". Dovrebbe apparire una finestra di dialogo. Quindi, seleziona la nostra libreria, Adafruit_NeoPixel-master. Un po' vale l'attesa. Aprire di nuovo la voce di menu Schizzo - Collega libreria. Ora nella parte inferiore del menu a discesa vedrai la nuova libreria. Dopo aver riavviato l'IDE Arduino, è possibile utilizzare la libreria.

Download del mio schizzo:

Resta da caricare lo sketch su Arduino. Stiamo usando un Arduino Pro Mini. Questa versione del popolare Arduino non ha un chip USB-TTL saldato sulla scheda. Pertanto, per comunicare con il computer e caricare lo sketch, è necessario utilizzare un USB-TTL separato. Collegamento secondo il seguente schema:

Arduino-USB-TTL
RX (P0) - TX
TX (P1) - RX
GND-GND

L'alimentazione USB-TTL sarà da porta USB computer. Arduino può essere alimentato da USB-TLL o utilizzare fonte esterna nutrizione. La cosa principale è che il pin GND dell'USB-TTL e l'Arduino sono collegati. Molto spesso in vendita ci si imbatte in USB-TTL senza l'uscita del pin DTR. Il pin DTR deve essere collegato al Reset Arduino per eseguire un reset automatico prima di caricare lo sketch. Se tu, come me, non hai una conclusione del genere, devi ricaricare manualmente prima di caricare lo sketch. Agiamo così: colleghiamo il tutto secondo lo schema sopra descritto, apriamo l'IDE di Arduino, apriamo lo sketch che hai scaricato, premiamo il pulsante - Download - e guardiamo quanto scritto di seguito. Mentre la "compilazione" è in corso, non facciamo nulla, aspettiamo solo che appaia il messaggio "download", dobbiamo fare clic Tasto reset su Arduino. Se non è conveniente premere il pulsante sulla scheda, è possibile emettere il pulsante collegato a GND e Reset. O semplicemente portare i fili alle stesse conclusioni e chiuderli al momento giusto.

Voglio dire che ci sono molte opzioni per il bagliore della luce notturna, ho scritto solo alcune che mi sono piaciute nello schizzo. Puoi modificare lo schizzo come preferisci. Sperimenta e scegli quello che ti piace di più.

Ciao a tutti! Sono Artem Luzhetsky e condurrò una serie di articoli dedicati a " casa intelligente"e IoT (inglese - Internet of Things, Internet of things). Conosceremo modi sorprendenti per creare rete di casa da una varietà di dispositivi che funzioneranno autonomamente o con l'aiuto di una persona. Bene? Iniziamo!

Il primo articolo è introduttivo, voglio che tu capisca che lavorerò con le schede e i moduli più comuni in modo che la maggior parte delle persone possa cimentarsi nello sviluppo dell'IoT.

Quindi, per cominciare, abbiamo bisogno di due microcontrollori che useremo: e.

Arduino UNO

Non credo di aver bisogno di presentarti questa tavola, è molto popolare tra i principianti e gli appassionati di fai da te. Dirò solo che le capacità di questa scheda sono limitate e UNO non può funzionare con il protocollo https, non c'è abbastanza potenza di calcolo del microcontrollore ATmega328P, quindi quando dovremo lavorare con il microcontrollore e il protocollo https, programmeremo il ESP8266.

ESP8266

Lavorerò con il modulo Troyka ESP8266 di Amperka, ma puoi tranquillamente usare il normale modulo ESP 8266, praticamente non hanno differenze, la cosa principale durante il collegamento è guardare il valore dei pin e ricordare che l'ESP funziona secondo alla logica a 3,3 volt, quindi è necessario collegare tramite 5 volt, ma collegare un regolatore di tensione al circuito, o semplicemente utilizzare un pin con una tensione di alimentazione di 3,3 volt.

Questo microcontrollore non è il più potente della serie Espressif nel mercato generale, ma è uno dei più economici e comuni. Sarà la base dei nostri sviluppi IoT.

Dettagli aggiuntivi

Dovremo anche creare tutti gli esperimenti:

  1. LED
  2. fotoresistenza
  3. Termistore
  4. telemetro ad ultrasuoni
  5. Altoparlante piezoelettrico
  6. Mini servo
  7. Sensore IR
  8. Telecomando IR

Non è necessario disporre di tutti questi moduli per lavorare con l'IoT, ma per realizzare tutti i progetti futuri, alla fine dovremo acquistarli tutti.

Programmi e Biblioteche

Innanzitutto, scarica la libreria che ti aiuterà a lavorare molto più facilmente nell'IDE di Arduino se usi ESP8266 - http://wiki.amperka.ru/_media/iot-m:iot-m-libs.zip

In secondo luogo, per familiarizzare meglio con l'IoT, avremo bisogno di siti Web che ci forniscano la possibilità di inviare loro dati.

  1. www.dweet.io
  2. maker.iftt.com
  3. narodmon.ru
  4. eccetera.

Terzo: avremo anche bisogno varie applicazioni su Android in modo da poter controllare una casa intelligente con l'aiuto di un telefono.

  1. mozzo aperto
  2. Battito di ciglia
  3. eccetera.

Conosceremo in dettaglio tutti i metodi, i programmi e i siti nei prossimi progetti.

2. Realizzare una "lampada intelligente"

Ti ho già annoiato? Facciamo la lampada intelligente più semplice che si accende se la stanza è buia.

In effetti, non hai nemmeno bisogno di un UNO per questo, puoi utilizzare un sensore fotografico digitale personalizzato, ma in futuro cambieremo questo progetto in modo irriconoscibile, quindi devi iniziare da qualche parte.

Se non sei sicuro di essere pronto per lavorare con l'elettricità di 220 volt, usa un normale LED invece di una torcia. All'inizio ho preso la mia vecchia lampada TLI - 204, sono disponibili in quasi tutti i negozi (l'ho scollegata dalla rete in anticipo).

La lampada ha due tipi di lavoro (accensione/spegnimento), quello che voglio fare, voglio aumentarne la funzionalità, lasciare la possibilità di accendere e spegnere completamente la lampada.

Il collegamento di una fotoresistenza con un relè in qualche modo in parallelo al circuito senza utilizzare un altro interruttore non funzionerà, quindi ho deciso di inserire un interruttore a levetta a tre posizioni invece di un interruttore a due posizioni.

Generale schema elettrico dovrebbe assomigliare a questo:

Se tutto è fatto correttamente, nella terza posizione dell'interruttore è possibile, fornendo corrente al relè dal microcontrollore, accendere la lampada.

Colleghiamo una fotoresistenza all'arduino. Lo schema si presenta così:

3. Codice per "lampada intelligente"

Ora scriviamo il codice con il quale trasmetteremo corrente al relè se la stanza è buia.

#define SHINE 5 //PIN SU FOTORESISTENZA #define REL 13 //PIN SU RELAY void setup()( pinMode(SHINE, INPUT); pinMode(REL, OUTPUT); Serial.begin(9600); ) void loop()( se (analogicoLeggi(SHINE)<600) // Если света в комнате мало, то включаем лампу { digitalWrite(REL, HIGH) } else // если много, то выключаем { digitalWrite(REL, LOW); } Serial.printIn(analogRead(SHINE)); selay(500); }

Quando colleghi tutto, non dimenticare di rimuovere il sensore fotografico dal lama, altrimenti ti aspetterà uno spettacolo di luci. Tutto deve funzionare.

La prossima volta cercheremo di complicare il codice e aggiungere un altro paio di funzioni. A presto!

Per il nostro prossimo progetto, utilizzeremo una fotoresistenza. E considereremo l'implementazione di una luce notturna nella camera da letto, che si accenderà automaticamente quando è buio e si spegnerà quando diventa luce.

La resistenza di una fotoresistenza dipende dalla luce che la colpisce. Usando una fotoresistenza in combinazione con una resistenza convenzionale da 4,7 kΩ, otteniamo un partitore di tensione in cui la tensione che passa attraverso la fotoresistenza varia, a seconda del livello di luce.

La tensione dal divisore, la applichiamo all'ingresso ADC di Arduino. Lì confrontiamo il valore ricevuto con una certa soglia e accendiamo o spegniamo la lampada.

Lo schema elettrico del divisore è mostrato di seguito. Quando l'illuminazione aumenta, la resistenza della fotoresistenza diminuisce e, di conseguenza, aumenta la tensione all'uscita del divisore (e all'ingresso dell'ADC). Quando la luce si spegne, è vero il contrario.

La foto sotto mostra il circuito assemblato su una breadboard. Le tensioni 0V e 5V sono prese da Arduino. Il pin A0 viene utilizzato come ingresso ADC.

Lo schizzo di Arduino è mostrato di seguito. In questo tutorial, accendiamo e spegniamo semplicemente il LED integrato nella scheda Arduino. Un LED più luminoso, puoi collegarlo al pin 13 (attraverso un resistore da ~220 ohm). Se si collega un carico più potente, come una lampada a incandescenza, è necessario collegarlo tramite un relè o un tiristore.

Ci sono sezioni commentate nel codice del programma, servono per il debug. Sarà possibile controllare il valore dell'ADC (da 0 a 1024). Inoltre, è necessario modificare il valore di 500 nel codice (soglia attivata e disattivata) in quello selezionato empiricamente modificando l'illuminazione.

/* ** Luce notturna ** ** www.hobbytronics.co.uk */ int sensorPin = A0; // imposta input foot per ADC unsigned int sensorValue = 0; // valore digitale della fotoresistenza void setup() ( pinMode(13, OUTPUT); Serial.begin(9600); // avvia uscita dati seriali (per test) ) void loop() ( sensorValue = analogRead(sensorPin); / / legge il valore dalla fotoresistenza if(sensorValue<500) digitalWrite(13, HIGH); // включаем else digitalWrite(13, LOW); // выключаем // Для отладки раскомментируйте нижеследующие строки //Serial.print(sensorValue, DEC); // вывод данных с фоторезистора (0-1024) //Serial.println(""); // возврат каретки //delay(500); }

I sensori di luce (illuminazione), costruiti sulla base di fotoresistenze, sono abbastanza spesso utilizzati nei veri progetti arduino. Sono relativamente semplici, non costosi, facili da trovare e acquistare in qualsiasi negozio online. La fotoresistenza arduino consente di controllare il livello di illuminazione e rispondere al suo cambiamento. In questo articolo vedremo cos'è una fotoresistenza, come funziona il sensore di luce in base ad essa, come collegare correttamente il sensore alle schede Arduino.

La fotoresistenza, come suggerisce il nome, è direttamente correlata ai resistori, che si trovano spesso in quasi tutti i circuiti elettronici. La caratteristica principale di un resistore convenzionale è il valore della sua resistenza. Tensione e corrente dipendono da questo, con l'aiuto di un resistore impostiamo le modalità operative desiderate di altri componenti. Di norma, il valore della resistenza di un resistore nelle stesse condizioni operative praticamente non cambia.

A differenza di un resistore convenzionale, fotoresistenza può cambiare la sua resistenza a seconda del livello di luce ambientale. Ciò significa che i parametri nel circuito elettronico cambieranno costantemente, prima di tutto siamo interessati alla tensione che cade sulla fotoresistenza. Fissando queste variazioni di tensione sui pin analogici dell'arduino, possiamo cambiare la logica del circuito, creando così dispositivi che si adattano alle condizioni esterne.

Le fotoresistenze sono ampiamente utilizzate in un'ampia varietà di sistemi. L'applicazione più comune è l'illuminazione stradale. Se scende la notte sulla città o diventa nuvoloso, le luci si accendono automaticamente. Puoi realizzare una lampadina economica per la casa da una fotoresistenza, che si accende non secondo un programma, ma in base all'illuminazione. Basato sul sensore di luce, puoi persino realizzare un sistema di sicurezza che funzionerà immediatamente dopo l'apertura e l'illuminazione di un armadio chiuso o di una cassaforte. Come sempre, la portata di qualsiasi sensore arduino è limitata solo dalla nostra immaginazione.

Quali fotoresistenze possono essere acquistate nei negozi online

L'opzione di sensore più popolare ed economica sul mercato sono i modelli di produzione di massa di aziende cinesi, cloni di prodotti VT. Non è sempre possibile andare in rovina lì, chi e cosa produce esattamente questo o quel fornitore, ma l'opzione più semplice è abbastanza adatta per iniziare a lavorare con le fotoresistenze.

Si può consigliare a un arduino principiante di acquistare un modulo fotografico già pronto che assomigli a questo:


Questo modulo dispone già di tutti gli elementi necessari per collegare facilmente una fotoresistenza a una scheda arduino. Alcuni moduli hanno un circuito comparatore e sono disponibili un'uscita digitale e un trimmer per il controllo.

Si può consigliare a un radioamatore russo di rivolgersi al sensore FR russo. FR1-3, FR1-4, ecc. disponibili in commercio. - emesso in epoca sovietica. Ma, nonostante questo, FR1-3 è un dettaglio più accurato. Da ciò segue la differenza di prezzo: per FR non chiedono più di 400 rubli. FR1-3 costerà più di mille rubli ciascuno.

Marcatura di fotoresistenze

La marcatura moderna dei modelli prodotti in Russia è abbastanza semplice. Le prime due lettere sono PhotoResistor, i numeri dopo il trattino indicano il numero di sviluppo. FR -765 - fotoresistenza, sviluppo 765. Di solito marcata direttamente sul corpo della parte

Il sensore VT ha un intervallo di resistenza nello schema di marcatura. Per esempio:

  • VT83N1 - 12-100kΩ (12K illuminato, 100K scuro)
  • VT93N2 - 48-500kOhm (48K - illuminato, 100K - al buio).

A volte, per chiarire le informazioni sui modelli, il venditore fornisce un documento speciale del produttore. Oltre ai parametri di lavoro, viene indicata anche la precisione della parte. Per tutti i modelli, la gamma di sensibilità si trova nella parte visibile dello spettro. Collezionare sensore di luceè necessario comprendere che l'accuratezza dell'operazione è un concetto condizionale. Anche per i modelli dello stesso produttore, un lotto, un acquisto, può differire del 50% o più.

In fabbrica, le parti sono impostate su una lunghezza d'onda dalla luce rossa alla luce verde. Allo stesso tempo, la maggioranza “vede” anche la radiazione infrarossa. Dettagli particolarmente precisi possono catturare anche la luce ultravioletta.

Vantaggi e svantaggi del sensore

Lo svantaggio principale delle fotoresistenze è la loro sensibilità allo spettro. A seconda del tipo di luce incidente, la resistenza può variare di diversi ordini di grandezza. Gli svantaggi includono anche la bassa velocità di reazione ai cambiamenti nell'illuminazione. Se la spia lampeggia, il sensore non ha il tempo di rispondere. Se la frequenza del cambiamento è piuttosto alta, il resistore generalmente smetterà di "vedere" che l'illuminazione sta cambiando.

I vantaggi includono semplicità e accessibilità. Una variazione diretta della resistenza in funzione della luce che vi cade sopra permette di semplificare lo schema elettrico. La stessa fotoresistenza è molto economica, è inclusa in numerosi kit e designer arduino, quindi è disponibile per quasi tutti i principianti arduino.

Collegamento fotoresistenza ad arduino

Nei progetti arduino La fotoresistenza viene utilizzata come sensore di luce. Ricevendo informazioni da esso, la scheda può attivare o disattivare relè, avviare motori, inviare messaggi. Naturalmente, in questo caso, dobbiamo collegare correttamente il sensore.

Lo schema per collegare un sensore di luce a un arduino è abbastanza semplice. Se utilizziamo una fotoresistenza, nello schema di collegamento il sensore viene implementato come divisore di tensione. Una spalla cambia dal livello di illuminazione, la seconda fornisce tensione all'ingresso analogico. Nel chip del controller, questa tensione viene convertita in dati digitali tramite l'ADC. Perché Se la resistenza del sensore diminuisce quando la luce lo colpisce, anche il valore della tensione che cade su di esso diminuirà.

A seconda del braccio del divisore in cui mettiamo la fotoresistenza, all'ingresso analogico verrà applicata una tensione aumentata o ridotta. Nel caso in cui una gamba della fotoresistenza sia collegata a terra, il valore di tensione massimo corrisponderà all'oscurità (la resistenza della fotoresistenza è massima, quasi tutta la tensione cade su di essa) e il valore minimo corrisponderà a buono illuminazione (la resistenza è prossima allo zero, la tensione è minima). Se colleghiamo il braccio della fotoresistenza all'alimentazione, il comportamento sarà l'opposto.

L'installazione della scheda stessa non dovrebbe causare difficoltà. Poiché la fotoresistenza non ha polarità, è possibile collegarla in qualsiasi direzione, saldarla alla scheda, collegarla con fili utilizzando una scheda o utilizzare normali clip (coccodrilli) per la connessione. La fonte di alimentazione nel circuito è l'arduino stesso. fotoresistenzaè collegato con una gamba a terra, l'altra è collegata all'ADC della scheda (nel nostro esempio - AO). Colleghiamo una resistenza da 10 kΩ alla stessa gamba. Naturalmente è possibile collegare una fotoresistenza non solo al pin analogico A0, ma anche a qualsiasi altro.

Qualche parola sulla resistenza aggiuntiva da 10 K. Ha due funzioni nel nostro circuito: limitare la corrente nel circuito e formare la tensione desiderata nel circuito con un divisore. La limitazione di corrente è necessaria in una situazione in cui una fotoresistenza completamente illuminata riduce drasticamente la sua resistenza. E la modellatura della tensione è per valori prevedibili sulla porta analogica. Infatti, una resistenza di 1K è sufficiente per il normale funzionamento con le nostre fotoresistenze.

Modificando il valore del resistore, possiamo "spostare" il livello di sensibilità sul lato "scuro" e "chiaro". Pertanto, 10 K daranno una rapida commutazione dell'inizio della luce. Nel caso di 1K, il sensore di luce rileverà con maggiore precisione un alto livello di illuminazione.

Se utilizzi un modulo sensore di luce già pronto, la connessione sarà ancora più semplice. Colleghiamo l'uscita del modulo VCC al connettore 5V sulla scheda, GND - a terra. I pin rimanenti sono collegati ai connettori arduino.

Se la scheda ha un'uscita digitale, la inviamo ai pin digitali. Se analogico, allora analogico. Nel primo caso, riceveremo un segnale di trigger - che supera il livello di illuminazione (la soglia di trigger può essere regolata utilizzando un resistore di sintonia). Dai pin analogici possiamo ottenere un valore di tensione proporzionale all'effettivo livello di illuminazione.

Uno schizzo di esempio di un sensore di luce su una fotoresistenza

Abbiamo collegato il circuito della fotoresistenza all'arduino, assicurandoci che tutto fosse fatto correttamente. Ora resta da programmare il controller.

Scrivere uno schizzo per un sensore di luce è abbastanza semplice. Abbiamo solo bisogno di prendere il valore della tensione attuale dal pin analogico a cui è collegato il sensore. Questo viene fatto usando la funzione analogRead() nota a tutti noi. Quindi possiamo eseguire alcune azioni, a seconda del livello di luce.

Scriviamo uno schizzo per un sensore di luce che accende o spegne il LED collegato come segue.

L'algoritmo di lavoro è il seguente:

  • Determina il livello del segnale dal pin analogico.
  • Confronta il livello con il valore di soglia. Il valore massimo corrisponderà all'oscurità, il minimo alla massima illuminazione. Scegliamo il valore di soglia pari a 300.
  • Se il livello è inferiore alla soglia - buio, è necessario accendere il LED.
  • In caso contrario, spegnere il LED.
#define PIN_LED 13 #define PIN_PHOTO_SENSOR A0 void setup() ( Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() ( int val = analogRead(PIN_PHOTO_SENSOR); Serial.println(val); if ( val< 300) { digitalWrite(PIN_LED, LOW); } else { digitalWrite(PIN_LED, HIGH); } }

Coprendo la fotoresistenza (con le mani o un oggetto opaco), possiamo osservare l'accensione e lo spegnimento del LED. Modificando il parametro di soglia nel codice, possiamo forzare l'accensione/spegnimento della lampadina a diversi livelli di illuminazione.

Durante il montaggio, provare a posizionare la fotoresistenza e il LED il più distanti possibile in modo che meno luce del LED luminoso cada sul sensore di luce.

Sensore di luce ambientale e cambio graduale della luminosità della retroilluminazione

È possibile modificare il progetto in modo che la luminosità del LED cambi a seconda del livello di illuminazione. Aggiungeremo le seguenti modifiche all'algoritmo:

  • Cambieremo la luminosità della lampadina tramite PWM, inviando valori da 0 a 255 al pin con il LED usando analogWrite().
  • Per convertire il valore digitale del livello di luce del sensore di luce (da 0 a 1023) nel range PWM della luminosità del LED (da 0 a 255), utilizzeremo la funzione map().

Esempio di schizzo:

#define PIN_LED 10 #define PIN_PHOTO_SENSOR A0 void setup() ( Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() ( int val = analogRead(PIN_PHOTO_SENSOR); Serial.println(val); int ledPower = map(val, 0, 1023, 0, 255); // Converte il valore ricevuto in un livello di segnale PWM. Minore è il valore della luce, minore è la potenza necessaria per fornire al LED tramite PWM. analogWrite(PIN_LED, ledPower ); // cambia luminosità)

Nel caso di un altro metodo di connessione, in cui il segnale proveniente dalla porta analogica è proporzionale al grado di illuminazione, sarà necessario “invertire” ulteriormente il valore sottraendolo al massimo:

int val = 1023 - analogRead(PIN_PHOTO_RESISTOR);

Schema del sensore di luce su fotoresistenza e relè

Esempi di uno schizzo per lavorare con i relè sono forniti nell'articolo sulla programmazione dei relè in Arduino. In questo caso, non abbiamo bisogno di fare gesti complessi: dopo aver determinato il "buio", semplicemente accendiamo il relè, applichiamo il valore appropriato al suo pin.

#define PIN_RELAY 10 #define PIN_PHOTO_SENSOR A0 void setup() ( pinMode(PIN_RELAY, OUTPUT); digitalWrite(PIN_RELAY, HIGH); ) void loop() ( int val = analogRead(PIN_PHOTO_SENSOR); if (val< 300) { // Светло, выключаем реле digitalWrite(PIN_RELAY, HIGH); } else { // Темновато, включаем лампочку digitalWrite(PIN_RELAY, LOW); } }

Conclusione

I progetti che utilizzano un sensore di luce basato su una fotoresistenza sono abbastanza semplici ed efficaci. Puoi realizzare molti progetti interessanti, mentre il costo delle attrezzature non sarà elevato. La fotoresistenza è collegata secondo il circuito del partitore di tensione con resistenza aggiuntiva. Il sensore è collegato a una porta analogica per misurare vari livelli di illuminazione oa una digitale se per noi è importante solo il fatto dell'oscurità. Nello schizzo, leggiamo semplicemente i dati dalla porta analogica (o digitale) e decidiamo come reagire ai cambiamenti. Speriamo che ora nei tuoi progetti appaiano "occhi" così semplici.