Browse Tag: Arduino

IoT u Petnici

Na jesenjem seminaru računarstva u Petnici, deo pažnje je bio posvećen Internet of Things (IoT) tehnologijama gde su polaznici slušali predavanja na tu temu, ali su mogli i da probaju da kontrolišu jedan model takvog sistema. Deo predavanja je bio posvećen bezbednosti, odnosno rizicima koje IoT tehnologije donose i dešavanjima čiji smo bili svedoci u poslednjih mesec dana.

Pomenuti model je imitacija pametne kuće koja je opremljena senzorima i uređajima koji se mogu udaljeno kontrolisati. Kako je ovo bila prva verzija kuće, model nije imao zavidan dizajn, ali je bio funkcionalan i služio je svrsi 🙂

img_20161120_112735-1

Od senzora/uređaja na/u kući su se našli zvučnik (piezo buzzer), LED sijalice, prozor povezan na micro servo motor, uređaj za ventilaciju/hlađenje (ventilator), uređaj za grejanje (grejač u kombinaciji sa ventilatorom), kao i senzori za merenje vlage, unutrašnje i spoljašnje temperature i temperature uređaja za grejanje. Sve ove komponente su povezane na Arduino Mega 2560, koji preko Ethernet shield-a komunicira sa serverom (koji predstavlja cloud) odakle dobija komande. U normalnim uslovima, kontrola svih uređaja je prepuštena (u ovom slučaju) polaznicima koji šalju komande na server. Izuzetak je uređaj za grejanje, koji je zaštićen od pregrevanja, tako da u slučaju kada dostigne kritičnu temperaturu, kontrolu nad kućom preuzima Arduino i aktivira proceduru hlađenja.

untitled-diagram

Pored kuće, razvijen je i pomenuti server koji predstavlja posrednika u komunikaciji između polaznika i kuće, ali i koji održava konekciju prema kući i pamti stanja u kojim se kuća nalazi. Server takođe služi i kao neki vid zaštite od ne autorizovane kontrole kuće, kao i zaštita od učestalih slanja komandi. Inače, server je namerno razvijen da ima “rupe” i da omogući polaznicima da probaju da preuzmu kontrolu nad kućom kada to nije omogućeno podešavanjima. Uz ovaj server, razvijen je i server sa korisničkim web interfejsom gde se iz browsera mogu očitavati vrednosti temperature ali i kontrolisati uređaji.

kuca

Polaznici na seminaru su imali niz zadataka:

  • kontrolisanje kuće iz web interfejsa radi održavanja date temperature, ali i izbegavanje pregrevanja,
  • uspostava konekcije sa glavnim serverom i slanje direktnih komandi pod ograničenim privilegijama
  • takmičenje gde dva tima pokušavaju da održe temperaturu koja im je zadata (npr: tim1=27C , tim2=31C),
  • zadatak sličan prethodnom, samo je ovog puta potrebno napisati skriptu koja to sama radi,
  • sprečavanje pregrevanja u situaciji gde je dozvoljena ograničena kontrola kuće,
  • preuzimanje potpune kontrole nad serverom i dobijanje svih privilegija,
  • preuzimanje konekcije između kuće i glavnog servea u cilju sprečavanja/izazivanja pregrevanja

 

ESP8266 – Arduino wireless modul

Ovo je možda moj najkraći blog. Uglavnom, oni koji se zanimate sa Arduinom – potražite ovaj modul! Nema potrebe da pišem bilo šta o njemu, pošto je internet prepun (da ne kažem da je internet prso zbog ovog) tutorijala: šta su drugi ljudi uradili, napravili, šta sve može, koliki mu je domet itd. Tako da ono.. Samo napred. Dx ili aliexpress ili nešto treće i pravite svoj Internet of things.

Update:

Evo jedan hint, šta da ne radite kada je u pitanju ovaj (ili sličan) modul.

Pošto je njegovo napajanje 3.3V, potrazio sam regulatore napona na inernetu i napravio sam jedan koji koristi kolo LM317. To je zaprav bila jako loša ideja i sada sam “kraći” za jedan modul 😛

