Korištenje WiFi:bita pomoću službenog proširenja za MakeCode (pxt-wifibit)

U ovom tutorijalu pokazat ćemo kako jednostavno koristiti WiFi:bit preko MadeCode platforme. Pa krenimo!
Službeno WiFi:bitovo proširenje za MakeCode dostupno je na GitHubu. Na početnoj stranici projekta na GitHubu nalaze se sve dostupne naredbe, s opisom, te primjer korištenja. U projekt se proširenje doda tako da odete na More… (ikona zupčanika) pa zatim odaberete Extensions. Pretražite https://github.com/bosnivan/pxt-wifibit i zatim kliknete na ponuđeno:
 

 
Bit ćete ubrzo vraćeni u glavni prozor uređivača. Među grupama naredbi, negdje oko sredine, smjestit će se grupa WiFi:bit:
 

 
U njoj su sadržane sve naredbe proširenja. Pomoću njih možete, na razne načine, komunicirati s Internetom. Ako već niste, za bolje razumijevanje idućih poglavlja, preporuka je proučiti ranije navedenu početnu stranicu projekta.
 

Izvršavanje HTTP metode

Središnji dio proširenja naredba je izvrši HTTP metodu. Pomoću nje slat ćete i primati podatke. U ovom poglavlju upoznat ćete se s najvažnijim HTTP metodama i njihovim korištenjem.
Recimo da ste u svom pregledniku sačuvali poveznicu na neku vijest omiljenog vam portala: http://www.portal.hr/vijesti/22261803. Kada kliknete na poveznicu, preglednik će izvršiti metodu GET. Ona služi za dohvat podataka. Ako biste ju pretočili u naredbu izvrši HTTP metodu, ovako bi izgledala:
 

 
Početni dio poveznice (http://), kaže vam vrstu protokola (HTTP). Slijede naziv servera (www.portal.hr) te putanja u sklopu servera (/vijesti/22261803). Port u URL-u nije naveden pa se koristi standardni port protokola HTTP (80). Primjer URL-a s navedenim portom je: http://www.portal.hr:8080/vijesti/22261803
Vrijednost porta ide nakon naziva servera, a odvajaju se dvotočjem. U tom bi se slučaju na mjesto porta stavio broj 8080.
 
Nakon što ste pročitali vijest, odlučili ste ostaviti komentar. Kod unosa komentara popunili ste sva polja i kliknuli na gumb Pošalji komentar. Preglednik će tada vrlo vjerojatno izvršiti metodu POST:
 

 
Naredba, uz već ranija viđena polja servera, porta i putanje, ovaj put sadrži i neobavezna polja zaglavlja i tijela poruke. Tijelo sadrži podatke koje šaljemo, a u zaglavlje nekakve popratne informacije. U ovome slučaju to je format sadržaja tijela poruke. Riječ je o JSON-u, formatu koji se trenutno najčešće koristi za strukturiranje podataka u sklopu HTTP metoda.
 
Nakon što je ispod stranice osvanuo vaš komentar, uočili ste pogrešku. Srećom pa postoji opcija uređivanja komentara. Za djelomičnu promjenu nad podacima koristi se metoda PATCH:
 

 
Putanja kaže o kojim podacima je riječ (komentar čiji ID je 33, a vezan je za vijest čiji ID je 22261803), a tijelo sadrži ono što se mijenja.
Za promjene nad podacima koristi se i metoda PUT. Kod nje se obično pošalje sav sadržaj podataka koje mijenjate. Ranije ste vidjeli da komentar sadrži vrijednosti autora i komentara. Nakon što je stvoren, server mu je sigurno pridodao i ID te vrijeme nastanka. Kod metode PUT poslali bi natrag sve te podatke. To je ovdje bespotrebno. Trošilo bi se više prometa i usporilo obrađivanje.
 
Komentar je sada lijepo sročen. Međutim, grize vas savjest što ste takvo nešto uopće komentirali. Ipak je to vaš “guilty pleasure”, za koji drugi ne trebaju znati. Odlučili ste obrisati taj komentar:

 

 
Metoda DELETE, poput metode GET, ne treba zaglavlje niti tijelo poruke. Putanja s ID-jem komentara je dovoljna.
Ukratko, to su najčešće korištene HTTP metode. Ostale se manje koriste i mala je vjerojatnost da ćete ih susretati.
Koja metoda vam je za što potrebna i kako je treba izvršiti, obično ćete saznati na stranicama usluge koju koristite. Uglavnom će vam biti dostupan nekakav API, skup metoda za pristup podacima nekog sustava. Najčešći naziv takve vrste API-ja je REST API, a naići ćete i na nazive WEB API, HTTP API i sl. Primjera radi, opis API-ja aplikacije Blynk dostupan je na Blynk HTTP RESTful API. Jedan primjer metode je:
 

 
Pomoću metode GET mijenja se vrijednost pina. U skladu s ranije pročitanim, za očekivati je metodu PATCH ili PUT, no ovo je dobra ilustracija da se metode ne koriste uvijek kako je zamišljeno. CroatiaTownAPI domaći je API za rad s gradovima, općinama i županijama. Program Postman i stranica REST test test… primjeri su alata za rad s API-jima. Velika su pomoć kod izrade programa.
 
Nakon ove male diverzije, iduća poglavlja bave se proširenjem, tj. izradom raznih vrsta programa pomoću proširenja i svega što ste dosad naučili.
 

Povezivanje na WiFI mrežu

Nakon što fizički povežete micro:bit i WiFi:bit, sigurno ćete poželjeti odmah se spojiti na WiFi mrežu. Spajanje treba samo jednom napraviti, a WiFi:bit se kasnije spaja automatski. Iz toga je razloga najbolje ga izvesti kao zaseban program. Spajanje ćete tako napraviti klikom na gumb A:
 

 
Pritom je potrebno popuniti naziv mreže (SSID) te lozinku (KEY). U program ćete dodati i praćenje što WiFi:bit, tijekom obrade naredbi, odgovara micro:bitu i to ćete prikazati na ekranu micro:bita:
 

 
Na početku izvršavanja programa, povezat ćete micro:bit i WiFi:bit. Izvršit ćete i jednu AT naredbu koja kaže WiFi:bitu da, kod slanja povratne informacije, ne ponavlja ono što mu je rečeno, tj. sadržaj poslanih mu naredbi:
 

 
Tako će vam se povratne informacije brže odvrtjeti na ekranu. Sve skupa se može i bez te naredbe napraviti, jedino je ispis tada dugotrajniji i nešto teži za popratiti.
To je sav kod programa spajanja na WiFi mrežu. Prebacite ga na micro:bit i popratite što se događa.
 
Na početku izvršavanja program će ispisati nekakav sadržaj. Bitno je uočiti da završava s ATE0 OK. Nakon toga možete kliknuti gumb A. Ako ste ispravno unijeli naziv i lozinku mreže, ispisat će se WIFI CONNECTED WIFI GOT IP OK. To je znak da ste se uspješno spojili na WiFi mrežu.
 
Izvršna datoteka pxt-wifibit-povezivanje.hex pronađite ovdje. Može se otvoriti u MakeCodu, vidjeti kod i prilagoditi svojim potrebama.

Slanje podataka

Idući program koji ćete napraviti slanje je podataka na ThingSpeak›. Riječ je o primjeru iz ranijeg dokumenta ThingSpeak, samo ćete ga ovaj put izvesti pomoću službenog proširenja.
 

 
Bacanje kockice klasični je primjer rada s micro:bitom:
 

 
Preostaje složiti kod slanja vrijednosti bačene kockice na ThingSpeak. Na stranici projekta na ThingSpeaku, na mjestu gdje ste u prethodnom dokumentu preuzeli API ključ, dostupan je i popis metoda za slanje podataka:
 

 
Potrebna vam je prva metoda, Update a Channel Feed. Vrsta metode je GET, naziv servera je api.thingspeak.com, a putanja /update?api_key=8L7CCVB7ENMT5R5S&field1=0. U putanju ćete, umjesto 0 na kraju staviti vrijednost bačene kockice. Port protokola HTTPS je 443. Budući da je rad s HTTPS-om dosta složeniji od rada s HTTP-om, vi ćete koristiti HTTP i pripadajući mu port 80. Ako isprobate tu metodu, vidjet ćete da je i HTTP podržan. Kada sve to pretočite u naredbu izvrši HTTP metodu, ovo dobijete:
 

 
Naredbi dodatno prethodi čišćenje sadržaja ekrana, a nakon izvršavanja prikaže se kvačica. Uspješnost slanja možete provjeriti na stranici projekta na ThingSpeaku.
 
datoteka pxt-wifibit-slanje.hex priložena je uz ovaj dokument. Može se otvoriti u MakeCodu, vidjeti kod i prilagoditi svojim potrebama.

Primanje podataka

Za razliku od slanja podataka, koje se svede na par naredbi, primanje podataka nešto je složenije za napraviti. Zapravo, sama obrada podataka i izdvajanje bitnoga ponekad su problematični. Više je razloga. Glavni razlog je memorijsko ograničenje micro:bita. Odgovori kod izvršavanja HTTP metoda često su opsežni i lako premaše dostupnu memoriju. Međuspremnici serijske komunikacije također su dosta ograničeni. Treći razlog nedostupnost je finije obrade podataka. Rad s tekstom dosta je ograničavajuć. Dok se razvojno okruženje ne obogati novim funkcijama, dosta toga već je u pripremi, preostaje istraživati, isprobavati razne pristupe i igrati se dok ne dobijete ono što želite.
U ovom poglavlju dohvatit ćete podatak s Blynkovog poslužitelja, koji je tamo pohranjen pomoću mobilne aplikacije. U nastavku je metoda koju ćete koristiti. Dobra vježba odrediti je naziv servera, port i putanju.
 

 
Korist ćete neke mogućnosti koje nisu izravno dostupne u blokovima pa će primjer biti pisan izravno u kodu. Gumbu A pridijelit ćete dohvat podatka. Na početku ćete očistiti ekran i, da vam vraćene informacije budu što sažetije, izvršiti AT naredbu ATE0:
 

 
Pripremit ćete varijablu za spremanje odgovora i reći sustavu da prati što se vraća i da, kada god naiđe na prijelaz u novi redak, primljene podatke nadoveže u ranije stvorenu varijablu:
 

 
U nastavku se, pomoću HTTP metode GET, dohvati željena vrijednost:
 

 
Odgovor sadrži status uspješnosti, razna zaglavlja i JSON format sadržaja. Sve to je pohranjeno u varijablu i sada treba izdvojiti samu vrijednost i pohraniti u novu varijablu:
 

 
Da rasteretite memoriju za iduće dohvate, obrisat ćete vrijednost prve varijable i zaustaviti njeno daljnje punjenje:
 

 
Preostaje vam ispisati vrijednost, a i nastavku programa vidi se i kod povezivanja pločica:
 

 
Izradi programa obično prethodi testiranje poziva metode i analiza odgovora. Ovako to izgleda u Postmanu. Redom su prikazani upit, zaglavlja i tijelo odgovora:
 

 
Izvršna datoteka pxt-wifibit-primanje.hex priložena je uz ovaj dokument. Može se otvoriti u MakeCodu, vidjeti kod i prilagoditi svojim potrebama.

Posebne naredbe za rad s Blynkom

U sklopu paketa naredbi za WiFi:bit nalaze se dvije vezane za uslugu Blynk. Riječ je o pisanju i čitanju vrijednosti nekog od pinova. Blynk je dosta popularan i svrha ovih naredbi proširiti je njegovu primjenu. A i dobar su primjer kako možete iskoristiti postojeće naredbe i stvoriti svoj skup naredbi vezanih za ono čime se bavite. Ove dvije naredbe tako sadrže samo ranije upoznate naredbe. Kod programa iz prethodnog primjera istovjetan je kodu naredbe čitanja pinova. U nastavku ćete napraviti jedan jednostavan primjer korištenja tih naredbi.
 
Prvo je potrebno u mobilnoj aplikaciji Blynk stvoriti projekt vezan za pločicu Generic Board (Wi-Fi) te u njega ubaciti dva bloka (widgeta). Prvi je Text Input i služi za unos naredbe koja se sprema u pin V0. Naziv bloka i pin postavite u postavkama. Do njih dođete klikom na blok koji želite urediti. Drugi blok je Gauge i prikazuje vrijednost pina V1. On će sadržavati trenutnu vrijednost brojača. Zatim, u projektnim postavkama, zatražite autorizacijski token za pristup izvan aplikacije (opcija AUTH TOKENS, ikona Email all). Njega ćete koristiti u naredbama programa za micro:bit. Sadržaj sučelja Blynka prikazano je u nastavku:
 

 
Ako niste u prilici koristiti mobilnu aplikaciju, uz ovaj dokument priložena je kolekcija za Postman pxt-wifibit-blynk.postman_collection. Ona sadrži pozive zapisa naredbe i čitanja brojača. Osim što može zamijeniti mobilnu aplikaciju, korisna je i kod njene izrade, za provjeru radi li sve kako ste zamislili.
 
Program za micro:bit prvo će povezati pločice, a zatim izvršavati beskonačnu petlju u sklopu koje će čitati vrijednost naredbe. Ako je ona COUNT, vrijednost brojača uveća se za 1 i trenutna vrijednost šalje se na pin V1. Ako je unesena naredba RESET, brojač se resetira na 0. Ovo je sav sadržaj programa:
 

 
Navedeni token zamijenit ćete vlastitim. U mobilnoj aplikaciji možete unositi naredbe i pratiti promjene brojača. Također možete koristiti priloženu kolekciju za Postman.
Gornji primjer skroz je pojednostavljen. Pokušajte ga proširiti. Naredba RESET, sve dok je aktivna, vraća brojač na 0. To baš i nema smisla. Promijenite ponašanje tako da jednom resetira brojač i zatim promijeni naredbu u COUNT i tako nastavi brojati ispočetka. Probajte dodati i neku novu naredbu, STOP i sl. Napredniji mogu zadati početnu vrijednost ili za koliko brojač treba uvećavati. Možete i ubrzati izvođenje koristeći jednu naredbu koja je spomenuta na glavnoj stranici proširenja. Ako imate senzor pokreta, probajte složiti nekakav nadzor ulaska u prostoriju i sl. Mogućnosti su šarolike i neiscrpne.
 
Izvršna datoteka pxt-wifibit-blynk.hex priložena je uz ovaj dokument. Može se otvoriti u MakeCodu, vidjeti kod i prilagoditi svojim potrebama.

Leave a Reply