Python ir bibliotekų diegimas ir konfigūravimas Raspberry Pi. Raspberry Pi GPIO kaiščiai ir jų naudojimas iš Python Raspberry pi 3 gpio pinout

01.03.2024

Kažkada rašiau apie tai, ką planuoju naudoti Raspberry Pi kaip žiniatinklio serverį, kuris valdo mano įrenginį. Atėjo laikas pagalvoti apie ryšio sąsają. Kūrėjas, norintis prijungti savo aparatūrą prie Avietinė yra du būdai: naudokite tam USB arba bendrosios paskirties terminalai ( GPIO). Su galimybėmis USB viskas apytiksliai aišku (ateityje pabandysiu parašyti įrašą apie darbą su išorine aparatūra per USB). APIE GPIO informacijos nėra daug, o naudojimo patirties nėra. Apskritai man įdomu GPIO ir jo galimybes. Straipsnyje daugiausia dėmesio bus skiriama bendro pobūdžio išvadoms Raspberry Pi - GPIO:

  • galimybės GPIO
  • pinout GPIO
  • kaip dirbti su GPIOįjungta Python
  • charakteristikos GPIO(pirmiausia greičio indikatoriai)
  • naudojimo pavyzdys GPIO Raspberry

Uostas GPIO- bendros paskirties išvados Raspberry Pi

Visų pirma, nesinori kiekvieną kartą jungti monitoriaus ir klaviatūros. Todėl pradinėje būsenoje aš turiu Avietinė Yra prijungti tik du „laidai“: maitinimas ir tinklo kabelis, skirtas prijungti prie maršrutizatoriaus. Nors tai nėra esminė svarba: viskas, kas aprašyta toliau, bus tiesa, kaip ir dirbant su konsole Avietinė per SSH ir kai naudojate prijungtą klaviatūrą.

Uostas GPIO (trumpai Bendrosios paskirties įvesties išvestis) yra programine įranga valdomi bendrosios paskirties kaiščiai, kurie gali veikti kaip įvestis (signalui nuskaityti) arba išvestis (signalui perduoti). Įjungta Raspberry Pi jie pagaminti iš dviejų eilių kaiščių, kurių žingsnis yra 2,54 mm (jungtis PLD). Posakis „bendra paskirtis“ reiškia, kad vartotojas gali naudoti šiuos kaiščius savo reikmėms bet kokiu būdu, nes jie neatlieka jokių konkrečių užkoduotų funkcijų. Dirbant su GPIO tiesiog reikia turėti omenyje, kad tai skaitmeniniai išėjimai kurių maksimalus įtampos lygis yra 3,3 V, atitinkantis loginį. Todėl programiškai išvesti į GPIO analoginio signalo arba tiekti analoginį signalą į jį išoriškai vėlesniam skaitmeninimui.

Taigi, kas yra uostas? GPIO ir kokios jo galimybės? GPIO sujungia 26 išvadas, tarp kurių yra šios:

  • 2 kaiščiai su pastovia 5 V įtampos lygiu
  • 2 kontaktai, kurių nuolatinė įtampa yra 3,3 V
  • 5 bendri kaiščiai (įžeminti)
  • 17 skaitmeninės programinės įrangos valdomų kaiščių
Kiekvienas iš šių 17 kontaktų gali veikti kaip įvestis arba išvestis. Tačiau, be to, kai kurios iš šių išvadų gali būti alternatyvios neprivaloma funkcijas. Ką tai reiškia? Kiekvienas iš šių kontaktų, priklausomai nuo programinės įrangos nustatymų, gali veikti kaip įprastas išėjimas arba kaip vienos iš nuosekliųjų sąsajų išvestis. Tokių išvadų pagalba GPIO kaip alternatyva, galima įdiegti nuosekliąsias sąsajas I2C, SPI ir kitos nuoseklios sąsajos per UART.

Pastaba: Tai žinomos sąvokos tiems, kurie patyrė mikrovaldiklių programavimą. Tiems, kurie su tuo nesusidūrė ir šiame etape vis dar nori tiesiog programiškai išvesti „1“ ir „0“ ant norimo kaiščio, žinių apie šias sąsajas nereikia. Todėl čia į tai nekreipsiu dėmesio. Pasakysiu tik tiek, kad tarp mikrovaldiklių ir kitų įrenginių (įvairių jutiklių, ADC, DAC, atminties lustų) tai yra labai dažnos sąsajos, todėl šių sąsajų kontaktų buvimas GPIO Raspberry esant reikalui leidžia labai lengvai ir su minimaliu programos kodu „išmokyti“. Avietinė„bendrauti“ su savo įrenginiu.

Kaip suprasti, kur yra išvestis? Tam jums reikia GPIO smeigtukas. Oficialioje dokumentacijoje parodytas skirtingų versijų išvados GPIO Raspberry Pi. Čia pateiksiu naujausią šio momento įrašą GPIO- Dėl Raspberry Pi Model B Rev.2:

Diagramoje skliausteliuose parodyta alternatyvi kiekvieno kaiščio funkcija:

  • S.D.A., SCL- sąsajos kaiščiai I2C
  • TXD, RXD– išvados UART
  • MOSI, MISO, SCLK, CE0, CE1- sąsajos kaiščiai SPI
  • GPCLK0 - (Bendrosios paskirties laikrodis) išvestis kintamajam formuoti laikrodžio dažnis išoriniams įrenginiams
  • PCM_CLK, PCM_DOUT- garso sąsajos kaiščiai I2S

Ką SVARBU žinoti prieš dirbant su GPIO Raspberry Pi

Tai turbūt svarbiausias skyrius. Yra keletas dalykų, kuriuos reikia nepamiršti GPIO ir imtis tam tikrų atsargumo priemonių, kad nesugadintumėte dar 35-50 USD Avietinė. Žemiau pateikiamos tokios „kritinės savybės“, taip pat keletas niuansų, kurie gali būti tiesiog naudingi ir kuriuos patartina atsiminti kuriant.

  • Didžiausia bendra abiejų 3,3 V kontaktų srovė yra 50 mA! Todėl šie kaiščiai gali būti naudojami išoriniams įrenginiams maitinti tik tuo atveju, jei jų srovės suvartojimas yra mažesnis nei 50 mA.
  • Didžiausia bendra abiejų 5 V kontaktų srovė yra 300 mA!Šie kaiščiai taip pat gali būti naudojami išoriniams įrenginiams maitinti tik tuo atveju, jei jų srovės suvartojimas yra mažesnis nei 300 mA.
  • Neleidžiama įjungti GPIO maitinimo įtampa didesnė nei 3,3 V! Skaitmeniniai išėjimai GPIO turėti įtampos lygius 0 - 3,3 V ir Netinkamas su tradiciniais įtampos lygiais 0-5V! Todėl negalite tiesiogiai prisijungti Raspberry Pi ir su kuriais dirba skaitmeniniai įrenginiai TTL-5 V lygiai. Jei taikoma GPIO išvada Avietinė loginis vienetas, reiškiantis 5 V, o ne 3,3 V – kaištis gali sugesti.
  • išvadas GPIO 14 Ir GPIO 15 pagal numatytuosius nustatymus atlieka alternatyvią funkciją ir yra išvestis UART - RXD Ir TXD. Todėl po įjungimo jie turi aukštą 3,3 V lygį. Programinėje įrangoje juos galima perkonfigūruoti į įprastus kaiščius. Kita GPIO po įjungimo Avietinė atlieka pagrindinę funkciją ir veikia kaip įprasti skaitmeniniai išėjimai.
  • Visi pasirinktiniai kaiščiai GPIO pagal numatytuosius nustatymus yra įvestis. Todėl jie turi didelę įėjimo varžą. Tuo pačiu metu neįjungtas loginio lygio prisitraukimas, išvados „kabo ore“, taigi įjungus Avietinėįtampa ant jų gali „plaukti“. Tai yra gerai. Vienintelės išimtys yra šie 2 išėjimai:
  • išvadas GPIO 0 (SDA) Ir GPIO 1 (SCL) pagal nutylėjimą jie yra „prisirišę“ prie mitybos. Todėl įjungus Avietinė jie turi loginę vieną įtampą (3,3 V).
  • Signalas ant bet kurio skaitmeninio kontakto gali būti išorinis pertraukimo šaltinis. Kiekvienas, kas anksčiau susidūrė su mikrovaldikliais, supras, kaip tai gali būti naudinga. Kaip naudoti pertraukas Raspberry Pi- Kol kas tai yra kito įrašo idėja.

