VIDI X posjeduje Bluetooth te Wi-Fi komunikaciju. Upravo iz tog razloga pogodan je za mnogobrojne IoT projekte. Ovaj konkretni projekt demonstrirat će kako osluškivati koji uređaji okolo vas odašilju Bluetooth signal te kako rezultat osluškivanja prikazati na web stranici.
Bluetooth je bežični standard za razmjenu podataka na kratkim udaljenostima, a glavna odlika mu je niska potrošnja energije. Bluetooth sustav može se podijeliti u dvije kategorije: Classic Bluetooth i Bluetooth Low Energy (BLE). ESP32 podržava oba načina rada, dakle i klasični Bluetooth i BLE, tj. Bluetooth niske potrošnje energije.
Postoji nekoliko klasa Bluetooth uređaja. Class 1 uređaji, poput naprednih USB dongla, koriste snagu od 100 mW, što u teoriji može dosegnuti oko 100 metara, no realnije je prepoloviti te vrijednosti. Class 2 uređaji koriste snagu od 10 mW, što je domet od oko 10 metara, a koriste ga mobiteli, laptopi, vaše slušalice...
Class 3 uređaji koriste snagu od 1 mW te u teoriji ostvaruju domet od jednog metra. No, kako je taj domet u stvarnosti znatno manji, ako vaše slušalice koriste Class 3 Bluetooth, kada mobitel spremite u džep traperica dolazi do gubljenja signala jer ste na rubu maksimalno ostvarivog dometa, pa ga treba premjestiti u ruksak ili gornje džepove jakne, košulje i slično kako biste ostvarili stabilnu konekciju. Eto, sada znate zašto vaše slušalice gube signal.
Bluetooth kao manu ima konstantno odašiljanje podataka, čak i onda kada je na vašem mobitelu ugašen te postavljen kao „nevidljiv“. No nevidljivi dio je samo onaj naziv (ime uređaja) koji ste postavili za vaš uređaj, dok se zapravo nešto konstantno odašilje s vaše Bluetooth antene.
Tako uređaji imaju tendenciju, oko četiri puta u sekundi, slati podatak koji odašilje kako je ovo uređaj koji je u nevidljivom modu (to jest ugašen).
Taj podatak pomaže onima koji stvarno ne žele komunicirati s tim „nevidljivim“ uređajima jer paket podataka koji su primili od njega mogu zanemariti, no oni koji žele iskoristiti te podatke mogu to učiniti na nekoliko načina.
Tako neki dućani (u svijetu, ne onaj lokalni kod vas u kvartu) imaju gusto postavljene uređaje kojima mogu pratiti kretanje kupaca kroz njihov prostor te točno znati kod kojih polica se kupci više zadržavaju.
No vi to možete iskoristiti za otkrivanje radnji poput toga približava li se netko vašem domu. Ili u uredu možete detektirati kada tko dolazi na posao, pod uvjetom da nosi mobitel sa sobom i da ga nije stavio u Faradayev kavez.
Kada biste imali mrežu Bluetooth detektora postavljenih u jednu zgradu, mogli biste pratiti tko se kreće zgradom, pod uvjetom da mobitel nije stavio na drona, pa ga dronom vozika uokolo.
Postoje i Bluetooth uređaji koji se ne javljaju bezveze, da to tako kažemo. To su neki high-end satovi ili fitness narukvice kojima treba specificirati želimo li da se oglašavaju ili ne.
No može se dogoditi da, ako izgube vezu s mobitelom ili u drugim specifičnim situacijama, počnu samoinicijativno odašiljati kako bi pokušali ostvariti željenu vezu. Važno je imati na umu kako Bluetooth nije siguran i ne treba ga smatrati sigurnim ni u kojem pogledu.
Što to uređaj odašilje ako ne odašilje ništa?
Bluetooth uređaj odašilje otprilike ovakav niz podataka, koji može varirati od uređaja do uređaja:
Name: , Address: 4d:54:35:55:17:9d, Manufacturer data: 0600010920024eb81e5ad9f47e3cbc12b1d8a100b11cc1c38d58857b97, ServiceUUID: fb694b90-f49e-4597-8306-171bba78f846, txPower: 8
„Name“ je nevidljiv. Adresa je nešto poput MAC adrese za mrežne uređaje, samo što je ova za Bluetooth. „Manufacturer“ broj je kombinacija branda uređaja sa serijskim brojem, no može se otkriti je li riječ o Samsung ili Apple proizvodu te, naravno, ostalima. Koja kompanija se kako identificira, potražite na web stranicama: https://www.bluetooth.com/
VIDI X
U našem programskom primjeru prikazat ćemo rezultat skeniranja na zaslonu VIDI X-a. No, prema našem programskom primjeru, na zaslon će stati do 10 uređaja, što je sasvim u redu za demonstraciju sile.
Imate li potrebu saznati koji su to ostali uređaji, a koji nisu stali na VIDI X-ov zaslon, iz našeg primjera koda možete se spojiti na vašu postojeću Wi-Fi mrežu te kompletan popis saznati upisivanjem IP adrese VIDI X-a u vaš internetski preglednik; pojavljuju se i u Serial Monitoru kako biste mogli primijetiti razlike između ta tri načina prikazivanja informacija.
Obratite pozornost kako, osim što se ti rezultati pokazuju na web stranici te na zaslonu VIDI X-a, pojavljuju se i u serial konzoli.
Kako biste se spojili na vašu Wi-Fi mrežu, u ovim linijama koda morate upisati vaše pristupne podatke za Wi-Fi.
KOD:
const char* ssid = “VIDI_X”; // Umjesto VIDI_X trebate
// upisati ime vaše Wi-Fi mreže na koju se spajate
const char* password = “123546”; // Umjesto 123456
// trebate upisati password za vašu Wi-Fi mrežu na koju
// se spajate
Kojim slijedom naredbi kreirati web server, saznat ćete proučavanjem koda i čitanjem komentara u kodu.
Važno je napomenuti kako će se IP adresa koju morate upisati pojaviti na zaslonu VIDI X-a odmah nakon uspješnog spajanja na Wi-Fi. Tu IP adresu upišite u internetski preglednik vašeg računala ili mobitela koji je spojen na istu Wi-Fi mrežu.
Nemate li slučajno Wi-Fi mrežu pri ruci, pokušajte se snaći s mobitelom tako da ga stavite u Access Point mod, što se još zove i Hotspot ili Tethering, te vaš VIDI X spojite na tako kreiranu Wi-Fi mrežu.
Dio koda koji glasi ovako
KOD:
// dodaj pronađeni Bluetooth uređaj u varijablu za kasnije
// korištenje
// na kraj stringa dodaj HTML prelazak u novi red
// ovdje je moguće dodati i HTML kod za promjenu boje,
// fonta
// i ostale HTML kompatibilne kodove
stringThree = stringThree + advertisedDevice.toString().c_str() + "<br>"
;
služi za kreiranje stringThree varijable, koja će se na stranici ispisati kao HTML, a ustvari je ispisuje linija koda.
KOD:
// nakon zaglavlja ispisat ćemo string varijablu u koju
// smo spremili native Bluetooth uređaja
client.print(stringThree);
Ovaj HTML nije validan prema niti jednom HTML validatoru, no ipak će se ispisati kao HTML stranica. Želite li dobiti potpuniju stranicu, možete eksperimentirati s kodom na način da prije ispisa string varijable dodate dio HTML koda za formatiranje teksta poput ovoga:
te iza string varijable zatvorite paragraf kodom:
Iako je sami kod malen, kompajliran će biti znatno veći zbog toga što smo uključili više libraryja u našu skicu.
Važno je znati da ovaj kod premašuje standardnu veličinu skice koju je moguće uploadati na Arduino te će pokušaj kompajliranja izbaciti grešku, s obzirom na to kako je Arduino IDE alat namijenjen pisanju manjih skica za Arduino pločice.
Prvo u Arduine IDE aplikaciji iz izbornika Alati pod opcijom Pločica odaberite ODRIOD ESP32.
Kako biste uspjeli kompajlirati kod i flashati ga na VIDI X, koji ima znatno više memorije od Arduina, potrebno je u izborniku Alati odabrati opciju Partition Scheme te je postaviti na No OTA (Large APP).
Kod pronađite na VidiLAB GitHub linku: https://github.com/VidiLAB-com/Vidi-X/tree/master/Bluetooth_Scan_to_LCD_and_Web_Server