Агуулгын хүснэгт:
- Алхам 1: Бидэнд юу хэрэгтэй вэ?
- Алхам 2: Тоног төхөөрөмжийн холболт
- Алхам 3: Python програм хангамж
- Алхам 4: Микроконтроллер програм хангамж
- Алхам 5: Дүгнэлт
Видео: PIC MCU ба Python цуваа холбоо: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Сайн уу залуусаа! Энэ төсөлд би PIC MCU болон Python цуваа холбооны туршилтуудаа тайлбарлахыг хичээх болно. Интернет дээр PIC MCU -тай виртуал терминалаар хэрхэн холбогдох талаар олон заавар, видео байдаг бөгөөд энэ нь маш хэрэгтэй юм. Гэсэн хэдий ч миний гол төсөлд тавигдах шаардлагуудын нэг бол PIC MCU ба Python -ийн хооронд цуврал харилцаа холбоо тогтоох явдал юм. За ингээд эхэлцгээе:)
Алхам 1: Бидэнд юу хэрэгтэй вэ?
Тиймээс эхлээд бидэнд юу хэрэгтэй байгааг харцгаая. Тоног төхөөрөмжийн хувьд:
- Мэдээжийн хэрэг, миний хувьд PIC16f877a PIC MCU (танд энэ самбар хэрэггүй. Энэ нь зарим бохир холболтыг хялбарчлах зорилгоор хийгдсэн болно)
- TX ба RX тээглүүр ашиглан USB портоор PIC MCU -тай холбогдохын тулд USB -ийг TTL хөрвүүлэгч.
- Миний хувьд K150 програмист MCU програмист боловч та PicKit 2, 3 эсвэл өөр зүйлийг ашиглаж болно.
- Эцэст нь компьютер:)
Програм хангамжийн хувьд:
- Миний хувьд Pycharm -д байдаг python кодыг бичихийн тулд IDE, гэхдээ та ердийн Python IDE -г бас ашиглаж болно.
- Миний хувьд MPLAB X IDE -ийг CCS C хөрвүүлэгчтэй MCU програмчлах орчин.
Алхам 2: Тоног төхөөрөмжийн холболт
Зураг дээр PIC MCU ба USB TTL хөрвүүлэгч хоёрын хооронд байгаа тоног төхөөрөмжийн холболтыг доор харуулав.
RC7 (RX) ------------- TXD
RC6 (TX) ------------- RXD
GND -------------- GND
Та USB TTL хөрвүүлэгчийн VCC зүү холбох шаардлагагүй (Гэсэн хэдий ч хэрэв хүсвэл үүнийг хийж болно). Эдгээр 3 холболт хангалттай.
Алхам 3: Python програм хангамж
Python -ийн хувьд бидний хувьд дамжуулагч болох програмыг бичиж эхэлье, учир нь энэ нь мөрийг MCU руу илгээх болно.
цуваа импорт серийн #импорт серийн номын санdata = '24' #өгөгдөл илгээх болно = a+'\ 0' ser = serial. Serial ('COM17', baudrate = 9600, timeout = 1) #ser.write порт руу холбогдох a.encode ()) #өгөгдлийг илгээх
Юуны өмнө ирээдүйг ашиглахын тулд цуваа номын санг импортлодог. Бид үүнийг хүлээн авсан гэдгээ MCU кодоор баталгаажуулахын тулд жишээ мөрийн өгөгдлийг илгээхийг хүсч байна. Энд нэг зүйлийг тэмдэглэхийг хүсч байна. Тиймээс бид мөрөнд '\ 0' -г нэмсэн. Учир нь MCU -ийн талаас мөрийг бүрэн унших боломжгүй юм. Түүнийг дүрээр нь уншдаг. Тиймээс бид уншихаа болихын тулд мөрийн төгсгөлийг мэдэхийг хүсч байна. Тиймээс бид тэмдэгт мөрөнд '\ 0' гэж нэмээд мөрийн төгсгөлийг заана. Дараа нь бид MCU -тай холбогдсон порт руу холбогддог. Та энэ төхөөрөмжийг "Төхөөрөмжийн менежер" дээрээс хайж олох боломжтой. Тиймээс, та нэг боомт дээр байгаа тул болгоомжтой байгаарай. Эцсийн эцэст бид өгөгдлийг MCU руу илгээдэг. Хүлээн авагч руу илгээх боломжтой байхын тулд ".encode ()" мөрийн өгөгдөлд нэмж оруулах ёстой.
Алхам 4: Микроконтроллер програм хангамж
Тиймээс, MCU кодоо харцгаая. Юуны өмнө би танд "config.h" файлыг заавал үзүүлэхийг хүсч байна, гэхдээ би үүнийг энгийн байдлаар хийсэн. Энд зөвхөн MCU -ийн давтамжийг өөрчлөх хэрэгтэй.
#ifndef CONFIG_H#CONFIG_H -ийг тодорхойлно уу
#оруулах
#төхөөрөмжийн ADC = 16
#FUSES NOWDT // Харуулын нохой таймер байхгүй
#FUSES NOBROWNOUT // brownout reset байхгүй #FUSES NOLVP // Бага хүчдэлийн эргэлт байхгүй, I/O -д B3 (PIC16) эсвэл B5 (PIC18) ашиглагддаггүй.
#ашиглах саатал (болор = 6000000)
Одоо үндсэн кодыг харцгаая.
#оруулах
#оруулах
#ашиглах rs232 (baud = 9600, xmit = pin_C6, rcv = pin_C7, parity = N, stop = 1)
#LED_RED PIN_D0 -ийг тодорхойлох
char inp; char cmp _ = "24"; char буфер [3];
#ин_рда
хүчингүй serial_communication_interrupt () {disable_interrupts (int_rda); тэмдэггүй int i = 0; inp = getc (); putc (inp); while (inp! = '\ 0') {buffer = inp; inp = getc (); putc (inp); би ++; }}
void main (хүчингүй) {
set_tris_d (0x00); output_d (0xFF); enable_interrupts (Глобал); while (1) {enable_interrupts (int_rda); if (strcmp (buffer, cmp_) == 0) output_low (LED_RED); өөр output_high (LED_RED); }}
Эхэндээ бид тэмдэгт мөрийн номын санг агуулдаг бөгөөд энэ нь мөр харьцуулах үйлдэл (strcmp) юм. Тиймээс, энэ код дахь бидний зорилго бол дамжуулсан утга нь бидний өгсөн утгатай "cmp_" нь "24" -тэй тэнцүү бол D0 зүүтэй холбогдсон гэрлийг асаах явдал юм.
Юуны өмнө бид өгөгдөл дамжуулах үед тасалдал үүсгэх "rda" тасалдлыг идэвхжүүлдэг.
Хоёрдугаарт, "serial_communication_interrupt" гэж нэрлэгддэг ISR (тасалдлын үйлчилгээний горим) -ыг авч үзье. Дотор нь бид хүлээн авсан утгыг уншиж, тасалдал үүсгэхийн тулд тасалдлын тугийг идэвхгүй болгодог. Үүний дараа бид '\ 0' хүрэх хүртэл тэмдэгт мөрийг тэмдэгтээр нь уншдаг. Мөрийг уншиж байхдаа хүлээн авсан мөрийг авахын тулд char бүрийг буферт бичдэг.
Эцэст нь бид дахиад л хэсэг хугацаанд орж ирнэ. Энд бид мөрийг зөв авсан эсэхийг шалгахын тулд хүлээн авсан string болон cmp_ string -ийг буфер мөрийг харьцуулж үздэг. Хэрэв тэд тэнцүү бол би LED асаагаарай, эс бөгөөс унтраа.
*Миний самбар D порт зүүний утгыг өөрчилдөг тул би кодоо буцааж хийсэн. Таны кодонд үүнийг дараах байдлаар өөрчилнө үү.
if (strcmp (buffer, cmp_) == 0) output_high (LED_RED); өөр output_low (LED_RED);
Эцэст нь үүнийг эмхэтгээд MCU дээрээ байршуулаад дараа нь Python дээр код ажиллуулна уу. Та LED асаалтыг харах ёстой.
Алхам 5: Дүгнэлт
Бид нэг ажлыг амжилттай дуусгалаа. Энэ нь танд ашигтай байх болно гэж найдаж байна. Асуух зүйл байвал асуухаас бүү эргэлзээрэй:) Дараагийн төсөл хүртэл.
Зөвлөмж болгож буй:
Arduino цуваа холбоо: 5 алхам
Arduino цуврал харилцаа холбоо: Arduino -ийн олон төслүүд хэд хэдэн Arduino хооронд өгөгдөл дамжуулахад тулгуурладаг.Хэрэв та RC машин, RC онгоц, алсын дэлгэцтэй цаг уурын станц зохион бүтээх дуртай бол та хэрхэн найдвартай ажиллахаа мэдэх хэрэгтэй болно. цуваа шилжүүлэх
Arduino ба Python цуваа холбоо - Товчлуурын дэлгэц: 4 алхам
Arduino болон Python цуваа харилцаа холбоо - Товчлуурын дэлгэц: Энэхүү төсөл нь mac хэрэглэгчдэд зориулагдсан боловч үүнийг Linux болон Windows дээр хэрэгжүүлэх боломжтой бөгөөд цорын ганц алхам бол суулгах явдал юм
Bluefruit ашиглан утасгүй цуваа холбоо: 4 алхам
Bluefruit ашиглан утасгүй цуваа холболт хийх: Утаснуудаа бага энергитэй bluetooth -ээр солих энгийн алхам алхмаар зааварчилгаа: Орчин үеийн bluetooth бага эрчим хүчний технологийн тусламжтайгаар үүнийг хийх талаар бараг ямар ч баримт бичиг байхгүй тул үүнийг олж мэдэхэд надад маш их хугацаа шаардагдлаа. Bluefrui -ийн хувьд
ARM Cortex-M4 ашиглан цуваа холбоо: 4 алхам
ARM Cortex-M4 ашиглан цуваа холбоо: Энэ бол виртуал терминал ашиглан цуваа холболт хийхэд ARM Cortex-M4 (Texas Instruments EK-TM4C123GXL) ашигладаг талбар дээр суурилсан төсөл юм. Гаралтыг 16x2 LCD дэлгэц дээр авах боломжтой бөгөөд Цуваа холболтын оролтыг Serial Mo -д өгөх боломжтой
Хандалтын цэг - Хоёр ESP8266 MCU -ийн хооронд станцын холбоо: 3 алхам
Хандалтын цэг - Хоёр ESP8266 MCU -ийн хооронд станцын холбоо: Сайн байна уу, үйлдвэрлэгчид! Өмнөх заавартаа би гэрийн WiFi чиглүүлэгчээр дамжуулан хоёр ESP8266 MCU -ийн хооронд WiFi холболт хийсэн. Сэтгэгдлүүдээс харахад ESP8266 MCU -ийг чиглүүлэгчийн хүрээнээс хол ашиглахыг хүсдэг үйлдвэрлэгчид байдаг. Тиймээс энд баар байна