Galbūt tai ir viskas... Na, apskritai, reikia tai atsiminti GPIO- tai yra kaiščiai, tiesiogiai prijungti prie procesoriaus Raspberry Pi, jie yra bendravimo su juo įrankis. Todėl neatsargus elgesys GPIO gali negrįžtamai pakenkti procesoriui. Čia aš baigiu „baliausėmis“. Pagrindinė ir paprasta taisyklė – nenaudoti aukštos įtampos ir nevartoti didelės srovės. Eikime prie reikalo.

Kaip dirbti su GPIOįjungta Python

Pastaba: Dirbti su GPIO Iš esmės yra du būdai:

1) Naudojant bash ir failų sistema Rasbietė
Raspbian yra vienas iš paskirstymų Linux, ir koncepcija Linux daro prielaidą, kad bet kuris objektas yra failas. Tai leidžia jums išvesti ir skaityti signalus iš GPIOįprastos apvalkalo komandos bash tiesiai terminale! Loginio vieneto išvestis šiuo atveju atrodo kaip komanda įrašyti „1“ į failą, atitinkantį norimą išvestį. Pateikiami išsamūs pavyzdžiai.

2) Naudojant programavimo kalbas (įvairios nuo Cį BASIC)

Tai lankstesnė ir našesnė parinktis, nes jai nereikia prieigos prie failų sistemos. Tuo pačiu metu bendrauti su GPIO Raspberry galima įvairiomis kalbomis, kurių įspūdingas sąrašas pateikiamas kartu su pavyzdžiais. Žemiau pažvelgsime į darbo pavyzdį GPIOįjungta Python.


Tarkime, kad turime išvesti loginį „1“ arba „0“. GPIO 7 ir perskaitykite signalą iš GPIO 8.

0) Dirbti su GPIOįjungta Python reikia specialios bibliotekos RPi.GPIO. Dabar jį galima įdiegti tiesiai iš saugyklų, o ne atsisiųsti archyvą ir įdiegti rankiniu būdu, kaip buvo anksčiau. Pasinaudokime šia galimybe:

Sudo apt-get install python-rpi.gpio(arba python3-rpi.gpio 3-ajai Python versijai)

Pasirodo, kad naujajame paskirstyme Raspbian Jis jau įdiegtas, tad judėkime toliau.

0.5) GPIO yra sistemos elementas Raspbian, todėl reikia su juo dirbti tik pagal supervartotoją. Programą rašysime tiesiai konsolėje, todėl paleidžiame pitonas:

Sudo python

1) Importuokite biblioteką, su kuria norite dirbti GPIO:

Importuokite RPi.GPIO kaip GPIO

2) Nustatykite PIN numeravimo metodą GPIO.
Kam? Faktas yra tas, kad daugelyje šios bibliotekos funkcijų būtina nurodyti kaiščio, su kuriuo norime atlikti tam tikrą manipuliavimą, numerį. Tačiau nurodytą skaičių galima interpretuoti įvairiai: arba tai yra skaičius GPIO, arba tai yra PIN kodas (P1-26) lentoje Avietinė(žr. pinout). Kad nebūtų painiavos, iškart po importavimo patartina „nurodyti bibliotekai“, kokią numeraciją naudosime programoje.
GPIO.setmode(GPIO.BCM) #GPIO.BCM – bus naudojama GPIO numeracija

# GPIO.BOARD - bus naudojamas kaiščių numeracija P1-26

3) Sukonfigūruokite kaiščius
Kadangi mes išvesime signalus į GPIO 7, sukonfigūruokite jį kaip išvestį ir GPIO 8- kaip įvestis:
GPIO.setup(7, GPIO.OUT)
GPIO.setup(8, GPIO.IN)

Pastaba: tiksliai įvykdžius šią komandą GPIO 7 nusistovi tiksliai iki 0 V, nes šis kaištis nebėra įvestis ir jame nėra slankiojo potencialo.

Pasirenkamo parametro naudojimas pull_up_down funkcijas sąranka taip pat galima konfigūruoti" pakelti"išėjimas į maitinimą arba įžeminimą:
GPIO.setup(8, GPIO.IN, pull_up_down=GPIO.PUD_UP) #traukite iki 3,3 V maitinimo šaltinio
GPIO.setup(8, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) #pritraukimas į žemę 0 V
GPIO.setup(8, GPIO.IN, pull_up_down=GPIO.PUD_OFF) #numatytasis režimas

4) Generuokite ir skaitykite signalus
Suformuojame "1" ir "0". GPIO 7 ir perskaitykite signalą iš GPIO 8:

GPIO.output(7, tiesa)

GPIO.output(7, klaidinga)
signalas = GPIO.input(8)

5) Užbaikite darbą
Atlikę visas būtinas operacijas, darbą baigiame teisingai:
GPIO.cleanup()

Atlikus šią operaciją bus grąžinti visi išėjimai GPIOį pradinę būseną.

Pastaba: jei neatliksite šios operacijos, tai net uždarius programą ir išėjus pitonas, išvados GPIO išliks tokios būklės, kokios buvo užbaigimo metu. Tai gali lemti tai, kad kai vėl bandysite dirbti su šiais kaiščiais, pasirodys pranešimas, nurodantis, kad kaištis jau naudojamas:"Įspėjimas: šis kanalas jau naudojamas ir vis tiek tęsiasi."

Visas pavyzdys visiškai :
importuoti RPi.GPIO kaip GPIO #prijunkite biblioteką
GPIO.setmode(GPIO.BCM) #nustatykite numeravimo režimą
GPIO.setup(7, GPIO.OUT) #konfigūruokite GPIO 7 kaip išvestį
GPIO.setup(8, GPIO.IN) #konfigūruoti GPIO 8 kaip įvestį
GPIO.output(7, tiesa) #išvesti loginį „1“ (3,3 V) į GPIO 7

