Tartalomjegyzék:
- 1. lépés: Mire van szükségünk?
- 2. lépés: Hardverkapcsolatok
- 3. lépés: Python szoftver
- 4. lépés: Mikrokontroller szoftver
- 5. lépés: Következtetés
Videó: PIC MCU és Python soros kommunikáció: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Helló srácok! Ebben a projektben megpróbálom elmagyarázni a PIC MCU és Python soros kommunikációval kapcsolatos kísérleteimet. Az interneten számos oktatóanyag és videó található a PIC MCU -val való kommunikációról a virtuális terminálon keresztül, ami nagyon hasznos. A fő projektemben azonban az egyik követelmény a soros kommunikáció létrehozása a PIC MCU és a Python között, amelyhez nem találtam jó oktatóanyagot. Szóval kezdjük:)
1. lépés: Mire van szükségünk?
Tehát először is nézzük meg, mire van szükségünk. Hardver szempontjából:
- Bizony, PIC MCU, ami az én esetemben a PIC16f877a (nem kell ez a kártya. Ez azért van, hogy egyszerűsítsük a piszkos kapcsolatokat)
- USB -TTL átalakító a PIC MCU -val való kommunikációhoz USB porton keresztül TX és RX érintkezők használatával.
- MCU programozó, ami esetemben K150 programozó, de használhatja a PicKit 2, 3 vagy bármi mást.
- És végül egy számítógép:)
A szoftver szempontjából:
- Egy IDE a python kód írásához, ami az én esetemben a Pycharm, de használhatja a szokásos Python IDE -t is.
- Környezet az MCU programozásához, ami esetemben MPLAB X IDE CCS C fordítóval.
2. lépés: Hardverkapcsolatok
A képen a csatolt hardvercsatlakozások vannak megadva, amelyek a PIC MCU és az USB TTL konverter között vannak, az alábbiak szerint:
RC7 (RX) ------------- TXD
RC6 (TX) ------------- RXD
GND -------------- GND
Nem kell csatlakoztatnia az USB TTL átalakító VCC tűjét (ha szeretné, akkor megteheti). Ez a 3 kapcsolat elég.
3. lépés: Python szoftver
Kezdjünk el szoftvert írni a Python oldalához, amely esetünkben adó lesz, mert elküldi a karakterláncot az MCU -nak.
importálja a soros #import soros könyvtárat a.encode ()) #küldje el az adatokat
Először is a soros könyvtárat importálják annak érdekében, hogy felhasználhassák jövőjét. Példaként szeretnénk elküldeni egy karakterlánc -adatot, hogy megerősítsük az MCU kódban, hogy elfogadtuk. Itt egy dolgot szeretnék megjegyezni. Ezért adtuk hozzá a karakterlánchoz a „\ 0” értéket. Ennek az az oka, hogy az MCU oldalon lehetetlen teljesen leolvasni a karakterláncot. Karakterről karakterre olvasható. Tehát szeretnénk tudni a karakterlánc végét az olvasás leállítása érdekében. Tehát a „\ 0” karaktert hozzáadjuk a karakterlánc végéhez. Ezután csatlakozzunk az MCU -hoz csatlakoztatott porthoz. Ezt a portot az "Eszközkezelőben" keresve határozhatja meg. Tehát vigyázzon, hogy ugyanazon a porton legyen. Végül is elküldjük az adatokat az MCU -nak. ".encode ()" -t kell hozzáadni a karakterlánc adataihoz, hogy el tudja küldeni azokat a vevőnek.
4. lépés: Mikrokontroller szoftver
Lássuk tehát az MCU kódját. Először is szeretném megmutatni a "config.h" fájlt, amely nem kötelező, de az egyszerűség kedvéért megtettem. Itt csak módosítsa az MCU frekvenciáját.
#ifndef CONFIG_H#define CONFIG_H
#befoglalni
#eszköz ADC = 16
#FUSES NOWDT // No Watch Dog Timer
#FUSES NOBROWNOUT // Nincs brownout reset #FUSES NOLVP // Nincs kisfeszültségű szabályozás, B3 (PIC16) vagy B5 (PIC18) az I/O -hoz
#use delay (kristály = 6000000)
Most nézzük a fő kódot:
#befoglalni
#befoglalni
#use rs232 (baud = 9600, xmit = pin_C6, rcv = pin_C7, paritás = N, stop = 1)
#define LED_RED PIN_D0
char inp; char cmp _ = "24"; szénpuffer [3];
#int_rda
void serial_communication_interrupt () {disable_interrupts (int_rda); előjel nélküli int i = 0; inp = getc (); putc (inp); while (inp! = '\ 0') {buffer = 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 (puffer, cmp_) == 0) output_low (LED_RED); else output_high (LED_RED); }}
Az elején tartalmazunk egy karakterlánc -könyvtárat, amely hasznos lesz a karakterlánc -műveletekben, amelyek esetünkben a string összehasonlítási művelet (strcmp). Tehát ebben a kódban az a célunk, hogy bekapcsoljuk a D0 érintkezőhöz csatlakoztatott ledet, ha az átvitt érték megegyezik a megadott értékünkkel, amely "cmp_" egyenlő "24" értékkel.
Először is engedélyezzük az "rda" megszakítást, amely megszakítást okoz az adatok továbbításakor.
Másodszor, nézzünk bele az ISR -be (megszakítási szolgáltatási rutin), amelyet "serial_communication_interrupt" -nak hívnak. Belül először letiltjuk a megszakítás jelzőt, hogy leolvassuk a kapott értéket és további megszakítást okozzunk. Ezt követően karakterről karakterre olvassuk a karakterláncot, amíg el nem érjük a "\ 0" értéket. A karakterlánc belsejében olvasva minden karaktert a pufferbe írunk, hogy megkapjuk a kapott karakterláncot.
A végén ismét bemegyünk. Itt összehasonlítjuk a puffer karakterláncunkat, amely fogadott karakterláncot és cmp_ karakterláncot tartalmaz annak érdekében, hogy megnézzük, helyesen kapjuk -e a karakterláncot. Ha egyenlők, akkor bekapcsolom a ledet, különben kikapcsolom.*
*A kódban fordítottam, mert az alaplapom megfordítja a D port tű értékeit. Változtassa meg a kódban:
if (strcmp (puffer, cmp_) == 0) output_high (LED_RED); else output_low (LED_RED);
Végül fordítsa le és töltse fel az MCU -ba, majd futtassa a kódot Pythonban. Látnia kell a led bekapcsolását.
5. lépés: Következtetés
Egy feladatot sikeresen befejeztünk. Remélem, hogy hasznos lesz az Ön számára. Ha bármilyen kérdése van, kérjük, ne habozzon feltenni:) A következő projektig.
Ajánlott:
Arduino soros kommunikáció: 5 lépés
Arduino soros kommunikáció: Sok Arduino -projekt több Arduino közötti adatátvitelre támaszkodik. Akár hobbista, aki RC autót, RC repülőgépet vagy távoli kijelzővel rendelkező meteorológiai állomást tervez, tudnia kell, hogyan kell megbízhatóan átvitel sorozat
Arduino és Python soros kommunikáció - Billentyűzet kijelző: 4 lépés
Arduino és Python soros kommunikáció - Billentyűzet kijelző: Ez a projekt mac felhasználók számára készült, de Linuxra és Windowsra is megvalósítható, az egyetlen lépés, aminek másnak kell lennie, a telepítés
Vezeték nélküli soros kommunikáció a Bluefruit használatával: 4 lépés
Vezeték nélküli soros kommunikáció a Bluefruit használatával: Íme egy egyszerű lépésről lépésre, hogy kicserélje a vezetékeket egy alacsony energiafogyasztású Bluetooth -kapcsolatra: Beletelt egy kis időbe, amíg rájöttem erre, mert alig van dokumentáció a modern, alacsony energiafogyasztású Bluetooth -technológiával. mint a Bluefrui
Web-alapú SmartMirror a soros kommunikáció használatával: 6 lépés
Web-alapú SmartMirror soros kommunikációt használva: Ez az utasítás minden használatra kész kóddal együtt kerül szállításra. A fejlesztés nagyon bonyolult volt, de miután beállította, nagyon könnyű testreszabni. Nézze meg és élvezze;)
Soros kommunikáció az ARM Cortex-M4 használatával: 4 lépés
Soros kommunikáció az ARM Cortex-M4 használatával: Ez egy kenyeretábla-alapú projekt, amely ARM Cortex-M4-et (Texas Instruments EK-TM4C123GXL) használ a soros kommunikációhoz a virtuális terminál használatával. A kimenet 16x2 LCD képernyőn szerezhető be, és a soros kommunikáció bemenete megadható a soros Mo