Orodha ya maudhui:
- Hatua ya 1: Tunahitaji Nini?
- Hatua ya 2: Uunganisho wa vifaa
- Hatua ya 3: Programu ya Python
- Hatua ya 4: Programu ya Microcontroller
- Hatua ya 5: Hitimisho
Video: PIC MCU na Mawasiliano ya Siri ya Python: Hatua 5
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Halo, jamani! Katika mradi huu nitajaribu kuelezea majaribio yangu juu ya mawasiliano ya serial ya PIC MCU na Python. Kwenye wavuti, kuna mafunzo na video nyingi juu ya jinsi ya kuwasiliana na PIC MCU juu ya terminal halisi ambayo ni muhimu sana. Walakini, katika mradi wangu kuu moja ya mahitaji ni kuanzisha mawasiliano ya serial kati ya PIC MCU na Python ambayo sikuweza kupata mafunzo mazuri. Kwa hivyo, wacha tuanze:)
Hatua ya 1: Tunahitaji Nini?
Kwa hivyo, kwanza kabisa tuone tunachohitaji. Kwa upande wa vifaa:
- Hakika, PIC MCU ambayo iko kwa upande wangu PIC16f877a (Huna haja ya bodi hiyo. Hii ni ili kurahisisha unganisho chafu)
- USB kwa kibadilishaji cha TTL ili kuwasiliana na PIC MCU juu ya bandari ya USB kwa kutumia pini za TX na RX.
- Programu ya MCU ambayo kwa upande wangu K150 programu, lakini unaweza kutumia PicKit 2, 3 au kitu kingine chochote.
- Na mwishowe kompyuta:)
Kwa upande wa programu:
- IDE ili kuandika nambari ya chatu ambayo iko katika kesi yangu Pycharm, lakini unaweza kutumia IDE ya kawaida ya Python pia.
- Mazingira ya kupanga MCU ambayo kwa upande wangu MPLAB X IDE na mkusanyaji wa CCS C.
Hatua ya 2: Uunganisho wa vifaa
Kwenye picha, viunganisho vya vifaa vimewekwa kati ya PIC MCU na kibadilishaji cha USB TTL kama ilivyo hapo chini:
RC7 (RX) ------------- TXD
RC6 (TX) --------- RXD
GND -------------- GND
Huna haja ya kuunganisha pini ya VCC ya kibadilishaji cha USB TTL (Walakini, ikiwa unataka unaweza kufanya). Viunganisho hivi 3 vinatosha kabisa.
Hatua ya 3: Programu ya Python
Wacha tuanze kuandika programu kwa upande wa Python ambayo itakuwa transmitter kwa upande wetu, kwa sababu itatuma kamba kwa MCU.
kuagiza serial serialport librarydata = '24' #data ambayo tutatuma data = a + '\ 0' ser = serial. a.encode ()) #tuma data
Kwanza kabisa maktaba ya serial huletwa nje ili kutumia hatima yake. Tunataka kutuma data ya kamba ya mfano ili kudhibitisha katika nambari ya MCU kwamba tuliikubali. Nataka hapa kugundua jambo moja. Hii ndio sababu tumeongeza '\ 0' kwenye kamba. Hii ni kwa sababu, kwa upande wa MCU haiwezekani kusoma kamba kabisa. Inasomeka tabia kwa tabia. Kwa hivyo, tunataka kujua mwisho wa kamba ili kuacha kusoma. Kwa hivyo, tunaongeza '\ 0' kwenye kamba ambayo inaonyesha mwisho wa kamba. Kisha tunaunganisha kwenye bandari ambayo imeunganishwa na MCU. Unaweza kuamua bandari hiyo kwa kutafuta katika 'Kidhibiti cha Kifaa'. Kwa hivyo, kuwa mwangalifu kuwa uko kwenye bandari moja. Baada ya yote, tunatuma data kwa MCU. ".encode ()" inapaswa kuongezwa kwa data ya kamba ili kuweza kuipeleka kwa mpokeaji.
Hatua ya 4: Programu ya Microcontroller
Wacha tuone nambari yetu ya MCU. Kwanza kabisa nataka kukuonyesha faili ya "config.h" iliyo ndani ambayo haihitajiki, lakini niliifanya kwa unyenyekevu. Hapa badilisha mzunguko wa MCU yako.
#fndef CONFIG_H # fafanua CONFIG_H
# pamoja
# kifaa ADC = 16
#FUSES NOWDT // Hakuna Saa ya Kuangalia Mbwa
#FUSES NOBROWNOUT // Hakuna kuweka tena brownout #FUSES NOLVP // Hakuna prgming ya chini ya umeme, B3 (PIC16) au B5 (PIC18) iliyotumiwa kwa I / O
#chelewesha matumizi (kioo = 6000000)
Sasa wacha tuone nambari kuu:
# pamoja
# pamoja
#tumia rs232 (baud = 9600, xmit = pin_C6, rcv = pin_C7, usawa = N, stop = 1)
#fafanua LED_RED PIN_D0
char inp; char cmp _ = "24"; bafa ya char [3];
#int_rda
batili serial_communication_interrupt () {Disable_interrupts (int_rda); unsigned int i = 0; inp = kupata (); putc (inp); wakati (inp! = '\ 0') {bafa = inp; inp = kupata (); putc (inp); i ++; }}
utupu kuu (utupu) {
seti_tris_d (0x00); pato_d (0xFF); wezesha_katika (GLOBAL); wakati (1) {wezesha_interrupts (int_rda); ikiwa (strcmp (bafa, cmp_) == 0) pato_low (LED_RED); pato lingine_high (LED_RED); }}
Mwanzoni tunajumuisha maktaba ya kamba ambayo tutasaidia katika shughuli za kamba ambazo kwa upande wetu ni operesheni kulinganisha kamba (strcmp). Kwa hivyo, kusudi letu katika nambari hii ni kuwasha ulingo uliounganishwa na pini D0 ikiwa thamani inayosambazwa ni sawa na thamani yetu tuliyopewa ambayo ni "cmp_" sawa na "24".
Kwanza kabisa tunawezesha kukatiza "rda" ambayo itasababisha usumbufu wakati data inaposambazwa.
Pili, wacha tuangalie ndani ya ISR (kukatiza utaratibu wa huduma) ambao huitwa "serial_communication_interrupt". Ndani tunazima kwanza kukatiza bendera ili kusoma thamani iliyopokelewa na kusababisha kusumbua zaidi. Baada ya hapo tulisoma mhusika wa kamba na mhusika hadi kufikia '\ 0'. Wakati wa kusoma ndani ya kamba pia tunaandika kila char kwa bafa ili kupata kamba iliyopokelewa.
Mwishowe, tunaingia tena ndani wakati. Hapa tunalinganisha kamba yetu ya bafa ambayo imepokea kamba na cmp_ kamba ili kuona ikiwa tunapata kamba kwa usahihi. Ikiwa ni sawa basi ninawasha kuongozwa, vinginevyo zima. *
* Katika nambari niligeuza kwa sababu bodi yangu inverts maadili ya bandari ya D. Kwenye nambari yako ibadilishe iwe:
ikiwa (strcmp (bafa, cmp_) == 0) pato_high (LED_RED); mwingine pato_pungua (LED_RED);
Mwishowe, ikusanye na upakie kwenye MCU yako kisha uendeshe nambari katika Python. Unapaswa kuona kugeuza kuongozwa.
Hatua ya 5: Hitimisho
Tumemaliza kazi moja kwa mafanikio. Natumahi kuwa itakuwa muhimu kwako. Ikiwa una swali lolote, tafadhali usisite kuuliza:) Mpaka mradi ujao.
Ilipendekeza:
Msingi wa Siri ya Siri: Hatua 5
Msingi wa Siri ya Siri: Daima ni muhimu kuwa na msingi wa siri, haswa katika wachezaji wengi. Misingi ni ya usalama kwa kujificha mali na kujificha kutoka kwa umati na wachezaji wengine.
Mawasiliano ya Siri ya Arduino: Hatua 5
Mawasiliano ya Siri ya Arduino: Miradi mingi ya Arduino inategemea kupitisha data kati ya Arduino kadhaa. Ikiwa wewe ni hobbyist anayejenga gari la RC, ndege ya RC, au kubuni kituo cha hali ya hewa na onyesho la mbali, utahitaji kujua jinsi ya kuaminika kuhamisha seria
Mawasiliano yasiyotumia waya Kutumia Moduli za bei rahisi za 433MHz na Pic Microcontroller. Sehemu ya 2: Hatua 4 (na Picha)
Mawasiliano yasiyotumia waya Kutumia Moduli za bei rahisi za 433MHz na Pic Microcontroller. Sehemu ya 2: Kwenye sehemu ya kwanza ya mafunzo haya, nilionyesha jinsi ya kupanga PIC12F1822 kutumia MPLAB IDE na mkusanyaji wa XC8, kutuma kamba rahisi bila waya kwa kutumia moduli za bei rahisi za TX / RX 433MHz. Moduli ya mpokeaji iliunganishwa kupitia USB hadi UART TTL tangazo la kebo
Mawasiliano ya Siri Kutumia ARM Cortex-M4: 4 Hatua
Mawasiliano ya Siri Kutumia ARM Cortex-M4: Huu ni mradi wa msingi wa ubao wa mkate ambao hutumia ARM Cortex-M4 (Texas Instruments EK-TM4C123GXL) kwa Mawasiliano ya Siri ukitumia Virtual Terminal. Pato linaweza kupatikana kwenye Skrini ya LCD ya 16x2 na pembejeo kwa Mawasiliano ya Siri inaweza kutolewa katika Serial Mo
Ufikiaji - Mawasiliano ya Kituo kati ya mbili za ESP8266 MCU: 3 Hatua
Njia ya Kufikia - Mawasiliano ya Kituo kati ya MCU mbili za ESP8266: Hello Makers! Katika agizo langu la awali nilifanya mawasiliano ya WiFi kati ya ESP8266 MCU mbili kupitia router ya nyumbani ya WiFi. Kama nilivyoona kutoka kwa maoni kuna Watengenezaji ambao wangependa kutumia ESP8266 MCU mbali na anuwai ya router. Kwa hivyo hapa kuna baa