সুচিপত্র:

UChip - IR এর উপর সিরিয়াল!: 4 টি ধাপ
UChip - IR এর উপর সিরিয়াল!: 4 টি ধাপ

ভিডিও: UChip - IR এর উপর সিরিয়াল!: 4 টি ধাপ

ভিডিও: UChip - IR এর উপর সিরিয়াল!: 4 টি ধাপ
ভিডিও: Chumki Choleche || চুমকি চলেছে একা পথে || Pantho Kanai ||Only songLyric 2024, জুলাই
Anonim
UChip - IR এর উপর সিরিয়াল!
UChip - IR এর উপর সিরিয়াল!
UChip - IR এর উপর সিরিয়াল!
UChip - IR এর উপর সিরিয়াল!

ওয়্যারলেস যোগাযোগ আজকাল আমাদের প্রকল্পের একটি প্রধান বৈশিষ্ট্য হয়ে উঠেছে এবং ওয়্যারলেস সম্পর্কে কথা বলা, আমার মনে প্রথম যে বিষয়টি আসে তা হল ওয়াই-ফাই বা বিটি, কিন্তু ওয়াই-ফাই বা বিটি যোগাযোগ প্রোটোকল পরিচালনা করা সহজ কাজ নয় এবং অনেক খরচ করে MCU রিসোর্স, আমার আবেদন কোডিং করার জন্য ছোট জায়গা রেখে। অতএব, আমি সাধারণত ভূমিকাগুলিকে বিভক্ত করতে এবং উচ্চতর স্বাধীনতা অর্জনের জন্য মাইক্রোকন্ট্রোলারের সাথে সিরিয়ালভাবে সংযুক্ত একটি বহিরাগত Wi-Fi/BT মডিউল বেছে নিই।

যাইহোক, কখনও কখনও ওয়াই-ফাই এবং বিটি কিছু অ্যাপ্লিকেশনগুলির জন্য "ওভারকিল" হয় যার জন্য কম বিটরেট এবং স্বল্প যোগাযোগের দূরত্ব প্রয়োজন। তদুপরি, ওয়াই-ফাই বা বিটি ব্যবহার করে আপনার স্মার্টফোন বা ডিভাইসটিকে যথাযথ প্রমাণীকরণের সাথে সংযুক্ত করার প্রয়োজনীয়তা বোঝায়।

কল্পনা করুন যে আপনাকে কেবল একটি বাহ্যিক আলো চালু/বন্ধ করতে হবে, বা প্রদীপের তীব্রতা পরিবর্তন করতে হবে, বা বৈদ্যুতিক গেট খুলতে হবে। ওয়াই-ফাই বা বিটি ব্যবহার করা কি মূল্যবান হবে?

পরিবেশ এবং অ্যাপ্লিকেশনের উপর নির্ভর করে, IR (ইনফ্রারেড) তরঙ্গদৈর্ঘ্যের উপর বেতার যোগাযোগ কাজে আসতে পারে। IR- এর উপর একটি সিরিয়াল, যা কিছু বহিরাগত উপাদান (3 টি আলাদা উপাদান!), এবং uChip (একটি খুব ছোট Arduino সামঞ্জস্যপূর্ণ বোর্ড) দিয়ে প্রয়োগ করা হয়, আপনি যে সমাধানটি খুঁজছিলেন তা হতে পারে!

উপকরণ বিল (একটি Tx-Rx ডিভাইসের জন্য):

1 x uChip

1 x IR LED: 950nm এ নির্গমন শিখর

1 x TSOP-38238 (সমতুল্য)

1 x 1KOhm প্রতিরোধক

হার্ডওয়্যার

1 x ব্রেডবোর্ড/প্রোটো বোর্ড

1 x কালো প্লাস্টিক টিউব: ভিতরের ব্যাস IR LED এর সমান আকার, TSOP রিসিভারের সাথে ক্রস-টক প্রতিরোধের জন্য টিউবটি প্রয়োজনীয়।

1 এক্স অ্যালুমিনিয়াম ফয়েল (3 সেমি x 3 সেমি)

1 এক্স টেপ

