Ahojte všetci! Som Artem Luzhetsky a budem viesť sériu článkov venovaných „ inteligentný dom"a IoT (anglicky - Internet of Things, Internet of things). Zoznámime sa s úžasnými spôsobmi vytvárania domácej siete z rôznych zariadení, ktoré budú fungovať buď autonómne alebo s pomocou osoby. dobre? Začnime!

Prvý článok je úvodný, chcem, aby ste pochopili, že budem pracovať s najbežnejšími doskami a modulmi, aby si väčšina ľudí mohla vyskúšať vývoj IoT.

Takže na začiatok potrebujeme dva mikrokontroléry, ktoré budeme používať: a.

Arduino UNO

Túto dosku vám myslím nemusím predstavovať, je veľmi obľúbená medzi začiatočníkmi a kutilmi. Poviem len toľko, že možnosti tejto dosky sú obmedzené a UNO nevie pracovať s protokolom https, je ho málo výpočtový výkon ATmega328P mikrokontrolér, takže keď máme pracovať s mikrokontrolérom a https protokolom, naprogramujeme ESP8266.

ESP8266

Budem pracovať s modulom Troyka-modul ESP8266 od Amperky, ale pokojne môžete použiť bežný modul ESP 8266, prakticky nemajú žiadne rozdiely, hlavné pri zapájaní je pozerať sa na hodnotu pinov a pamätať si, že ESP funguje podľa na 3,3 voltovú logiku, preto musíte buď pripojiť cez 5 voltov, ale do obvodu pripojiť regulátor napätia, alebo jednoducho použiť kolík s napätím 3,3 voltu.

Tento mikrokontrolér nie je najvýkonnejší v sérii Espressif na bežnom trhu, ale je jedným z najlacnejších a najbežnejších. Bude základom nášho rozvoja internetu vecí.

Ďalšie podrobnosti

Budeme tiež musieť vytvoriť všetky experimenty:

  1. LED diódy
  2. fotorezistor
  3. Termistor
  4. ultrazvukový diaľkomer
  5. Piezo reproduktor
  6. Mini Servo
  7. IR senzor
  8. IR diaľkové ovládanie

Na prácu s IoT nie je potrebné mať všetky tieto moduly, ale aby sme mohli realizovať všetky budúce projekty, budeme ich musieť nakoniec všetky zakúpiť.

Programy a knižnice

Najprv - stiahnite si knižnicu, ktorá vám pomôže oveľa jednoduchšie pracovať v Arduino IDE, ak používate ESP8266 - http://wiki.amperka.ru/_media/iot-m:iot-m-libs.zip

Po druhé, aby sme sa lepšie zoznámili s IoT, budeme potrebovať webové stránky, ktoré nám poskytnú možnosť posielať na ne dáta.

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

Po tretie - budeme tiež potrebovať rôzne aplikácie na androide, aby sme inteligentnú domácnosť mohli ovládať pomocou telefónu.

  1. otvorený rozbočovač
  2. Blikať
  3. atď.

So všetkými metódami, programami a lokalitami sa podrobne zoznámime v ďalších projektoch.

2. Výroba „inteligentnej lampy“

Už som ťa nudil? Urobme to najjednoduchšie inteligentná lampa ktorý sa zapne, ak je v miestnosti tma.

V skutočnosti na to nepotrebujete ani UNO, môžete použiť digitálny vlastný fotosnímač, no v budúcnosti tento projekt zmeníme na nepoznanie, takže niekde začať treba.

Ak si nie ste istí, že ste pripravení pracovať s elektrinou 220 voltov, použite namiesto baterky bežnú LED. Na začiatku som si vzal svoje stará lampa TLI - 204, také sú takmer v každom obchode (vopred odpojené od siete).

Lampa má dva typy práce (zapnutie / vypnutie), čo chcem robiť, chcem zvýšiť jej funkčnosť, ponechať možnosť úplne zapnúť a vypnúť lampu.

Zapojenie fotorezistora s relé nejako paralelne k obvodu bez použitia ďalšieho prepínača nebude fungovať, preto som sa rozhodol namiesto dvojpolohového prepínača dať trojpolohový prepínač.

Všeobecný elektrický obvod by mal vyzerať takto:

Ak je všetko vykonané správne, potom v tretej polohe prepínača môžete privedením prúdu do relé z mikrokontroléra zapnúť lampu.

Pripojme fotorezistor k arduinu. Schéma vyzerá takto:

3. Kód pre „inteligentnú lampu“

Teraz napíšeme kód, ktorým budeme prenášať prúd do relé, ak je v miestnosti tma.

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

Keď všetko pripojíte, nezabudnite z lamy vybrať fotosnímač, inak vás čaká svetelná šou. Všetko musí fungovať.

Nabudúce sa pokúsime skomplikovať kód a pridať niekoľko ďalších funkcií. Do skorého videnia!

V tomto experimente by sa LED mala rozsvietiť, keď úroveň svetla klesne pod prah nastavený potenciometrom.

ZOZNAM ČASTÍ PRE EXPERIMENT

- 1 doska Arduino Uno;

- 1 nepájkovaná doska na krájanie;