GPIO.output(7, klaidinga) #išvesti loginį „0“ į GPIO 7
signalas = GPIO.input(8) #perskaitykite signalą iš GPIO 8 į signalo kintamąjį
GPIO.cleanup() #baigiamas darbas su GPIO


Charakteristikos GPIO

Mano nuomone, iš visų charakteristikų įdomiausi laiko parametrai GPIO, ty kaip greitai skaitmeninės išvesties būsena gali pasikeisti iš „1“ į „0“ ir atgal, jei prievadą valdo programinė įranga. Norėdami tai išbandyti, buvo naudojamas šis kodas:

importuoti RPi.GPIO kaip GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(7, GPIO.OUT)
kol (1):
GPIO.output(7, tiesa)
GPIO.output(7, klaidinga)

Pastaba: Viršutinėse nuotraukose parodytų impulsų dažnis gali šiek tiek svyruoti. Taip yra dėl to, kad Linuxįjungta Avietinė atlieka daugybę užduočių ir ne visada visą procesoriaus laiką skiria mūsų programai. Taip pat turėtumėte nepamiršti, kad kilpoje reikia pridėti papildomų komandų kol gali žymiai padidinti kiekvieno impulso laiką.

Iš toliau pateiktų paveikslėlių galite įvertinti kaiščio perjungimo laiką GPIO iš vienos būsenos į kitą (kitaip tariant, perėjimo proceso trukmė) – tai maždaug 50 ns. Turiu pasakyti, gana geri rezultatai, tačiau jie negali konkuruoti greičiu su FPGA GPIO Raspberry Pi negali.

Pastaba: kokias trukmes galima pasiekti naudojant C, aprašyta.

Atkreipkite dėmesį, kad tie kaiščiai GPIO, kurie veikia nuosekliosios sąsajos režimu, leidžia pasiekti didelį greitį, kadangi nuosekliosioms sąsajoms veikiant dideliu greičiu, procesorius generuoja laikrodžio dažnius ir signalus aparatinėje įrangoje pagal konkrečios nuosekliosios sąsajos taisykles. Taigi, pavyzdžiui, naudojant išvestį GPCLK0 Galite gauti maždaug 100 MHz ir didesnio dažnio impulsus.

Naudojimo pavyzdys GPIO Raspberry

Kaip visa tai galima pritaikyti praktiškai? Kodėl išvesti "1" arba "0" į GPIO? Pavyzdžiui, galite mirksėti šviesos diodais! Pavyzdžiui, galite valdyti galios apkrovą ir įjungti/išjungti bet kokius buitinius prietaisus, veikiančius iš 220 V tinklo. Tam jums reikės Raspberry Pi ir tik 7 dalys. Tokio programinės įrangos „jungiklio“ schema parodyta žemiau:

Pastaba: optinio tvarkyklės lustas MOC3041M turi galvaninę maitinimo grandinių izoliaciją nuo silpnos srovės, todėl yra „saugos barjeras“ tarp Avietinė ir 220 V tinklo, jo gedimas nepakenks Avietinė. Kondensatorius C8 turi būti aukštos įtampos ir atlaikyti ~400 V įtampą.

Ši grandinė gali perjungti srovę iki 16A. Jis pilnai derinamas, išbandytas praktikoje ir užima labai mažai vietos (deja, neturiu įrenginio nuotraukų kur jis naudojamas). Įjunkite „1“. GPIO 7 Raspberry Pi suaktyvins optodriver ir atidarys triac V2, kuri per save pradės leisti iš 220 V tinklo į galios apkrovą ateinančią srovę. Įrenginys įsijungia. Kai tik GPIO 7 Pasirodo "0" - triac V2 užsidaro ir atsidaro apkrovos grandinė. Prietaisas išsijungia. Tai paprasta!

Paraiška yra tiksliai Raspberry Pi leidžia valdyti apkrovą programiškai, pagal grafiką, įvykus bet kokiems išoriniams įvykiams ar signalams (pvz., signalas iš nuotolinio valdymo pulto atidaryti vartus) ir net internetu (pavyzdžiui, per savo svetainę bėga tuo pačiu Avietės). Žodyje, Avietinė padeda lavinti vaizduotę.

Tai viskas. Kitame įraše apie Avietinė Pabandysiu apibūdinti darbą su UART Ir SPI.

Ką daryti, kai nėra ką veikti?
Išbandykite ką nors naujo!

Jei Raspberry Pi įsigijote tik iš smalsumo, nesuvokdami, kam tiksliai jo reikia, tuomet tikriausiai kasdien vis sunkiau jį rasti.
taikymas. Tu jau pakankamai žaidei su juo. Bandėme diegti įvairias operacines sistemas, klausėmės muzikos, žiūrėjome vaizdo įrašus, bandėme žaisti ir piešti... Ir turbūt nusivylę priėjome išvados – „Juk Raspberry Pi nelabai tinka naudoti kaip stalinį kompiuterį. “ Jis yra per lėtas ir apgalvotas, palyginti su įprastu kompiuteriu. Ir atrodo, kad nieko rimto su juo padaryti negalima. Belieka surasti jam panaudojimą kaip medijos centrą arba paprastą interneto serverį, o tai nėra baisu
palikite 24/7...
Tačiau vieną dalyką „Raspberry Pi“ gali atlikti daug efektyviau nei bet kuris namų kompiuteris – jis gali valdyti išorinius įrenginius. Prietaisai gali būti visiškai bet kokie – nuo ​​paprastos lemputės iki nepilotuojamo orlaivio. Šiuo atveju Raspberry apimtį riboja tik jūsų vaizduotė ir žinios. Ir jei jūs niekada nieko panašaus nedarėte, bet tai jus domina, tada šis straipsnis skirtas jums. Taigi, pradėkime.
Norint susisiekti ir valdyti bet kokius išorinius įrenginius, Raspberry Pi turi sąsają, vadinamą GPIO. Tai yra santrumpa Bendrosios paskirties įvesties išvestis. O rusiškai tai žemo lygio tiesioginio valdymo įvesties-išvesties sąsaja. Raspberry lentoje jis yra kampe, 26 kaiščių šukos pavidalu, šalia vaizdo išvesties. Tie.
Per šią sąsają Raspberry gali klausytis ir duoti komandas bet kuriam išoriniam įrenginiui, pavyzdžiui, dronui. Tačiau šiandien mes nekursime drono, pradėsime nuo paprastos lemputės, tiksliau – LED, kuri atliks eksperimentinės lemputės vaidmenį. Mūsų užduotis yra padaryti, kad šviesos diodas, prijungtas prie Raspberry, įsijungtų ir išsijungtų pagal jo komandą. Be to, norėdami įsitikinti, kad šie įtraukimai atsiranda gana sąmoningai ir taip, kaip mes norime, o ne dėl kokių nors nesklandumų procesoriaus gilumoje, į savo programą įtrauksime elementą
bendravimas su mumis. Tie. sukurkime aiškią hierarchiją – Raspberry valdo šviesos diodą,
ir mes tvarkome pačią Raspberry. Dabar turime pasiruošti ir kur nors jį gauti
Keli dalykai. Pirma, jums reikia rasti Šviesos diodas:

Galite jį gauti iš seno sulūžusio žaislo, iš žiebtuvėlio su žibintuvėliu, paklauskite draugo radijo elektronikos srityje ir galų gale tiesiog nusipirkite.
Antra, jums reikės bet kokių laidų ir poros jungčių B.L.S.:


