সুচিপত্র:
- ধাপ 1: আমাদের কি দরকার?
- পদক্ষেপ 2: হার্ডওয়্যার সংযোগ
- ধাপ 3: পাইথন সফটওয়্যার
- ধাপ 4: মাইক্রোকন্ট্রোলার সফটওয়্যার
- ধাপ 5: উপসংহার
ভিডিও: PIC MCU এবং Python Serial Communication: 5 ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
হ্যালো বন্ধুরা! এই প্রকল্পে আমি পিআইসি এমসিইউ এবং পাইথন সিরিয়াল যোগাযোগে আমার পরীক্ষাগুলি ব্যাখ্যা করার চেষ্টা করব। ইন্টারনেটে, ভার্চুয়াল টার্মিনালে পিআইসি এমসিইউর সাথে কীভাবে যোগাযোগ করা যায় সে সম্পর্কে অনেক টিউটোরিয়াল এবং ভিডিও রয়েছে যা খুব দরকারী। যাইহোক, আমার মূল প্রজেক্টে অন্যতম প্রয়োজনীয়তা হল পিআইসি এমসিইউ এবং পাইথনের মধ্যে সিরিয়াল যোগাযোগ স্থাপন করা যা আমি ভাল টিউটোরিয়াল খুঁজে পাইনি। চল শুরু করা যাক:)
ধাপ 1: আমাদের কি দরকার?
সুতরাং, প্রথমেই দেখা যাক আমাদের কী প্রয়োজন। হার্ডওয়্যারের ক্ষেত্রে:
- অবশ্যই, PIC MCU যা আমার ক্ষেত্রে PIC16f877a (আপনার সেই বোর্ডের প্রয়োজন নেই। এটি কিছু নোংরা সংযোগ সহজ করার জন্য)
- TX এবং RX পিন ব্যবহার করে USB পোর্টের মাধ্যমে PIC MCU- এর সাথে যোগাযোগ করার জন্য USB থেকে TTL রূপান্তরকারী।
- MCU প্রোগ্রামার যা আমার ক্ষেত্রে K150 প্রোগ্রামার, কিন্তু আপনি PicKit 2, 3 বা অন্য কিছু ব্যবহার করতে পারেন।
- এবং অবশেষে একটি কম্পিউটার:)
সফটওয়্যারের ক্ষেত্রে:
- পাইথন কোড লেখার জন্য একটি IDE যা আমার ক্ষেত্রে Pycharm, কিন্তু আপনি নিয়মিত Python IDE ব্যবহার করতে পারেন।
- এমসিইউ প্রোগ্রাম করার জন্য একটি পরিবেশ যা আমার ক্ষেত্রে এমপিএলএবি এক্স আইডিই সিসিএস সি কম্পাইলারের সাথে।
পদক্ষেপ 2: হার্ডওয়্যার সংযোগ
ছবিতে সংযুক্ত হার্ডওয়্যার সংযোগ দেওয়া হয়েছে যা নীচে PIC MCU এবং USB TTL কনভার্টারের মধ্যে রয়েছে:
RC7 (RX) ------------- TXD
RC6 (TX) ------------- RXD
GND -------------- GND
ইউএসবি টিটিএল কনভার্টারের ভিসিসি পিন সংযুক্ত করার দরকার নেই (তবে, আপনি চাইলে করতে পারেন)। এই 3 টি সংযোগ যথেষ্ট যথেষ্ট।
ধাপ 3: পাইথন সফটওয়্যার
আসুন পাইথন সাইডের জন্য সফ্টওয়্যার লিখতে শুরু করি যা আমাদের ক্ষেত্রে ট্রান্সমিটার হবে, কারণ এটি এমসিইউতে স্ট্রিং পাঠাবে।
আমদানি সিরিয়াল #ইমপোর্ট সিরিয়াল লাইব্রেরি ডাটা = '24' #ডেটা যা আমরা ডাটা = a+'\ 0' সির = সিরিয়াল পাঠাবো। a.encode ()) #ডেটা পাঠান
সর্বপ্রথম সিরিয়াল লাইব্রেরি আমদানি করা হয় যাতে এর ভবিষ্যত ব্যবহার করা যায়। আমরা MCU কোডে নিশ্চিত করার জন্য একটি উদাহরণ স্ট্রিং ডেটা পাঠাতে চাই যে আমরা এটি গ্রহণ করেছি। আমি এখানে একটি জিনিস নোট করতে চাই। এজন্য আমরা স্ট্রিংয়ে '\ 0' যোগ করেছি। এর কারণ হল, এমসিইউয়ের পাশে স্ট্রিংটি পুরোপুরি পড়া অসম্ভব। এটি চরিত্র দ্বারা চরিত্র পড়া হয়। সুতরাং, আমরা পড়া বন্ধ করার জন্য স্ট্রিং এর শেষ জানতে চাই। সুতরাং, আমরা স্ট্রিংয়ে '\ 0' যোগ করি যা স্ট্রিংয়ের শেষ নির্দেশ করে। তারপর আমরা MCU- র সাথে সংযুক্ত পোর্টের সাথে সংযোগ স্থাপন করি। আপনি 'ডিভাইস ম্যানেজার' অনুসন্ধান করে সেই পোর্টটি নির্ধারণ করতে পারেন। সুতরাং, সতর্ক থাকুন যে আপনি একই বন্দরে আছেন। সর্বোপরি, আমরা এমসিইউতে ডেটা প্রেরণ করি। রিসিভারে পাঠাতে সক্ষম হওয়ার জন্য ".encode ()" স্ট্রিং ডেটাতে যোগ করা উচিত।
ধাপ 4: মাইক্রোকন্ট্রোলার সফটওয়্যার
সুতরাং, আসুন MCU এর জন্য আমাদের কোড দেখি। প্রথমে আমি আপনাকে "config.h" ফাইলের ভিতরে দেখাতে চাই যা প্রয়োজন নেই, কিন্তু আমি এটি সরলতার জন্য করেছি। এখানে শুধু আপনার MCU এর ফ্রিকোয়েন্সি পরিবর্তন করুন।
#ifndef CONFIG_H#CONFIG_H সংজ্ঞায়িত করুন
#অন্তর্ভুক্ত
#ডিভাইস ADC = 16
#FUSES NOWDT // No Watch Dog Timer
#FUSES NOBROWNOUT // No Brownout reset #FUSES NOLVP // কোন কম ভোল্টেজের প্রিজমিং, B3 (PIC16) বা B5 (PIC18) I/O এর জন্য ব্যবহৃত
#বিলম্ব ব্যবহার করুন (স্ফটিক = 6000000)
এখন আসুন মূল কোডটি দেখি:
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#rs232 ব্যবহার করুন (baud = 9600, xmit = pin_C6, rcv = pin_C7, parity = N, stop = 1)
#LED_RED PIN_D0 নির্ধারণ করুন
char inp; char cmp _ = "24"; চর বাফার [3];
#int_rda
void serial_communication_interrupt () {disable_interrupts (int_rda); স্বাক্ষরবিহীন int i = 0; inp = getc (); putc (inp); while (inp! = '\ 0') {বাফার = inp; inp = getc (); putc (inp); আমি ++; }}
অকার্যকর প্রধান (শূন্য) {
set_tris_d (0x00); output_d (0xFF); enable_interrupts (গ্লোবাল); যখন (1) {enable_interrupts (int_rda); যদি (strcmp (বাফার, cmp_) == 0) output_low (LED_RED); অন্যথায় আউটপুট_উচ্চ (LED_RED); }}
শুরুতে আমরা স্ট্রিং লাইব্রেরি অন্তর্ভুক্ত করি যা আমরা স্ট্রিং অপারেশনে সহায়ক হব যা আমাদের ক্ষেত্রে স্ট্রিং তুলনা অপারেশন (strcmp)। সুতরাং, এই কোডে আমাদের উদ্দেশ্য হল পিন D0 এর সাথে সংযুক্ত LED চালু করা যদি ট্রান্সমিট করা মান আমাদের প্রদত্ত মানের সমান হয় যা "cmp_" "24" এর সমান।
প্রথমত আমরা ইন্টারাপ্ট "rda" সক্ষম করি যা ডেটা ট্রান্সমিট করার সময় বাধা সৃষ্টি করবে।
দ্বিতীয়ত, আসুন ISR এর ভিতরে দেখি অভ্যন্তরে আমরা প্রথমে প্রাপ্ত মানটি পড়ার জন্য বাধা পতাকা অক্ষম করি এবং আরও বাধা সৃষ্টি করি। তারপরে আমরা '\ 0' না পৌঁছানো পর্যন্ত অক্ষর দ্বারা স্ট্রিং অক্ষরটি পড়ি। স্ট্রিংয়ের ভিতরে পড়ার সময় আমরা প্রতিটি স্ট্রিং বাফারে লিখি যাতে প্রাপ্ত স্ট্রিং পাওয়া যায়।
শেষে, আমরা আবার ভিতরে আসছি যখন। এখানে আমরা আমাদের বাফার স্ট্রিং যা স্ট্রিং এবং cmp_ স্ট্রিং পেয়েছে তা তুলনা করি যাতে আমরা স্ট্রিংটি সঠিকভাবে পাই কিনা। যদি তারা সমান হয় তবে আমি নেতৃত্ব চালু করি, অন্যথায় বন্ধ করুন।
*কোডে আমি বিপরীত করেছি কারণ আমার বোর্ড ডি পোর্ট পিনের মান উল্টে দেয়। আপনার কোডে এটি পরিবর্তন করুন:
যদি (strcmp (বাফার, cmp_) == 0) output_high (LED_RED); অন্যথায় output_low (LED_RED);
অবশেষে, এটি কম্পাইল করুন এবং আপনার MCU এ আপলোড করুন এবং তারপর পাইথনে কোড চালান। আপনি নেতৃত্ব চালু দেখতে হবে।
ধাপ 5: উপসংহার
আমরা একটি কাজ সফলভাবে শেষ করেছি। আমি আশা করি এটি আপনার জন্য দরকারী হবে। যদি আপনার কোন প্রশ্ন থাকে, অনুগ্রহ করে জিজ্ঞাসা করতে দ্বিধা করবেন না:) পরবর্তী প্রকল্প পর্যন্ত।
প্রস্তাবিত:
NODE MCU এবং BLYNK ব্যবহার করে তাপমাত্রা এবং আর্দ্রতা পর্যবেক্ষণ: 5 টি ধাপ
NODE MCU এবং BLYNK ব্যবহার করে তাপমাত্রা এবং আর্দ্রতা পর্যবেক্ষণ: হাই বন্ধুরা এই নির্দেশে আসুন আমরা DHT11- তাপমাত্রা এবং আর্দ্রতা সেন্সর ব্যবহার করে নোড MCU এবং BLYNK অ্যাপ ব্যবহার করে বায়ুমণ্ডলের তাপমাত্রা এবং আর্দ্রতা কিভাবে পেতে হয় তা শিখি।
কিভাবে একটি টেবিল তৈরি এবং Insোকানো যায় এবং মাইক্রোসফট অফিস ওয়ার্ড 2007 এ সেই টেবিলে অতিরিক্ত কলাম এবং/অথবা সারি যোগ করা হয়: 11 টি ধাপ
কিভাবে একটি টেবিল তৈরি এবং Insোকানো যায় এবং মাইক্রোসফট অফিস ওয়ার্ড 2007 এ সেই টেবিলে অতিরিক্ত কলাম এবং/অথবা সারি যোগ করা হয়: আপনি কি কখনো এমন অনেক ডেটা পেয়েছেন যার সাথে আপনি কাজ করছেন এবং নিজেকে ভেবেছেন … " আমি কিভাবে সব করতে পারি এই ডেটাগুলি আরও ভাল দেখায় এবং বুঝতে সহজ হবে? " যদি তাই হয়, তাহলে মাইক্রোসফ্ট অফিস ওয়ার্ড 2007 এর একটি টেবিল আপনার উত্তর হতে পারে
প্রসেসিং এবং আরডুইনো সংযোগ এবং 7 সেগমেন্ট এবং Servo GUI কন্ট্রোলার তৈরি করুন: 4 টি ধাপ
প্রসেসিং এবং আরডুইনো সংযোগ করা এবং 7 সেগমেন্ট এবং সার্ভো GUI কন্ট্রোলার তৈরি করুন: কিছু প্রকল্পের জন্য আপনাকে Arduino ব্যবহার করতে হবে কারণ এটি একটি সহজ প্রোটোটাইপিং প্ল্যাটফর্ম প্রদান করে কিন্তু Arduino এর সিরিয়াল মনিটরে গ্রাফিক্স প্রদর্শন করতে বেশ সময় লাগতে পারে এবং এটি করাও কঠিন। আপনি Arduino সিরিয়াল মনিটর bu এ গ্রাফ প্রদর্শন করতে পারেন
নেক্সট ডিসপ্লে - PIC এবং Arduino- এর সাথে ব্যাখ্যা করা ইন্টারফেস এবং প্রটোকল: 10 টি ধাপ
Nextion প্রদর্শন | PIC এবং Arduino- এর মাধ্যমে ব্যাখ্যা করা ইন্টারফেস এবং প্রটোকল: নেক্সশন ডিসপ্লে ব্যবহার করা খুবই সহজ এবং মাইক্রো কন্ট্রোলারের সাথে সহজ ইন্টারফেস। প্রদর্শন করতে কাজ করবে
ওয়াইফাই এবং আইআর রিমোট এবং অ্যান্ড্রয়েড অ্যাপ ব্যবহার করে নোডএমসিইউ এবং আইআর রিসিভারের সাথে রিলে কন্ট্রোল: 5 টি ধাপ (ছবি সহ)
ওয়াইফাই এবং আইআর রিমোট এবং অ্যান্ড্রয়েড অ্যাপ ব্যবহার করে নোডএমসিইউ এবং আইআর রিসিভারের সাথে 8 রিলে কন্ট্রোল: ওয়াইফাই এবং আইআর রিমোট এবং অ্যান্ড্রয়েড অ্যাপের মাধ্যমে নোডেমকু এবং আইআর রিসিভার ব্যবহার করে 8 রিলে সুইচ নিয়ন্ত্রণ করুন। এখানে