- 1 LED;

- 1 fotorezistor;

- 1 rezistor s menovitou hodnotou 220 Ohm, 1 rezistor s menovitou hodnotou 10 kOhm;

- 1 premenlivý odpor (potenciometer);

- 10 mužských a mužských drôtov.

PODROBNOSTI PRE VOLITEĽNÝ CIEĽ

1 ďalšia LED;

Ďalší 1 odpor s nominálnou hodnotou 220 ohmov;

2 ďalšie drôty.

ZÁKLADNÁ SCHÉMA

DIAGRAM NA PRACOVISKU

SKICA

stiahnite si skicu pre Arduino IDE
#define LED_PIN 13 #define LDR_PIN A0 #define POT_PIN A1 void setup() ( pinMode(LED_PIN, OUTPUT); ) void loop() ( // čítanie úrovne osvetlenia. Mimochodom, môžete // deklarovať premennú a priradiť hodnota k nemu naraz int svetlosť = analogRead(LDR_PIN); // načítajte hodnotu z potenciometra, ktorým nastavujeme // prahovú hodnotu medzi podmienenou tmou a svetlom int prah = analogRead(POT_PIN); // deklarujte booleovskú premennú a priraďte mu hodnotu // „je teraz tma". Booleovské premenné na rozdiel od // celých čísel môžu obsahovať iba jednu z dvoch hodnôt: // true (eng. true) alebo false (eng. false). Takéto hodnoty ​​// sa tiež nazývajú boolean (angl. boolean).boolean tooDark = (svetlosť< threshold); // используем ветвление программы: процессор исполнит один из // двух блоков кода в зависимости от исполнения условия. // Если (англ. «if») слишком темно... if (tooDark) { // ...включаем освещение digitalWrite(LED_PIN, HIGH); } else { // ...иначе свет не нужен — выключаем его digitalWrite(LED_PIN, LOW); } }

VYSVETLENIA KÓDOV

  • Používame nový typ premenných − boolovská hodnota, ktoré iba uchovávajú hodnoty pravda (pravda, 1) alebo falošný (nepravda, 0). Tieto hodnoty sú výsledkom vyhodnotenia boolovských výrazov. V tomto príklade je boolovský výraz ľahkosť< threshold . V ľudskom jazyku to znie ako: "osvetlenie pod prahovou úrovňou." Takéto vyhlásenie bude pravdivé, keď bude osvetlenie pod prahovou úrovňou. Mikrokontrolér dokáže porovnávať hodnoty premenných ľahkosť a prah, čo sú zase výsledky meraní a vypočítajú pravdivosť logického výrazu.
  • Tento logický výraz sme zobrali v zátvorkách len kvôli prehľadnosti. Vždy je lepšie napísať čitateľný kód. V iných prípadoch môžu zátvorky ovplyvniť poradie operácií, ako pri bežnej aritmetike.
  • V našom experimente bude booleovský výraz pravdivý, keď je hodnota ľahkosť menšiu hodnotu prah, pretože sme použili operátora < . Môžeme použiť operátorov > , <= , >= , = = , != , čo znamená väčší ako, menší alebo rovný, väčší alebo rovný, rovný, nerovnajúci sa, resp.
  • Buďte obzvlášť opatrní s logický operátor = = a nemýľte si ho s operátorom priradenia = . V prvom prípade porovnáme hodnoty výrazov a získame boolovská hodnota(pravda alebo nepravda) a v druhom prípade priradíme hodnotu pravého operandu ľavému operandu. Kompilátor nepozná naše zámery a nedá chybu, ale môžeme náhodne zmeniť hodnotu nejakej premennej a potom dlho hľadať chybu.
  • Podmienený operátor akak“) je jedným z kľúčových vo väčšine programovacích jazykov. S jeho pomocou môžeme vykonávať nielen pevne definovanú postupnosť akcií, ale v závislosti od určitých podmienok sa rozhodnúť, ktorú vetvu algoritmu nasledovať.
  • Pre logické vyjadrenie ľahkosť< threshold existuje význam: pravda alebo falošný. Vypočítali sme to a vložili do booleovskej premennej príliš tmavé("príliš tmavé"). Preto hovoríme „ak je príliš tma, zapnite LED“
  • Rovnako dobre by sme mohli povedať „ak je osvetlenie menšie ako prahová úroveň, tak zapnite LED“, t.j. preniesť na ak celý logický výraz:
