Jedan interesantan projekat, vjerovatno ilegalan, pa je to jedan od razloga zašto ga vjerovatno neću nikada ni završiti. Sastoji se od dvije aplikacije, klijenta (web aplikacija gdje se nalazi interfejs za upravljanje drugim) računarom i servera (desktop aplikacije pisane u C# koja izvršava sve naredbe na žrtvinom računaru). Ovo znači da postoji web aplikacije, gdje se prijavite (sa bilo kog uređaja) i imate pristup drugom računaru čiji korisnik ne zna da ga neko prati. Popularan naziv ove vrste programa je RAT, ali se uglavnom realizuje sa dvije desktop aplikacije i koristi se Socket što zahtjeva port-forward.
Inače, ovo je moj prvi projekat sa Yii2, započet kada je Yii2 bio u ranoj Aplha fazi razvoja. Yii2 posjeduje sve ono što je falilo Yii 1.1. Sada je sve namespaceovano, posjeduje composer, integrisan je Bootstrap i još mnogo stvari koje ubrzavaju razvoj.
Način rada SpesSpy je prilično teško objasniti tako da ću se potruditi da nekad napravim sliku. Osnova je da klijent ostavlja kod koji je potrebno izvršiti, a zatim server preuzima taj kod, kompajlira i izvršava. Ovakav način čini da server bude "lakši" od 7KB.
Ovo nije moj prvi program ove vrste, pa bi se moglo reći da imam iskustva sa pisanjem ovakvih programa. Prije nekoliko godina napravio sam LokiRAT.
Inače, ovo je moj prvi projekat sa Yii2, započet kada je Yii2 bio u ranoj Aplha fazi razvoja. Yii2 posjeduje sve ono što je falilo Yii 1.1. Sada je sve namespaceovano, posjeduje composer, integrisan je Bootstrap i još mnogo stvari koje ubrzavaju razvoj.
Način rada SpesSpy je prilično teško objasniti tako da ću se potruditi da nekad napravim sliku. Osnova je da klijent ostavlja kod koji je potrebno izvršiti, a zatim server preuzima taj kod, kompajlira i izvršava. Ovakav način čini da server bude "lakši" od 7KB.
Ovo nije moj prvi program ove vrste, pa bi se moglo reći da imam iskustva sa pisanjem ovakvih programa. Prije nekoliko godina napravio sam LokiRAT.
Imao sam priliku da prebiram zrna kokičara, razdvajam loše od dobrih, ručno, zrno po zrno. Izuzetno dosadan i težak posao, pa sam se odmah bacio na traženje rješenja. Potražio sam na Internetu da li postoji takva mašina i našao odličnu stvar, zove se Camera Sorter, međutim ovakve mašine su skupe i prave se samo po naruđbi. Oduševio sam se kako je pametno osmišljena mašina
http://www.bestsorting.com/sorting-food/sorters/genius-optical-sorter/working-principle-of-the-genius-dual-sorter/
S obzirom da sam se nekada ranije igrao sa procesuranjem slike odlučio sam da napraivim svoj Camera Sorter. Naravno, bio sam svjestan da neće biti upotrebljiv, pogotovo ako imate velike količine. Htio sam samo da vidim da li sam sposoban da napravim :) Zrna kokiračara trebalo je da se raspoređuju po traci koja je ovom slučaju kaiš sa alternatora. Kaiš se nalazio na dva ležaja, a na jedan ležaj bio je spojen sa zupčanikom. Jedan step motor pokretao je zupčanik, a drugi je služio za izbacivanje dobrih zrna (dobro zrno je izbacivano, a loše je ostajalo na traci). Iznad trake sam smjestio običnu web kameru sa nekoliko LEDova kako bih dobio bolju osvjetljenost, a samim tim i bolju sliku.
Za kontrolu step motora zadužen je Arduino sa H mostom. Slike iz kamere prenoslila se u C# aplikaciju gdje obrađivana slika. Za obradu slike koristio sam AForge biblioteku. Program je prvo sjekao sliku na veličinu trake, pravio blobove prema boji (samo dobra zrna su naranđaste boje) i selektovao samo blobove veličine u zadatom opsegu.
Kordinate zrna koje treba izbaciti prosleđivane su Arduinu. Arduino nema biblioteku za rad sa nizovima kao što je vector u C++, a trebala mi je, pa sam morao napraviti svoju klasu. Sljedeći problem odnosio se na prosljeđivanja koridnata zrna Arduinu. Bilo je teško uzeti u obzir proklizavanje kaiša i rotiranje kamere.
http://www.bestsorting.com/sorting-food/sorters/genius-optical-sorter/working-principle-of-the-genius-dual-sorter/
S obzirom da sam se nekada ranije igrao sa procesuranjem slike odlučio sam da napraivim svoj Camera Sorter. Naravno, bio sam svjestan da neće biti upotrebljiv, pogotovo ako imate velike količine. Htio sam samo da vidim da li sam sposoban da napravim :) Zrna kokiračara trebalo je da se raspoređuju po traci koja je ovom slučaju kaiš sa alternatora. Kaiš se nalazio na dva ležaja, a na jedan ležaj bio je spojen sa zupčanikom. Jedan step motor pokretao je zupčanik, a drugi je služio za izbacivanje dobrih zrna (dobro zrno je izbacivano, a loše je ostajalo na traci). Iznad trake sam smjestio običnu web kameru sa nekoliko LEDova kako bih dobio bolju osvjetljenost, a samim tim i bolju sliku.
Za kontrolu step motora zadužen je Arduino sa H mostom. Slike iz kamere prenoslila se u C# aplikaciju gdje obrađivana slika. Za obradu slike koristio sam AForge biblioteku. Program je prvo sjekao sliku na veličinu trake, pravio blobove prema boji (samo dobra zrna su naranđaste boje) i selektovao samo blobove veličine u zadatom opsegu.
Kordinate zrna koje treba izbaciti prosleđivane su Arduinu. Arduino nema biblioteku za rad sa nizovima kao što je vector u C++, a trebala mi je, pa sam morao napraviti svoju klasu. Sljedeći problem odnosio se na prosljeđivanja koridnata zrna Arduinu. Bilo je teško uzeti u obzir proklizavanje kaiša i rotiranje kamere.
Jednostavan naziv, ne znam zašto nisam smislio ništa pametnije, valjda zbog ćirilice . Imao sam pametni telefon, Android, postojao je WiFi, a telefon je imao akcelerometar, pa sam pukušao naći aplikaciju na Play Storeu da koristim telefon kao volan. Međutim nisam imao sreće, aplikacije koje su koristile akcelerometar ostvarivale su komunikaciju sa računarom preko bluetootha (a to nisam imao na desktopu), a one koje komunicarale preko WiFia nisu koristile akcelerometar. Želio sam malo da se uživim u igru i da iskoristim telefon, pa sam odlučio da napravim svoju aplikaciju shodno mojim potrebama.
Postoje dvije aplikacije, C# aplikacija koja se nalazila na računaru i naravno Java aplikacija na Androidu. Windows i Android se baš i ne slažu, ne postoji jednostavan način da se ove dvije platforme povežu, tako da sam morao improvizovati. Koristio sam HttpListener kako bih "osluškivao" HTTP zahtjeve sa Android aplikacije. Ovim sam bio razočaran u Javu, jer obične, jednostavne stvari mora da se koristi try/catch. Ako izuzmemo ovaj nedostatak Jave (subjektivno mišljenje nekog ko ne zna Javu) izrada Android aplikacije nije bio problem. Teži dio bio je natjerati C# aplikacije da simulira JoyStick. Pronašao sam vJoy koji je je radio upravo ono što je meni trebalo, posjedovao je virtuelni drajver i biblioteku za C#.
Aplikaciju sam iskoristio kao projekat za Računarske mreže. Bilo je zanimljivo gledati kako se profesori igraju :)
Postoje dvije aplikacije, C# aplikacija koja se nalazila na računaru i naravno Java aplikacija na Androidu. Windows i Android se baš i ne slažu, ne postoji jednostavan način da se ove dvije platforme povežu, tako da sam morao improvizovati. Koristio sam HttpListener kako bih "osluškivao" HTTP zahtjeve sa Android aplikacije. Ovim sam bio razočaran u Javu, jer obične, jednostavne stvari mora da se koristi try/catch. Ako izuzmemo ovaj nedostatak Jave (subjektivno mišljenje nekog ko ne zna Javu) izrada Android aplikacije nije bio problem. Teži dio bio je natjerati C# aplikacije da simulira JoyStick. Pronašao sam vJoy koji je je radio upravo ono što je meni trebalo, posjedovao je virtuelni drajver i biblioteku za C#.
Aplikaciju sam iskoristio kao projekat za Računarske mreže. Bilo je zanimljivo gledati kako se profesori igraju :)