Tokias jungtis galima ištraukti iš seno sisteminio bloko kartu su laidais arba paprašyti iš kompiuterinio draugo, taip pat nusipirkti. Jie puikiai tinka prijungti prie Raspberry jungties. Pradėkime nuo naudojamų prievadų planavimo. Prievadas, grubiai tariant, yra jungties kaištis. Kadangi yra daug kaiščių (26), yra ir daug prievadų. Ir kad jie to nedarytų
Jei susipainiosite, kiekvienam prievadui priskiriamas atskiras numeris ir pavadinimas. Reikėtų pažymėti, kad ne visi šios jungties kaiščiai yra prievadai. Kai kurie smeigtukai
prijungti prie įtampos šaltinių, o kai kurie išvis niekur nėra prijungti (Tiesą sakant, jie vis dar yra prijungti, bet jų negalima naudoti, galite
nužudyk savo Malinką. Todėl geriau jų neliesti).
Būtent taip
Šie prievadai yra lentoje:

Kad šviesos diodas užsidegtų, turime jį prijungti prie maitinimo šaltinio. Pasirinkimas maitinti LED P1-01, viršutinis smeigtukas paveikslėlyje, ant kurio yra
įtampa 3,3v. Norėdami valdyti šviesos diodą, mums reikia vieno GPIO prievado. Galite pasirinkti bet kurį. Bet jei turite BLS jungtį, tokiu atveju patogiau naudoti prievadą, kuris yra prijungtas prie kaiščio P1-03 ir yra vadinamas GPIO 0. Šiuo atveju, naudodami vieną jungtį, galime prijungti savo LED. Taigi, mes prijungsime šviesos diodą tarp jungties kojų P1-01 Ir P1-03. Iš išvesties P1-01 LED maitinimui imame +3,3V, ir išėjimą P1-03 tai bus GPIO prievado valdymo kaištis. Visi šie prievadai fiziškai yra Raspberry Pi centriniame procesoriaus bloke, vadinamame BCM2835. Šis procesorius gali prijungti bet kurį prievadą prie 3,3 V įtampos šaltinio arba gali prijungti prievadą prie 0 maitinimo šaltinio (arba jis negali prisijungti niekur, bet apie tai vėliau). Jis atlieka šiuos jungiklius pagal duotą komandą. Tai reiškia, kad prievadą pajungus prie +3,3V įtampos, mūsų šviesos diodas neužsidega, nes srovė neturi kur dingti. Ir kai procesorius prijungs prievadą prie 0, mūsų šviesos diodas užsidegs, nes srovė eis nuo +3.3V iki 0 per šviesos diodą. Tai reiškia, kad mūsų programa turės duoti atitinkamas komandas procesoriui pagal mūsų pageidavimą.
Mažas, bet svarbus
atsitraukti.
Tiesą sakant, neturėtume jungti šviesos diodo tiesiogiai tarp +3,3 V maitinimo šaltinio ir prievado kaiščio. To negalima padaryti dėl dviejų priežasčių. Viena priežastis: bet kuris šviesos diodas normaliai veikia esant tam tikram srovei. Jei per šviesos diodą teka didelė srovė (o +3.3V išėjimas gali tiekti iki 50mA), šviesos diodas perdegs. Jei srovė maža, šviesos diodas užsidegs per silpnai arba visai nedega. Daugumos įprastų šviesos diodų veikimo srovė yra 10–20 mA. Tai veda prie antrosios priežasties (nors šiuo atveju ji nėra svarbi). Jei per GPIO prievadą praleisime didelę srovę, sunaikinsime procesorių ir Raspberry mirs. Todėl turime užtikrinti, kad per uostą netekėtų didesnė nei leistina srovė. Nustatykime sau 16mA ribą, tad procesoriaus tikrai neišdeginsime. Kaip tai pasiekti? Labai paprasta! Mums reikia nuosekliai su LED
įjunkite srovės ribojimo rezistorių. O dabar apskaičiuosime.
Tarkime, kad šviesos diodo veikimo srovė yra 10 mA. Užtikriname, kad mūsų pasirinkta srovė neviršytų maksimalios leistinos 16 mA prievado srovės. Dabar žinodami, kad maitinimo įtampa yra 3,3 V, o darbinė srovė yra 10 mA, galime naudoti Ohmo dėsnį, kad apskaičiuotume reikalingą varžą. R=U/I=3,3/0,01=330 omų. Taigi turime rasti rezistorių, kurio varža 330 omų. Tiksliau, bent 330 omų varža. Galima ir daugiau. Šviesos diodas pastebimai šviečia net esant 1000 omų arba 1 kOhm varžai. Apskritai mūsų užduotis yra rasti rezistorių su
atsparumas nuo 330 omų iki 1 kOhm. Jei jį rasite, galite surinkti šią diagramą:


Geriau surinkti grandinę ant duonos lentos. Asmeniškai eksperimentams mano sūnus paskolino savo konstravimo rinkinį „Connoisseur“.
Štai kaip atrodo surinkta grandinė:

Taip prisijungiame prie Raspberry:

Ir čia yra bendras visos struktūros planas:

Kraštutiniu atveju galite tiesiog susukti elementų gnybtus. Tačiau šiuo atveju turite įsitikinti, kad nuogos elementų kojelės netyčia nepatenka ant Raspberry kontaktinių trinkelių. Tai gali jį nužudyti. Taip pat verta atkreipti dėmesį į tai, kad šviesos diodas turi būti prijungtas Anodasį + maitinimo šaltinį, t.y. mūsų atveju taip yra P1-01. Kaip rasti LED anodą? Labai paprasta! Iš bet kurio nuotolinio valdymo pulto paimkite 1,5 V bateriją ir prijunkite prie jo LED. Jei jis neužsidega, pakeiskite gnybtus. Jei jis užsidega, tada + baterijos bus šviesos diodo anodas.

