فهرست مطالب:
- مرحله 1: به چه چیزی نیاز داریم؟
- مرحله 2: اتصالات سخت افزاری
- مرحله 3: نرم افزار پایتون
- مرحله 4: نرم افزار میکروکنترلر
- مرحله 5: نتیجه گیری
تصویری: MICU PIC و ارتباط سریال پایتون: 5 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
سلام بچه ها! در این پروژه سعی می کنم آزمایشات خود را در مورد PIC MCU و ارتباط سریال پایتون توضیح دهم. در اینترنت ، آموزشها و فیلمهای زیادی در مورد نحوه ارتباط با PIC MCU از طریق ترمینال مجازی وجود دارد که بسیار مفید است. با این حال ، در پروژه اصلی من یکی از الزامات برقراری ارتباط سریالی بین PIC MCU و Python است که نتوانستم آموزش خوبی پیدا کنم. بنابراین ، بیایید شروع کنیم:)
مرحله 1: به چه چیزی نیاز داریم؟
بنابراین ، ابتدا باید ببینیم به چه چیزی نیاز داریم. از نظر سخت افزاری:
- مطمئنا ، PIC MCU که در مورد من PIC16f877a است (شما به آن برد نیازی ندارید. این به منظور ساده سازی برخی از اتصالات کثیف است)
- مبدل USB به TTL به منظور ارتباط با PIC MCU از طریق پورت USB با استفاده از پین های TX و RX.
- برنامه نویس MCU که در مورد من برنامه نویس K150 است ، اما می توانید از PicKit 2 ، 3 یا هر چیز دیگری استفاده کنید.
- و بالاخره کامپیوتر:)
از نظر نرم افزاری:
- یک IDE برای نوشتن کد پایتون که در مورد من Pycharm است ، اما می توانید از پایتون IDE معمولی نیز استفاده کنید.
- محیطی برای برنامه نویسی MCU که در مورد من MPLAB X IDE با کامپایلر CCS C است.
مرحله 2: اتصالات سخت افزاری
در تصویر اتصالات سخت افزاری متصل شده است که بین PIC MCU و USB TTL مبدل به شرح زیر است:
RC7 (RX) ------------- TXD
RC6 (TX) ------------- RXD
GND -------------- GND
نیازی به اتصال پین VCC مبدل USB TTL ندارید (با این حال ، اگر می خواهید می توانید انجام دهید). این 3 اتصال کاملاً کافی است.
مرحله 3: نرم افزار پایتون
بیایید شروع به نوشتن نرم افزاری برای طرف پایتون کنیم که در مورد ما فرستنده خواهد بود ، زیرا رشته را به MCU ارسال می کند.
واردات سریال #واردات کتابخانه سریال datadata = '24' #داده که ما داده ها = a+'\ 0' ser = serial را ارسال خواهیم کرد. سریال ('COM17'، baudrate = 9600، timeout = 1) #اتصال به سرور port.write (a.encode ()) #ارسال داده ها
اول از همه کتابخانه سریال به منظور استفاده از آینده آن وارد می شود. ما می خواهیم یک نمونه داده رشته ارسال کنیم تا در کد MCU تایید کنیم که آن را پذیرفته ایم. در اینجا می خواهم به یک نکته توجه کنم. به همین دلیل است که / '0' را به رشته اضافه کردیم. این به این دلیل است که در سمت MCU خواندن کامل رشته امکان پذیر نیست. شخصیت به شخصیت خوانده می شود. بنابراین ، ما می خواهیم پایان رشته را بدانیم تا خواندن را متوقف کنیم. بنابراین ، '\ 0' را به رشته اضافه می کنیم که پایان رشته را نشان می دهد. سپس به پورت متصل به MCU متصل می شویم. با جستجو در "Device Manager" می توانید آن پورت را تعیین کنید. بنابراین ، مراقب باشید که در یک بندر هستید. پس از همه ، ما داده ها را به MCU ارسال می کنیم. ".encode ()" باید به داده های رشته اضافه شود تا بتواند آن را به گیرنده ارسال کند.
مرحله 4: نرم افزار میکروکنترلر
بنابراین ، اجازه دهید کد خود را برای MCU ببینیم. اول از همه من می خواهم فایل "config.h" را در داخل شما نشان دهم که لازم نیست ، اما این کار را برای سادگی انجام دادم. در اینجا فقط فرکانس MCU خود را تغییر دهید.
#ifndef CONFIG_H#CONFIG_H را تعریف کنید
#عبارتند از
#دستگاه ADC = 16
#FUSES NOWDT // بدون تایمر سگ دیده بان
#FUSES NOBROWNOUT // بدون brownout reset #FUSES NOLVP // بدون prgming ولتاژ پایین ، B3 (PIC16) یا B5 (PIC18) که برای ورودی/خروجی استفاده می شود
#تاخیر استفاده (کریستال = 6000000)
حالا اجازه دهید کد اصلی را ببینیم:
#عبارتند از
#عبارتند از
#use rs232 (baud = 9600، xmit = pin_C6، rcv = pin_C7 ، برابری = N ، توقف = 1)
#تعریف LED_RED PIN_D0
char inp؛ char cmp _ = "24"؛ char buffer [3]؛
#در_ردا
void serial_communication_interrupt () {disable_interrupts (int_rda)؛ بدون امضا int i = 0؛ inp = getc ()؛ putc (inp) ؛ while (inp! = '\ 0') {buffer = inp؛ inp = getc ()؛ putc (ورودی) ؛ من ++ ؛ }}
خالی اصلی (خالی) {
set_tris_d (0x00) ؛ خروجی_د (0xFF) ؛ enable_interrupts (GLOBAL) ؛ while (1) {enable_interrupts (int_rda)؛ if (strcmp (بافر ، cmp_) == 0) output_low (LED_RED) ؛ else output_high (LED_RED) ؛ }}
در ابتدا ما کتابخانه رشته را وارد می کنیم که در عملیات رشته که در مورد ما عملیات مقایسه رشته (strcmp) است ، مفید خواهد بود. بنابراین ، هدف ما در این کد این است که led متصل به پین D0 را در صورتی که مقدار ارسال شده همان مقدار داده شده ما باشد که "cmp_" برابر با "24" است ، روشن کنیم.
اول از همه ما وقفه "rda" را فعال می کنیم که هنگام انتقال داده ها باعث وقفه می شود.
ثانیاً ، اجازه دهید ISR (روال وقفه سرویس) را که "serial_communication_interrupt" نامیده می شود ، بررسی کنیم. در داخل ما ابتدا پرچم وقفه را غیر فعال می کنیم تا مقدار دریافت شده را بخوانیم و باعث وقفه بیشتر شویم. پس از آن ما رشته را به صورت نویسه می خوانیم تا به '\ 0' برسیم. هنگام خواندن داخل رشته ، ما همچنین هر char را به بافر می نویسیم تا رشته دریافت شود.
در پایان ، ما دوباره وارد می شویم در حالی که. در اینجا ما رشته بافر خود را که رشته دریافت شده است و رشته cmp_ را مقایسه می کنیم تا ببینیم آیا رشته را به درستی دریافت کرده ایم یا خیر. اگر آنها مساوی هستند ، من LED را روشن می کنم ، در غیر این صورت خاموش می کنم.*
*در کد من معکوس کردم زیرا برد من مقادیر پین پورت D را معکوس می کند. در کد خود آن را تغییر دهید:
if (strcmp (بافر ، cmp_) == 0) خروجی_بالا (LED_RED) ؛ در غیر این صورت output_low (LED_RED) ؛
در نهایت ، آن را کامپایل کرده و در MCU خود بارگذاری کنید و سپس کد را در پایتون اجرا کنید. باید ببینید چراغ روشن است.
مرحله 5: نتیجه گیری
ما یک کار را با موفقیت به پایان رساندیم. امیدوارم برای شما مفید واقع شود. اگر س questionالی دارید ، لطفاً از پرسیدن دریغ نکنید:) تا پروژه بعدی.
توصیه شده:
ارتباط سریال آردوینو: 5 مرحله
ارتباط سریال آردوینو: بسیاری از پروژه های آردوینو بر انتقال داده ها بین چندین آردوینو تکیه می کنند. این که آیا شما یک سرگرم کننده هستید که در حال ساخت یک ماشین RC ، یک هواپیمای RC ، یا طراحی یک ایستگاه هواشناسی با صفحه نمایش از راه دور هستید ، باید بدانید که چگونه می توانید به طور قابل اعتماد انتقال سریال
ارتباط سریال آردوینو و پایتون - صفحه کلید: 4 مرحله
ارتباطات آردوینو و پایتون - صفحه کلید: این پروژه برای کاربران مک ساخته شده است اما می تواند برای لینوکس و ویندوز نیز اجرا شود ، تنها مرحله ای که باید متفاوت باشد نصب است
ارتباط سریال بی سیم با استفاده از Bluefruit: 4 مرحله
ارتباط سریال بی سیم با استفاده از Bluefruit: در اینجا یک راهنمای گام به گام ساده برای تعویض سیم های خود با اتصال کم مصرف بلوتوث آورده شده است: برای درک این موضوع مدتی طول کشید زیرا هیچ سند و مدرکی در مورد انجام این کار با فناوری کم مصرف بلوتوث مدرن وجود ندارد. به عنوان بلوفروئی
SmartMirror مبتنی بر وب با استفاده از ارتباط سریال: 6 مرحله
SmartMirror مبتنی بر وب با استفاده از ارتباط سریال: این دستورالعمل با تمام کد آماده استفاده ارائه می شود. توسعه بسیار پیچیده بود اما پس از راه اندازی ، سفارشی سازی آن بسیار آسان است. نگاهی بیندازید و لذت ببرید ؛)
ارتباط سریال با استفاده از ARM Cortex-M4: 4 مرحله
ارتباط سریال با استفاده از ARM Cortex-M4: این یک پروژه مبتنی بر ورق است که از ARM Cortex-M4 (Texas Instruments EK-TM4C123GXL) برای ارتباط سریال با استفاده از پایانه مجازی استفاده می کند. خروجی را می توان در صفحه LCD 16x2 به دست آورد و ورودی ارتباط سریال را می توان در سریال Mo