ak (ľahkosť< threshold) { // ... }
  • Za podmienený operátor ak musí nasledovať blok kódu, ktorý sa vykoná, ak je logický výraz pravdivý. Nezabudnite na obe kučeravé rovnátka {} !
  • Ak, ak je výraz pravdivý, stačí vykonať jeden pokyn, môže sa písať hneď po ak (...) bez kučeravé zátvorky:
ak (ľahkosť< threshold) digitalWrite(LED_PIN, HIGH);
  • Operátor ak možno rozšíriť dizajnom inak("inak"). Blok kódu alebo jeden príkaz, ktorý za ním nasleduje, sa vykoná iba vtedy, ak je booleovský výraz v ak má význam falošný , « Nepravdivé". Pravidlá pre kučeravé rovnátka sú rovnaké. V našom experimente sme napísali "ak je príliš tma, zapnite LED, inak vypnite LED."

OTÁZKY, KTORÉ SI PRESVEDČITE

  1. Ak nainštalujeme fotorezistor medzi analógový vstup a zem, naše zariadenie bude pracovať opačne: LED sa rozsvieti, keď sa zvýši množstvo svetla. prečo?
  2. Aký výsledok činnosti zariadenia dostaneme, ak svetlo z LED dopadá na fotorezistor?
  3. Ak sme nainštalovali fotorezistor tak, ako je popísané v predchádzajúcej otázke, ako musíme zmeniť program, aby zariadenie fungovalo správne?
  4. Povedzme, že máme kód ak (podmienka) (akcia;). V akých prípadoch bude akcie ?
  5. V akých hodnotách r výraz x + y > 0 bude pravda, ak x > 0 ?
  6. Je povinné špecifikovať, ktoré inštrukcie sa majú vykonať, ak je podmienka v príkaze ak falošné?
  7. Aký je rozdiel medzi operátorom = = od operátora = ?
  8. Ak použijeme konštrukciu if (podmienka) akcia1; iná akcia2;, môže nastať situácia, že nebude vykonaný žiadny z úkonov? prečo?

ÚLOHY NA SAMOSTATNÉ RIEŠENIE

  1. Prepíšte program bez použitia premennej príliš tmavé pri zachovaní funkčnosti zariadenia.
  2. Pridajte ďalšiu LED do obvodu. Dokončite program tak, že keď osvetlenie klesne pod prahovú hodnotu, rozsvieti sa jedna LED a keď osvetlenie klesne pod polovicu prahovej hodnoty, rozsvietia sa obe LED.
  3. Zmeňte obvod a naprogramujte tak, aby sa LED diódy rozsvietili rovnakým spôsobom, ale čím silnejšie, tým menej svetla dopadá na fotorezistor.

Pravdepodobne každý v detstve mal sen (a viac ako jeden). Môžete si dokonca skúsiť spomenúť na ten pocit, ktorý zaplaví dušu dieťaťa, keď sa mu splní jeho sen, alebo na tú vzdialenú známu iskru v jeho očiach... Ako dieťa som sníval o vlastnom nočnom svetielku.

Teraz som študentom 4. ročníka na BSUIR, a keď nám povedali, že projekt na kurze o obvodoch sa dá urobiť nie na papieri, ale na kuse železa, napadlo mi: nočné svetlo, ktoré som si tak prial ako dieťa, môžem vyrobiť sám. A aby to nebol len predmet, ktorý v noci osvetlí miestnosť, ale aj zariadenie, ktoré sa dá ľahko ovládať podľa nálady. Prečo nie? Rozhodol som sa pridať možnosť meniť farby pomocou rúk: čím bližšie je ruka k nočnému svetlu, tým jasnejšia je jedna z farieb (RGB). A tiež by som chcel ovládať nočné svetlo diaľkovým ovládačom.

Hneď sa musím priznať, že som tento nápad zachytil na stránke cxem.net. Stručne povedané, tento príklad používal maticu RGB, ktorá bola riadená posuvnými registrami a ultrazvukovými snímačmi vzdialenosti. Ale myslel som, že matrica svieti len jedným smerom, ale chcel som, aby nočné svetlo svietilo do strán.

Zdôvodnenie prvkov obvodu


Obrátil som svoju pozornosť na Arduino mikrokontroléry. UNO je pre moju predstavu celkom vhodná možnosť, jednak preto, že je to najobľúbenejšia platforma a počet pinov nie je na rozdiel od Mega príliš veľký a jednak sa k nemu dá pripojiť externý zdroj napájania, v mojom prípade je to 12V , na rozdiel od Nano, po tretie... no, myslím, že sa môžete pozastaviť nad týmito dvoma bodmi. Platforma je veľmi populárna na celom svete vďaka pohodliu a jednoduchosti programovacieho jazyka, ako aj otvorenej architektúre a programovému kódu.

Viac detailné informácie o tejto doske sa dá ľahko nájsť na internete, takže článok nebudem preťažovať.

Takže hlavné požiadavky na systém. Požadovaný:
- senzory, ktoré budú sledovať vzdialenosť k prekážke na ovládanie systému;
– snímač na čítanie signálov z diaľkového ovládača diaľkové ovládanie;
- LED diódy, ktoré zabezpečia potrebnú funkčnosť osvetlenia;
- riadiaca jednotka, ktorá bude riadiť celý systém.

Ako snímače vzdialenosti pre projekt sú potrebné diaľkomery, z ktorých každý bude zodpovedať určitú farbu: červená, zelená, modrá. Snímače vzdialenosti budú sledovať vzdialenosť ruky od nočného svetla a čím bližšie sa ruka priblíži k určitému senzoru, tým silnejšie bude horieť farba zodpovedajúca tomuto diaľkomeru. Naopak, čím ďalej je ručička, tým menšie napätie sa aplikuje na farbu zodpovedajúcu senzoru.

Najpopulárnejšie diaľkomery na tento moment sú to Sharp GP2Y0A21YK a HC-SR04. Sharp GP2Y0A21YK je infračervený diaľkomer. Je vybavený IR žiaričom a IR prijímačom: prvý slúži ako zdroj lúča, ktorého odraz zachytí druhý. Infračervené lúče snímača sú zároveň pre ľudské oko neviditeľné a pri tejto intenzite sú neškodné.

V porovnaní s ultrazvukovým prevodníkom HC-SR04 má tento prevodník výhody aj nevýhody. Medzi výhody patrí neutralita a nezávadnosť. A nevýhodou je menší dosah a závislosť od vonkajšieho rušenia vrátane určitých typov osvetlenia.

Ako senzory vzdialenosti pre projekt sme použili ultrazvukové diaľkomery HC-SR04.
Princíp činnosti HC-SR04 je založený na známom fenoméne echolokácie. Pri jeho použití vysielač generuje akustický signál, ktorý sa odrazený od prekážky vracia späť k senzoru a je zaznamenávaný prijímačom. Pri znalosti rýchlosti šírenia ultrazvuku vo vzduchu (asi 340 m/s) a času oneskorenia medzi vysielaným a prijímaným signálom je ľahké vypočítať vzdialenosť k akustickej bariére.

Vstup TRIG je pripojený k ľubovoľnému kolíku mikrokontroléra. Na tento výstup musí byť privedený impulz. digitálny signál trvanie 10 µs. Na signál na vstupe TRIG snímač vyšle sériu ultrazvukových impulzov. Po prijatí odrazeného signálu generuje snímač na výstupe ECHO impulzný signál, ktorého trvanie je úmerné vzdialenosti od prekážky.

IR senzor. Z tohto snímača bude samozrejme načítaný a dekódovaný signál potrebný pre diaľkové ovládanie. TSOP18 sa líšia iba frekvenciou. Pre projekt je vybraný snímač VS1838B TSOP1838.

Projekt bol založený na myšlienke osvetlenia miestnosti akoukoľvek farbou, čo znamená, že budú potrebné 3 základné farby, z ktorých sa získa osvetlenie: červená, zelená, modrá. Preto bol zvolený model SMD 5050RGB LED, ktorý sa s úlohou dokonale vyrovná.

V závislosti od množstva napätia aplikovaného na každú LED zmenia intenzitu tohto osvetlenia. LED musí byť pripojená cez odpor, inak riskujeme, že zničíme nielen ju, ale aj Arduino. Rezistor je potrebný na obmedzenie prúdu na LED na prijateľnú hodnotu. Faktom je, že vnútorný odpor LED je veľmi nízky a ak nepoužijete rezistor, taký prúd bude prechádzať cez LED, ktorý jednoducho spáli LED aj ovládač.

LED pásy použité v projekte sú napájané 12V.

Vzhľadom na to, že napätie na LED v stave “vypnuté” je 6V a je potrebné regulovať napájanie, ktoré presahuje 5V, je potrebné obvod doplniť o tranzistory v kľúčovom režime. Moja voľba padla na model BC547c.

Pre tých, ktorí zabudli, krátko zvážte princíp fungovania npn tranzistor. Ak vôbec nepripojíte napätie, ale jednoducho vezmete a zatvoríte svorky základne a žiariča, aj keď nie na krátky čas, ale cez odpor niekoľkých ohmov, ukáže sa, že napätie medzi základňou a žiaričom je nulové. Preto neexistuje základný prúd. Tranzistor je uzavretý, kolektorový prúd je zanedbateľný, len rovnaký počiatočný prúd. V tomto prípade sa hovorí, že tranzistor je v stave odpojenia. Opačný stav sa nazýva saturácia: keď je tranzistor úplne otvorený, takže už nie je kam otvárať. Pri takom stupni otvorenia je odpor sekcie kolektor-emitor taký malý, že je jednoducho nemožné zapnúť tranzistor bez zaťaženia v kolektorovom obvode, okamžite vyhorí. V tomto prípade môže byť zvyškové napätie na kolektore iba 0,3 ... 0,5V.

Tieto dva stavy, saturácia a prerušenie, sa používajú, keď tranzistor pracuje v kľúčovom režime, ako normálny reléový kontakt. Hlavným významom tohto režimu je, že malý základný prúd riadi veľký kolektorový prúd, ktorý je niekoľko desiatok krát väčší ako základný prúd. Veľký kolektorový prúd sa získa vďaka externému zdroju energie, ale stále je zrejmé zosilnenie prúdu, ako sa hovorí. V našom prípade mikroobvod, ktorého prevádzkové napätie je 5V, obsahuje 3 pásiky s LED diódami pracujúcimi od 12V.

Vypočítajme prevádzkový režim kľúčovej kaskády. Je potrebné vypočítať hodnotu odporu v základnom obvode tak, aby LED svietili na plný výkon. Nevyhnutnou podmienkou pri výpočte je, že prúdový zisk je väčší alebo rovný podielu delenia maximálneho možného kolektorového prúdu minimálnym možným základným prúdom:

Preto môžu byť prúžky pre prevádzkové napätie 220 V a základný obvod môže byť ovládaný z mikroobvodu s napätím 5 V. Ak je tranzistor navrhnutý na prácu s týmto kolektorovým napätím, potom sa LED diódy rozsvietia bez problémov.
Úbytok napätia na prechode báza-emitor je 0,77V, za predpokladu, že prúd bázy je 5mA, kolektorový prúd je 0,1A.
Napätie na základnom rezistore bude:

Ohmov zákon:

Zo štandardnej série odporov vyberáme odpor 8,2 kOhm. Tým je výpočet dokončený.

Chcem vás upozorniť na jeden problém, s ktorým som sa stretol. Pri použití knižnice IRremote by Arduino pri úprave modrej farby viselo. Po dlhom a starostlivom hľadaní na internete sa ukázalo, že áno danej knižnice používa predvolený časovač 2 pre tento model Arduino. Časovače sa používajú na ovládanie PWM výstupov.

Časovač 0 (systémový čas, PWM 5 a 6);
časovač 1 (PWM 9 a 10);
Časovač 2 (PWM 3 a 11).

Spočiatku som na reguláciu modrej používal PWM 11. Preto buďte opatrní pri práci s PWM, časovačmi a knižnicami tretích strán, ktoré ich môžu využívať. Je zvláštne, že na domovskej stránke Na githube sa o tejto nuancii nič nepovedalo. Ak chcete, môžete odkomentovať riadok pomocou časovača 1 a komentovať 2.

Spojovacie prvky na doštičke vyzerajú takto:

Po testovaní na breadboarde začali fázy „Umiestňovanie prvkov na dosku“ a „Práca so spájkovačkou“. Po prvom testovaní hotovej dosky sa mi vkráda do hlavy myšlienka: niečo sa pokazilo. A tu začína pre mnohých známa fáza „Náročná práca s testerom“. Poruchy (niekoľko susedných kontaktov bolo omylom zaspájkovaných) sa však rýchlo odstránili a je tu dlho očakávaná škodoradostná LED kontrolka.

Ďalej, záležitosť bola len za telom. Pri tejto príležitosti bola vyrezaná preglejka s otvormi pre naše senzory. Zadný kryt bol vyrobený špeciálne odnímateľný, aby ste si mohli vychutnať pohľad zvnútra a na želanie niečo dokončiť alebo prerobiť. Má tiež 2 otvory na preprogramovanie dosky a napájania.

Puzdro bolo nalepené na dvojzložkové epoxidové lepidlo. Za zmienku stojí zvláštnosť tohto lepidla pre tých, ktorí sa s ním ešte nestretli. Tento tovar je dodávaný v dvoch samostatných nádobách, ktorých obsah sa zmieša, dôjde k okamžitej chemickej reakcii. Po zmiešaní musíte konať rýchlo, do 3-4 minút. Pre ďalšie použitie je potrebné namiešať novú porciu. Takže ak sa to pokúšate zopakovať, moja rada pre vás je miešať v malých dávkach a konať veľmi rýchlo, nebude veľa času na premýšľanie. Preto sa oplatí vopred zvážiť, ako a kam puzdro prilepiť. A to sa nedá urobiť na jedno posedenie.

Na upevnenie pásikov s LED diódami Horný kryt bola vložená trubica, cez ktorú dokonale prešli všetky drôty.

Keď vyvstala otázka s tienidlom, spomenul som si, ako som v detstve vyrábal remeslá z jednoduchej nite, lepidla a balóna, ktorý slúžil ako základ. Princíp tienidla bol rovnaký, ale ukázalo sa, že navíjanie mnohostenu je ťažšie ako gule. Vplyvom tlaku nití na konštrukciu sa začala smerom nahor zužovať a nite odpadávať. Naliehavo, s rukami v lepidle, bolo rozhodnuté posilniť štruktúru zhora. A potom prišlo na pomoc CD. Konečným výsledkom je toto nočné svetlo:

Čo chceš povedať na záver?

Čo by som mal v projekte zmeniť? Na napájanie signálu TRIG snímačov vzdialenosti by sa mohol použiť jeden výstup Arduino namiesto troch. Ešte by som zaobstaral otvor pre IR senzor (na ktorý som zabudol), ktorý je bohužiaľ skrytý v púzdre, z ktorého samozrejme nevie čítať signály z diaľkového ovládača. Kto však povedal, že nemôžete nič spájkovať a vŕtať?

Rád by som poznamenal, že to bol zaujímavý semester a skvelá príležitosť vyskúšať si niečo, čo nie je na papieri, vďaka čomu môžem pri položke „detský sen“ zaškrtnúť. A ak sa vám zdá, že vyskúšať niečo nové je ťažké a neviete, čo robiť skôr, nezúfajte. Mnoho ľudí má v hlave myšlienku: kde začať a ako sa to dá vôbec urobiť? V živote je veľa úloh, z ktorých sa môžete zmiasť, ale keď to skúsite, všimnete si, že so zábleskom v očiach dokážete hory prenášať, aj keď sa o to musíte trochu snažiť.

Svetelné senzory (osvetlenie), postavené na báze fotorezistorov, sa pomerne často používajú v skutočných arduino projektoch. Sú pomerne jednoduché, nie drahé, dajú sa ľahko nájsť a kúpiť v akomkoľvek internetovom obchode. Fotorezistor arduino umožňuje ovládať úroveň osvetlenia a reagovať na jeho zmenu. V tomto článku sa pozrieme na to, čo je to fotorezistor, ako na jeho základe funguje svetelný senzor, ako správne pripojiť senzor k Arduino doskám.

Fotorezistor, ako už názov napovedá, priamo súvisí s odpormi, ktoré sa často nachádzajú v takmer akomkoľvek elektronickom obvode. Hlavnou charakteristikou konvenčného odporu je hodnota jeho odporu. Od toho závisí napätie a prúd, pomocou rezistora nastavujeme požadované prevádzkové režimy ostatných komponentov. Hodnota odporu rezistora za rovnakých prevádzkových podmienok sa spravidla prakticky nemení.

Na rozdiel od bežného odporu, fotorezistor môže meniť svoj odpor v závislosti od úrovne okolitého svetla. To znamená, že v elektronický obvod parametre sa budú neustále meniť, v prvom rade nás zaujíma napätie dopadajúce na fotorezistor. Zafixovaním týchto zmien napätia na analógových kolíkoch arduina môžeme zmeniť logiku obvodu, čím vytvoríme zariadenia, ktoré sa prispôsobia vonkajším podmienkam.

Fotorezistory sú široko používané v širokej škále systémov. Najbežnejšou aplikáciou je pouličné osvetlenie. Ak na mesto padne noc alebo sa zamračí, svetlá sa automaticky rozsvietia. Z fotorezistora si môžete vyrobiť ekonomickú žiarovku pre domácnosť, ktorá sa nezapína podľa plánu, ale v závislosti od osvetlenia. Na základe svetelného senzora si môžete dokonca vyrobiť bezpečnostný systém, ktorý sa spustí ihneď po otvorení a rozsvietení uzavretej skrinky alebo trezoru. Ako vždy, rozsah akýchkoľvek arduino senzorov je obmedzený iba našou predstavivosťou.

Aké fotorezistory je možné zakúpiť v internetových obchodoch

Najpopulárnejšou a najdostupnejšou možnosťou snímača na trhu sú modely hromadnej výroby čínskych spoločností, klony produktov VT. Nie je vždy možné ísť na mizinu, kto a čo presne vyrába tento alebo ten dodávateľ, ale najjednoduchšia možnosť je celkom vhodná na to, aby ste začali pracovať s fotorezistormi.

Začínajúcemu arduinistovi možno odporučiť, aby si kúpil hotový fotografický modul, ktorý vyzerá takto:


Tento modul už má všetky potrebné prvky na jednoduché pripojenie fotorezistora k doske arduino. V niektorých moduloch je implementovaný komparačný obvod a k dispozícii je digitálny výstup a trimr na ovládanie.

Ruskému rádioamatérovi možno odporučiť, aby sa obrátil na ruský FR senzor. Komerčne dostupné FR1-3, FR1-4 atď. - vydané ešte v sovietskych časoch. Ale napriek tomu je FR1-3 presnejší detail. Z toho vyplýva rozdiel v cene.Za FR si pýtajú nie viac ako 400 rubľov. FR1-3 bude stáť viac ako tisíc rubľov za kus.

Označenie fotorezistora

Moderné označovanie modelov vyrábaných v Rusku je pomerne jednoduché. Prvé dve písmená sú PhotoResistor, čísla za pomlčkou označujú vývojové číslo. FR -765 - fotorezistor, vyvinutie 765. Zvyčajne označené priamo na tele dielu

Snímač VT má v schéme označovania rozsah odporu. Napríklad:

  • VT83N1 – 12-100kΩ (12K osvetlené, 100K tmavé)
  • VT93N2 - 48-500kOhm (48K - osvetlené, 100K - v tme).

Niekedy na objasnenie informácií o modeloch predajca poskytuje špeciálny dokument od výrobcu. Okrem parametrov práce je tam uvedená aj presnosť dielu. U všetkých modelov sa rozsah citlivosti nachádza vo viditeľnej časti spektra. Zberateľstvo svetelný senzor musíte pochopiť, že presnosť prevádzky je podmienený koncept. Dokonca aj pre modely rovnakého výrobcu, jedna šarža, jeden nákup, sa môže líšiť o 50% alebo viac.

Vo výrobe sú diely nastavené na vlnovú dĺžku od červeného po zelené svetlo. Zároveň väčšina „vidí“ a Infra červená radiácia. Obzvlášť presné detaily dokážu zachytiť aj ultrafialové svetlo.

Výhody a nevýhody snímača

Hlavnou nevýhodou fotorezistorov je ich citlivosť na spektrum. V závislosti od typu dopadajúceho svetla sa odpor môže meniť o niekoľko rádov. Nevýhody tiež zahŕňajú pomalá rychlosť reakcie na zmeny osvetlenia. Ak kontrolka bliká, snímač nestihne zareagovať. Ak je frekvencia zmien dosť vysoká, rezistor vo všeobecnosti prestane "vidieť", že sa osvetlenie mení.

Medzi výhody patrí jednoduchosť a dostupnosť. Priama zmena odporu v závislosti od dopadajúceho svetla vám umožňuje zjednodušiť elektrické schéma spojenia. Samotný fotorezistor je veľmi lacný, je súčasťou mnohých arduino súprav a dizajnérov, preto je dostupný takmer každému nováčikovi arduino.

Pripojenie fotorezistora k arduinu

V projektoch arduino Fotorezistor sa používa ako svetelný senzor. Po prijímaní informácií z nej môže doska zapínať alebo vypínať relé, spúšťať motory, odosielať správy. Prirodzene, v tomto prípade musíme snímač správne pripojiť.

Schéma pripojenia svetelného senzora k arduinu je pomerne jednoduchá. Ak použijeme fotorezistor, tak v schéme zapojenia je snímač implementovaný ako delič napätia. Jedno rameno sa mení z úrovne osvetlenia, druhé - dodáva napätie na analógový vstup. V čipe regulátora sa toto napätie prevádza na digitálne dáta cez ADC. Pretože Ak sa odpor snímača pri dopade svetla zníži, zníži sa aj hodnota napätia, ktoré naň dopadá.

V závislosti od toho, do ktorého ramena deliča umiestnime fotorezistor, bude na analógový vstup privedené buď zvýšené alebo znížené napätie. V prípade, že je jedna noha fotorezistora pripojená k zemi, potom maximálna hodnota napätia bude zodpovedať tme (odpor fotorezistora je maximálny, takmer všetko napätie na ňom klesne) a minimálna hodnota bude zodpovedať dobrému osvetlenie (odpor je blízky nule, napätie je minimálne). Ak pripojíme rameno fotorezistora k napájaniu, správanie bude opačné.

Samotná inštalácia dosky by nemala spôsobovať ťažkosti. Keďže fotorezistor nemá žiadnu polaritu, môžete ho pripojiť v ľubovoľnom smere, môžete ho prispájkovať na dosku, spojiť drôtmi pomocou dosky plošných spojov alebo použiť na pripojenie obyčajné klipy (krokodíly). Zdrojom energie v obvode je samotné arduino. fotorezistor je jednou nohou pripojený k zemi, druhý je pripojený k ADC dosky (v našom príklade - AO). Na tú istú nohu pripojíme odpor 10 kΩ. Prirodzene, môžete pripojiť fotorezistor nielen k analógovému kolíku A0, ale aj k akémukoľvek inému.

Niekoľko slov o prídavnom rezistore 10 K. V našom obvode má dve funkcie: obmedziť prúd v obvode a vytvoriť správne napätie v obvode s deličom. Obmedzenie prúdu je potrebné v situácii, keď plne osvetlený fotorezistor prudko znižuje svoj odpor. A tvarovanie napätia je pre predvídateľné hodnoty na analógovom porte. V skutočnosti odpor 1K stačí na bežnú prevádzku s našimi fotorezistormi.

Zmenou hodnoty odporu môžeme „posunúť“ úroveň citlivosti na „tmavú“ a „svetlú“ stranu. Takže 10 K dá rýchle prepínanie príchod sveta. V prípade 1K svetelný senzor presnejšie rozpozná vysokú úroveň osvetlenia.

Ak použijete hotový modul svetelného senzora, potom bude pripojenie ešte jednoduchšie. Výstup modulu VCC pripojíme na 5V konektor na doske, GND - na zem. Zvyšné kolíky sú pripojené ku konektorom arduino.

Ak má doska digitálny výstup, pošleme ho na digitálne piny. Ak analógový, potom analógový. V prvom prípade dostaneme spúšťací signál - prekročenie úrovne osvetlenia (prah spúšťania je možné nastaviť pomocou ladiaceho odporu). Z analógových kolíkov môžeme získať hodnotu napätia úmernú skutočnej úrovni osvetlenia.

Príklad náčrtu svetelného senzora na fotorezistore

Pripojili sme obvod fotorezistora k arduinu, pričom sme sa uistili, že všetko bolo vykonané správne. Teraz zostáva naprogramovať ovládač.

Napísanie náčrtu pre svetelný senzor je celkom jednoduché. Potrebujeme iba odobrať aktuálnu hodnotu napätia z analógového kolíka, ku ktorému je pripojený snímač. Robí sa to pomocou funkcie analogRead() známej nám všetkým. Potom môžeme vykonať niektoré akcie v závislosti od úrovne osvetlenia.

Napíšme náčrt pre svetelný senzor, ktorý zapína alebo vypína LED pripojenú nasledovne.

Algoritmus práce je nasledujúci:

  • Určite úroveň signálu z analógového kolíka.
  • Porovnajte úroveň s prahovou hodnotou. Maximálna hodnota bude zodpovedať tme, minimálna - maximálnemu osvetleniu. Zvolíme prahovú hodnotu rovnajúcu sa 300.
  • Ak je úroveň nižšia ako prahová hodnota - tmavá, musíte zapnúť LED.
  • V opačnom prípade vypnite 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); } }