Jei surinkote grandinę, kol kas atidėkite ją į šalį. Dabar pereisime prie antrosios užduoties dalies – programos, skirtos šviesos diodui valdyti, rašymo. Šią programą parašysime C kalba.
Kodėl C? Tiesiog todėl, kad aš nemoku kitų kalbų, o kadangi jūs skaitote šį straipsnį, greičiausiai jūs taip pat šiek tiek išmanote programavimą ir radijo elektroniką, o tai reiškia, kad jums nesvarbu, nuo kurios kalbos pradėti.
Paprastai programavimo kalbų mokymasis prasideda nuo „Hello World!“ programos rašymo, bet mes esame šaunesni už „tuos“ manekenus, todėl tuoj pat pradėsime nuo žemo lygio darbo su periferiniais įrenginiais. Be to, tai nėra daug sudėtingesnė nei HelloWorld. ;) Ko tau reikia? Mums reikia bet kokio teksto rengyklės, kurioje įvesime programą. „Raspbian“ turi puikų redaktorių. nano“ Reikia ir kompiliatoriaus, tai programa, kuri mūsų parašytą programą iš žmogui suprantamos kalbos verčia į kompiuteriui suprantamą kalbą. Tie. sukuria vykdomąjį failą iš mūsų programos, kurį vėliau paleisime Raspberry. Mes taip pat turime šį dalyką, jis vadinamas gcc. Šis kompiliatorius pateikiamas su visomis Linux sistemomis ir yra paruoštas naudoti.
Kaip matote, mes jau turime viską, ko mums reikia. Nors ne. Mums vis dar trūksta vieno dalyko. Mes jį paimsime iš interneto. Kalbame apie Raspberry GPIO prievadų valdymo funkcijų biblioteką, specialiai sukurtą malonaus žmogaus, kad mūsų programa savo paprastumu galėtų konkuruoti su Helloworld ir mums patiems nereikėtų sukti galvos tyrinėjant techninę procesoriaus ir procesoriaus dokumentaciją. darbo su ja viduriais protokolai. Pati biblioteka susideda iš antraštės failo, kuriame yra visi funkcijų pavadinimai su kintamomis struktūromis, ir pačių funkcijų bibliotekos failo. Šią biblioteką reikia atsisiųsti ir įdiegti, kad kompiliatorius galėtų su ja dirbti. Biblioteka vadinasi bcm2835-1,17. Paskutiniai bibliotekos pavadinimo skaitmenys rodo jos versiją. O kadangi biblioteka nuolat atnaujinama autoriaus, versijos keisis. Šiuo metu yra 1.17 versija. Naujausios versijos numerį galite rasti adresu: http://www.open.com.au/mikem/bcm2835/index.html Naudodami tą pačią nuorodą galite susipažinti su visomis funkcijomis, esančiomis šioje bibliotekoje.
Kol kas įdiegsime 1.17 versiją. Paleiskite terminalo langą ir įveskite
ten komanda:
wget http://www.open.com.au/mikem/bcm2835/bcm2835-1.17.tar.gz Biblioteka greitai atsisiunčiama. Norėdami jį įdiegti, pirmiausia turite jį išpakuoti. Tai atliekama naudojant šią komandą:
tar zxvf bcm2835-1.17.tar.gz
Dabar eikime į katalogą, kuriame įdiegta ši biblioteka:
cd bcm2835-1.17
Na, įdiekime:
./configure make
sudo atlikti patikrinimą
sudo make install
Tai viskas, dabar turime šią biblioteką, ji įdiegta ir mes, ir kompiliatorius, galime ja pasinaudoti savo naudai. Pradėkime rašyti programą. Grįžimas į pagrindinį katalogą: CD..
Čia galite sukurti aplanką mūsų eksperimentams bet kokiu pavadinimu, pavyzdžiui, myprog:
mkdir myprog
Eikime į šį aplanką:
cd myprog Ir mes pradedame rašyti savo programą: nanoGPIO-testas.c
Ši komanda paleidžia teksto rengyklę nano kuri sukuria tekstinį failą GPIO-testas.c.Dabar galite įvesti šią programą
(galite tiesiog nukopijuoti ir įklijuoti):

//GPIO-test.c
// Programa 1 sekundei įjungia šviesos diodą,
// prijungtas prie prievado P1_03
// Sukompiliuoti naudojant gcc -o GPIO-test GPIO-test.c -lrt -lbcm2835

#įtraukti

#define PIN RPI_GPIO_P1_03 // RPi versijai, v1
//#define PIN RPI_V2_GPIO_P1_03 // RPi versijai, v2

Int main ()
{
if (!bcm2835_init()) // GPIO inicijavimas
grąžinti 1; //Užbaigti programą, jei inicijavimas nepavyksta

Bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP); //Nustatykite prievadą P1_03 į išvestį
bcm2835_gpio_write(PIN, LOW); // Nustatykite prievadą į 0, šviesos diodas dega
bcm2835_delay(1000); // Palaukite 1000 milisekundžių
bcm2835_gpio_write(PIN kodas, AUKŠTAS); // Nustatykite prievadą į 1, šviesos diodas išjungtas
grąžinti 0; // Išeikite iš programos
}

Atkreipkite dėmesį į #define linijas. Programoje yra 2 iš jų ir vienas iš jų yra komentuojamas. Viena eilutė skirta RPi v1 versijai, antra - RPi v2.
Jei turite v1, palikite viską taip, kaip yra. Jei turite RPi v2, pašalinkite pirmąją eilutę naudodami #define, o iš antrosios pašalinkite komentaro simbolį //.Ateityje visose kitose programose tiesiog prievado apibrėžime pridėkite _V2_ tarp RPI ir GPIO, jei jūsų plokštė yra RPi v2.
Išsaugokite mūsų programą ctrl-o ir išeikite iš teksto rengyklės ctrl-x. Dabar, jei įvesite komandą ls, pamatysite naujai sukurtą failą GPIO-test.c. Kad šis failas taptų veikiančia programa, jis turi būti sukompiliuotas. Mes rašome: gcc -o GPIO-testas GPIO-testas.c -lrt -lbcm2835šioje eilutėje: gcc yra kompiliatoriaus pavadinimas; -o GPIO-test GPIO-test.c Ši komanda nurodo kompiliatoriui, kad jis turi sukurti vykdomąjį failą pavadinimu GPIO-test iš tekstinio failo GPIO-test.c; -l (lot. mažasis l) bcm2835 praneša kompiliatoriui, kad visas mūsų programoje jam nežinomas funkcijas galima rasti įdiegtoje bcm2835 bibliotekoje. Jei kompiliatorius nepateikė jokių pranešimų, tada viskas pavyko. Jei duosi komandą dabar ls, tada pamatysime, kad kataloge atsirado kitas GPIO-testo failas, kuris pažymėtas žaliai. Tai rodo, kad failas yra
vykdomoji programa. Tereikia jį paleisti, bet prieš tai dar kartą patikriname savo grandinę su LED, kad viskas būtų teisingai surinkta ir prijungta prie kontaktų P1_01 Ir P1_03 GPIO jungtis. Jei klaidų nerasta, paleiskite programą: sudo ./GPIO testas Po to turėtų užsidegti šviesos diodas
lygiai 1 sekundę ir išeik. Jei taip atsitiko, aš jus sveikinu! Ką tik naudojote Raspberry Pi, kad per GPIO prievadą siųstumėte komandas į šviesos diodą: įjunkite, deginkite 1 sekundę ir išjunkite.
Dabar pakalbėkime apie tai, ką daro kiekviena mūsų programos eilutė.
Visi užrašai po dvigubo pasvirojo brūkšnio // yra komentarai ir niekaip neįtakoja programos vykdymo.

#įtraukti-ši eilutė nurodo kompiliatoriui, kad programa naudoja antraštės failą bcm2835.h. Šiame faile yra visi funkcijų aprašymai ir GPIO prievado ID.

>#define PIN RPI_GPIO_P1_03- čia mes sakome kompiliatoriui, kad visur, kur programoje jis mato PIN identifikatorių, jis turi jį pakeisti RPI_GPIO_P1_03 identifikatoriumi. Tai daroma tam, kad, jei pageidaujama, galėtume greitai pakeisti prijungto prievado numerį. Norėdami tai padaryti, pakanka pakeisti tik šią eilutę, o ne ieškoti visoje programoje, kurioje naudojome šį identifikatorių.

int main () Tai yra mūsų programos pradžia, pagrindinės funkcijos žymėjimas C.