Drug je napravio konsktrukciju. Međutim bila je od gvožđa, teška i samim tim nepraktična. Nekoliko sedmica kasnije drug kontrusisao novi plastenik, ali ovaj put od pleksiglasa. Potrošili smo 30e za prvu konstrukciju i oko 200KM za drugu. Izgledalo je dobro i počeli smo da ubacujemo senzore i aktuatore.
Senzore i aktuatore nabavljao sam sa eBaya pošto kod nas nije bilo. Sada smo imali problem sa iskustvom, mnoge dijelove nikada nismo koristili niti vidjeli kako se koriste, nismo znali šta nam odgovara. Informacije koje smo pronašli na Internetu o svim tim dijelovima nisu bile dovoljne. Ovaj dio projekta sam ja sam finansirao, a novac sam zaradio radeći kao programer na Freelanceru. Krajem 2012. uspjeli smo osposobiti osnovne stvari, a upravljanje makete preko telefona bilo je nevjerovatno.
Sada su profesori već postali zaintresovani, vidjeli su da smo sposobni da napravimo ono što smo zamislili i konačno dobili smo podršku i nešto novca. Drug je već stekao iskustva, shvatio je da može bolje i od škole smo tražili da nam kupi novi pleksiglas. Ovaj je sada bio debeo 5mm i sa dodatnim unapređenima plastenik je izgledao mnogo bolje.

