Avtor: Brian Millier
Podjetje DFRobot je pred kratkim predstavilo dve razvojni plošči, namenjeni mladinskemu in izobraževalnemu trgu. Gre za cenovno ugodne plošče, ki vsebujejo številne dodatne čipe in module ter tako ponujajo veliko običajnih funkcij, ki presegajo zgolj zmogljivosti samega mikrokontrolerja.
Arduino primeri
Ker plošča K10 vsebuje TFT-zaslon, kamero in številne druge senzorje itd., sem upal, da bo vključevala knjižnice gonilnikov in primere za te periferne naprave. To tudi drži. Kadarkoli namestite kateri koli nov BSP za Arduino in ga izberete kot ciljno ploščo/mikrokontroler, bo meni »Primeri« vseboval razdelek »Examples for xxxxx board/MCU«. V tem primeru bo to »Examples for Unihiker k10«.
Ta vsebina je samo za naročnike
Tako kot pri drugih BSP-jih, ki sem jih namestil, bo razdelek z zgledi za UNIHIKER K10 vseboval veliko »splošnih« zgledov. Obstaja veliko podrazdelkov z zgledi, ki delujejo z družino mikrokontrolerjev ESP32xx. Vendar pa vsi ne bodo delovali z ESP32S3. Opazil sem kategorijo „Bluetooth Serial“, ki vsebuje primere, za katere vem, da ne bodo delovali z ESP32S3, saj ta podpira le BLE, ne pa Bluetooth 4. Obstajajo primeri za HUSKYLENS, ki je modul kamere z umetno inteligenco, ki ga prodaja DFRobot. Spraševal sem se, ali je modul za kamero K10 takšna kamera, vendar ni. Ti primeri HUSKYLENS bi zahtevali nakup modula HUSKYLENS.