if (!bcm2835_init())- ši dalis bando inicijuoti GPIO ir, jei nepavyksta,
grąžinti 1; tada ji sugenda programą ir išsiunčia 1 kodą.

bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);- Ši funkcija nustato mūsų prievado P1_03 išvesties režimą. Tie. nurodo procesoriui, kad šis prievadas bus naudojamas išoriniam įrenginiui valdyti.
bcm2835_gpio_write(PIN, LOW);- nustatyti prievadą P1_03 į žemą būseną, t.y. procesorius prijungia jį prie 0. Po to užsidega šviesos diodas.

bcm2835_delay(1000);- Ši funkcija tiesiog laukia 1000 milisekundžių arba lygiai 1 sekundę. Visą šį laiką dega mūsų šviesos diodas.

bcm2835_gpio_write(PIN kodas, AUKŠTAS);- nustatyti prievadą P1_03 į aukštą būseną, t.y. procesorius jungia prie +3.3V. Šviesos diodas užgęsta.

B>grąžinimas 0; - Išeikite iš programos naudodami kodą 0.

Tie. algoritmas darbui su GPIO prievadu įrašymo režimu, t.y. išvestis atrodo taip:
1. Inicijuoti GPIO;2. Nustatykite pasirinkto prievado režimą į Output;
3. Dabar galime valdyti šį prievadą nustatydami aukštą arba žemą būseną. Atitinkamai, šiame prievade bus +3,3 V arba 0 V. Kuris atitinka atitinkamai loginį 1 ir loginį 0.

Pabaikime tai šiai dienai. Kitoje dalyje išmokysime savo LED šviesti naudingiau, taip pat išmoksime naudoti GPIO prievadus ne tik komandoms duoti kitam įrenginiui, bet ir jų klausytis. galite pradėti mokytis C kalbos. Taip pat pabandykite pakeisti šią programą, kad šviesos diodas būtų valdomas kitu prievadu, ir išbandykite.

Visavertis tylus banko kortelės dydžio kompiuteris su 64 bitų keturių branduolių ARM Cortex-A53 procesoriumi Broadcom BCM2837 vieno lusto luste.

Video apžvalga apie platformą

Diegimas ir konfigūravimas

Lentos elementai

Lustas BCM2837

„Raspberry Pi 3“ yra aprūpintas 64 bitų „Broadcom BCM2837“ procesoriumi, pagrįsta ARM Cortex-A53 architektūra, 1,2 GHz laikrodžio dažniu ir 1 GB RAM moduliu. Procesorius ir atmintis yra tiesiai ant procesoriaus, naudojant paketo ant pakuotės technologiją. BCM2837 taip pat turi dviejų branduolių „Video Core IV® Multimedia“ grafikos koprocesorių, kuris užtikrina „Open GL ES 2.0“, „Open VG“ aparatinės įrangos spartinimą ir 1080p30 H.264 dekodavimą.

USB-Ethernet keitiklis LAN9512

Įvesties / išvesties kaiščiai (GPIO)

Dėmesio! Skirtingai nuo „Arduino“ plokščių, „Raspberry Pi“ loginio lygio įtampa yra 3,3 V. Maksimali įtampa, kurią gali atlaikyti įvesties/išvesties, yra 3,3 V, o ne 5 V. Pajungus įtampą, pavyzdžiui, 5 V, galima sugadinti vieną plokštę.

WiFi ir Bluetooth

Integruotas 802.11n Wi-Fi ir Bluetooth 4.1.

HDMI prievadas

Jungtis skirta skaitmeniniam vaizdo ir garso išvedimui į daugialypės terpės įrenginius. Reikalingas bendravimui

Garso / vaizdo išvestis

3,5 mm lizdas su papildoma išvestimi į sudėtinį vaizdo išvestį, skirtą ausinėms ar kitiems garso atkūrimo įrenginiams ir televizoriams prijungti.

Maitinimo jungtis

Jungtys 4×USB2.0

USB šakotuvas su keturiomis jungtimis, skirtas prijungti klaviatūrą, pelę, „flash drives“ ir kitus USB įrenginius.

Ethernet jungtis

Kameros jungtis (CSI-2)

Ekrano jungtis (DSI)

15 kontaktų plokščia lanksti jungtis, universali didelės spartos sąsaja ekranams.

Pinout

    Fizinis PIN kodas: numeracija, atsakinga už fizinę kontakto vietą ant šukos.

    GPIO: Broadcom procesoriaus PIN numeracija. Gali būti naudinga dirbant su Rpi.GPIO paketu.

    Laidų Pi kaištis:„Wiring Pi“ paketo PIN numeracija. Tai į Arduino panaši biblioteka, skirta darbui su GPIO kaiščiais.

    SPI: Prie SPI0 galima prijungti du pavaldinius įrenginius, o prie SPI1 – tris. Pasirinkimas atliekamas signalu ant CEx kaiščio.

    • SPI0: MOSI0 10, MISO0 9, SCLK0 11, CE0 8, CE1 7;

      SPI1: MOSI1 20, MISO1 19, SCLK1 21, CE0 18, CE1 17, CE2 16.

    UART: 14, 15. Asinchroninis protokolas nuosekliam duomenų perdavimui dviem laidais RX ir TX, kuris pašalina laikrodžio signalo poreikį.

Raspberry Pi 3 programavimas yra būtent tai, dėl ko dauguma žmonių renkasi šį vienos plokštės kompiuterį. Čia reikia nedelsiant pažymėti, kad šioje medžiagoje nebus instrukcijų, kuriose būtų išsamiai aprašyta, kaip ir ką reikia padaryti - jų yra daugybė tinkle. Tačiau rekomenduojama perskaityti oficialią dokumentaciją ir specializuotas formas. Vietoj to, šiame straipsnyje bus aptariami pagrindiniai dalykai, iš kurių paaiškės, kad programuoti Raspberry Pi nėra sunku.

Python yra pagrindinė Raspberry Pi kalba

Beveik visi Raspberry Pi savininkai supranta, ką reiškia pirmasis žodis vienos plokštės pavadinime - „avietė“. Tačiau daugelis žmonių neteisingai interpretuoja antrąjį.

Vieni mano, kad tai reiškia „Pi“ (3.14...), kiti mano, kad tai pirmosios dvi žodžio Pie (pie, ir tai turi prasmę – „aviečių pyragas“) raidės. Tačiau iš tikrųjų viskas yra kitaip.

Pi yra Python trumpinys, bet y pakeičiamas i. Tai dažnai daroma programuojant. Paimkime, pavyzdžiui, KDE, kur daugelyje programų vietoj C rašomas K (dėl stiliaus): Konsole (teisingai - Console), Konqueror (Conqueror) ir kt.

Tai yra, kaip galite atspėti, pagrindinė Raspberry kalba yra Python. Todėl „Malinos“ savininkui, dar nemokančiam jokios kalbos, rekomenduojama studijuoti būtent šią. Yra daug priežasčių, kodėl Raspberry Pi 3 programavimas Python yra geriausias sprendimas.

Štai tik keletas iš jų:

  • dirbti iš karto Raspbian kalba;
  • didelės, gerai dokumentuotos oficialios bibliotekos, kuri jau įtraukta į paketą, buvimas;
  • kalbos paprastumas ir kt.