Za izradu korisničkog interfejsa web aplikacije koristio sam jQuery Mobile koji mi se uopšte nije svidio. Bio je prenatrpan nepotrebnim stvarima, a s obzirom da je "mobile first" na računaru nije izgledalo onako kako sam ja to zamišljao.
C# aplikacija je napisana u OOP stilu. Tu sam takođe napravio grešku, jer sam koristio "getere" i "setere". Problem je nastao kada sam pored demetra21.heater = true trebao demetra21.setHeater(true, true). Arduino platforma mi je djelovala neozbiljno, ali su je ljudi sasvim drugačije vidjeli, projekat je čak dobio na značaju zbog Arduina.
Prvo takmičenje i prezentacija našeg projekta bila je na INOSTu u Banjaluci. Nismo očekivali, ali osvojili smo nagradu za najbolju projekat, najveća nagrada na tom takmičenju. Spavali u kasarni, upoznali ljude, stekli iskustvo, odlično za početak :)
Shvatili smo da smo napravili nešto što ljude zanima, spojili smo mehaniku, softver i elektroniku, imali smo za svakoga po nešto. Stekli smo i "medijsku popularnost". To nas je sve inspirisalo da idemo da tražimo sponzora. Ali nakon što smo obišli najmanje 20tak firmi i nakon što su nama obećali da će nam sigurno poslati novac za dalji razvoj projekta nismo dobili ni pfeninga. Opština naravno nije dala ništa, ali to smo i predpostavljali. Ali nije ni crkva! Crkva koja se predstavlja da svima pomaže, oličje morala nije se udostojila da da barem 50KM. Dobili smo 100KM od drugarice koja se priključila projektu i 100KM od jedne stranke.
Napravio sam veliki update cijelog softvera. Za izradu web aplikacije koristio sam Yii framework i bootstrap. Odlična kombinacija, MVC šablon iz Yii frameworka omogućio mi je da jednostavno integrišem dosta opcija. Registracija/prijava, automatska regulacija, spremanje svih dešavanja u plasteniku u bazu, mala socijalna mreža, korisnik je sada imao mogučnost da kontroliše više plastenika, i još mnogo toga. Neke klase u C# aplikaciji sam ponovo napisao od nule i cijeli sistem bio mnogo stabilniji, brži i sa više mogućnosti.
Bili smo u Goraždu i osvojili prvo mjesto, ali ono bitnije je da smo otišli na prvu Olimpijadu inovacija za jugoistočnu Evropu. Tu smo upoznali dosta ljudi iz drugih krajeva Balkana. Ljudi iz Bugarske, Rumunije, Crne Gore, Bosne, Srbije, Hrvatske, Makedonije bili su na jednom mjestu, sedam timova predstavljali su svoje projekte. Ponovo smo uspjeli osvojiti prvo mjesto.
Bili smo u Bijeljini na poljoprivrednom sajmu, u Novom Sadu na Tesla festu i BalConu, gostovali u mnogim emisijama, pisali su o nama i sve to nas je podstaklo da počnemo sa razvojem novog projekta.
Autori: Mile Savić, Dragutin Marjanović i ja.