টিপ: সার্কিট থেকে অপ্রয়োজনীয় RX/TX হার্ডওয়্যার অপসারণ করে অথবা স্কেচে সংশ্লিষ্ট কোড সক্ষম/নিষ্ক্রিয় করে এক-দিকের যোগাযোগের প্রয়োজন হলে আপনি শুধুমাত্র-টিএক্স বা শুধুমাত্র-আরএক্স ডিভাইস তৈরি করতে পারেন।

ধাপ 1: তারের

তারের
তারের
তারের
তারের
তারের
তারের

স্কিম্যাটিক অনুসারে উপাদানগুলিকে একসঙ্গে সংযুক্ত করুন।

সহজ পরিকল্পিত কিছু নোট। যেহেতু TSOP-38238 2.5V থেকে 5V পর্যন্ত বিদ্যুৎ সরবরাহের অনুমতি দেয় এবং সর্বাধিক 0.45mA শোষণ করে (আপনি এখানে ডেটশীটটি পান), আমি দুটি পিন ব্যবহার করে রিসিভারকে শক্তি দেব, যা যথাক্রমে স্থল এবং বিদ্যুৎ সরবরাহ করবে। এটি চাহিদা অনুযায়ী রিসিভার চালু/বন্ধ এবং একটি খুব সহজ হার্ডওয়্যার তারের সেটআপ চালু করতে দেয়। উপরন্তু, যদি আপনার এক-দিকের যোগাযোগের প্রয়োজন হয় তবে আপনি কেবলমাত্র TSOP-38238 নিষ্ক্রিয়/সক্ষম করে একটি (Tx/Rx)-কেবল ডিভাইস তৈরি করবেন কিনা তা চয়ন করতে পারেন।

সার্কিট কিভাবে কাজ করে?

এটা বেশ সহজ। TSOP আউটপুট পিন কম টানা হয় যখন সেন্সর 38KHz এ 6 ডাল বা তার বেশি ট্রেন সনাক্ত করে, অন্যদিকে যখন এই ধরনের সংকেত না থাকে তখন এটি উচ্চ টানা হয়। অতএব, আইআর এর মাধ্যমে সিরিয়াল ডেটা প্রেরণ করার জন্য, সার্কিট যা করে তা হল LED Anode কে 38KHz PWM দিয়ে TX সিরিয়াল সিগন্যাল দিয়ে মডিউলেটেড করা যা LED ক্যাথোডকে কম টানে।

ফলস্বরূপ, সিরিয়াল TX0 এর একটি উচ্চ স্তরে, LED পক্ষপাতদুষ্ট বা পক্ষপাতদুষ্ট নয় (বিপরীত কোন ডাল নেই) এবং TSOP আউটপুট পিন উঁচু করা হয়। সিরিয়ালে একটি নিম্ন স্তরের প্রেরণ, LED চালিত এবং প্রয়োগকৃত PWM সংকেত অনুযায়ী আইআর ডাল উৎপন্ন করে; অতএব, TSOP আউটপুট কম টানা হয়।

যেহেতু ট্রান্সমিশন সরাসরি (0-> 0 এবং 1-> 1) রিসিভারের পাশে ইনভার্টার বা অন্যান্য যুক্তির প্রয়োজন নেই।

আমি অ্যাপ্লিকেশন অনুযায়ী PWM ডিউটি চক্র নির্বাচন করে LED অপটিক্যাল আউটপুট শক্তি নিয়ন্ত্রণ করি। ডিউটি চক্র যত বেশি হবে, অপটিক্যাল আউটপুট পাওয়ার তত বেশি হবে এবং সেইজন্যই আপনি আপনার বার্তা প্রেরণ করবেন।

মনে রাখবেন যে আমাদের এখনও ডাল উৎপন্ন করতে হবে! সুতরাং, আপনার 90% শুল্ক চক্রের উপরে যাওয়া উচিত নয়, অন্যথায় TSOP ডাল হিসাবে সংকেত সনাক্ত করবে না।

আপনি আরো শক্তি প্রয়োজন?

বর্তমান বৃদ্ধি করার জন্য, আমরা কি কেবল 1kOhm রোধকের মান কমাতে পারি?

