0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaProgramiranjeProgramiranje Arduino projektov z Raspberry Pi 5

    Programiranje Arduino projektov z Raspberry Pi 5

    Avtor: dr. Simon Vavpotič
    Raspberry Pi 5 je odličen računalnik, s katerim lahko neposredno programiramo Arduino projekte, ne da bi za to potrebovali kakršenkoli zunanji vmesnik. Lahko pa programiramo tudi PICe, ne le tiste v ChipKIT projektih, ampak tudi PIC čipe s protokoloma ICSP in EJTAG. Poglejmo, kako!
    Raspberry Pi 5 ne preseneti samo s svojimi impresivni zmogljivostmi, temveč ohranja tudi 40-polno vtičnico za povezovanje nadgradenj in zunanjih naprav. Z njim lahko Arduino projekte programiramo brez dodatnega serijskega vmesnika prek USB. Mnogi novopečeni uporabniki, za katere je Raspberry Pi 5 predvsem poceni in pred hekerji dokaj varen namiznik, tega niti ne vedo.

    Čeprav deluje tudi isti princip programiranja, kot pri klasičnem PC – s serijskim vmesnikom prek USB, je programiranje in razhroščevanje z že vgrajenim serijskim vmesnikom veliko lažje, zanesljivejše, cenejše pa tudi nekoliko hitrejše. Naj uvodoma dodam še, da majhni računalnik neposredno podpira tudi druge protokole, kot sta I2C in SPI, a pojdimo lepo po vrsti…

    Kako začeti?

    Raspberry Pi 5 z nameščenim Raspberry Pi OS (podrazličica Bookworm) je odličen pri samodejnem zaznavanju in povezovanju vsakovrstnih USB naprav, medtem ko so vmesniki na 40-polni razširitveni vtičnici zaradi varnosti v začetku izključeni.
    Za vklop zaporednega vmesnika se moramo podati v nastavitve, ki jih lahko dosežemo iz ukaznega okna, ki ga lahko zaženemo, če v začetnem meniju v rubriki Accessories izberemo postavko Terminal. Nato program za nastavitve zaženemo ukazom sudo raspi-config, nakar iz menija izberemo Inteface options in Serial port. Na prvo vprašanje, ali želimo, da je prijavno okno dostopno prek zaporednega vmesnika, odgovorimo z ne (»No«), na drugo vprašanje, ali želimo omogočiti strojno podporo za zaporedni vmesnik, pa z da (»Yes«). Zdaj moramo z ukazom reboot iz ukaznega okna le še ponovno zagnati računalnik.
    Po ponovnem zagonu lahko ukaznem oknu z ukazom pinctrl get 14, 15 preverimo, ali je zaporedni komunikacijski vmesnik omogočen in povezan na prava priključka na 40-polni razširitveni vtičnici. Iz odgovora mora biti razvidno, da je PIN8 oz. GPIO14 povezan z oddajnim priključkom zaporednega vmesnika 0 (TXD0) in da je PIN10 oz. GPIO15 povezan s sprejemnim priključkom (RXD0).
    Namestitev Arduino okolja
    Osnovo Arduino IDE razvojno okolje lahko v Raspberry Pi OS namestimo tako, da računalnik prek  Wi-Fi ali Ethernet vmesnika povežemo z internetom in zaženemo naslednji ukaz: sudo apt-get install arduino -y. Kot vedno, lahko pred nameščanjem zaženemo tudi ukaz: sudo apt-get install update, s katerim posodobimo bazo razpoložljivih namestitvenih paketov. Nato počakamo, da se Arduino IDE namesti, saj je namestitev popolnoma avtomatizirana. Taka namestitev je dovolj za programiranje originalnih Arduino modulov.
    Kljub temu moramo za programiranje popularnih modulov ESP8266, ESP32 in ChipKit v Arduino IDE namestiti dodatne programske pakete, katerih namestitev lahko izvedemo prek menija Tools (Orodja), tako da izberemo rubriko Board (Razvojna plošča), nato pa v meniju kliknemo na Boards Manager (Upravljalnik razvojnih plošč), ki prikaže vse dodatne razvojne plošče, ki so na voljo. Vendar med njimi v začetku ni omenjenih modulov, saj moramo prej vnesti iskalni poti.
    Slednje lahko vnesemo tako, da v meniju File kliknemo na opcijo Preferences, ki odpre nastavitveno okno, v katerem nato poiščemo rubriko Additional Boards Manager URLs in vanjo vnesemo z vejicami  ločene iskalne poti za vsakega od dodatnih Arduino modulov. Denimo, za namestitev podpore za prej omenjene moramo vnesti:
    Pri vnosu si lahko pomagamo tudi s tipko na desni strani vnosnega polja, s katero odpremo nekoliko večje okno za večvrstični vnos iskalnih poti. Nastavitve shranimo in Arduino IDE zapremo in nato ponovno odpremo.

    Zdaj bo Boards Manager našel tudi podporo za prej omenjene razvojne plošče, ki jih lahko z njim tudi enostavno namestimo. Ker je potrebno pri vsaki namestitvi prenesti precej podatkov, je hitrost namestitve v precejšnji meri odvisna tudi od hitrosti naše internetne povezave.

    Če potrebujemo dodatne programske knjižnice, lahko te prav tako namestimo iz menija Tools, vendar tokrat odpremo rubriko Manage Libraries… (Upravljanje programskih knjižnic…). Iskanje in nameščanje programskih knjižnic je enako enostavno kot s klasičnim PCjem. Spomnimo le, da moramo pred nameščanjem knjižnic z Boards Managerjem namestiti podporo za posamezno razvojno ploščo, ki jo želimo uporabiti.
    Arduino IDE za Raspberry Pi OS in druge Linuxe je enak kot za Microsoftove Windowse, zato se bomo v njem tako na klasičnem PCju kot na Raspberry Piju počutili kot doma. Pri uporabi Linuxa se razlikujejo le oznake serijskih vmesnikov. Za uporabo prej omenjenega serijskega vmesnika moramo v meniju Tools v rubriki Port izbrati vmesnik /dev/ttyAMA0.
    Omenimo še, da lahko, če jo pri delu potrebujete (z ukazom: sudo apt-get install libreoffice) iz interneta zastonj namestite tudi pisarno LibreOffice, ki je podobna Microsoft Office, ne le po izgledu, ampak podpira tudi večino enakih tipov datotek.
    Kako udobno programirati in preizkušati programsko kodo?
    Večina Arduino razvojnih modulov ima za pomoč pri programiranju nameščeni mikro tipki za signala reset in programiranje. Če imamo možnost, lahko namesto njih ali vzporedno z njima vežemo tudi krmilna signala, ki ju povežemo na Raspberry Pi priključka GPIO17 in GPIO18 na razširitvenem konektorju. Predlagam, da reset vežete na GPIO17, signal za programiranje pa na GPIO18. Na ta način boste lahko na Raspberry Pi 5 neposredno uporabili skripte, ki jih najdete na spletni strani PCUSBProjects.com. Programske skripte so pripravljene za Raspberry Pi OS in uporabljajo ukaz pinctrl, ki je namenjen uporabi z Raspberry Pi 5. Za uporabo skript s starejšimi modeli Raspberry Pi morate ukaz pinctrl nadomestiti z ukazom sudo raspi-gpio, ki na Raspberry Pi 5 ne deluje pravilno, ker ni prilagojen za delovanje z RP1 krmilnikom počasnejših naprav. Slednjega starejši modeli Raspberry Pi nimajo.
    Programske skripte program.sh, run.sh in reset.sh nadomeščajo funkcije mikro tipk in jih lahko po namestitvi v uporabniško mapo uporabljamo z ukaznega okna, ki ga odpremo poleg aplikacije Arduino IDE. Skripte in ostalo lahko prenesete s spletne strani PCUSBProjects.com.
    Skripto program.sh zaženemo preden v Arduino IDE sprožimo prevajanje in prenos programske kode. Tako je Arduino razvojna plošča pripravljena na programiranje, ki ga Arduino IDE samodejno izvede prek serijskih vrat takoj, ko izvirno kodo prevede v strojno kodo.
    Zagon programa v razvojni plošči izvedemo s klicem skripte run.sh, ki najprej signal za programiranje postavi v stanje normalnega delovanja, nato pa sprosti signal za reset, da lahko program v razvojni plošči steče.
    Skripta reset.sh je namenjena le zasilni zaustavitvi delovanja razvojne plošče, kar pride še kako prav v primerih, ko je v programski koda napaka, zaradi katere bi lahko prišlo do poškodb krmilnega dela vezja. Denimo, če krmilimo rele, si vsekakor ne želimo, da ta dlje časa neprestano preklapljal po večkrat na sekundo.
    Pa Microchipovi PICi?
    Programiranje Microchipovih mikrokontrolerjev lahko izvedemo z dodatkom za Arduino ChipKit, ki je tudi blagovna znamka večine, če ne vseh Arduino razvojnih plošč, z Microchipovimi PIC mikrokontrolerji PIC32. Podpora za programiranje slednjih v Arduino razvojnem okolju je zaenkrat slaba, saj ni prilagojena za namizne računalnike z ARM procesorji. Kljub temu menim, da se lahko že v bližnji prihodnosti nadejamo novih razvojnih orodij, še posebej, če se bo s pomočjo Raspberry Pi, Apple Mini in podobnih mikro in mini PC arhitektura ARM prijela tudi v svetu namiznih PC.
    Povsem drugo vprašanje pa je, ali lahko zmogljivi Raspberry Pi 5 že danes v zadostni meri posnema arhitekturo x64 in na ta način omogoči delovanje različice Microchipovega razvojnega okolja MPLAB X IDE za Linux. Posnemovalnik Box64 v Raspberry Pi OS ni težko namesti, je pa zato toliko težje najti devet manjkajočih programih knjižnic. V spletu najdemo tudi plačljivo razvojno okolje PICkitPlus, ki omogoča uporabo programatorjev PICkit tudi z Raspberry Pi.
    Vzporedno poteka tudi razvoj UEFI za Raspberry Pi 5, ki je potreben za namestitev Windows 10 in 11, vendar je podpora zaenkrat še eksperimentalna in podpira le delovanje USB vmesnikov in naprav povezanih z njimi. Za zaganjanje MPLAB X IDE bo potreben tudi posnemovalnik arhitektur x86 in x64. Morda vse skupaj dobimo prihodnje leto. Medtem pa lahko navodila in UEFI 0,2 za namestitev Windows 11 na Raspberry Pi 5 najdete na spletni strani: GitHub.com/worprojects/rpi5-uefi.
    Lahko Raspberry Pi (5) neposredno programira PICe in druge mikrokontrolerje?
    Raspberry Pi 5 s počasnimi napravami komunicira prek RP1 mikrokontrolerja, ki bi ga bilo moč uporabiti tudi kot programator za vsemogoče čipe, če bi mu lahko spremenili ugnezdeno programsko kodo. Tudi, če tega ne bi mogli storiti, še vedno ni prav nobenih ovir za programiranje PIC16, PIC18, in PIC32 prek ICSP ali EJTAG. Naj dodam še, da je kot programatorje seveda mogoče sprogramirati tudi druge modele Raspberry Pi, obenem pa je mogoče programator izdelati tudi iz RP2040 z odprto arhitekturo, ki je namenjen razvijalcem sistemov in ga lahko kupimo v obliki čipa. RP2040 je bil obenem tudi osnova za izdelavo RP1.
    Ker sem pred leti že izdelal programator za PIC18 in PIC32MX, vem da je pri programiranju najpomembneje pravilno implementirati protokol in nato pravilno vnesti slike pomnilnikov iz, v strojno kodo prevedene izvorne kode v C/C++, v trajni pomnilnik mikrokontrolerja. Pri tem ni kakih posebnih časovnih zahtev.
    Moj prvi programator je temeljil na predprogramiranem MCP2200, v katerega (sprva) nisem vgradil lastne programske kode, tako je celoten postopek programiranja potekal v mojem klasičnem PCju. Čeprav je to prepočasi za resno uporabo, je mogoče izvirno kodo sorazmerno enostavno prenesti tudi v Raspberry Pi in jo prilagoditi 40-polnemu razširitvenem priključku. Vendar je prednost Raspberry Pi prav v tem, da lahko neposredno krmili svoje vhodno-izhodne priključke, zato je mogoče programiranje delov programske kode v zbirniku doseči enak učinek kot bi ga s programatorjem, ki se z računalnikom poveže prek priključka USB.
    Naj se zdi še tako neverjetno! Raspberry Pi bi bil z ustrezno programsko opremo lahko odličen programator za številne čipe. A bodi za tokrat dovolj. Več o tej temi napišem v katerem od prihodnjih člankov. Podrobnosti iz tokratnega članka si lahko ogledate tudi v videu na YouTube kanalu PCUSBProjects.
    Slike 1-4, asvtorske pavice kor avtor zadržim, vendar dovolim neomejeno objavo v Svetu Elektronike in na spletni strani svet-el.si. Slika je iz mojega foto arhiva.