Përmbajtje:
- Hapi 1: Çfarë na nevojitet?
- Hapi 2: Lidhjet e harduerit
- Hapi 3: Softueri Python
- Hapi 4: Softueri i mikrokontrolluesit
- Hapi 5: Përfundimi
Video: PIC MCU dhe Python Serial Communication: 5 Hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Ç'kemi djema! Në këtë projekt do të përpiqem të shpjegoj eksperimentet e mia mbi PIC MCU dhe komunikimin serial Python. Në internet, ka shumë mësime dhe video se si të komunikoni me PIC MCU mbi terminalin virtual i cili është shumë i dobishëm. Sidoqoftë, në projektin tim kryesor një nga kërkesat është krijimi i komunikimit serik midis PIC MCU dhe Python të cilin nuk mund ta gjej një mësim të mirë. Pra, le të fillojmë:)
Hapi 1: Çfarë na nevojitet?
Pra, para së gjithash le të shohim se çfarë na nevojitet. Për sa i përket harduerit:
- Me siguri, PIC MCU e cila është në rastin tim PIC16f877a (Ju nuk keni nevojë për atë tabelë. Kjo është për të thjeshtuar disa lidhje të ndyra)
- Konvertuesi USB në TTL për të komunikuar me PIC MCU përmes portit USB duke përdorur kunjat TX dhe RX.
- Programues MCU i cili është në rastin tim programues K150, por ju mund të përdorni PicKit 2, 3 ose ndonjë gjë tjetër.
- Dhe së fundi një kompjuter:)
Për sa i përket softuerit:
- Një IDE për të shkruar kodin python i cili është në rastin tim Pycharm, por gjithashtu mund të përdorni IDE të rregullt Python.
- Një mjedis për programimin e MCU i cili në rastin tim është MPLAB X IDE me përpiluesin CCS C.
Hapi 2: Lidhjet e harduerit
Në figurë jepen lidhjet e bashkangjitura të harduerit të cilat janë midis PIC MCU dhe konvertuesit USB TTL si më poshtë:
RC7 (RX) ------------- TXD
RC6 (TX) ------------- RXD
GND -------------- GND
Nuk keni nevojë të lidhni pin VCC të konvertuesit USB TTL (megjithatë, nëse dëshironi, mund ta bëni). Këto 3 lidhje janë mjaft të mjaftueshme.
Hapi 3: Softueri Python
Le të fillojmë të shkruajmë softuer për anën Python i cili do të jetë transmetues në rastin tonë, sepse ai do të dërgojë vargun në MCU.
import serial #import bibliotekë serialedata = '24' #data që do të dërgojmë të dhëna = a+'\ 0' ser = serial. Serial ('COM17', baudrate = 9600, timeout = 1) #lidhu me portin ser.write (a.kodoni ()) #dërgoni të dhënat
Para së gjithash, biblioteka serike importohet për të përdorur të ardhmen e saj. Ne duam të dërgojmë një shembull të të dhënave të vargut në mënyrë që të konfirmojmë në kodin MCU që i kemi pranuar. Këtu dua të vërej një gjë. Kjo është arsyeja pse ne shtuam '\ 0' në varg. Kjo është për shkak se, nga ana MCU është e pamundur të lexosh vargun plotësisht. Lexohet karakter për karakter. Pra, ne duam të dimë fundin e vargut në mënyrë që të ndalojmë së lexuari. Pra, shtojmë '\ 0' në varg që tregon fundin e vargut. Pastaj lidhemi me portën që është e lidhur me MCU. Ju mund ta përcaktoni atë port duke kërkuar në 'Device Manager'. Pra, kini kujdes që të jeni në të njëjtin port. Në fund të fundit, ne i dërgojmë të dhënat në MCU. ".encode ()" duhet të shtohet në të dhënat e vargut në mënyrë që të jetë në gjendje t'i dërgojë ato tek marrësi.
Hapi 4: Softueri i mikrokontrolluesit
Pra, le të shohim kodin tonë për MCU. Para së gjithash unë dua t'ju tregoj skedarin "config.h" brenda të cilit nuk kërkohet, por e bëra për thjeshtësi. Këtu thjesht ndryshoni frekuencën e MCU tuaj.
#ifndef CONFIG_H#përcakto CONFIG_H
#përfshi
#pajisja ADC = 16
#FUSES NOWDT // Asnjë Kohëmatës i Qenit të Qenit
#FUSES NOBROWNOUT // Asnjë rivendosje në kafe #FUSES NOLVP // Pa prgming të tensionit të ulët, B3 (PIC16) ose B5 (PIC18) të përdorura për I/O
#përdorimi i vonesës (kristal = 6000000)
Tani le të shohim kodin kryesor:
#përfshi
#përfshi
#use rs232 (baud = 9600, xmit = pin_C6, rcv = pin_C7, barazi = N, ndalesë = 1)
#përcaktoni PIN_D0 LED_RED
char inp; char cmp _ = "24"; tampon kar [3];
#në_rda
void serial_communication_interrupt () {disable_interrupts (int_rda); pa shenjë int i = 0; inp = getc (); putc (inp); ndërsa (inp! = '\ 0') {tampon = hyrje; inp = getc (); putc (inp); i ++; }}
pavlefshme kryesore (e pavlefshme) {
set_tris_d (0x00); dalje_d (0xFF); enable_interrupts (GLOBAL); ndërsa (1) {enable_interrupts (int_rda); if (strcmp (tampon, cmp_) == 0) output_low (LED_RED); tjetër output_high (LED_RED); }}
Në fillim ne përfshijmë bibliotekën e vargjeve të cilat do të jemi të dobishme në operacionet me varg i cili në rastin tonë është operacioni i krahasimit të vargut (strcmp). Pra, qëllimi ynë në këtë kod është të ndezim led -in e lidhur me pin D0 nëse vlera e transmetuar është e njëjtë me vlerën tonë të dhënë e cila është "cmp_" e barabartë me "24".
Para së gjithash ne mundësojmë ndërprerjen "rda" e cila do të shkaktojë ndërprerje kur të dhënat transmetohen.
Së dyti, le të shohim brenda ISR (rutina e shërbimit të ndërprerë) e cila quhet "serial_communication_interrupt". Brenda ne së pari çaktivizojmë flamurin e ndërprerjes në mënyrë që të lexojmë vlerën e marrë dhe të shkaktojmë ndërprerje më tej. Pas kësaj ne lexojmë vargun karakter për karakter derisa të arrijmë '\ 0'. Ndërsa lexojmë brenda vargut, ne gjithashtu i shkruajmë secilës shenjë tamponit në mënyrë që të marrim vargun e marrë.
Në fund, përsëri hyjmë brenda ndërsa. Këtu krahasojmë vargun tonë tampon i cili është pranuar vargu dhe vargu cmp_ në mënyrë që të shohim nëse e marrim vargun në mënyrë korrekte. Nëse ato janë të barabarta, atëherë ndez led, përndryshe fik.*
*Në kod kam bërë anasjelltas sepse bordi im përmbys vlerat e pinit të portës D. Në kodin tuaj ndryshojeni në:
nëse (strcmp (tampon, cmp_) == 0) output_high (LED_RED); përndryshe output_low (LED_RED);
Më në fund, përpilojeni atë dhe ngarkoni në MCU tuaj dhe më pas ekzekutoni kodin në Python. Duhet të shihni që LED të ndizet.
Hapi 5: Përfundimi
Ne kemi përfunduar me sukses një detyrë. Shpresoj se do të jetë e dobishme për ju. Nëse keni ndonjë pyetje, ju lutem mos hezitoni të pyesni:) Deri në projektin tjetër.
Recommended:
Si të krijoni dhe futni një tabelë dhe shtoni kolona shtesë dhe/ose rreshta në atë tabelë në Microsoft Office Word 2007: 11 hapa
Si të krijoni dhe futni një tabelë dhe shtoni kolona shtesë dhe/ose rreshta në atë tabelë në Microsoft Office Word 2007: A keni pasur ndonjëherë shumë të dhëna me të cilat po punoni dhe keni menduar me veten … " si mund t'i bëj të gjitha nga këto të dhëna duken më mirë dhe janë më të lehta për tu kuptuar? " Nëse është kështu, atëherë një tabelë në Microsoft Office Word 2007 mund të jetë përgjigja juaj
Lidhja e përpunimit dhe Arduino dhe Make 7 Segment dhe Servo GUI Controller: 4 hapa
Lidhja e përpunimit dhe Arduino dhe Make 7 Segment dhe Servo GUI Controller: Për disa projekte që keni bërë duhet të përdorni Arduino pasi siguron një platformë të lehtë prototipimi, por shfaqja e grafikëve në monitorin serik të Arduino mund të zgjasë shumë kohë dhe madje është e vështirë të bëhet. Ju mund të shfaqni grafikët në Arduino Serial Monitor bu
Nextion Display - Ndërfaqja dhe Protokolli i Shpjeguar Me PIC dhe Arduino: 10 Hapa
Nextion Display | Ndërfaqja dhe Protokolli i Shpjeguar Me PIC dhe Arduino: Ekrani Nextion është shumë i lehtë për t’u përdorur dhe ndërfaqe e lehtë me mikrokontrolluesit. Me ndihmën e redaktorit Nextion ne mund të konfigurojmë ekranin dhe mund të krijojmë UI në ekran. Pra, bazuar në ngjarjet ose komandat Ekrani i ardhshëm do të veprojë për të shfaqur
Komunikimi Serial i Arduino dhe Python - Ekrani i tastierës: 4 hapa
Komunikimi Serial i Arduino dhe Python - Ekrani i tastierës: Ky Projekt është bërë për përdoruesit e Mac por mund të zbatohet edhe për Linux dhe Windows, hapi i vetëm që duhet të jetë i ndryshëm është instalimi
8 Kontrolli i stafetës me NodeMCU dhe Marrës IR duke përdorur WiFi dhe IR Telekomandë dhe Aplikacion Android: 5 hapa (me fotografi)
8 Rele Control me NodeMCU dhe IR Receiver Using WiFi and IR Remote and Android App: Kontrolli i 8 ndërprerësve të stafetave duke përdorur nodemcu dhe marrësin ir mbi wifi dhe ir aplikacionin e largët dhe android. Ir i largët punon pavarësisht nga lidhja wifi. K ISTU ASHT A KLIKIM I VERSIONIT TP PPRDITSUAR KETU