Šta se zapravo dogodilo?

Regulator na izlazu daje napon koji zavisi od ulaznog napona i otpornosti podešene na potenciometru. Prvo, ulazni napon mi nije bio stabilan. Neki ispravljač (ne znam ni sam odakle mi ga) koji daje 18V DC na izlazu. Kao.. Zatim, potenciometar koji sam koristio je neko đubre koje prilično varira sa otpornošću i ako ga niko ne dira. I kada se te dve stvari iskombinuju, na izlazu se dobije 3.8V iako je inicijalno sve bilo podešeno da na izlazu bude 3.3V. I onda je izašao onaj sakriveni beli dim iz modula. Jbg…

Nakon malo guglanja, našao sam da neki ljudi koriste kolo LD33V, koje na izlazu daje stabilnih 3.3V. Tako da eto… Krenite sa tim.

IOIO RC Boat

Prošlo je već dve godine kako moj IOIO u principu skuplja prašinu. Koristio sam ga za neke projekte tu i tamo, ali je IOIO većinu vremena proveo u kutiji.

Kako bih to promenio, odlučio sam da ga upotrebim u svom vikend projektu. Napravio sam brodić na upravljanje i tako IOIO-u dao poslednju ulogu, gde će dočekati svoju smrt zajedno sa brodićem (dok ga voda ne odnese ili ne potone).

Uglavnom, u nastavku slede fotke kako to izgleda, a video kako to radi u praksi (ne u kadi)… pa video verovatno neće biti objavljen, pošto je na prvom testu na otvorenom brodić stao na sred jezera. I to onog jezera u Dunavskom parku. Da onom malom. I dok smo dočekali da se brodić dogega do obale na talasima koje su pravile patke sa druge strane, pao je mrak. Kasnije nismo uspeli da napravimo kvalitetan snimak. Tako da, žao mi je 😛

Priprema
Priprema