Zakrytím fotorezistora (rukami alebo nepriehľadným predmetom) môžeme pozorovať zapnutie a vypnutie LED. Zmenou parametra prahu v kóde môžeme prinútiť žiarovku zapnúť / vypnúť, keď rôzne úrovne osvetlenie.

Pri montáži sa snažte umiestniť fotorezistor a LED čo najďalej od seba, aby na svetelný senzor dopadalo menej svetla z jasnej LED.

Senzor okolitého svetla a plynulá zmena jasu podsvietenia

Projekt môžete upraviť tak, aby sa jas LED menil v závislosti od úrovne osvetlenia. Do algoritmu pridáme nasledujúce zmeny:

  • Jas žiarovky zmeníme pomocou PWM, odosielaním hodnôt od 0 do 255 na kolík s LED pomocou analógWrite ().
  • Na prevod digitálnej hodnoty úrovne osvetlenia zo svetelného senzora (od 0 do 1023) do rozsahu PWM jasu LED (od 0 do 255) použijeme funkciu map().

Príklad náčrtu:

#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); // Prevod prijatej hodnoty na úroveň signálu PWM. Čím menšia je hodnota svetla, tým menej energie potrebujeme dodať LED cez PWM. analogWrite(PIN_LED, ledPower ); // zmena jasu)

