Sisällysluettelo:
- Vaihe 1: Mitä tarvitsemme?
- Vaihe 2: Laitteistoyhteydet
- Vaihe 3: Python -ohjelmisto
- Vaihe 4: Mikro -ohjainohjelmisto
- Vaihe 5: Johtopäätös
Video: PIC MCU ja Python -sarjaliikenne: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Hei kaverit! Tässä projektissa yritän selittää kokeiluni PIC MCU- ja Python -sarjaliikenteestä. Internetissä on monia opetusohjelmia ja videoita siitä, miten kommunikoida PIC MCU: n kanssa virtuaalipäätteen kautta, mikä on erittäin hyödyllistä. Pääprojektissani yksi vaatimuksista on kuitenkin luoda sarjaliikenne PIC MCU: n ja Pythonin välille, jota en löytänyt hyvää opetusohjelmaa. Joten aloitetaan:)
Vaihe 1: Mitä tarvitsemme?
Katsotaan siis ensin, mitä tarvitsemme. Laitteiston suhteen:
- Varmasti, PIC MCU, joka on minun tapauksessani PIC16f877a (et tarvitse tätä korttia. Tämä on yksinkertaistettava joitakin likaisia yhteyksiä)
- USB -TTL -muunnin kommunikoidakseen PIC MCU: n kanssa USB -portin kautta käyttämällä TX- ja RX -nastoja.
- MCU -ohjelmoija, joka on minun tapauksessani K150 -ohjelmoija, mutta voit käyttää PicKit 2: ta, 3: ta tai mitä tahansa muuta.
- Ja vihdoin tietokone:)
Ohjelmiston osalta:
- IDE python -koodin kirjoittamiseen, joka on minun tapauksessani Pycharm, mutta voit käyttää myös tavallista Python IDE: tä.
- Ympäristö MCU: n ohjelmointiin, joka on minun tapauksessani MPLAB X IDE CCS C -kääntäjällä.
Vaihe 2: Laitteistoyhteydet
Kuvassa on liitetty laitteistoliitännät, jotka ovat PIC MCU: n ja USB TTL -muuntimen välillä seuraavasti:
RC7 (RX) ------------- TXD
RC6 (TX) ------------- RXD
GND -------------- GND
Sinun ei tarvitse liittää USB TTL -muuntimen VCC -nastaista (jos haluat, voit kuitenkin tehdä sen). Nämä kolme liitäntää riittää.
Vaihe 3: Python -ohjelmisto
Aloitetaan ohjelmiston kirjoittaminen Python -puolelle, joka on tapauksemme lähetin, koska se lähettää merkkijonon MCU: lle.
tuo sarja #import serial librarydata = '24' #data, jonka lähetämme dataa = a+'\ 0' ser = serial. Serial ('COM17', baudrate = 9600, timeout = 1) #yhteys porttiin ser.write (a. encode ()) #lähetä tiedot
Ensinnäkin sarjakirjasto tuodaan käyttääkseen sen futuureja. Haluamme lähettää esimerkkijonotiedot vahvistaaksemme MCU -koodissa, että hyväksyimme ne. Haluan tässä huomata yhden asian. Siksi lisäsimme merkkijonoon / \. Tämä johtuu siitä, että MCU -puolella on mahdotonta lukea merkkijono kokonaan. Se luetaan merkki luonteelta. Joten haluamme tietää merkkijonon lopettamisen lukemisen lopettamiseksi. Joten lisätään merkkijonoon '\ 0', joka osoittaa merkkijonon lopun. Sitten muodostamme yhteyden MCU: hon liitettyyn porttiin. Voit määrittää portin etsimällä Laitehallinnasta. Joten ole varovainen, että olet samassa portissa. Loppujen lopuksi lähetämme tiedot MCU: lle. ".encode ()" on lisättävä merkkijonotietoihin, jotta se voidaan lähettää vastaanottimelle.
Vaihe 4: Mikro -ohjainohjelmisto
Katsotaanpa siis MCU -koodimme. Ensinnäkin haluan näyttää sinulle "config.h" -tiedoston, jota ei vaadita, mutta tein sen yksinkertaisuuden vuoksi. Tässä muutetaan vain MCU: n taajuutta.
#ifndef CONFIG_H#määritä CONFIG_H
#sisältää
#laite ADC = 16
#FUSES NOWDT // Ei vahtikoiran ajastinta
#SULAKKEET NOBROWNOUT // Ei nollausta
#käyttöviive (kristalli = 6000000)
Katsotaan nyt pääkoodi:
#sisältää
#sisältää
#use rs232 (baud = 9600, xmit = pin_C6, rcv = pin_C7, pariteetti = N, stop = 1)
#define LED_RED PIN_D0
char inp; char cmp _ = "24"; hiilipuskuri [3];
#int_rda
void serial_communication_interrupt () {disable_interrupts (int_rda); allekirjoittamaton int i = 0; inp = getc (); putc (inp); while (inp! = '\ 0') {puskuri = inp; inp = getc (); putc (inp); i ++; }}
void main (void) {
set_tris_d (0x00); output_d (0xFF); enable_interrupts (GLOBAL); while (1) {enable_interrupts (int_rda); if (strcmp (puskuri, cmp_) == 0) output_low (LED_RED); else output_high (LED_RED); }}
Aluksi sisällytämme merkkijonokirjaston, josta on apua merkkijonotoiminnoissa, tässä tapauksessa merkkijonojen vertailutoiminnossa (strcmp). Joten tarkoituksemme tässä koodissa on kytkeä nastaan D0 kytketty led päälle, jos lähetetty arvo on sama kuin annettu arvo, joka on "cmp_", joka on "24".
Ensinnäkin otamme käyttöön keskeytyksen "rda", joka aiheuttaa keskeytyksen, kun tietoja lähetetään.
Toiseksi, katsotaan ISR: n (keskeytyspalvelurutiini) sisälle, jota kutsutaan "serial_communication_interrupt". Sisällä poistamme ensin keskeytyslipun, jotta voimme lukea vastaanotetun arvon ja aiheuttaa keskeytyksen edelleen. Tämän jälkeen luemme merkkijonon merkki kerrallaan, kunnes saavutetaan '\ 0'. Kun luemme merkkijonoa, kirjoitamme myös jokaisen merkin puskuriin saadaksemme vastaanotetun merkkijonon.
Lopulta palaamme taas sisälle. Tässä vertaamme puskurijonoamme, joka on vastaanotettu merkkijono ja cmp_ -merkkijono, nähdäksemme, saammeko merkkijonon oikein. Jos ne ovat yhtä suuret, kytken ledin päälle, muuten sammutan.*
*Koodissa tein käänteisen, koska levyni kääntää D -portin nasta -arvot. Muuta koodisi koodiksi:
if (strcmp (puskuri, cmp_) == 0) output_high (LED_RED); else output_low (LED_RED);
Kokoa se lopuksi ja lataa MCU -laitteeseesi ja suorita sitten koodi Pythonissa. Sinun pitäisi nähdä led -kytkimen päälle.
Vaihe 5: Johtopäätös
Olemme tehneet yhden tehtävän onnistuneesti. Toivon, että siitä on sinulle hyötyä. Jos sinulla on kysyttävää, älä epäröi kysyä:) Ennen seuraavaa projektia.
Suositeltava:
Solmu Mcu Intian auton keskuslukko, jossa on RFID ja Blynk -ajastimen lukitus: 9 vaihetta
Node Mcu Intian auton keskuslukko, jossa on Rfid ja Blynk -ajastimen lukitus: Näytän tänään sinulle intialaisen tyylin auton täysin automatisoidun keskuslukon, jossa on RFID -tunniste blynk -wifi -ohjaus ja ajan lukitus. Siinä on myös kaikki normaalin keskuslukon ominaisuudet. Tämä auto keskuslukko TOIMII OFFLINE AKTIVOINTI VAATII VERKKOLUKITUKSET
Plug & Play CO2 -anturin näyttö solmulla MCU/ESP8266 kouluille, lastentarhoille tai kotiisi: 7 vaihetta
Plug & Play -CO2 -anturinäyttö NodeMCU/ESP8266 -kouluilla, kouluille, lastentarhoille tai kotiisi: Näytän sinulle, kuinka nopeasti rakentaa pistoke ja amp; toista CO2 -anturi, jossa kaikki projektin elementit liitetään DuPont -johtoihin. On vain 5 pistettä, jotka on juotettava, koska en juottanut ennen tätä projektia ollenkaan
MCU Internet -palvelun käyttäminen IFTTT: n kautta - Ameba Arduino: 3 vaihetta
MCU Internet -palvelun käyttäminen IFTTT: n kautta - Ameba Arduino: Internet -palvelun käyttö on helppoa älylaitteelle, kuten Android -puhelimelle, tabletille tai tietokoneelle, mutta ei niin helppoa mikrokontrollereille, koska se vaatii yleensä paremman yhteyden ja prosessointitehon. Voimme kuitenkin purkaa raskaan osan
NODE MCU-LED -ohjaus (yksinkertainen kotiautomaatio): 5 vaihetta
NODE MCU-LED-ohjaus (yksinkertainen kotiautomaatio): Hei kaverit, tässä opetusohjelmassa kerrotaan, kuinka ohjata LED-lamppua älypuhelimellasi. Käytämme tässä projektissa Node-MCU: ta. kirjastot (ESP-kirjastot) Arduino IDE.NODE MCU-BASICS {Follow Ste
Kuinka ohjelmoida PIC MCU PICkit -ohjelmoijalla käyttämällä leipätaulua: 3 vaihetta
Kuinka ohjelmoida PIC MCU PICkit -ohjelmoijalla Breadboardin avulla: Et tarvitse kalliita ja kehittyneitä työkaluja pelataksesi PIC (tai mikään muu) mikro -ohjaimella. Tarvitset vain leipälevyn, jossa voit testata piiriäsi ja ohjelmointia. Tietenkin tarvitaan jonkinlainen ohjelmoija ja IDE. Tässä ohjeessa