Čia dėl akivaizdžių priežasčių nekalbėsime apie kalbą ir programavimo joje ypatybes - tai galima ir reikia daryti naudojant oficialius išteklius (arba, jei prastos anglų kalbos žinios to neleidžia, apie specializuotus).

Vietoj to pažiūrėsime, kaip lengva programuoti Raspberry. Pavyzdžiui, paimkime Raspberry Pi 3 GPIO programavimą. Darykime prielaidą, kad viskas, ko reikia, yra: laidai, šviesos diodas, rezistorius ir kt., Taip pat yra supratimas apie pinout - kaiščių numeravimą. Taip pat tarkime, kad šviesos diodas prijungtas prie 11 prievado.

Žemiau pateiktas kodas įjungia lemputę 5 sekundėms ir tada išjungia:

# pirmiausia įtrauksime reikiamą biblioteką

importuoti RPi.GPIO kaip GPIO

# jums taip pat reikės bibliotekos, kuri yra atsakinga už laukimą (reikia nustatyti lemputės įjungimo ir išjungimo intervalą)

# norėdami paleisti GPIO, turite paleisti šią funkciją

GPIO.setmode(GPIO.BOARD)

# dabar Python žino apie GPIO ir gali pasakyti, su kuriuo prievadu jam reikės dirbti ir ką jis turėtų daryti (šiuo atveju - 11 ir jis veiks išėjime)

GPIO.output(11, 1)

# dabar išjunkite (0 reiškia klaidingą)

GPIO.output(11, 0)

Nurodytą kodą galima nukopijuoti, įklijuoti į dokumentą ir išsaugoti su plėtiniu .py, esančiu, pavyzdžiui, pagrindiniame kataloge. Tada turite jį paleisti su komanda: python ~./file_name.py.

Jei viskas veikia, vadinasi, įranga veikia tinkamai.

Reikėtų pažymėti, kad jei gerai nesuprantate aukščiau pateikto kodo, peržiūrėkite dokumentaciją ir išmokite Python programavimo pagrindus bei GPIO biblioteką. O jei bent elementariai suprasi bet kurią kalbą, suprasi, kad pateiktas pavyzdys itin paprastas.

Programavimas kitomis kalbomis Raspberry

C programavimas Raspberry Pi ar kitomis programavimo kalbomis yra beveik tas pats, kas kodo rašymas kitoms platformoms. Vienintelis dalykas – reikalingos specialios bibliotekos.

WiringPi biblioteka, skirta darbui su GPIO

Jei jus domina Raspberry Pi programavimas C/C++ ir darbas su GPIO, tuomet į sistemą reikia tiesiogiai įdiegti patį gcc, o tada wiringPi biblioteką – ją rasite GitHub. Aprašyme yra naudojimo instrukcija.

Reikėtų pažymėti, kad norint įdiegti bibliotekas iš GitHub, reikalinga GIT programa. Jei sistema jo neturi, turėsite ją įdiegti iš saugyklos (pilnas pavadinimas: git-core).

Aviečių programavimas naudojant Java

Norintys programuoti Raspberry Pi Java programoje, turėtų atkreipti dėmesį į Pi4J – biblioteką, kuri sukurta specialiai darbui su Raspberry. Galite atsisiųsti ir sužinoti apie jo funkcijas oficialioje projekto svetainėje.

Įdomu tai, kad „Malina“ iš pradžių buvo sukurta specialiai vaikams mokyti programuoti. Šio įrenginio kūrėjas pastebėjo, kad šiuolaikinių studentų supratimo apie kompiuterių veikimą lygis yra daug žemesnis nei tų, kurie studijavo 90-aisiais. Tai jis aiškino tuo, kad skaičiavimo įrenginiai tapo itin paprasti: jei anksčiau elektronikai aistringi vaikai ir paaugliai turėdavo suprasti terminalų komandas ir net patys rašyti kodą, tai dabar viskas daroma paspaudus porą mygtukų.

Todėl natūraliai pateikiamas vizualinis Raspberry Pi programavimas. Visų pirma, tam naudojama „Scratch“ kalba su specialiu serveriu - GPIOSERVER. Internete yra daug vadovų, kurie padeda priprasti prie atitinkamų programų, todėl neverta jų svarstyti.

„Malinka“ galimybės neapsiriboja išvardytomis kalbomis. Galite bendrauti su ja naudodami PHP, Ruby, Perl ir kitas kalbas. Beveik kiekvienai populiariai kalbai yra, nors ir ne oficialių, veikiančių ir gana funkcionalių bibliotekų. Tačiau vėlgi reikia paminėti, kad Raspberry programavimui geriau naudoti Python.

Raspberry Pi 3 plokštės (toliau – Rpi3) skaičiavimo galimybių daugiau nei pakanka programoms kurti tiesiogiai tikslinėje sistemoje. Tačiau kūrimo procesą galima pagreitinti ir padaryti patogesnį, jei asmeniniame kompiuteryje kuriate programinę įrangą Rpi3.

Šiame straipsnyje aprašysiu kryžminio kompiliavimo „Eclipse“ sistemoje „Windows“ nustatymo procesą. Taip pat bus aprašytas „Eclipse“ nustatymas dirbti su nuotoline „Raspbian“ sistema Rpi3.

Jei „Eclipse“ naudojate pirmą kartą, naujausią versiją galite įdiegti naudodami „Eclipse CDT“ nuorodą.
„Java“ virtualią mašiną, reikalingą „Eclipse“ paleidimui, galima atsisiųsti iš JRE nuorodos.

Įdiegę aukščiau nurodytus komponentus, jūsų kompiuteryje bus galima paleisti „Eclipse CDT IDE“. Mes naudosime msys iš MinGW paketo kaip pagalbines paslaugas, todėl taip pat turite atsisiųsti MinGW.

Belieka įdiegti kryžminio kompiliavimo įrankius.
Norėdami tai padaryti, turite juos atsisiųsti iš toliau pateiktos nuorodos įrankių grandinės.
Šioje svetainėje taip pat pateikiamos instrukcijos anglų kalba, kaip įdiegti mokymo priemonių rinkinį.

Įdiegę įrankius, jūsų nurodytame kataloge TOOLS pakatalogyje taip pat bus papildomų paslaugų:

  • – Rpi3 operacinės sistemos vaizdo įrašymo į atminties kortelę įrankis.
  • SmartTTY– konsolė SSH – klientas, leidžiantis užmegzti ryšį su plokšte per SSH protokolą. Be standartinių funkcijų, ji turi galimybę įkelti failus į plokštę iš paslaugų meniu.
  • UpdateSysroot– „Windows“ paketinis failas, kuris pradeda plokštės ir prietaisų sysroot failų sistemos sinchronizavimo procesą.

Jei ką tik įsigijote Rpi3 plokštę ir dar neįdiegėte operacinės sistemos atminties kortelėje, tai padaryti padės WinFlashTool programa.
Turite atsisiųsti Raspbian operacinės sistemos vaizdą iš oficialaus šaltinio.
Tada išpakuokite atsisiųstą vaizdą, įdėkite atminties kortelę į kortelių skaitytuvą ir įrašykite operacinės sistemos vaizdą naudodami WinFlashTool.