V prípade iného spôsobu pripojenia, pri ktorom je signál z analógového portu úmerný stupňu osvetlenia, bude potrebné dodatočne „obrátiť“ hodnotu odčítaním od maxima:

int val = 1023 - analogRead(PIN_PHOTO_RESISTOR);

Schéma svetelného senzora na fotorezistore a relé

Príklady náčrtu pre prácu s relé sú uvedené v článku o programovaní relé v arduine. V tomto prípade nemusíme robiť zložité gestá: po určení „tmy“ jednoducho zapneme relé a na jeho kolík aplikujeme príslušnú hodnotu.

#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); } }

Záver

Projekty využívajúce svetelný senzor na báze fotorezistora sú pomerne jednoduché a efektívne. Môžete realizovať veľa zaujímavých projektov, pričom náklady na vybavenie nebudú vysoké. Fotorezistor je zapojený podľa obvodu deliča napätia s prídavným odporom. Senzor je pripojený k analógovému portu na meranie rôznych úrovní osvetlenia alebo k digitálnemu, ak je pre nás dôležitá iba skutočnosť tmy. V náčrte jednoducho načítame údaje z analógového (alebo digitálneho) portu a rozhodneme sa, ako reagovať na zmeny. Dúfajme, že teraz sa takéto jednoduché "oči" objavia vo vašich projektoch.

