সুচিপত্র:
- ধাপ 1: ক্যানবাস কি
- পদক্ষেপ 2: CAN যোগাযোগ সম্পর্কে
- ধাপ 3: ফ্রেম
- ধাপ 4: গতি এবং দূরত্ব
- ধাপ 5: হার্ডওয়্যার
- ধাপ 6: সংযোগ
- ধাপ 7: কোড
- ধাপ 8: দেখান
ভিডিও: CANBUS এর জন্য একটি সহজ টিউটোরিয়াল: 8 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:56
আমি তিন সপ্তাহ ধরে CAN অধ্যয়ন করছি, এবং এখন আমি আমার শেখার ফলাফলগুলি যাচাই করার জন্য কিছু অ্যাপ্লিকেশন সম্পন্ন করেছি। এই টিউটোরিয়ালে, আপনি CANBUS যোগাযোগ বাস্তবায়নের জন্য Arduino ব্যবহার করতে শিখবেন। যদি আপনার কোন পরামর্শ থাকে, একটি বার্তা ছেড়ে স্বাগত জানাই।
সরবরাহ:
হার্ডওয়্যার:
- মাদুইনো জিরো ক্যানবাস
- DHT11 তাপমাত্রা এবং আর্দ্রতা মডিউল
- 1.3 "I2C OLED 128x64- নীল
- DB9 থেকে DB9 কেবল (মহিলা থেকে মহিলা)
- ডুপন্ট লাইন
সফটওয়্যার:
Arduino IDE
ধাপ 1: ক্যানবাস কি
CAN সম্পর্কে
CAN (কন্ট্রোলার এরিয়া নেটওয়ার্ক) একটি সিরিয়াল কমিউনিকেশন নেটওয়ার্ক যা বিতরণকৃত রিয়েল-টাইম কন্ট্রোল উপলব্ধি করতে পারে। এটি স্বয়ংচালিত শিল্পের জন্য জটিল তারের জোতাকে দুই-তারের বাসের সাথে প্রতিস্থাপন করার জন্য তৈরি করা হয়েছে।
CAN প্রোটোকল OSI মডেলের ডাটা লিংক লেয়ার এবং ফিজিক্যাল লেয়ারের অংশকে সংজ্ঞায়িত করে।
CAN প্রোটোকল ISO 11898 এবং ISO11519 এর সাথে ISO মানসম্পন্ন। ISO11898 হল 125kbps-1Mbps এর যোগাযোগের গতি সহ CAN হাই-স্পিড কমিউনিকেশন স্ট্যান্ডার্ড। ISO11519 হল 125kbps এর কম যোগাযোগের গতি সহ CAN লো-স্পিড কমিউনিকেশন স্ট্যান্ডার্ড।
এখানে আমরা উচ্চ গতির CAN এর দিকে মনোনিবেশ করি।
ISO-11898 বর্ণনা করে কিভাবে একটি নেটওয়ার্কের ডিভাইসের মধ্যে তথ্য প্রেরণ করা হয় এবং ওপেন সিস্টেমস ইন্টারকানেকশন মডেল (OSI) এর সাথে সামঞ্জস্যপূর্ণ যা স্তরের পরিপ্রেক্ষিতে সংজ্ঞায়িত হয়। ভৌত মাধ্যম দ্বারা সংযুক্ত ডিভাইসের মধ্যে প্রকৃত যোগাযোগ মডেলের ভৌত স্তর দ্বারা সংজ্ঞায়িত করা হয়।
- বাসের সাথে সংযুক্ত প্রতিটি CAN ইউনিটকে নোড বলা যেতে পারে। সমস্ত CAN ইউনিট একটি নেটওয়ার্ক গঠনের জন্য 120 Ω প্রতিরোধক সহ প্রতিটি প্রান্তে সমাপ্ত বাসের সাথে সংযুক্ত। বাস CAN_H এবং CAN_L লাইন নিয়ে গঠিত। CAN নিয়ামক উভয় তারের পাওয়ার লেভেলের পার্থক্যের উপর ভিত্তি করে বাসের মাত্রা নির্ধারণ করে। বাসের স্তরগুলি প্রভাবশালী এবং অবক্ষয়ী স্তরে বিভক্ত, যা অবশ্যই তাদের মধ্যে একটি হতে হবে। প্রেরক বাসের স্তরে পরিবর্তন করে রিসিভারের কাছে বার্তা পাঠায়। যখন লজিক্যাল লাইন "এবং" বাসে চালানো হয়, তখন প্রভাবশালী স্তর "0" এবং রিসেসিভ লেভেল "1"।
- প্রভাবশালী অবস্থায়, CAN_H এর ভোল্টেজ প্রায় 3.5V এবং CAN_L এর ভোল্টেজ প্রায় 1.5V। রিসেসিভ অবস্থায়, উভয় লাইনের ভোল্টেজ প্রায় 2.5V।
- সিগন্যাল ডিফারেনশিয়াল তাই CAN তার শক্তিশালী শব্দ প্রতিরোধ ক্ষমতা এবং ফল্ট সহনশীলতা অর্জন করে। সুষম ডিফারেনশিয়াল সিগন্যাল নয়েজ কাপলিং কমায় এবং টুইস্টেড পেয়ার ক্যাবলের উপর উচ্চ সিগন্যালিং রেটের অনুমতি দেয়। প্রতিটি সিগন্যাল লাইনের কারেন্ট সমান কিন্তু বিপরীত দিকে এবং ফলে ক্ষেত্র-বাতিল প্রভাব সৃষ্টি হয় যা কম শব্দ নির্গমনের চাবিকাঠি। সুষম ডিফারেনশিয়াল রিসিভার এবং টুইস্টেড পেয়ার ক্যাবলিংয়ের ব্যবহার একটি CAN বাসের সাধারণ-মোড প্রত্যাখ্যান এবং উচ্চ শব্দ প্রতিরোধ ক্ষমতা বাড়ায়।
ট্রান্সসিভার ক্যান
ক্যান ট্রান্সসিভার লজিক লেভেল এবং ফিজিক্যাল সিগন্যালের মধ্যে রূপান্তরের জন্য দায়ী। একটি লজিক্যাল সিগন্যালকে ডিফারেনশিয়াল লেভেলে বা ফিজিক্যাল সিগন্যালকে লজিক্যাল লেভেলে রূপান্তর করুন।
ক্যান কন্ট্রোলার
CAN কন্ট্রোলার CAN এর মূল উপাদান, যা CAN প্রোটোকলে ডাটা লিঙ্ক লেয়ারের সকল কাজ বুঝতে পারে এবং CAN প্রোটোকলকে স্বয়ংক্রিয়ভাবে সমাধান করতে পারে।
এমসিইউ
MCU ফাংশন সার্কিট এবং CAN কন্ট্রোলারের নিয়ন্ত্রণের জন্য দায়ী। উদাহরণস্বরূপ, নোড শুরু হলে CAN কন্ট্রোলার প্যারামিটারগুলি আরম্ভ করা হয়, CAN ফ্রেমটি CAN কন্ট্রোলারের মাধ্যমে পাঠানো হয় এবং পাঠানো হয়।
পদক্ষেপ 2: CAN যোগাযোগ সম্পর্কে
যখন বাসটি নিষ্ক্রিয় থাকে, তখন সমস্ত নোড বার্তা পাঠানো শুরু করতে পারে (মাল্টি-মাস্টার কন্ট্রোল)। যে নোডটি প্রথমে বাসে প্রবেশ করে তা পাঠানোর অধিকার পায় (CSMA/CA মোড)। যখন একাধিক নোড একই সময়ে পাঠানো শুরু করে, যে নোডটি উচ্চ অগ্রাধিকার আইডি বার্তা পাঠায় সে পাঠানোর অধিকার পায়।
CAN প্রটোকলে, সমস্ত বার্তা একটি নির্দিষ্ট বিন্যাসে পাঠানো হয়। যখন বাসটি নিষ্ক্রিয় থাকে, বাসের সাথে সংযুক্ত সমস্ত ইউনিট নতুন বার্তা পাঠানো শুরু করতে পারে। যখন দুইটির বেশি কোষ একই সময়ে বার্তা পাঠানো শুরু করে, তখন সনাক্তকারীর উপর ভিত্তি করে অগ্রাধিকার নির্ধারণ করা হয়। আইডি পাঠানোর গন্তব্য ঠিকানা প্রতিনিধিত্ব করে না, বরং বাসে প্রবেশের বার্তার অগ্রাধিকার। যখন দুইটির বেশি কোষ একই সময়ে বার্তা পাঠানো শুরু করে, তখন সুদ-মুক্ত আইডির প্রতিটি বিট এক এক করে সালিশ করা হয়। যে ইউনিট সালিশ জিতেছে সে বার্তা পাঠানো চালিয়ে যেতে পারে এবং যে ইউনিট সালিশ হারায় তা অবিলম্বে পাঠানো বন্ধ করে দেয় এবং কাজ গ্রহণ করে।
CAN বাস একটি সম্প্রচার ধরনের বাস। এর মানে হল যে সমস্ত নোড সমস্ত ট্রান্সমিশন 'শুনতে' পারে। সমস্ত নোড সর্বদা সমস্ত ট্র্যাফিক গ্রহণ করবে। CAN হার্ডওয়্যার স্থানীয় ফিল্টারিং প্রদান করে যাতে প্রতিটি নোড শুধুমাত্র আকর্ষণীয় বার্তার প্রতি প্রতিক্রিয়া জানাতে পারে।
ধাপ 3: ফ্রেম
CAN ডিভাইস ফ্রেম নামক প্যাকেটে CAN নেটওয়ার্ক জুড়ে ডেটা পাঠায়। CAN এর চার ধরনের ফ্রেম রয়েছে:
- ডেটা ফ্রেম: ট্রান্সমিশনের জন্য নোড ডেটা ধারণকারী একটি ফ্রেম
- দূরবর্তী ফ্রেম: একটি নির্দিষ্ট শনাক্তকারীর সংক্রমণের জন্য অনুরোধ করা একটি ফ্রেম
- ত্রুটি ফ্রেম: একটি ত্রুটি সনাক্ত করে কোন নোড দ্বারা প্রেরিত একটি ফ্রেম
- ওভারলোড ফ্রেম: ডেটা বা রিমোট ফ্রেমের মধ্যে বিলম্ব করার জন্য একটি ফ্রেম
ডেটা ফ্রেম
দুই ধরনের ডাটা ফ্রেম আছে, স্ট্যান্ডার্ড এবং এক্সটেন্ডেড।
চিত্রের বিট ক্ষেত্রগুলির অর্থ হল:
- SOF frame ফ্রেমের একক প্রভাবশালী প্রারম্ভ (SOF) বিট বার্তার সূচনা করে, এবং নিষ্ক্রিয় থাকার পর একটি বাসে নোডগুলি সিঙ্ক্রোনাইজ করতে ব্যবহৃত হয়।
- আইডেন্টিফায়ার-স্ট্যান্ডার্ড CAN 11-বিট আইডেন্টিফায়ার বার্তার অগ্রাধিকার প্রতিষ্ঠা করে। বাইনারি মান যত কম, তার অগ্রাধিকার তত বেশি।
- RTR – একক দূরবর্তী সংক্রমণ অনুরোধ (RTR) বিট
- আইডিই - একটি প্রভাবশালী একক শনাক্তকারী এক্সটেনশন (আইডিই) বিট মানে যে কোনও স্ট্যান্ডার্ড সিএএন শনাক্তকারী প্রেরণ করা হচ্ছে না।
- R0 – সংরক্ষিত বিট (ভবিষ্যতের মান সংশোধন দ্বারা সম্ভাব্য ব্যবহারের জন্য)।
- ডিএলসি 4 4-বিট ডেটা লেন্থ কোড (ডিএলসি) তে প্রেরিত ডেটার বাইটের সংখ্যা রয়েছে।
- ডেটা - 64 বিট পর্যন্ত অ্যাপ্লিকেশন ডেটা প্রেরণ করা যেতে পারে।
- CRC – 16-বিট (15 বিট প্লাস ডিলিমিটার) সাইক্লিক রিডানডেন্সি চেক (CRC) এ ত্রুটি সনাক্তকরণের জন্য পূর্ববর্তী অ্যাপ্লিকেশন ডেটার চেকসাম (প্রেরিত বিটের সংখ্যা) রয়েছে।
- ACK – ACK হল 2 বিট, একটি হল স্বীকৃতি বিট এবং দ্বিতীয়টি হল একটি ডিলিমিটার।
- EOF – এই এন্ড-অফ-ফ্রেম (EOF), 7-বিট ফিল্ড একটি CAN ফ্রেম (বার্তা) এর শেষ চিহ্নিত করে এবং বিটস্টাফিং নিষ্ক্রিয় করে, প্রভাবশালী হলে একটি স্টাফিং ত্রুটি নির্দেশ করে। যখন একই লজিক লেভেলের ৫ টি বিট স্বাভাবিক ক্রিয়াকলাপের পর পর পর ঘটে, তখন কিছুটা বিপরীত লজিক লেভেল ডেটাতে ভরে যায়।
- আইএফএস – এই--বিট ইন্টারফ্রেম স্পেস (আইএফএস) একটি সঠিক বার্তা বাফার এলাকায় সঠিকভাবে প্রাপ্ত ফ্রেমটিকে তার যথাযথ অবস্থানে সরানোর জন্য নিয়ামক দ্বারা প্রয়োজনীয় সময় ধারণ করে।
সালিস
বাস নিষ্ক্রিয় অবস্থায়, যে ইউনিটটি বার্তা পাঠানো শুরু করে সে প্রেরণের অধিকার পায়। যখন একাধিক ইউনিট একই সময়ে প্রেরণ শুরু করে, তখন প্রতিটি পাঠানো ইউনিট সালিশ বিভাগের প্রথম বিটে শুরু হয়। সর্বাধিক সংখ্যক ক্রমাগত আউটপুট প্রভাবশালী স্তর পাঠানো চালিয়ে যেতে পারে।
ধাপ 4: গতি এবং দূরত্ব
CAN বাস একটি বাস যা একই সময়ে একাধিক ইউনিটকে সংযুক্ত করে। তাত্ত্বিকভাবে সংযুক্ত হতে পারে এমন মোট ইউনিটের সংখ্যার কোন সীমা নেই। অনুশীলনে, যাইহোক, সংযুক্ত করা যেতে পারে এমন ইউনিটের সংখ্যা বাসের বিলম্ব এবং বৈদ্যুতিক লোডের দ্বারা সীমাবদ্ধ। যোগাযোগের গতি হ্রাস করুন, সংযুক্ত হতে পারে এমন ইউনিটের সংখ্যা বৃদ্ধি করুন এবং যোগাযোগের গতি বৃদ্ধি করুন, সংযুক্ত হতে পারে এমন ইউনিটের সংখ্যা হ্রাস পায়।
যোগাযোগের দূরত্ব যোগাযোগের গতির সাথে বিপরীতভাবে সম্পর্কিত, এবং যোগাযোগের দূরত্ব যত কম, যোগাযোগের গতি তত কম। দীর্ঘ দূরত্ব 1km বা তার বেশি হতে পারে, কিন্তু গতি 40kps এর কম।
ধাপ 5: হার্ডওয়্যার
Maduino Zero CAN-BUS মডিউল হল CANbus যোগাযোগের জন্য Makerfabs দ্বারা বিকশিত একটি সরঞ্জাম , এটি CAN- নিয়ন্ত্রক এবং CAN ট্রান্সসিভারের সাহায্যে Arduino- এর উপর ভিত্তি করে তৈরি-ব্যবহারযোগ্য CAN-bus পোর্ট তৈরি করতে পারে।
- MCP2515 হল একটি স্বতন্ত্র CAN নিয়ামক যা CAN স্পেসিফিকেশন প্রয়োগ করে। এটি প্রমিত এবং বর্ধিত ডেটা এবং দূরবর্তী ফ্রেম উভয় প্রেরণ এবং গ্রহণ করতে সক্ষম।
- MAX3051 CAN প্রোটোকল কন্ট্রোলার এবং একটি কন্ট্রোলার এরিয়া নেটওয়ার্কের (CAN) বাস লাইনের ভৌত তারের মধ্যে ইন্টারফেস। MAX3051 বাসে ডিফারেনশিয়াল ট্রান্সমিট ক্ষমতা প্রদান করে এবং CAN কন্ট্রোলারকে ডিফারেনশিয়াল রিসিভ করার ক্ষমতা প্রদান করে।
ধাপ 6: সংযোগ
ডিএইচটি ১১ মডিউলকে মাদুনো জিরো ক্যান-বাস মডিউলের সাথে সংযুক্ত করুন যাতে তারের সাহায্যে CAN যোগাযোগকে সমর্থন করা যায়। একইভাবে, ডেটা গ্রহণ এবং প্রদর্শন করার জন্য ডিসপ্লেটিকে মডিউলের সাথে সংযুক্ত করুন।
Maduino Zero CANBUS এবং DHT11 এর মধ্যে সংযোগ
মাদুইনো জিরো ক্যানবাস - DHT11
3v3 ------ VCC GND ------ GND D10 ------ ডেটা
Maduino Zero CANBUS এবং OLED এর মধ্যে সংযোগ
মাদুইনো জিরো ক্যানবাস - ওএলইডি
3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA
দুটি Maduino Zero CANBUS মডিউল সংযোগ করতে একটি DB9 কেবল ব্যবহার করুন।
ধাপ 7: কোড
MAX3051 লজিক্যাল সিগন্যালে ডিফারেনশিয়াল লেভেলের রূপান্তর সম্পন্ন করে। MCP2515 CAN ফাংশন সম্পন্ন করে যেমন ডেটা এনকোডিং এবং ডিকোডিং। এমসিইউকে কেবল নিয়ামক আরম্ভ করতে হবে এবং ডেটা প্রেরণ এবং গ্রহণ করতে হবে।
- Github:
- Arduino ইনস্টল করার পরে, বোর্ড (Arduino শূন্য) সমর্থন করার জন্য কোন প্যাকেজ নেই যা ইনস্টল করা প্রয়োজন।
- সরঞ্জাম নির্বাচন করুন -> বোর্ড -> বোর্ড ম্যানেজার, "Arduino zero" অনুসন্ধান করুন এবং "Arduino SAMD বোর্ড" ইনস্টল করুন।
- সরঞ্জাম নির্বাচন করুন -> বোর্ড -> আরডুইনো জিরো (নেটিভ ইউএসবি পোর্ট), টুলস -> পোর্ট -> কম নির্বাচন করুন …
- গিটহাব থেকে প্রোগ্রামটি পাওয়ার পরে, আপনাকে নিশ্চিত করতে হবে যে সমস্ত ফাইল প্রকল্প ডিরেক্টরিতে রয়েছে, যার মধ্যে লাইব্রেরি ফাইল রয়েছে যা CANBUS সমর্থন করে।
- অ্যাডাফ্রুট দ্বারা DHT সেন্সর লাইব্রেরি ইনস্টল করুন, যা তাপমাত্রা এবং আর্দ্রতা পেতে DHT11 চালাতে ব্যবহৃত হয়।
- Test_DHT11.ino কোডে আলাদাভাবে তাপমাত্রা এবং আর্দ্রতা পাঠানোর জন্য বিভিন্ন ঠিকানা ব্যবহার করুন।
CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);
বিলম্ব (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); বিলম্ব (500);
"0x10" মানে মেসেজ আইডি, "0" মানে স্ট্যান্ডার্ড ফ্রেম, "stmp1.length ()" মানে বার্তার দৈর্ঘ্য, "stmp_send1" হল পাঠানো ডেটা।
- Test_OLED.ino কোডে, ক্যানবাসের সমস্ত বার্তা ক্যোয়ারী দ্বারা প্রাপ্ত হয় এবং প্রয়োজনীয় তথ্য OLED- এ প্রদর্শিত হয়।
- প্রোগ্রামটি Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino আপলোড করুন সেন্সরের সাথে সংযুক্ত মডিউলটিতে, এবং Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED/OLED. OOLED- এর সাথে সংযুক্ত আরেকটি প্রোগ্রাম আপলোড করুন।
ধাপ 8: দেখান
দুটি মডিউলের পাওয়ার, তাপমাত্রা এবং আর্দ্রতা ডিসপ্লেতে প্রদর্শিত হবে।
প্রস্তাবিত:
একটি অ্যাকোস্টিক লেভিটেটর মিনিলেভের জন্য একটি সহজ স্ট্যান্ড: 12 টি ধাপ (ছবি সহ)
একটি অ্যাকোস্টিক লেভিটেটর মিনিলেভের জন্য একটি সহজ স্ট্যান্ড: এই প্রকল্পটি অসাধারণ প্রকল্পের দ্বারা সম্ভব হবে না যা ড As আসিয়ার মারজো তৈরি করেছিলেন। https://www.instructables.com/Acoustic-Levitator/ সব ভাল প্রজেক্টের মতো, এটি একটি সহজ শুরু হয়েছিল এবং সময়ের সাথে সাথে এটি বৃদ্ধি পেয়েছিল। ড Mar মারজো ইন্ট্রাক্টা পড়ার পর
TinkerCad Codeblock এ একটি স্পেস স্টেশন তৈরি করুন -- সহজ টিউটোরিয়াল: 7 টি ধাপ (ছবি সহ)
TinkerCad Codeblock- এ একটি স্পেস স্টেশন তৈরি করুন প্রতি 90 মিনিট। এই প্রকল্পে আপনি শিখবেন
সহজ LED হলিডে লাইট শো: শীতকালে জাদুকর - WS2812B FastLED এবং একটি Arduino টিউটোরিয়াল সহ LED স্ট্রিপ: 6 টি ধাপ
সহজ LED হলিডে লাইট শো: শীতকালে জাদুকর | WS2812B FastLED এবং একটি Arduino টিউটোরিয়াল সহ LED স্ট্রিপ: আমি যে কোন জায়গায় প্রদর্শনের জন্য এই হলিডে লাইট শো ডিজাইন এবং প্রোগ্রাম করেছি। আমি 30 পিক্সেল/ মিটারের পিক্সেল ঘনত্বের সাথে একটি WS2812B নেতৃত্বাধীন স্ট্রিপ ব্যবহার করেছি। যেহেতু আমি 5 মিটার ব্যবহার করেছি, আমার মোট 150 টি এলইডি ছিল। আমি কোডটি সহজ রেখেছি যাতে WS2812 ব্যবহার করার জন্য নতুন কেউ
DIY MusiLED, সঙ্গীত সিঙ্ক্রোনাইজড LEDs এক-ক্লিক উইন্ডোজ এবং লিনাক্স অ্যাপ্লিকেশন (32-বিট এবং 64-বিট)। পুনরায় তৈরি করা সহজ, ব্যবহার করা সহজ, পোর্টে সহজ।: 3 টি ধাপ
DIY MusiLED, সঙ্গীত সিঙ্ক্রোনাইজড LEDs এক-ক্লিক উইন্ডোজ এবং লিনাক্স অ্যাপ্লিকেশন (32-বিট এবং 64-বিট)। পুনরায় তৈরি করা সহজ, ব্যবহার করা সহজ, পোর্টে সহজ। এই প্রকল্পটি আপনাকে আপনার আরডুইনো বোর্ডে 18 টি LED (6 লাল + 6 নীল + 6 হলুদ) সংযুক্ত করতে এবং আপনার কম্পিউটারের সাউন্ড কার্ডের রিয়েল-টাইম সংকেত বিশ্লেষণ করতে এবং তাদের রিলেতে সহায়তা করবে। বীট প্রভাব (ফাঁদ, উচ্চ টুপি, কিক) অনুযায়ী তাদের আলো জ্বালানোর জন্য LEDs
MakeyMakey - সহজ টিউটোরিয়াল এবং এটি কিভাবে কাজ করে! একটি পিয়ানো তৈরি!: 6 ধাপ
MakeyMakey - সহজ টিউটোরিয়াল এবং এটি কিভাবে কাজ করে! একটি পিয়ানো তৈরি করা! । থেকে একটি পিয়ানো তৈরি করা হচ্ছে