Belaidžio WLAN tinklo nustatymas RPi3 plokštėje aprašytas ankstesniame mano straipsnyje.

Naudodami „SmarTTY“ paslaugų programą, užmegzkite ryšį su plokšte. Tai būtina norint išvengti problemų nustatant nuotolinį ryšį „Eclipse“.
Sukurkite naują ryšį nurodydami plokštės IP adresą, prisijungimo vardą ir prisijungimo slaptažodį (numatytosios prisijungimo vardo ir slaptažodžio reikšmės atitinkamai pi ir raspberry).



Dabar reikia sinchronizuoti sysroot failų sistemą. Kam tai?
Įsivaizduokite situaciją, kai įdiegėte naujausią Raspbian vaizdo versiją ir nepavyko sinchronizuoti.
Naujoje versijoje antraštės failai ir bibliotekos failai buvo pridėti arba pakeisti. Dirbdami su kryžminiu kompiliatoriumi, naudojate senus antraštės ir bibliotekos failus iš sysroot katalogo, kurie nėra identiški naujausiai sistemos versijai. Todėl nėra garantijos, kad kompiuteryje sėkmingai sukompiliuota programa veiks RPi3 plokštėje.
Paleidžiame UpdateSysroot scenarijų ir stebime kompiuterio atnaujinimo failus (tai gali užtrukti kelias dešimtis minučių).

Dabar atėjo laikas nustatyti nuotolinį ryšį su Rpi3 plokšte „Eclipse“. Paleiskite Eclipse CDT, pagrindiniame meniu pasirinkite Window->Show View->Other... Atsidariusiame lange pasirinkite "remote systems".

Po to ekrano apačioje pasirodys naujas skirtukas „Nuotolinės sistemos“. Šiame skirtuke turite apibrėžti naują ryšį, spustelėdami pirmąjį mygtuką dešinėje.

Atsidariusiame lange pasirinkite ryšio tipą „Linux“.

Atlikus manipuliacijas, skirtuke „Nuotolinės sistemos“, kuriame yra poskyriai, pasirodys naujas ryšys:

  • Sftp failai– šiame skyriuje galite peržiūrėti nuotolinės failų sistemos turinį. Taip pat galima nukopijuoti failus naudojant „Drag and Drop“ iš vietinio projekto į nuotolinį įrenginį ir atvirkščiai.
  • Shell procesai– šioje skiltyje galite peržiūrėti nuotoliniame kompiuteryje veikiančius procesus.
  • Ssh apvalkalai– šiame skyriuje galite atidaryti naują SSH terminalą ir įvesti komandas tiesiai iš Eclipse. Nereikia atskiros komunalinės paslaugos.






Taigi, naudodami skirtuką „Nuotolinės sistemos“, galime nukopijuoti kompiuteryje sukompiliuotas programas į Rpi3 failų sistemą, paleisti jas vykdyti per Ssh Shells ir ištrinti nereikalingus procesus skiltyje „Shell Processes“.
Dabar atėjo laikas sukurti naują projektą „Eclipse“ ir parašyti paprastą demonstracinę programą.
Sukurkite naują projektą iš pagrindinio meniu Failas->Naujas->C projektas.

Kurdamas naudoju savo, todėl reikia pasirinkti projekto tipą Makefile project->Empty Project

Tada galite tiesiog nukopijuoti mano Makefile į klaviatūros buferį (Ctrl + C) ir įklijuoti jį į tuščią Rpi3_Project (Ctrl + V).

Kai atidarote Makefile, pirmoje eilutėje po komentaro pamatysite naudojamų taikinių sąrašą:

.PHONY: bandomasis projektas yra švarus

  • bandymas– patikrina, ar sistemoje yra įdiegtas kryžminis kompiliatorius arm-linux-gnueabi-gcc ir make utility.
  • projektą- projekte sukuria katalogo struktūrą.
  • visi- stato projektą.
  • švarus- išvalo projektą nuo laikinųjų failų (įskaitant vykdomuosius).

Dabar turite įsitikinti, kad turite įrankių. Norėdami tai padaryti, turite paleisti komandą make test.
Tačiau pirmiausia turite pridėti visus keturis tikslus į skirtuką Padaryti taikinį dešinėje ekrano pusėje.

Dukart spustelėję bandymo tikslą, paleidžiame jį vykdyti ir konsolės lange matome kažką panašaus į šį:

Jei pranešimas nebuvo rodomas konsolėje, nepaisant to, kad anksčiau buvo įdiegti įrankiai arm-linux-gnueabihf ir MinGW, tai gali reikšti tik tai, kad keliai į įrankius nebuvo nurodyti sistemos kintamajame Path. Prie Path turite pridėti kelią į MinGW/msys/1.0/bin katalogą ir arm-linux-gnueabihf paketo bin katalogą.

Dabar sukurkime projekto viduje katalogo struktūrą dukart spustelėdami projekto tikslą (padaryti projektą).

Makefile yra sutvarkytas taip, kad norint sudaryti šaltinio failus, jų pavadinimai turi būti įtraukti į SRC kintamąjį; visi kiti šaltiniai nebus kompiliuojami, net jei jie yra /src kataloge.

Projekto katalogo struktūra yra tokia:

  • šiukšliadėžė– katalogas, kuriame yra vykdomasis failas po surinkimo.
  • Derinimas– katalogas su programos derinimo versija, kurioje nėra kodo optimizavimo ir yra derinimo informacija.
  • Paleisti– katalogas su galutine programos versija, kurioje yra optimizuotas kodas ir nėra derinimo informacijos.
  • inc– antraštės failų katalogas.
  • obj– yra laikinų projekto kūrimo failų, yra derinimo ir išleidimo pakatalogiai.
  • src– projekto šaltinio failai.

Naudodami šį Makefile galite kompiliuoti šaltinio failus, parašytus programavimo kalbomis, tokiomis kaip C, C++, Assembler. Tokiu atveju galite naudoti visas galimas programavimo kalbas, kad sukurtumėte vieną programą.

Kataloge /src sukurkite naują šaltinio failą main.c ir pridėkite prie jo šias eilutes:

#įtraukti int main(int argc, char **argv); int main(int argc, char **argv) ( printf("Sveiki atvykę į Raspberry Pi 3 programavimą\n"); return 0; )/* main */

#įtraukti

int main(int argc, char * * argv);

int main (int argc, char * * argv)

printf( „Sveiki atvykę į Raspberry Pi 3 programavimą\n“) ;

grąžinti 0;

) /* pagrindinis */

Patikrinkime, ar SRC kintamajame yra šaltinio failo main.c pavadinimas.
Tada sukurkime projektą vykdydami visus tikslus.
Dabar galite nukopijuoti gautą vykdomąjį failą į tikslinės plokštės pagrindinį katalogą, vilkdami ir numesdami failą pele.

Dešiniuoju pelės mygtuku spustelėkite skyrių Ssh Shells, kad atidarytumėte kontekstinį meniu, kuriame turite pasirinkti Launch Shell. Atsidarys naujas Remote Shell skirtukas, kurio lauke Command galėsite įvesti apvalkalo komandas.

Nustatykite nukopijuoto Rpi3_Project failo prieigos teises naudodami komandą:

sudo chmod 777 Rpi3_Project