Arduino: DIY – Smart Switch (2) Nastavljamo sa izradom pametnog prekidača Sledeće na redu je touch panel. Mi smo se odlučili za staklo, a može se upotrebiti pleksiglas, šperploča ili neki sličan neprovodljivi materijal. Staklo koje smo mi uzeli, bojeno je belo sa jedne strane i mi smo oštrim predmetom ocrtali četiri kruga kako bi se sa druge strane videla mesta koja treba dodirnuti. Na bojenu stranu smo postavili četiri HTTM touch modula koje smo pričvrstili pištoljem za plastiku. Pre toga smo spojili tačke na džamperu iza i postavili modul u HELD mod. Na ovaj način modul će se ponašati kao taster i prilikom dodira će ka NodeMCU poslati logičku jedinicu, ali je neće zadržati. Ovo je potrebno zbog aplikacije za mobilne uređaje koju ćemo upotrebiti, ali je ujedno i mali drawback. Naime, znamo da touch modul svetli kada se dodirne i kada je u latch modu, LED ostaje da svetli i na taj način vidimo trenutno stanje modula. U held modu modul sija samo dok dodir postoji, dovoljno da pošaljemo HIGH i gasi se sa prestankom dodira. Na ovaj način ne možemo znati da li je relej „upaljen”, sem da pogledamo sijalicu. U pitanju je nužno zlo i problem se može rešiti ako ste vični radu sa lemilicom. Signalna LED sa relej modula se može izmestiti žicama na stakleni touch panel. NodeMCU nema dovoljan broj pinova da se ovo reši elegantnije, ESP32 bi bio možda bolje rešenje.All those wires Povezivanje ide prema fritzing šemi. Na šemi ćete primetiti da smo malo „prošarali” povezivanje žicama, dok smo čak četvrti touch modul povezali na analogni pin. Razlog tome je što NodeMCU ima dovoljan broj digitalnih pinova, ali se neki mogu nazvati specijalnim i nisu pogodni za ono što je nama potrebno. Recimo, GPIO2 (D4) je povezan sa builtin LED (ESP modul) i prilikom butovanja ploče će trepnuti nekoliko puta. Ako njega iskoristimo, doći ćemo u situaciju da nam relej, a samim tim i sijalica trepću zajedno. Taj light show nam ne treba. Sa NodeMCU vodimo linije GND i 3,3 volta na hedere za razvođenje dalje. Sa ovih hedera vučemo žice ka VCC i GND pinovima touch modula. Druga linija 3,3 volta sa ploče ide na VCC relej modula. OUT sa touch modula idu na GPIO5, GPIO16, GPIO15 i A0. GPIO pinove 13, 12, 14 i 4 povezujemo sa IN 1-4 modulom releja. Džamper na relejima se uklanja i povezujemo ga na napajanje preko GND i JD-VCC.All those clouds Za povezivanje sa mobilnim uređajem upotrebili smo aplikaciju Blynk. Pre prelaska na skeč treba da dobijemo Auth Token nakon što napravimo nov projekat u okviru Blynk aplikacije. Nju možete preuzeti sa Google Play i odmah pravimo nalog, što je bitno. U gornjem baru idemo na plus (+) i tu pravimo novi projekat kojem dajemo ime i biramo ploču, pri čemu je naša podržana, a možemo da vidimo da neke koje smo pominjali u prethodnom tekstu, nisu. Tu biramo i način konekcije i kreiramo projekat, a Blynk će nam na mejl odmah poslati Token. Dodirom na polje projekta otvaramo vidžet box gde dodajemo četiri dugmeta. Unutar aplikacije postoji sistem vrednosti (energy balance) koji se za razuman novac može dopuniti. U startu dobijamo 2000 „munja”, pri čemu dugmad nose 800. Pri dodiru na svako dugme otvara se settings gde dajemo naziv dugmetu, na koji pin će se vezati, koju početnu vrednost će imati i slično. Mi u prvom polju ne uzimamo za output Digital, već Virtual i svakom dugmetu dodeljujemo V1-4, dok mode ostaje na SWITCH, a stanje ide sa logičke 1 na 0. Kada smo sve podesili, idemo na play u gornjem desnom uglu i naša aplikacija je spremna. Ostaje još samo skeč.Damn semicolon Na adresi examples.blynk.cc postoje razni primeri koje dobijamo odabirom ploče i načinom konekcije. Biramo NodeMCU za Board i ESP8266WiFi za konekciju, trebalo bi da smo do sada token dobili na mejl. Pod primerima skrolujemo do kraja i tražimo primer Sync Physical Button. Ovaj skeč je samo referenca skeča koji smo mi prepravili u meri za ovo što nama treba i naš skeč možete preuzeti sa adrese goo.gl/rRvJdf, nakon čega ih možete uporediti.U startu definišemo Serial preko koga će Blynk imati komunikaciju, a zatim biblioteke ESP8266WiFi o kojoj smo više puta pričali i na kraju BlynkSimpleEsp8266 koju preuzimamo sa zvanične stranice Blynka. Link ka njoj možemo naći u zaglavlju pomenutog test-skeča. Dalje unosimo token i podatke za povezivanje sa našom lokalnom mrežom, zatim definišemo pinove za povezivanje sa relejima i touch modulima i postavljamo im kao početno stanje LOW (stanje logičke nule). Sa BLYNK_CONNECTED() sa svakom konekcijom proveravamo stanje virtuelnih pinova (V1-4) na serveru. Sa BLYNK_WRITE() svakim dodirom na dugme u okviru aplikacije menjamo stanje vezano za svaki pin releja ponaosob preko virtuelnog pina. Funkcijom checkPhysicalButton() menjamo stanje u zavisnosti od toga da li postoji dodir na touch panelu. U okviru funkcije upoređujemo rlyState ploče sa serverom i po potrebi menjamo na serveru. U vezi sa četvrtim touch-modulom koji smo povezali na analogni pin, „simulirali” smo digitalni tako što smo svaku vrednost preko 300 predstavili kao dodir na panelu i promenili stanje po dodiru. U setup funkciji smo pokrenuli Serial i Blynk, postavili rlyPin kao OUTPUT, a btnPin kao INPUT, dok smo rlyPin digitalno postavili kao LOW. Zašto ne HIGH kako bi i trebalo? Zato što je logika skeča pisana za paljenje LED, a ne releja i za LED ide HIGH ako želimo da je upalimo. Sa relej pinom na HIGH u setup funkciji smo imali problem sa Blynk aplikacijom koji se ogledao u tome da nam se po puštanju napajanja i inicijalizaciji sistema odmah popale sve sijalice, što smo „ispeglali” u funkciji checkPhysicalButton(). Poslednje je postavljanje tajmera koji će funkciju Blynk zvati svakih 100 milisekundi. U loop funkciji pozivamo Blynk i timer.Ako smo sve povezali kako treba i nijedan semicolon (;) nije preskočen, trebalo bi da dodirom na stakleni krug tač panela, a samim tim i HTTM modul iza, pošaljemo digitalnu jedinicu NodeMCU-u. Ovaj bi trebao da preko releja pusti 220V ka sijalici i promeni stanje, kako unutar skeča, tako i na serveru, a u okviru aplikacije trebalo bi da dobijemo da nam je to dugme „ON”. Ponovnim dodirom na taj isti tač-modul trebalo bi da to isto svetlo ugasimo i izmenjamo stanje svuda. Isto bi trebalo da se postigne i dodirom na dugme u okviru aplikacije. Dejan PETROVIĆ | | |