Preizkusil sem primer DFRobot_AHT20 in deloval je brez težav s senzorjem temperature in vlažnosti AHT20, vgrajenim v K10. Tudi skica DFRobot_I2Cscan je delovala pravilno in je prikazala vse vgrajene I2C naprave, ki sem jih navedel v tabeli 1.
Nisem pričakoval, da bi pri WiFi-ju na K10 nastale kakšne težave, vendar sem vseeno preizkusil nekaj priloženih primerov. Primer BasicHTTpClient je vseboval certifikat za avtentifikacijo, ki je bil izključen. Pričakoval sem, da bom moral vnesti svoje podatke za dostopno točko, in K10 je uspešno našel moj WiFi usmerjevalnik. Ciljni URL-ji, navedeni v primeru, niso bili veljavni, zato ni bilo vzpostavljene nobene povezave. Ko sem vnesel veljavne URL-je, povezava še vedno ni bila vzpostavljena, saj večina spletnih strani odgovarja le na HTTPS zahteve.
Tudi primer BasicHttpsClient ni deloval. Ta primer je sicer vseboval certifikat za avtorizacijo, vendar je bil že dolgo pretečen. Zato se tudi varna http zahtevka na navedeni URL naslov nista uspela povezati. To sta dva primera, ki v tej obliki ne bosta delovala, razen če ne navedete pravega URL-naslova in priložite veljaven certifikat.
Vendar je primer AdvancedWebserver po vnosu imena omrežja (SSID) in gesla za WiFi deloval brez težav. V tem primeru se je moj brskalnik uspešno povezal z napravo K10 prek URL-ja »esp32.local«. Bil sem navdušen nad tem, kako hitro se je v brskalniku prikazal črtni grafikon. Program sem prilagodil tako, da je prikazal grafikon z več sto podatkovnimi točkami, in ugotovil, da je dovolj hiter za nekatere grafične aplikacije, ki jih imam v mislih.
V razdelku »Examples for the Unihiker k10« se nahaja tudi podmapa z imenom »unihiker_k10«. Pričakoval sem, da bo ta mapa vsebovala le primere, ki so bili preizkušeni na plošči K10. Čeprav to na splošno drži, sem se hitro soočil s težavami pri številnih primerih, ki sem jih preizkusil, zlasti pri tistih, ki so za prikazovanje potrebovali TFT zaslon. Te težave bodo pojasnjene v naslednjem poglavju.
K10 TFT Display
Tako Unihiker K10 kot M10 vsebujeta 2,8-palčni TFT-zaslon, vendar model K10 nima na dotik občutljivega zaslona, ki ga ima model M10. To se mi je zdelo nekoliko nenavadno – zaslon na dotik na 2,8-palčnem TFT-zaslonu bi lahko bil koristen za vrste aplikacij, ki jih K10/ESP32S3 brez težav obvladuje. M10 deluje na sistemu Linux in menim, da njegov majhen zaslon na dotik ne bi bil preveč uporaben na Linux namizju.
Po tem, ko sem preizkusil številne primere za TFT-zaslone (v podmapki Unihiker_k10), mi jih ni uspelo niti prevesti brez številnih napak. Pregledal sem kodo skic in opazil, da vsi ti primeri uporabljajo knjižnico »TFT_eSPI«. Ta knjižnica je na voljo prek Arduino upravitelja knjižnic in je zelo priljubljena knjižnica, ki jo je napisal Bodmer.
Ta knjižnica je bila že naložena v mojem Arduino IDE, saj sem jo v preteklosti že uporabljal z različnimi mikrokontrolerji. Iz preteklih izkušenj sem vedel, da ta knjižnica od uporabnika zahteva, da prilagodi datoteko z imenom »User_Setup_Select.h«, ki izbere datoteko, ki opisuje vašo ciljno ploščo z mikrokontrolerjem. Poleg tega bi bilo treba datoteko ciljne plošče spremeniti, da bi ustrezala SPI ožičenju, ki ga uporablja vaša plošča. Ko sem to preveril, sem ugotovil, da sta bili obe datoteki še vedno konfigurirani za ciljno ploščo/zaslon TFT, ki sem ju uporabljal, ko sem nazadnje uporabljal to knjižnico. Vedel sem, da to ne bo delovalo.
Če to dolgo zgodbo nekoliko skrajšam. Izkazalo se je, da BSP za K10 vključuje tudi kopijo knjižnice TFT_eSPI (skupaj z vsemi drugimi potrebnimi datotekami jedra in knjižnic). Ta kopija knjižnice je bila vnaprej nastavljena za delovanje s ploščo K10. V mojem primeru je bil problem v tem, da je Arduino prevajalnik našel 2 primera knjižnice TFT_eSPI in uporabil tisto, ki je že obstajala v mapi Arduino\Libraries. Kot sem omenil, je bila ta knjižnica konfigurirana za drugo ploščo, ki sem jo uporabljal, in ne bi delovala. Po pregledu sheme K10 sem lahko ponovno konfiguriral to knjižnico TFT_eSPI, tako da deluje s K10.
Vendar mi je Roger (podpora UNIHIKER) povedal, da moram iz mape »Arduino Libraries« odstraniti vse kopije knjižnice TFT_eSPI. Ko sem to storil, je prevajalnik Arduina začel uporabljati knjižnico TFT_eSPI iz BSP-ja za K10, tako da ti primeri zdaj delujejo. Seveda, če uporabljate Arduino za programiranje drugih plošč, ki vsebujejo TFT-zaslon, povezan prek SPI, boste morda morali to knjižnico ponovno namestiti z uporabo Arduino Library Managerja, če jo želite uporabljati.
Za vašo informacijo, lokacija UNIHIKER K10BSP se nahaja na:
C:Users\\AppData\Local\Arduino15\packages\UNIHIKER\hardware\esp32\0.0.3\
Upoštevajte številko »0.0.3« na koncu poti. To je različica BSP. Čeprav nisem bil ravno med prvimi uporabniki K10, je razvoj še vedno v zgodnji fazi, kar potrjuje tudi številka različice.
Ne vem, zakaj so ti BSP-ji skriti v tako globoki hierarhiji datotek. Pogosto moram pregledati knjižnice, vsebovane v teh BSP-jih, da vidim, katere funkcije so na voljo in katere parametre sprejemajo. V nekaterih primerih Arduino IDE med tipkanjem izjave prikaže seznam funkcij razreda in njihovih potrebnih parametrov. Pri funkcijah razreda K10 pa se to ne zgodi.
Nekateri primeri K10 za TFT zaslon vsebujejo vrstico:
include »arduino_image_cache.h«
Te skice se ne bodo prevajale in bodo prikazale sporočilo o napaki, da ta datoteka manjka. Te datoteke nisem nikjer našel, zakomentiranje te vrstice pa ni pomagalo, saj je prevajalnik nato prikazal napako: »image_data1« ni bila deklarirana v tem obsegu.
UNIHIKER podpora je odgovorila na moje vprašanje v zvezi s tem. Čeprav gre za primere skic za Arduino, se je izkazalo, da datoteko arduino_image_cache.h uporablja programski jezik Mind+. Če jo želite uporabiti v Arduino IDE, morate prenesti orodje za pretvorbo bitmap.html in ga odpreti v spletnem brskalniku. Nato uvozite sliko, ki jo želite pretvoriti (ločljivost mora biti manjša od 240×320), in kliknite »Pretvori«.
Dobili boste datoteko z imenom bitmap_data.txt, ki vsebuje sliko, pretvorjeno v niz. Na koncu morate datoteko bitmap_data.txt v celoti prilagoditi formatu arduino_image_cache, tako kot je prikazano na sliki 7 (kjer je niz podatkov okrnjen!). Nato to datoteko .h shranite v isto mapo kot datoteko .ino.
ifndef ARDUINO_IMAGE_CACHE_H
define ARDUINO_IMAGE_CACHE_H
const uint8_t image_data1[20000] = {255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255
255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};
endif // ARDUINO_IMAGE_CACHE_H
Slika 7: Prilagojen format arduino_image_cache
Osebje UNIHIKER je priznalo, da je bil to zapleten postopek. Strinjal sem se z njimi in se nisem trudil, da bi ga preizkusil.
Ena stvar, ki jo boste opazili je, da razdelek z naslovom »Examples for the unihiker_k10« vsebuje veliko map in podmap, povezanih s TFT-zaslonom:
TFT- (ti so namenjeni AVR mikrokontrolerjem
in se ne bodo prevedli)
TFT_eSPI- (mape za različne ločljivosti
TFT-pikslov ter še mnoge druge)
Lvgl- (Priloženi primer se prevede,
vendar ne deluje)
unihiker_k10 mapa- (vsebuje nekaj TFT
primerov)
Med preizkušanjem teh primerov za TFT-zaslon sem naletel na nekaj nenavadnega. Veliko od zgoraj navedenih primerov se iz različnih razlogov ni dalo prevesti. Vendar sem preizkusil nekaj primerov iz mape TFT_eSPI in ti so delovali. Vendar pa so prenehali delovati, če sem K10 odklopil in ga nato ponovno priključil na napajanje. Ugotovil sem tudi, da delujejo le, če so bili naloženi po tem, ko sem uspešno naložil primer iz podmape Unihiker_k10.
Na podlagi tega sem ugotovil, da jedro K10 BSP ob zagonu NE vklopi osvetlitve zaslona K10. Zato primeri v mapi TFT_eSPI ne vklopijo osvetlitve zaslona, saj ta splošna knjižnica TFT_eSPI ne upošteva, da osvetlitev zaslona nadzira razširitveni modul XL9535 na K10. Preveril sem knjižnico TFT_eSPI, ki je priložena K10 BSP, vendar tudi tam nisem našel nobene ločene funkcije za vklop osvetlitve ozadja.
V članku sem omenil, da razširitveno ploščo XL9535 podpirajo ukazi digitalRead, digitalWrite in PinMode. Čeprav ti ukazi delujejo na vhodno-izhodnih priključkih na stranskem priključku Micro:bita, ne delujejo na priključku P00 razširitvene plošče XL9535, ki je povezan z osvetlitvijo zaslona. »Začasna rešitev«, ki sem jo uporabil za rešitev tega problema, je sledeča:
Ti dve vrstici dodajte na začetek primerov skic:
#include “unihiker_k10.h” in UNIHI
KER_K10 k10;
Te vrstici vstavite v svojo rutino setup(): k10.begin(); in k10.initScreen(1);
Številka “1” znotraj initScreen() pomeni orientacijo zaslona in lahko ima vrednosti od 0-3.
Vsi primeri v podmapi Unihiker_k10 vsebujejo te vrstice in uporabljajo funkcije TFT, ki so del razreda k10. Če pa želite uporabiti druge primere TFT_eSPI za Arduino, morate dodati zgornje vrstice.
Ko enkrat razumete zgoraj navedeno, je knjižnica TFT_eSPI za TFT-zaslone precej izčrpna. V preteklosti sem jo uspešno uporabljal za preproste grafične vmesnike. Nekatere druge knjižnice za TFT-zaslone, ki delujejo s TFT-zasloni, priključenimi prek vmesnika SPI, so precej počasne. Ugotovil sem, da se TFT-zaslon na K10 pri uporabi knjižnice TFT_eSPI zelo hitro riše in osvežuje.
Avdio zmožnosti
K10 vsebuje dva analogna MEMS mikrofona MSM381ACT, ki sta prek ADC-ja ES7243E povezana z ESP32S3 prek I2S-vmesnika ESP32S3. Čeprav se avdio podatki pošiljajo v ESP32S3 prek I2S-vmesnika, je treba ADC ES7243E najprej konfigurirati prek I2C na naslovu 0x11. DAC/ojačevalnik NS4168 I2S obdeluje zvočni izhod, povezan z majhnim zvočnikom, nameščenim na zadnji strani modula.
V razvojnem okolju Arduino IDE se za konfiguracijo teh avdio naprav poskrbi samodejno, kadarkoli uporabite visokokakovostne avdio funkcije iz razreda music. Nekatere od teh funkcij so uporabljene v primeru »TFCardMusic«, ki ga najdete v podrazdelku »Unihiker_k10« v razdelku Primeri za Unihiker K10. Tukaj je nekaj funkcij razreda music, uporabljenih v tem primeru:
music.recordSaveToTFCard: Funkciji posredujete ime datoteke in trajanje snemanja, ona pa bo signal iz mikrofonov posnela v datoteko na kartici uSD, ki je vstavljena v vgrajeno režo.
music.playTFCardAudio: Tej funkciji posredujete ime datoteke, ona pa predvaja avdio vsebino iz te datoteke.
Ta posnetek je bil posnet v stereo formatu, s frekvenco vzorčenja 16 kHz in ločljivostjo 16 bitov ter shranjen kot datoteka .WAV. Predvajanje poteka prek enega zvočnika, ki je priključen na desni stereo kanal. Funkcija music.playTFCardAudio ne deluje pri drugih vzorčnih frekvencah – tj. ne bi predvajal datotek WAV v CD-kakovosti pri vzorčni frekvenci 44,1 kHz.
V razredu music ni na voljo veliko drugih funkcij. Obstaja playTone funkcija, v katero vnesete frekvenco in trajanje v milisekundah. Nazadnje so na voljo še funkcije za ustavitev predvajanja zvoka ali za ustavitev predvajanja tona. Opazili boste, da tone primeri, ki so vključeni v ”I2S” subsekcijo primerov ne delujejo. Dodatno music razred, avdio vezje se uporablja tudi za prepoznavanje govora. To je samostojna tema, ki jo bomo obravnavali v enem od naslednjih poglavij.
Čeprav sem ugotovil, da primer prepoznavanja govora deluje pravilno, sem ugotovil, da je bil signal mikrofona, posnet s pomočjo primera »TFCardMusic«, tako šibek, da je bil neuporaben. To pomeni, da je bil glasovni signal skoraj neslišen, ne glede na to, ali sem posneto datoteko WAV predvajal prek naprave K10 ali na svojem računalniku s kartice uSD. To se je zgodilo kljub mojemu glasnemu govoru in snemanju z razdalje približno 15 cm od obeh mikrofonov. Naprava ADC ES7243E vsebuje programabilni ojačevalnik pred ADC-jem ter možnost nastavitve polnega obsega ADC-ja. Ugotovil sem, da so privzete nastavitve za oba parametra, kot uporabljena pri razredu music, prenizko nastavljena za normalno delo.
Podporna ekipa Unihikerja mi je pojasnila, da niso vključili funkcije za nastavitev glasnosti mikrofona, saj niso želeli motiti delovanja algoritma za prepoznavanje govora. Ker se mi je obstoječa funkcija snemanja zdela neuporabna, sem sestavil kodni odlomek iz Listinga 2, s katerim sem močno povečal občutljivost mikrofona. Ta odlomek je treba vstaviti na konec rutine setup().
Listing 2:
Wire.beginTransmission(0x11); // ES7243 I2C address
Wire.write(0x0D); // ES7243 Register 0x0D -ADC control
Wire.write(0x05); // 30 dB ADC scale (42 dB is max)
Wire.write(0x0E); // ES7243 Register 0x0E -ADC control
Wire.write(0xFF); // Volume control set to +32 dB (max)
Wire.endTransmission();
Če želite vedeti, kaj te številke pomenijo, si oglejte stran 17 v tehničnem listu za ES7243E. URL-ja vam ne morem navesti, saj vsebuje nekaj kitajskih znakov. Tehnični list je sicer v angleščini in ga lahko najdete z iskanjem v Googlu po izrazu »ESP7243E datasheet«.
Na voljo je nekaj primerov za prepoznavanje govora – eden za angleščino in eden za kitajščino. Ti se nahajajo v podrazdelku »Unihiker_k10« pod imenom »SpeechRecognition« + »EN« ali »CN«. Kot je bilo omenjeno že prej v članku, morate pred nalaganjem teh primerov v meniju Arduino Tools izbrati »model:EN (ali CN)«. S tem se bodo podatki prenesli v tri particije, kot sem opisal že prej v članku.
Ta primer uporablja asr razred. Nisem našel veliko informacij o tem, kako natančno deluje funkcija prepoznavanja govora, razen tega, da se model in glasovni podatki naložijo v zgoraj omenjene particije. Aktivna beseda je »Hi Telly«, program pa se odziva na ukaze »switch on« in »switch off«. Po izgovorjeni aktivni besedi se prižge zelena LED-ica, RGB-LED-ice (ob robnem konektorju Micro:Bit) pa se v odziv na glasovne ukaze »switch on/off« prižgejo v beli barvi ali ugasnejo. Za razliko od primera »TFCardMusic«, pri katerem je bil posnetek skoraj neslišen, je ta primer moj glas z razdalje 30 cm pravilno zaznal ter prepoznal tako ključno besedo kot tudi ukaze za preklop.
Zdi se, da bi lahko program za prepoznavanje govora »naučili« prepoznavati vaš glas ter dodali nove besede in fraze za prepoznavanje govora. Če je tako, se to verjetno izvede z uporabo programskega jezika Mind+, TinyML ali morda MicroPython, vendar teh programskih možnosti še nisem preučil. Ko v Arduino urejevalniku skic vpišete »asr«, se prikaže približno 15 funkcij razreda asr, vendar nisem našel nobene dokumentacije o tem, kako jih uporabljati.
Podpora za kamero
2-megapikselna kamera je opremljena s slikovnim senzorjem GalaxyCore 1/5” UXGA CMOS. Nameščena je v isti ravnini z zadnjo stranjo plošče K10 in je priključena s kratkim 24-pin FPC-kablom. Na videz je podobna drugim kameram, ki so na voljo na različnih ESP32 ploščah, vendar se od njih nekoliko razlikuje, kot bo opisano kasneje.
Tako kot za mikrofone obstajajo tudi za kamero nekateri primeri za Arduino, ki so na voljo v podrazdelku »Unihiker_k10« seznama primerov za K10. Podobno kot primeri za prepoznavanje govora tudi ti primeri za zaznavanje slike/gibanja naložijo velike količine podatkov na dodatne particije, ko naložite kodo skice. V tem primeru sta obe particiji še vedno poimenovani „model“ in „voice_data“, zato se zdi, da sta ta imeni nekoliko splošni.
Primeri prepoznavanja slik pošiljajo podatke o sliki iz kamere tako v program za prepoznavanje kot na TFT-zaslon, kar vam omogoča, da vidite, kam je kamera usmerjena. Prejšnji mesec sem preizkusil novo ploščo Arduino Uno Q in njeno aplikacijo za prepoznavanje obrazov. Obraz na fotografiji je prepoznala s 95-odstotno zanesljivostjo. Ko sem preizkusil primer »FaceDetect« na K10 z isto fotografijo, obraz ni bil zaznan. Prav tako ni zaznal nobenih podob obrazov, ki sem jih prikazal na monitorju. V vseh primerih je bila slika na TFT-zaslonu K10 precej jasna.
Na voljo je tudi primer zaznavanja gibanja »MoveDetect«. Tudi v tem primeru se v particije modela (in morebiti tudi v particijo »voice_data«) naloži veliko podatkov. V tem primeru je TFT-zaslon prikazoval jasne slike tega, kar je zajemala kamera, vendar se 3 RGB-LED-diode niso spremenile iz modre v rdečo, ko sem premaknil ploščo/kamero. Pravzaprav RGB LED-ice sploh niso svetile, kar mi je nakazovalo, da se skica ni nikoli izvedla do konca rutine setup(), kjer se RGB LED-ice vklopijo v modri barvi. Zato se rutina loop(), ki preverja gibanje, ni nikoli izvedla.
Ko sem šel nazaj in dodal vrstico k10.rgb->write(-1, 0x0000FF);
na konec setup() rutine v “FaceDetect” primeru, RGB LED-ici nista zasvetili, kar spet pomeni, da se setup() rutina ni popolnoma izvedla, prav tako se loop() rutina ni izvedla.
Prej sem poskušal uporabiti ukaze Serial.println(), da bi spremljal potek izvajanja. To je stanje še poslabšalo – po tem nisem več mogel naložiti primerja MoveDetect, ne da bi pri 23 % nalaganja skice v particijo aplikacije dobil sporočilo o napaki. Šele z nalaganjem drugega primerja, ki ni uporabljal particij model in voice_data, sem lahko ponovno vzpostavil normalno delovanje K10. Te težave sem prijavil podpori Unihiker.
Ker mi ni uspelo pravilno zagnati primerov Unihiker, sem se odločil, da bom poskusil ploščo K10 usposobiti za delovanje s priljubljenim primerom »CameraWebserver« podjetja Espressif. Kamera K10 ni priključena na iste pine ESP32S3 kot običajne kamere ESP32, ki so na voljo. V datoteki camera_pins.h sem moral definirati novo konfiguracijo kamere, kot je prikazano v seznamu 1. To novo definicijo kamere sem moral izbrati tudi v datoteki WebServer.ino. Če sem v meniju »Orodja« nastavil ploščo kot »ESP32S3 dev board« in prevedel ta primer, sem dobil sporočilo o napaki med izvajanjem, ki je izviralo iz rutine za inicializacijo kamere: »Error: this camera does not support JPEG«.
Ko sem prebral podatkovni list GC2145, sem to potrdil. Ko sem zakomentiral vrstico
config.pixel_format = PIXFORMAT_JPEG;
in jo nadomestil z:
config.pixel_format = PIXFORMAT_RGB565;
je sporočilo z napako izginilo, pojavilo se je pa sporočilo z drugačno napako:
E (428) cam_hal: cam_dma_config(509): frame buffer malloc failed
E (429) cam_hal: cam_config(599): cam_dma_
config failed
E (429) camera: Camera config failed with
error 0xffffffff
V tem trenutku sem se počutil precej nelagodno in sklenil, da primer CameraWebserver verjetno ne bo deloval s ploščo K10.
Zaključki
Mislil sem, da bom v tem članku imel dovolj prostora, da bi podrobneje obravnaval prenos MicroPythona na K10. Vendar so bile različne težave s podporo za Arduino, s katerimi sem se srečal, precej zapletene, zato mi tukaj ni ostalo dovolj prostora, da bi podrobneje obravnaval MicroPython.
MicroPython je že nekaj časa na voljo za večino članov družine ESP32, zato bi splošna različica za ESP32S3 delovala tudi na UNIHIKER K10. Vendar pa splošna različica MicroPythona za ESP32S3 ne bi vključevala podpore za specifične periferne naprave, ki jih najdemo na K10. Stran K10 na Wikiju vsebuje primere MicroPythona, ki podpirajo nekatere K10 periferne naprave.
Najti povezavo do različice K10 za MicroPython, ki jo ponuja UNIHIKER, je malce zapleteno, vendar je tukaj povezava [1]
UNIHIKER navaja naslednje opombe v zvezi s tem prenosom za MicroPython:
Trenutna različica (0.9.2) funkcij umetne inteligence – vključno s prepoznavanjem obrazov, prepoznavanjem mačk in psov ter prepoznavanjem QR-kod – porablja precejšnje količine sistemskih virov. Zato trenutno ni mogoče hkrati uporabljati funkcij umetne inteligence in WiFi.
Če imate na voljo le eno ploščo K10, ni mogoče hitro preklapljati med programi MicroPython in skicami za Arduino. Zato ne bom preizkušal MicroPythona, dokler ne bom končal z delom s primeri in programi za Arduino na plošči K10.
Glede na vse okoliščine menim, da je K10 za tako nizko ceno zelo dobra plošča. Ker je plošča namenjena izobraževalnemu področju, ni bila v prvi vrsti zasnovana za enostavno vgradnjo v ohišje v okviru projekta po meri. Vendar pa UNIHIKER ponuja datoteko STL, s katero lahko s 3D-tiskalnikom natisnete majhno ohišje za samo ploščo (glej sliko 8). Tukaj je povezava [2].
Listing 1:
if defined(CAMERA_MODEL_K10)
define PWDN_GPIO_NUM -1
define RESET_GPIO_NUM -1
define XCLK_GPIO_NUM 7
define SIOD_GPIO_NUM 47
define SIOC_GPIO_NUM 48
define Y9_GPIO_NUM 6
define Y8_GPIO_NUM 15
define Y7_GPIO_NUM 16
define Y6_GPIO_NUM 18
define Y5_GPIO_NUM 9
define Y4_GPIO_NUM 11
define Y3_GPIO_NUM 10
define Y2_GPIO_NUM 8
define VSYNC_GPIO_NUM 4
define HREF_GPIO_NUM 5
define PCLK_GPIO_NUM 17
Viri:
1: https://www.unihiker.com/wiki/K10/GettingStarted/gettingstarted_mpy/#unihiker-k10-with-micropython
2: https://dfimg.dfrobot.com/62b2fb5caa613609f271523c/wiki/dd231e44c83eacf7ad601ce01b386718.zip
