[ bandovicvladimir @ 11.10.2016. 14:33 ] @
Ideja je da se ostvari komunikacija između mikrokontrolera (arduino) sa jedne strane, i kotla odnosno njegovog fabričkog mikrokontrolera sa druge strane, a sve u cilju praćenja vitalnih parametara u toku rada kao i zbog samog upravljanja kotlom (paljenje, gašenje, regulacija temperature itd...). U nekom od narednih postova ću ostaviti kompletnu specifikaciju komponenata da biste u samogradnji mogli da realizujete ovaj vid upravljanja kotlom pomoću telefona. U samom kotlu je ugrađena upravljačka ploča italijanskog proizvođača Micronova (model i023). Na njoj se nalazi konektor CN13 koji je namenjen za povezivanje servisnog instrumenta koji se koristi za očitavanje i upisivanje parametara rada kotla. Zamisao je da arduino simulira rad ovog servisnog instrumenta, pa da se na taj način očitavaju i upisuju željeni parametri rada. Glavna ploča "priča" sa instrumentom posredstvom (TTL 5V) serijske komunikacije (baud rate 1200, 8 data bits, 2 stop bits, no parity, no flow control) s tim da je tip realizacije half-duplex što znači da se ista žica koristi i za slanje i za primanje (TxRx). Da bismo razdvojili poruke koje kotao šalje od onih koje mi šaljemo ka kotlu, neophodno je napraviti kolo koje "prevodi" komunikaciju sa jedne žice na strandardnu gde imamo posebnu žicu za slanje a posebnu za primanje. Pre nego što mnogo dublje uđem u problematiku oko uspostavljanja komunikacije između arduina s jedne strane i fabričkog mikrokontrolera u kotlu s druge, najpre bih se osvrnuo na to kako će da izgleda aplikacija pomoću koje će se obavljati interakcija sa kotlom, kao i koje će sve opcije biti dostupne krajnjem korisniku. Sasvim slučajno, pre nešto više od godinu dana sam saznao za platformu Blynk (http://www.blynk.cc/). Ovaj servis se sastoji iz tri komponente. Prva komponenta su biblioteke koje se uključuju u projekat prilikom programiranja našeg mikrokontrolera. Druga komponenta je klijentska aplikacija koja se skida sa play/app store-a u zavisnosti da li imate android ili iOS. I treća komponenta je serverska aplikacija koja uvek mora biti dostupna preko web-a i koja je praktično spona između klijentske aplikacije na vašem telefonu/tabletu i mikrokontrolera koji "priča" sa kotlom. Obzirom da naš mikrokontroler mora da komunicira sa serverom moramo mu omogućiti internet vezu. Da li će to biti žično povezivanje (ethernet), bežično (wifi) ili posredstvom mobilne mreže (gsm/gprs) to je stvar ličnog izbora. Smatrao sam da je wifi povezivanje najkomfornije za implementaciju. U odnosu na ethernet, kod koga je neophodno dovođenje mrežnog UTP kabla od rutera do kotla (osim ukoliko se ne koristi neko od rešenja za umrežavanje putem strujne instalacije), kod wifi povezivanja nema kablova pa bi bez ikakvog dodatnog angažovanja sve trebalo da funkcioniše. Prve eksperimente sam radio sa mikrokontrolerom koji ima fabrički wifi modul (NodeMCU koji je baziran na ESP8266), i nisam bio zadovoljan stabilnšću veze. Iako je signal gotovo uvek bio odličan, relativno često sam imao pucanje veze tako da sam ubrzo digao ruke od wifi povezivanja i prešao na žičnu vezu - ethernet. Zbog veće količine raspoložive programske memorije odlučio sam se da osnova bude Arduino Mega 2560 sa W5100 Ethernet shield-om. Crvenom bojom na slici je obeleženo mesto na koje se montira pločica sa propratnim elementima (1wire/2wire intefejs, priključne stezaljke za temperaturne sonde...) koja je trenutno u fazi izrade. Kada instalirate Blynk aplikaciju na svom telefonu, ukoliko ste developer, možete da besplatno registrujete nalog i da onda kreirate projekte. Aplikacija ima dva režima (edit mod i play mod). U edit modu, vi praktično kreirate interfejs aplikacije - dodajete dugmiće, slajdere, pokazivače vrednosti, virtualne terminale itd.. dok u play modu aplikacija radi ono što ste programski definisali da radi. Ono što je zanimljivo je da kada recimo kreirate projekat, možete da omogućite ostalim ukućanima da i oni učitaju vaš projekat. Za ovo čak ne moraju da budu registrovani, nego je dovoljno da iz aplikacije skeniraju bar kod koji im stigne na mejl kada vi odlučite da im omogućite pristup. Na ovaj način oni imaju potpuno ravnopravnu kontrolu (nad grejanjem u našem slučaju) ali samo vi kao autor možete da menjate sam projekat. Oni mogu da budu samo korisnici. :) Inicijalna zamisao, kada sam počeo da razrađujem ideju praćenja i upravljanja kotlom, je bila da omogućim sebi da upalim i ugasim kotao, promenim zadatu temperaturu vode i da dobijem neki vid obaveštenja ukoliko se desi neka greška (recimo upali se alarm "No pellet" ili tome slično). Kako sam vremenom sve više parametara uspevao da "mapiram" tako su se i želje za ostalim funkcionalnostima javljale, pa sam onda dodao praćenje režima rada, pritiska vode u instalaciji, temperature izduvnih gasova, očitavanje poruka ispisanih na displeju kotla a kasnije i dodavanje spoljnih sondi za merenje temperature u kući, u kotlarnici kao i spoljne temperature. Kasnije sam uspeo da "mapiram" vrednosti za hrono mod koje bi omogućile lakše podešavanje programiranog paljenja i gašenja ali sam odustao od implementacije jer fabričko rešenje ima falinke o kojima sam pisao u jednom od prethodnih postova (ukoliko nema struje u vreme kada je kotao programiran da se upali, nakon što dođe struja on se neće upaliti iako je unutar intervala kada bi grejanje trebalo da radi) pa sam na kraju odlučio da u potpunosti isključim fabrički hrono mod i da programirano paljenje i gašenje ide sa arduina. Mogućnosti su neograničene. Moguće je u bunker za pelet postaviti infracrveni senzor za merenje udaljenosti pa na taj način pratiti nivo peleta u bunkeru... Konačno, "mapirao" sam sve parametre iz sekcije "Factory Settings" ali sam je stavio na dno liste prioriteta jer zahteva izuzetno mnogo pisanja koda da bi bilo moguće sa telefona menjati ove postavke a ako ćemo iskreno ovi parametri ne bi ni trebalo da se menjaju, pa je jednostavnije ako baš nešto treba promeniti odraditi to na samom kotlu. |