হয়তো, খুব বেশি দাবি করবেন না! SAMD21 ডেটশীটে উল্লিখিত পোর্ট পিনটি স্বাভাবিকের চেয়ে শক্তিশালী (PINCFG. DRVSTR = 1 এবং VDD> 3V) চালানোর সময় MCU- এর একটি পিন থেকে আপনি যে সর্বোচ্চ স্রোত পান তা 7mA এর মধ্যে সীমাবদ্ধ।

যাইহোক, স্ট্যান্ডার্ড কনফিগারেশন (যা ডিফল্ট হিসাবে Arduino IDE লাইব্রেরি দ্বারা গৃহীত) বর্তমান 2mA সীমাবদ্ধ। অতএব, 1kOhm ব্যবহার করা ইতিমধ্যে ডিফল্ট সেটিংস সহ বর্তমান সীমা দেয়!

স্রোত বৃদ্ধি শুধুমাত্র বৈদ্যুতিক উপাদানগুলির বিষয় নয়। সংক্ষেপে:

  • প্রতিরোধক পরিবর্তন করুন (যার সর্বনিম্ন মান আনুমানিক 470Ohm -> VDD/470 ~ 7mA);
  • সংশ্লিষ্ট PORT-> PINCFG-> DRVSTR 1 তে সেট করুন;

আমি ভবিষ্যতে আপডেটে এই বৈশিষ্ট্য সহ কোড প্রদান করব।

কিন্তু মনে রাখবেন, এমসিইউ পিন থেকে তার সীমার কাছাকাছি ডুবে যাওয়া এবং নিষ্কাশন করা এত ভাল পদ্ধতি নয়। প্রকৃতপক্ষে, এটি MCU জীবনকাল এবং নির্ভরযোগ্যতা হ্রাস করে। অতএব, আমি দীর্ঘমেয়াদী ব্যবহারের জন্য স্বাভাবিক ড্রাইভ শক্তি রাখার পরামর্শ দিই।

ধাপ 2: প্রোগ্রামিং

UChip (অথবা আপনি যে Arduino সামঞ্জস্যপূর্ণ বোর্ড ব্যবহার করছেন) তে "IRSerial.ino" স্কেচটি লোড করুন।

যদি আপনার পিডব্লিউএম উৎপন্ন পিন পরিবর্তন করার প্রয়োজন হয়, তাহলে নিশ্চিত করুন যে আপনি একটি টিসিসি টাইমারের সাথে সংযুক্ত একটি পিন ব্যবহার করছেন, যেহেতু কোডের এই সংস্করণটি শুধুমাত্র টিসিসি টাইমারগুলির সাথে কাজ করে (এই তথ্যের জন্য আপনার বোর্ডের "variant.c" দেখুন)। আমি ভবিষ্যতে আপডেটগুলিতে টিসি টাইমার ব্যবহার করতে কোডটি যুক্ত করব।

কোডটি বেশ সহজ। PIN_5 কম (TSOP GND প্রদান করে) এবং PIN_6 উচ্চ (TSOP কে শক্তি প্রদান) করার পরে, MCU PIN_1 এ PWM শুরু করে, টাইমার সময়কাল নির্ধারণ করে এবং প্রয়োজনীয় ফ্রিকোয়েন্সি মড্যুলেশনের সাথে তুলনা করে ক্যাপচার করে (আমার ক্ষেত্রে এটি 38KHz) এবং দায়িত্ব চক্র (ডিফল্ট হিসাবে 12.5%)। এটি PWM পিনগুলিতে স্ট্যান্ডার্ড analogWrite () ফাংশনটি শোষণ করে এবং শুধুমাত্র PER_REG (পিরিয়ড রেজিস্টার) এবং CC (ক্যাপচার তুলনা) রেজিস্টার পরিবর্তন করে (লিখিত কোডটি কেবল wiring_analog লাইব্রেরি থেকে একটি কাট-এন্ড-পেস্ট)। আপনি TSOP সেন্সর পরিবর্তন করে PER_REG (যা টাইমার কাউন্টার রিসেট করার limitর্ধ্ব সীমা) অনুযায়ী প্রয়োজনীয় ফ্রিকোয়েন্সি সেট করতে পারেন, যখন সময়সীমার মান থেকে ডিউটি চক্রের কাঙ্খিত শতাংশে CC আনুপাতিকভাবে সেট করুন।

