Imate projekat razvijen na platformi koja zadovoljava unapred definisane zahteve. Sistem je stabilan, proveren i pouzdan. Ne biste ništa menjali, ali naručilac zahteva AI Vision. Želi da u svetlu modernih AI trendova izvuče više iz postojećeg rešenja. Možete krenuti od nule sa novom AI platformom, ali možete i embedovati AI kameru u postojeće rešenje. Tu bi DFRobot Gravity: Huskylens mogao da stupi na scenu, kao odlično rešenje.
Iako je već više godina na tržištu, i to u dve verzije kamera: sa 2.0Megapixel OV2640 kamerom (model SEN0305) i sa 5.0Megapixel OV5640 kamerom (model PRO SEN0336), kompaniji DFRobot koja nam je poslala primerak za ovu recenziju, Huskylens predstavlja jedan od trenutnuh bestselera. Mi smo dobili model SEN0305 i naši utisci se odnose na njega.
Spakovan je u lepoj, kao što smo i inače navikli od DFRobot kompanije, kvalitetnoj kutiji u kojoj se pored DFRobot Gravity: Huskylens kamere nalazi i silikonska zaštitna maska, standardan Gravity: 4Pin I2C/UART kabal za povezivanje sentora sa GPIO hederom i metalni podesivi nosač za montažu kamere na vašem uređaju.
Na prvi pogled, jasno je da su svi delovi kompleta odličnog kvaliteta, osim ekrana na poleđini Huskylens-a, koji je bez ikakvog zaštitnog sloja. Silikonska maska u koju se „oblači“ Huskylens je zaista neophodan dodatak koji štiti PCB ploču i konektore od dodira prilikom rukovanja, ali čak ni ona ne štiti sam ekran. Opravdano je očekivati da će brzo u intenzivnoj upotrebi doći bar do grebanja ekrana. Sam ekran je tu da da uvid u ono što kamera snima, kao i za podešavanja i izbor moda rada. U pitanju je 2″ IPS ekran rezolucije 320×240 pix.
DFRobots Gravity:Huskylens je baziran na Kendryte K210 koji radi na FreeRTOS-u. Kendryte K210 je dual-core RISC-V 64-bit SoC brzine 0.8 TFLOPS, specifično dizajniran za neuralne mreže. K210, svojim neural network procesorom opšte namene hardverski podržava deep learning framework-e: TensorFlow, Keras i Darknet. Brzina SoC-a na radnih 400MHz je po specifikacijama preko 1000 puta viša od standardnog AI vision rešenja u industriji: STM32H743 koji je baziran na 32 bitnom ARM Cortex M7 jezgru na 480 MHz. Interesantno je da Kendryte K210 u sebi ima i osmokanalni audio procesor, koji interno obrađuje 16 bitni audio signal i omogućava semplovanje do 192 kHz, ali on u ovoj implementaciji nije iskorišćen.
DFRobots Gravity: Huskylens se sa vašim sistemom povezuje Gravity kablom za koji na samom Huskylens-u postoji konektor, dok kabal sa druge strane ima četiri sonde za povezivanje na GPIO heder. Dve žice su za napajanje 3,3V i 0V, dok su druge dve signalne. Komunikacija između Huskylens-a i vaše platforme se obavlja ili preko UART (TX/RX serijske) veze ili preko I2S (SDA, SCL). Mod komunikacije podešavate u setup meniju na samom Huskylens-u. U slučaju UART komunikacije standard je 9600 baud, dok je za I2C adresa 3C.
U istom meniju možete odabrati i mod rada. Jasno je da su ponuđeni modovi rada u stvari Ai modeli kreirani od strane DFRobotic tima i da se direktno oslanjaju hardverske mogućnosti neuralne mreže Kendryte K210 SoC-a. Tu su: prepoznavanje lica, prepoznavanje i praćenje objekta, praćenje linije, prepoznavanje boje i prepoznavanje bar kod taga. Proces učenja i prepoznavanja je automatski i svodi se na usmeravanje objektiva ka objektu i klik prstom na prekidaču. Kamera radi samostalno i nije joj potrebna nikakva dodatna paltforma, a rezultate možete odmah videti na ugrađenom ekranu. No samostalni mod rada sem za podešavanje i demonstraciju i nema neku upotrebnu vrednost, stoga je potrebno kameru Grove konektorom povezati na vašu MCU platformu.
Dovoljno vremena od izlaska platforme, dopustilo je DFRobots timu da razvije proverenu i adekvatnu podršku u bibliotekama za povezivanje na svaki Arduiono „kompatibilan“ sistem, a postoji i biblioteka za Micropython. Mi smo istestirali jednu, nama interesantnu kombinaciju. U pitanju je STM32F401RE razvojni sistem, SSD1306 dodatni OLED ekran i Huskylens. Povezali smo Huskylens na I2C ulaze – obratite pažnju na uputstvo na netu, ima grešku kod definicije SDA i SCL linija.
Probali smo i UART/9600 baud i radi identično. Modifikovali smo par standradnih demo rutina iz Arduino primera za SSD1306 i Huskylens i sve je proradilo odmah, bez potrebe za ikakvom modifikacijom u kodu, sem provere da su portovi na GPIO hederu adekvatno dodeljeni. Test smo probali i sa Arduiono Uno pločom, a kasnije i sa Raspberry Pi Pico W i Micropython bibliotekom. Svaki put, sve je radilo „na prvu loptu“, što nam je samo potvrdilo da je vremenski džep bio dovoljan da se podrška ustabili na svim platformama. Sam demo koji dajemo je bazičan. Prvo je potrebno Huskylens prebaciti u mod za detekciju boja. Nakon toga naučiti ga da prepozna neku boju (mi smo iz šale nazvali boju green) i rutina će nakon toga na SSD1306 ekranu ispisivati green kada god Huskylens uperimo ka objektu te boje. Elementaran demo, koji radi savršeno.
/*************************************************** HUSKYLENS An Easy-to-use AI Machine Vision Sensor <https://www.dfrobot.com/product-1922.html> *************************************************** This example shows the basic function of library for HUSKYLENS via Serial. Created 2020-03-13 By [Angelo qiao](Angelo.qiao@dfrobot.com) GNU Lesser General Public License. See <http://www.gnu.org/licenses/> for details. All above must be included in any redistribution ****************************************************/ /***********Notice and Trouble shooting*************** 1.Connection and Diagram can be found here <https://wiki.dfrobot.com/HUSKYLENS_V1.0_SKU_SEN0305_SEN0336#target_23> 2.This code is tested on Arduino Uno, Leonardo, Mega boards. ****************************************************/ #include "lcdgfx.h" #include "HUSKYLENS.h" #include "SoftwareSerial.h" DisplaySSD1306_128x64_I2C display(-1); // or (-1,{busId, addr, scl, sda, frequency}) HUSKYLENS huskylens; SoftwareSerial mySerial(10, 11); // RX, TX //HUSKYLENS green line >> Pin 10; blue line >> Pin 11 bool flag; void printResult(HUSKYLENSResult result); void setup() { Serial.begin(115200); mySerial.begin(9600); while (!huskylens.begin(mySerial)) { Serial.println(F("Begin failed!")); Serial.println(F("1.Please recheck the \"Protocol Type\" in HUSKYLENS (General Settings>>Protocol Type>>Serial 9600)")); Serial.println(F("2.Please recheck the connection.")); delay(100); } display.begin(); display.fill( 0x00 ); display.setFreeFont( free_calibri11x12, free_calibri11x12_cyrillic ); display.printFixed(30, 55, u8"magazinMehatronika", STYLE_NORMAL); display.printFixed(0, 8, u8"HUSKYLENS", STYLE_NORMAL); display.printFixed(0, 16, u8"STM32F401RE+SSD1306", STYLE_NORMAL); } void loop() { if (!huskylens.request()) Serial.println(F("Fail to request data from HUSKYLENS, recheck the connection!")); else if(!huskylens.isLearned()) { Serial.println(F("Nothing learned, press learn button on HUSKYLENS to learn one!")); if (flag) {display.printFixed(30, 36, u8"LEARN ", STYLE_NORMAL); flag=!flag;} else {display.printFixed(30, 36, u8"LEARN green", STYLE_NORMAL); flag=!flag;} } else if(!huskylens.available()) { Serial.println(F("No block or arrow appears on the screen!")); display.printFixed(30, 36, u8" NO BLOCK ", STYLE_NORMAL);} else { Serial.println(F("###########")); while (huskylens.available()) { HUSKYLENSResult result = huskylens.read(); printResult(result); } } } void printResult(HUSKYLENSResult result){ if (result.command == COMMAND_RETURN_BLOCK){ Serial.println(String()+F("Block:xCenter=")+result.xCenter+F(",yCenter=")+result.yCenter+F(",width=")+result.width+F(",height=")+result.height+F(",ID=")+result.ID); display.printFixed(30, 36, u8" --GREEN-- ", STYLE_NORMAL); } }
Možemo reći, da je za cenu od oko 54,90 USD DFRobot Gravity: Huskylens odlična Ai kamera za vaš postojeći ili novi sistem kome je potrebna neka od modernih Ai funkcionalnosti vizuelnog prepoznavanja.
Više informacija: DFRobot Gravity: Huskylens page