Pre náš ďalší projekt budeme používať fotorezistor. A zvážime implementáciu nočného svetla v spálni, ktoré sa automaticky zapne, keď je tma a vypne, keď sa rozsvieti.

Odpor fotorezistora závisí od svetla, ktoré naň dopadá. Použitie fotorezistora v spojení s konvenčný odpor 4,7 kOhm dostaneme delič napätia, v ktorom sa mení napätie prechádzajúce cez fotorezistor v závislosti od úrovne osvetlenia.

Napätie z deliča, aplikujeme na vstup Arduino ADC. Tam porovnáme prijatú hodnotu s určitým prahom a zapneme alebo vypneme lampu.

Schéma zapojenia deliča je uvedená nižšie. Keď sa osvetlenie zvýši, odpor fotorezistora klesne a podľa toho sa zvýši napätie na výstupe deliča (a vstupe ADC). Keď svetlo zhasne, opak je pravdou.

Nižšie uvedená fotografia ukazuje zostavený obvod na doštičku. Napätie 0V a 5V je prevzaté z Arduina. Pin A0 sa používa ako vstup ADC.

Náčrt Arduina je zobrazený nižšie. V tomto návode jednoducho zapneme a vypneme LED, ktorá je zabudovaná do dosky Arduino. Jasnejšie LED, môžete pripojiť na kolík 13 (cez ~220 ohm odpor). Ak pripojíte výkonnejšiu záťaž, ako je napríklad žiarovka, mala by byť pripojená cez relé alebo tyristor.

V programovom kóde sú komentované sekcie, ktoré slúžia na ladenie. Bude možné ovládať hodnotu ADC (od 0 do 1024). Taktiež je potrebné zmeniť hodnotu 500 v kóde (zapnutie a vypnutie prahu) na hodnotu, ktorú si empiricky zvolíte zmenou osvetlenia.

/* ** Nočné svetlo ** ** www.hobbytronics.co.uk */ int sensorPin = A0; // nastavenie vstupnej nohy pre ADC unsigned int sensorValue = 0; // digitálna hodnota fotorezistor void setup() ( pinMode(13, OUTPUT); Serial.begin(9600); // spustenie sériového výstupu dát (na testovanie) ) void loop() ( sensorValue = analogRead(sensorPin); // načítanie hodnoty z fotorezistora, ak (sensorValue<500) digitalWrite(13, HIGH); // включаем else digitalWrite(13, LOW); // выключаем // Для отладки раскомментируйте нижеследующие строки //Serial.print(sensorValue, DEC); // вывод данных с фоторезистора (0-1024) //Serial.println(""); // возврат каретки //delay(500); }