পরবর্তী, কোডটি 2400bps এর সঠিক বড রেট ব্যবহার করে সিরিয়াল পোর্ট সেট করে। কেন এত কম বড হার?! উত্তরটি টিএসওপি ডেটশীটে রয়েছে যা আপনি এখানে খুঁজে পেতে পারেন। যেহেতু টিএসওপি অবাঞ্ছিত স্যুইচিং প্রতিরোধের জন্য উচ্চ শব্দ প্রত্যাখ্যান ফিল্টারগুলি বৈশিষ্ট্যযুক্ত, তাই টিএসওপি আউটপুট পিনটি নামানোর জন্য একাধিক ডালের একটি ট্রেন পাঠানো প্রয়োজন (ডালের সংখ্যা টিএসওপি সংস্করণের উপর নির্ভর করে, 6 টি সাধারণ মান)। একইভাবে, টিএসওপি আউটপুটটি 10 ডাল বা তার বেশি সমান ন্যূনতম সময়ের পরে উচ্চ টানা হয়। ফলস্বরূপ, TSOP আউটপুটকে মডুলেটিং TX0 সংকেত হিসাবে সেট করার জন্য, নিম্নলিখিত সমীকরণটি বিবেচনা করে বড রেট নির্ধারণ করা প্রয়োজন:

সিরিয়াল বাউড <PWM_frequency/10

38KHz ব্যবহার করলে এটি 3800bps এর চেয়ে কম বাউড্রেটে পরিণত হয়, যার মানে উচ্চতর "স্ট্যান্ডার্ড" অনুমোদিত বড রেট 2400pbs হয়, যেমনটি পূর্বে অনুমান করা হয়েছিল।

আপনি কি বড রেট বাড়াতে চান? দুটি বিকল্প আছে।

সবচেয়ে সহজ বিকল্প হল TSOP কে উচ্চতর ফ্রিকোয়েন্সি ভার্সনে (TSOP38256 হিসাবে) পরিবর্তন করা, যা আপনাকে বড রেট (4800bps) দ্বিগুণ করতে দেয়

যথেষ্ট না?! তারপর আপনি একটি সহজ IR LED+photodiode এবং পরিবর্ধন বর্তনী ব্যবহার করে আপনার নিজের অপটিক্যাল লিঙ্ক করতে হবে। যাইহোক, এই সমাধানের জন্য অনেক কোডিং এবং ইলেকট্রনিক্স দক্ষতা প্রয়োজন যাতে শব্দটি প্রেরিত ডেটাকে প্রভাবিত করতে না পারে এবং তাই এর বাস্তবায়ন মোটেও সহজ নয়! যাইহোক, যদি আপনি যথেষ্ট আত্মবিশ্বাসী বোধ করেন, তাহলে আপনার নিজের টিএসওপি সিস্টেম তৈরি করার জন্য আপনাকে স্বাগত জানাই!:)

অবশেষে, আমি সিরিয়াল ইউএসবি পোর্ট (2400bps) সেট করেছি যা আমি সিরিয়াল মনিটরে ডেটা পাঠাতে এবং গ্রহণ করতে ব্যবহার করি।

লুপ () ফাংশনটি দুটি সিরিয়ালে ডেটা পাসথ্রু করার জন্য প্রয়োজনীয় কোড অন্তর্ভুক্ত করে এবং সরাসরি সিরিয়ালপাসথ্রু থেকে শুধুমাত্র সিরিয়ালগুলির নাম পরিবর্তন করে উদাহরণ কপি করা হয়।

ধাপ 3: IRালাই IR LED

IRাল আইআর LED
IRাল আইআর LED
IRাল আইআর LED
IRাল আইআর LED

আপনি যদি "IRSerial.ino" কোডটি লোড করার পর উপরের সার্কিট্রিটি চালু করেন, তাহলে Arduino IDE তে সিরিয়াল মনিটরটি পরীক্ষা করুন এবং একটি স্ট্রিং পাঠানোর চেষ্টা করুন। আপনি সম্ভবত দেখতে পাবেন যে ইউচিপ ঠিক কি প্রেরণ করছে তা গ্রহণ করছে! আইআর এলইডি এবং একই ডিভাইসের টিএসওপির মধ্যে অপটিক্যাল যোগাযোগের কারণে সার্কিট্রিতে ক্রস-টক রয়েছে!

