ዝርዝር ሁኔታ:
ቪዲዮ: PIC MCU እና Python Serial Communication: 5 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:31
ሰላም ጓዶች! በዚህ ፕሮጀክት ውስጥ ሙከራዎቼን በ PIC MCU እና በ Python ተከታታይ ግንኙነት ላይ ለማብራራት እሞክራለሁ። በበይነመረብ ላይ ፣ በጣም ጠቃሚ በሆነው ምናባዊ ተርሚናል ላይ ከፒሲ ኤምሲዩ ጋር እንዴት መገናኘት እንደሚችሉ ብዙ ትምህርቶች እና ቪዲዮዎች አሉ። ሆኖም ፣ በእኔ ዋና ፕሮጀክት ውስጥ ከሚያስፈልጉት መስፈርቶች አንዱ ጥሩ መማሪያ ማግኘት ባልቻልኩበት በፒሲ MCU እና በ Python መካከል ተከታታይ ግንኙነት መመስረት ነው። ስለዚህ ፣ እንጀምር:)
ደረጃ 1: ምን ያስፈልገናል?
ስለዚህ በመጀመሪያ የሚያስፈልገንን እንመልከት። ከሃርድዌር አንፃር ፦
- በእርግጥ በእኔ ሁኔታ PIC16F877a (ይህ ቦርድ አያስፈልግዎትም። ይህ አንዳንድ የቆሸሹ ግንኙነቶችን ለማቃለል ነው)
- TX እና RX ፒኖችን በመጠቀም በዩኤስቢ ወደብ ላይ ከ PIC MCU ጋር ለመገናኘት ዩኤስቢ ወደ TTL መቀየሪያ።
- በእኔ ሁኔታ K150 ፕሮግራም አድራጊ የሆነው የ MCU ፕሮግራም አድራጊ ፣ ግን PicKit 2 ፣ 3 ወይም ሌላ ማንኛውንም ነገር መጠቀም ይችላሉ።
- እና በመጨረሻም ኮምፒተር:)
ከሶፍትዌር አንፃር -
- በእኔ ሁኔታ Pycharm ውስጥ ያለውን የፓይዘን ኮድ ለመፃፍ አይዲኢ ፣ ግን እርስዎም መደበኛ የ Python IDE ን መጠቀም ይችላሉ።
- በእኔ ሁኔታ MPLAB X IDE ከሲሲኤስ ሲ አጠናቃሪ ጋር ያለውን MCU ን ለማቀናበር አካባቢ።
ደረጃ 2 የሃርድዌር ግንኙነቶች
በስዕሉ ውስጥ ተያይዞ የሃርድዌር ግንኙነቶች በ PIC MCU እና በዩኤስቢ TTL መለወጫ መካከል እንደሚከተሉት ተሰጥተዋል።
RC7 (RX) ------------- TXD
RC6 (TX) ------------- RXD
GND -------------- GND
የዩኤስቢ TTL መቀየሪያውን የ VCC ፒን ማገናኘት አያስፈልግዎትም (ሆኖም ፣ ከፈለጉ ማድረግ ይችላሉ)። እነዚህ 3 ግንኙነቶች በቂ ናቸው።
ደረጃ 3 የፓይዘን ሶፍትዌር
በእኛ ሁኔታ አስተላላፊ ለሆነው ለ Python ጎን ሶፍትዌር መፃፍ እንጀምር ፣ ምክንያቱም ሕብረቁምፊውን ወደ ኤም.ሲ.ኤ.
የውሂብ የምንልክበት ተከታታይ #አስመጪ ተከታታይ ቤተመፃህፍት ውሂብ = '24' #ውሂብ = a+'\ 0' ser = serial. Serial ('COM17' ፣ baudrate = 9600 ፣ timeout = 1) #ከወደቡ ser.write ጋር ይገናኙ (a.encode ()) #መረጃውን ይላኩ
የወደፊት ዕጣውን ለመጠቀም በመጀመሪያ ደረጃ ተከታታይ ቤተ -መጽሐፍት ከውጭ ይገባል። እኛ በ MCU ኮድ መቀበሉን ለማረጋገጥ የምሳሌ ሕብረቁምፊ ውሂብ መላክ እንፈልጋለን። እዚህ አንድ ነገር ልብ ማለት እፈልጋለሁ። ወደ ሕብረቁምፊው '\ 0' ያከልነው ለዚህ ነው። ምክንያቱም በ MCU በኩል ሕብረቁምፊውን ሙሉ በሙሉ ለማንበብ የማይቻል ስለሆነ ነው። በባህሪ ይነበባል። ስለዚህ ፣ ንባብን ለማቆም የሕብረቁምፊውን መጨረሻ ማወቅ እንፈልጋለን። ስለዚህ ፣ የሕብረቁምፊውን መጨረሻ ወደሚያመለክተው ሕብረቁምፊ ‹\ 0› ን እንጨምረዋለን። ከዚያ ከ MCU ጋር ከተገናኘው ወደብ ጋር እንገናኛለን። በ ‹የመሣሪያ አስተዳዳሪ› ውስጥ በመፈለግ ያንን ወደብ መወሰን ይችላሉ። ስለዚህ ፣ በተመሳሳይ ወደብ ላይ እንዳሉ ይጠንቀቁ። ከሁሉም በላይ ውሂቡን ለ MCU እንልካለን። ".ኮድ ()" ወደ ተቀባዩ መላክ እንዲችል ወደ ሕብረቁምፊ ውሂብ መታከል አለበት።
ደረጃ 4 ማይክሮ መቆጣጠሪያ ሶፍትዌር
ስለዚህ ፣ ለ MCU የእኛን ኮድ እንይ። በመጀመሪያ እኔ የማያስፈልገውን የ “config.h” ፋይል ውስጡን ላሳይዎት እፈልጋለሁ ፣ ግን ቀለል ለማድረግ አደረግሁት። እዚህ የእርስዎን የ MCU ድግግሞሽ ብቻ ይለውጡ።
#ከሆነ CONFIG_H#CONFIG_H ን ይገልፃል
#ያካትቱ
#መሣሪያ ADC = 16
#FUSES NOWDT // አይ Watch Dog Timer
#FUSES NOBROWNOUT // ምንም የቅንጦት ዳግም ማስጀመር የለም #FUSES NOLVP // ለ I/O ጥቅም ላይ ያልዋለ ዝቅተኛ ቮልቴጅ ፕሪሚንግ ፣ B3 (PIC16) ወይም B5 (PIC18)
#አጠቃቀም መዘግየት (ክሪስታል = 6000000)
አሁን ዋናውን ኮድ እንመልከት-
#ያካትቱ
#ያካትቱ
#ይጠቀሙ rs232 (ባውድ = 9600 ፣ xmit = pin_C6 ፣ rcv = pin_C7 ፣ እኩልነት = N ፣ ማቆሚያ = 1)
#የ LED_RED PIN_D0 ን ይግለጹ
የቻር ማስገቢያ; ቻር cmp _ = "24"; የቻር ቋት [3];
#ገና_ርዳ
ባዶ serial_communication_interrupt () {disable_interrupts (int_rda); ያልተፈረመ int i = 0; inp = getc (); putc (inp); ሳለ (inp! = '\ 0') {ቋት = inp; inp = getc (); putc (inp); i ++; }}
ባዶ ባዶ (ባዶ) {
set_tris_d (0x00); output_d (0xFF); ማንቃት_አቋራጭ (ግሎባል); (1) {enable_interrupts (int_rda); ከሆነ (strcmp (ቋት ፣ cmp_) == 0) output_low (LED_RED); ሌላ output_high (LED_RED); }}
መጀመሪያ ላይ በእኛ ሕብረቁምፊ አሠራር ውስጥ የምንረዳውን የሕብረቁምፊ ቤተ -መጽሐፍትን እናካትታለን ፣ በእኛ ሁኔታ ሕብረቁምፊ ማወዳደር (strcmp)። ስለዚህ ፣ በዚህ ኮድ ውስጥ ያለን ዓላማ የተላለፈው እሴት “cmp_” ከ “24” ጋር እኩል ከሆነ ከተሰጠው እሴት ጋር ተመሳሳይ ከሆነ ከፒን D0 ጋር የተገናኘውን መሪን ማብራት ነው።
በመጀመሪያ ደረጃ መረጃን በሚተላለፍበት ጊዜ መቋረጥን የሚያመጣውን “rda” ማቋረጥን እናነቃለን።
በሁለተኛ ደረጃ ፣ “serial_communication_interrupt” ተብሎ የሚጠራውን በ ISR (የአገልግሎት መቋረጥን) ውስጥ እንይ። የተቀበለውን እሴት ለማንበብ እና ተጨማሪ ማቋረጥን ለመፍጠር በውስጣችን መጀመሪያ የማቋረጫ ባንዲራ እናሰናክለዋለን። ከዚያ በኋላ ‹\ 0› እስኪደርስ ድረስ የሕብረቁምፊ ቁምፊውን በባህሪ እናነባለን። በሕብረቁምፊ ውስጥ እያነበብን የተቀበለውን ሕብረቁምፊ ለማግኘት እያንዳንዱን ቻርተር ወደ ቋት እንጽፋለን።
በመጨረሻ ፣ እኛ እንደገና ወደ ውስጥ እንገባለን። ሕብረቁምፊውን በትክክል ማግኘት አለመቻላችንን ለማየት እዚህ እኛ ሕብረቁምፊ እና የ cmp_ ሕብረቁምፊ የተቀበለውን የእኛን ቋት ሕብረቁምፊ እናነፃፅራለን። እነሱ እኩል ከሆኑ እኔ መሪን አብራለሁ ፣ አለበለዚያ አጥፋ።
*በኮድ ውስጥ እኔ ተገላግያለሁ ምክንያቱም የእኔ ቦርድ የ D ወደብ ፒን እሴቶችን ስለሚቀይር። በኮድዎ ውስጥ ወደሚከተለው ይለውጡት
ከሆነ (strcmp (ቋት ፣ cmp_) == 0) output_high (LED_RED) ፤ ሌላ output_low (LED_RED);
በመጨረሻም ያጠናቅሩት እና ወደ የእርስዎ MCU ይስቀሉ እና ከዚያ በ Python ውስጥ ኮድ ያሂዱ። መሪን ማብራት ማየት አለብዎት።
ደረጃ 5 መደምደሚያ
አንድ ሥራን በተሳካ ሁኔታ ጨርሰናል። ለእርስዎ ጠቃሚ እንደሚሆን ተስፋ አደርጋለሁ። ማንኛውም ጥያቄ ካለዎት እባክዎን ከመጠየቅ ወደኋላ አይበሉ:) እስከሚቀጥለው ፕሮጀክት ድረስ።
የሚመከር:
የዳቦ ቦርድን በመጠቀም PIC MCU ን ከ PICkit Programmer ጋር እንዴት ማዘጋጀት እንደሚቻል - 3 ደረጃዎች
የዳቦ ሰሌዳ በመጠቀም PIC MCU ን ከ PICkit Programmer ጋር እንዴት ማዘጋጀት እንደሚቻል -ከፒሲ (ወይም ከማንኛውም ሌላ) ማይክሮ መቆጣጠሪያ ጋር ለመጫወት ውድ እና የተራቀቁ መሣሪያዎች አያስፈልጉዎትም። የሚያስፈልግዎት ነገር ወረዳዎን እና ፕሮግራምዎን የሚፈትሹበት የዳቦ ሰሌዳ ብቻ ነው። በእርግጥ አንድ ዓይነት የፕሮግራም ባለሙያ እና አይዲኢ አስፈላጊ ነው። በዚህ ትምህርት ውስጥ
STM32F4 ግኝት ቦርድ እና Python USART Communication (STM32CubeMx): 5 ደረጃዎች
STM32F4 ግኝት ቦርድ እና Python USART Communication (STM32CubeMx): ሰላም! በዚህ መማሪያ ውስጥ በ STM32F4 ARM MCU እና Python መካከል የ USART ግንኙነት ለመመስረት እንሞክራለን (በሌላ በማንኛውም ቋንቋ ሊተካ ይችላል)። ስለዚህ ፣ እንጀምር
ESP8266 እና Python Communication For Noobs: 6 Steps
ESP8266 እና Python Communication For Noobs: ይህ መመሪያ ማንኛውንም መረጃ ከ ESP8266 እንዲያገኙ እና ያለ AT ትዕዛዞች በፓይዘን ላይ እንዲቆጣጠሩ ያስችልዎታል። ለጀማሪዎች ፣ ESP8266 ን ስለመጠቀም አብዛኛዎቹ መመሪያዎች ከባድ ናቸው ፣ ምክንያቱም “በትዕዛዞች ላይ እንዲያበሩ” ይፈልጋሉ።”ወደ ቺፕ ፣ ማለትም - አላስፈላጊ ጥፋት
Python3 እና Arduino Communication: 5 ደረጃዎች
Python3 እና Arduino Communication: Project Description በዚህ ፕሮጀክት ውስጥ ከ Python3 ትዕዛዞችን ወደ አርዱinoኖ ቦርድ እንልካለን ፣ ይህም በ Python3 እና በአርዱዲኖ መካከል በሚገናኙበት ጊዜ ነገሮችን ለመረዳት ቀላል ያደርገዋል። እኛ “ሰላም ዓለም” እንሠራለን። የ Arduino platfo
UCL -Embedded -Relay Communication Box: 5 ደረጃዎች
UCL -Embedded -Relay Communication Box -የዚህ ፕሮጀክት ዋና ሀሳብ የ WiFi ግንኙነትን እና Nodmcu esp8266 ማይክሮ መቆጣጠሪያን በመጠቀም በቢሊንክ መተግበሪያ የሁለት ቅብብሎች እና የ DHT11 ዳሳሽ ስብስብን መቆጣጠር ነው።