YT (test #1): http://youtu.be/jt8r1F5e2ew

Prvi test
Drugi test

YT: http://youtu.be/rxfi8hiaGK4

Inside
Inside
Gotov!
Gotov!

Update:
Nakon prve ne tako uspešne vožnje, odlučio sam da obezbedim veći domet za updavljanje brodićem, tako da je brodić podvrgnut malim izmenama. Bluetooth je dobio externu antenicu koja bi trebala da obezbedi dovoljan domet za vožnju brodića po jezeru, a kako će to uspeti u praksi – videćemo.

Stručna praksa na Tajlandu – Projekat

U ovom blogu ću opisati šta sam radio na praksi, dok informacije o tome kako da i vi tamo stignete možete naći ovde.

Kada sam stigao na Prince of Songkla University u HatYai-u, dobio sam mentora sa kojim je trebalo da se dogovorim i da radim projekat. Dogovor je bio da postojeći quadcopter opremim senzorima za merenje udaljenosti i da ga isprogramiram da izbegava prepreke. Do završetka projekta ovaj plan se izmenio, a evo šta je sve urađeno:

  1. Komunikacija sa quadcopterom je promenjena sa standardne RC veze na serijsku vezu. Upravljački podaci se šalju poštovanjem postojećeg protokola koji definiše MultiWii softver;
  2. Upravljanje se vrši putem džojstika (RC simulator) nakačenog na PC;
  3. Radi postizanja većeg dometa bluetooth je zamenjen XBee modulima;
  4. Instalacija ultrasoničnog senzora (senzor za merenje udaljenosti baziran na ultrazvuku, SEN136B5B):
      • Prvi pokušaj je bio direktno priključivanje senzora na MultiWii i korišćenje koda iz dokumentacije za vršenje merenja. Nedostatak ovakvog načina merenja je dugačak odziv senzora, što je ometalo normalan rad MultiWii-a, zbog korišćenja blokirajućih operacija očitavanja vrednosti senzora. To je dalje dovodilo do nestabilnosti celog quadcoptera;
      • Drugi pokušaj je bio pisanje drajvera za MultiWii, koji je bio zasnovan na prekidima. Nažalost, sve linije za prekide na mikroprocesoru na MultiWii pločici (ATmega168) su već bile iskorišćene, što je onemogućilo implementaciju prethodno razvijenog drajvera;
      • Treći i uspešni pokušaj (treća sreća ^.^) je bio uvođenje mikrokontrolera između MultiWii-a i senzora, koji bi vršio merenje, a na analognom izlazu prema MultiWii-u, prikazivao rezultat merenja. U tu svrhu je korišćen attiny25 u kombinaciji sa low-pass filterom. Na MultiWii-u, rezultat se merio funkcijom analogRead() (vreme izvršavanja 0,0001s, a omogućava i dodatnu optimizaciju);
  5. Da bi se odredio uticaj jačine zadatog „gasa“ na potisak quadcoptera, urađena su merenja sa dinamometrom. Nakon merenja, dobijena je zavisnost potiska od jačine „gasa“, što je kasnije korišćeno u simulaciji i proračunima;
  6. Poslednji korak je bio konfigurisanje PID kontrolera, tako da quadcopter bude u mogućnosti da se postavi na željenu visinu. Ultrazvučni senzor meri trenutnu visinu quadcoptera, dok korisnik podešava željenu visinu korišćenjem regulatora gasa na džojstiku. Korišćenjem rezultata merenja iz prethodnog koraka, simulacijom su određeni parametri PID kontrolera koji kontroliše gas na osnovu trenutne i željene visine.
Quad
Quad

IOIO vs. Arduino

Taman kada sam skupio vremena da se poigram sa IOIO-m (Šta je IOIO?), drugar mi je ostavio njegov Arduino da i njega probam. Tako da sam dosta primera odradio paralelno na IOIO-u i Arduinu, pa evo kakvog sam mišljenja kada se radi o prednostima i manama ovih uređaja.

IOIO

Nova verzija IOIO-a omogućuje povezivanje i upravljanje preko Android telefona ili preko računara. Povezivanje se vrši pomoću kabla ili Bluetootha.  Aplikacija za upravljanje IOIO-m se izvršava na PC-u ili Androidu. Kada je IOIO povezan na Android uređaj, aplikacija pored kontrole IOIO pinova može da koristi i usluge koje pruža Android uređaj (WiFi, slanje SMS poruka, očitavanje vrednosti senzora…). Za sada se aplikacije za IOIO pišu u Javi. Iz ličnog iskustva, nije trivijalno podesiti Eclipse okruženje za programiranje Android aplikacija, te potom ubaciti biblioteke za rad sa IOIO-om. Cena je oko 40$, ali trenutno nema gde da se naruči u Srbiji.

Arduino

Postoji više verzija Arduina, ali kao neki početni model, preporučuje se Arduino UNO. Program pisan za Arduino se izvršava na samom Arduinu, pa nije potreban računar/Android sa strane kao što je slučaj kod IOIO-a. Kontrolu toka programa sa računara je moguće vršiti putem serijskog porta. Sa druge strane, senzori koji se po defaultu nalaze u Android uređajima, ovde se dodatno kupuju i kače na ploču. To mogu biti jednostavni senzori (merač temperature, vlage, foto osetljiv senzor…) ili nešto složeniji (Ethernet, WiFi, SD card reader…) koji dolaze u vidu Arduino Shield-ova. Okruženje u kojem se programira Arduino se može preuzeti sa interneta, veoma je jednostavno i dolazi uz dosta primera. Cena za Arduino UNO je nešto jača od 10e i može se naručiti na sajtu dx.com. Arduino je moguće kupiti i kod domaćih distributera, ali je cena znatno viša.

Zaključak

Ukoliko ste početnik, preporučio bih vam Arduino. Sa gomilom primera koje dobijate uz okruženje, lako ćete savladati neke osnovne stvari (upravljanje servo motorom, dimovanje LED diode, očitavanje ulaza…). Sve to, kasnije možete lako primeniti na IOIO ukoliko za to budete imali potrebe 🙂