এখানে এই প্রকল্পের কঠিন অংশ আসে, ক্রস-টক প্রতিরোধ! আইআর -এর উপর দ্বি -নির্দেশিক সিরিয়াল যোগাযোগ করতে লুপটি ভেঙে ফেলতে হবে।

আমরা কিভাবে লুপ ভাঙব?

প্রথম বিকল্প, আপনি PWM ডিউটি চক্র কমিয়ে দেন, এইভাবে LED এর অপটিক্যাল পাওয়ার আউটপুট কমিয়ে দেয়। যাইহোক, এই পদ্ধতিটি সেই দূরত্বকেও হ্রাস করে যার উপর আপনি একটি নির্ভরযোগ্য সিরিয়াল আইআর চ্যানেল পান। দ্বিতীয় বিকল্পটি হল আইআর এলইডি রক্ষা করা, এভাবে একটি নির্দেশমূলক আইআর "বিম" তৈরি করা। এটি চেষ্টা এবং ত্রুটির বিষয়; শেষ পর্যন্ত, অ্যালুমিনিয়াম ফয়েল এবং টেপে আবৃত কালো বায়ুসংক্রান্ত বায়ু পায়ের পাতার মোজাবিশেষ ব্যবহার করে (বৈদ্যুতিক নিরোধক প্রদান) আমি ক্রস টক ভাঙ্গতে পেরেছি। ট্রান্সমিটিং IR LED টিউবের ভিতরে রাখা একই ডিভাইসের TX এবং RX এর মধ্যে যোগাযোগ রোধ করে।

আমার সমাধান দেখতে ছবিটি দেখুন, কিন্তু অন্য পদ্ধতি এবং/অথবা আপনার পরামর্শ দেওয়ার জন্য নির্দ্বিধায় চেষ্টা করুন! এই সমস্যাটির কোন নিরঙ্কুশ সমাধান নেই (যদি না আপনার একটি সাধারণ এক-দিক চ্যানেলের প্রয়োজন হয়) এবং আপনার সম্ভবত আপনার প্রয়োজন অনুসারে সার্কিট্রি লেআউট, PWM ডিউটি সাইকেল এবং IR শিল্ড টিউন করতে হবে।

একবার আপনি ক্রস টক ভেঙে ফেললে, আপনি যাচাই করতে পারেন যে ডিভাইসটি Tx-Rx তে একটি লুপ তৈরি করে কাজ করে যা IR প্রতিফলিত পৃষ্ঠগুলিতে IR তরঙ্গদৈর্ঘ্যের প্রতিফলনকে কাজে লাগায়।

ধাপ 4: যোগাযোগ করুন

যোগাযোগ!
যোগাযোগ!
যোগাযোগ!
যোগাযোগ!

এটাই সব

আইআর ডিভাইসের উপর আপনার সিরিয়াল যোগাযোগের জন্য প্রস্তুত, আইআর এর মাধ্যমে ডেটা পাঠাতে তাদের ব্যবহার করুন, আপনার পছন্দ মতো কিছু চালু/বন্ধ করুন বা সেন্সরের অবস্থা যা আপনি গোপনে লুকিয়ে আছেন তা পরীক্ষা করুন!

যে দূরত্বের উপর যোগাযোগ নির্ভরযোগ্য তা ওয়াইফাই বা বিটি ডিভাইসের মতো নয়। যাইহোক, এটি দিকনির্দেশক (LED অ্যাপারচার এবং বাস্তবায়িত আইআর শিল্ডিং সিস্টেমের উপর নির্ভর করে), যা কিছু অ্যাপ্লিকেশনগুলিতে খুব দরকারী হতে পারে!

শীঘ্রই আমি একটি ভিডিও আপলোড করব যেখানে আপনি আমার করা অ্যাপ্লিকেশনগুলির কয়েকটি উদাহরণ দেখতে পাবেন। উপভোগ করুন!

প্রস্তাবিত: