সুচিপত্র:

আলেক্সা রাস্পবেরি পাই রিলে কন্ট্রোলার: 6 টি ধাপ
আলেক্সা রাস্পবেরি পাই রিলে কন্ট্রোলার: 6 টি ধাপ

ভিডিও: আলেক্সা রাস্পবেরি পাই রিলে কন্ট্রোলার: 6 টি ধাপ

ভিডিও: আলেক্সা রাস্পবেরি পাই রিলে কন্ট্রোলার: 6 টি ধাপ
ভিডিও: WORLD’S SMALLEST AND CHEAPEST COMPUTER || RASSPBERRY PI 4B UNBOXING & REVIEW WITH SETUP IN BANGLA 2024, জুলাই
Anonim
অ্যালেক্সা রাস্পবেরি পাই রিলে কন্ট্রোলার
অ্যালেক্সা রাস্পবেরি পাই রিলে কন্ট্রোলার
অ্যালেক্সা রাস্পবেরি পাই রিলে কন্ট্রোলার
অ্যালেক্সা রাস্পবেরি পাই রিলে কন্ট্রোলার
অ্যালেক্সা রাস্পবেরি পাই রিলে কন্ট্রোলার
অ্যালেক্সা রাস্পবেরি পাই রিলে কন্ট্রোলার

আমি অ্যামাজনের আলেক্সার সাথে আইওটি ডিভাইসগুলিকে সংহত করার সাথে আমার অভিজ্ঞতাগুলি ভাগ করার জন্য এই নির্দেশযোগ্য তৈরি করেছি।

এই প্রকল্পটি একটি রাস্পবেরি পাই এর সাথে সংযুক্ত একটি রিলে বোর্ডকে স্মার্টহোম কন্ট্রোলার থেকে নিয়ন্ত্রণ করার অনুমতি দেয়।

এটি আলেক্সার সাথে পরীক্ষা করা হয়েছে কিন্তু এটি স্যামসাং স্মার্টথিংস এবং অন্যান্য নিয়ন্ত্রণ ইন্টারফেসগুলির সাথে ভাল কাজ করে বলে মনে হচ্ছে কারণ এটি বেলকিন ওয়েমো সকেটের একটি সিরিজ অনুকরণ করে।

চমৎকার FAUXMO কোডের উপর ভিত্তি করে অনেক উদাহরণ আছে কিন্তু এর অর্থ পাইথন শেখা এবং আমাকে আমার ডিভাইসের জন্য প্রয়োজনীয় বিস্তারিত নিয়ন্ত্রণ দেয়নি এবং তাই আমি আমার বেস কোডিং ভাষা হিসাবে C ব্যবহার করে স্ক্র্যাচ থেকে পুনরায় তৈরি করার সিদ্ধান্ত নিয়েছি।

আমি Amazon.com- এ ল্যাম্বডা কোডের গভীরতায় যেতে চাইনি তাই আমি এটি সত্যিই সহজ রেখেছি।

আমি Github এ উৎস এবং নোট পোস্ট করেছি:

github.com/Switchdoctorstu/StuPiMo

টিউটোরিয়ালটি আসলে এটি কীভাবে কাজ করা যায় তা কভার করা এবং অন্যদের সাহায্য করার ক্ষেত্রে আমার নোটগুলি প্রকাশ করা।

ধাপ 1: সরবরাহ এবং সংযোগ

সরবরাহ এবং সংযোগ
সরবরাহ এবং সংযোগ
সরবরাহ এবং সংযোগ
সরবরাহ এবং সংযোগ
সরবরাহ এবং সংযোগ
সরবরাহ এবং সংযোগ

আপনার প্রয়োজনীয় জিনিসগুলি অ্যামাজন / ইবেতে সহজেই পাওয়া যায়:

  • রাস্পবেরি পিআই *
  • পাই পাওয়ার সাপ্লাই
  • ডুপন্ট সংযোগকারী
  • রিলে বোর্ড
  • পুরানো মাইক্রো ইউএসবি সীসা (রিলে কার্ডের জন্য পাওয়ারের জন্য অর্ধেক কাটা)

যে কোনও রাস্পবেরি পাই কাজ করবে, আমি এটি একটি মডেল বি এবং জিরোতে পরীক্ষা করেছি।

*যদি পাই জিরো ব্যবহার করেন তাহলে আপনার একটি OTG নেটওয়ার্ক অ্যাডাপ্টারের প্রয়োজন হবে (যদি না আপনি ওয়াইফাইতে buit সহ 'W' সংস্করণ না কিনেন)

আপনাকে নেটওয়ার্কের সাথে পাই সংযোগ করতে হবে।

রিলে কার্ডকে পাইয়ের সাথে সংযুক্ত করতে ডুপন্ট কানেটার ব্যবহার করুন।

মনে রাখবেন যে রিলে কার্ডের বাহ্যিক শক্তি ব্যবহার করা উচিত (লিঙ্কটি সরান এবং বাহ্যিক 5v এর সাথে সংযুক্ত করুন)। এটি পিআই থেকে চালিত কাজ করবে কিন্তু এটি উত্পাদন চালানোর জন্য পরামর্শ দেওয়া হয় না।

আমার সেটআপের জন্য আমি একটি বাহ্যিকভাবে চালিত ইউএসবি হাব ব্যবহার করেছি। এটি পিআইকে ক্ষমতা প্রদান করে।

আমি একটি পুরানো ইউএসবি কেবলের শেষ অংশটি কেটেছি এবং নিরাপদ থাকার জন্য হাবের সাথে একটি দ্বিতীয় ইউএসবি সংযোগ থেকে রিলে চালিত করেছি। আমার 'উৎপাদন' সংস্করণটি একটি ছোট 5V 5A সুইচ মোড পাওয়ার সাপ্লাই ব্যবহার করে। আবার আমি মাইক্রো-ইউএসবি এর মাধ্যমে পাইকে পাওয়ার জন্য অর্ধেক একটি ইউএসবি সীসা কেটেছি এবং রিলে বোর্ডকে পাওয়ার জন্য দুটি ডুপন্ট সংযোগকারীকে কেটে ফেলেছি। ইউএসবি লিডে 4 টি তার আছে, বেশিরভাগ 5v সরবরাহ বোঝাতে লাল/কালো ব্যবহার করে তবে যদি সন্দেহ হয় যে আপনি সঠিক তারগুলি পান তা নিশ্চিত করার জন্য একটি মিটার ব্যবহার করুন।

বোর্ডে রিলে পিনগুলি PI হেডারের প্রাসঙ্গিক GPIO পিনের সাথে সংযুক্ত।

কোডটি আপনাকে GPIO পিন নির্বাচন করতে দেয় কিন্তু আমি যে ডিফল্ট ব্যবহার করেছি তা হল:

  1. রিলে পিন 1 - গ্রাউন্ড
  2. রিলে পিন 2 - রিলে 1 - জিপিআইও 0
  3. রিলে পিন 3 - রিলে 2 - জিপিআইও 1
  4. রিলে পিন 4 - রিলে 3 - জিপিআইও 2
  5. রিলে পিন 5 - রিলে 4 - জিপিআইও 3
  6. রিলে পিন 6 - রিলে 5 - জিপিআইও 4
  7. রিলে পিন 7 - রিলে 6 - জিপিআইও 5
  8. রিলে পিন 8 - রিলে 7 - জিপিআইও 6
  9. রিলে পিন 9 - রিলে 8 - জিপিআইও 7
  10. রিলে পিন 10 - +5v যুক্তির জন্য

ধাপ 2: পিআই সেটআপ

আমি কিভাবে আপনার পিআই আপ এবং চলমান এবং নেটওয়ার্কে সংযুক্ত করতে একটি টিউটোরিয়াল তৈরি করতে যাচ্ছি না।

একটি চমৎকার নির্দেশযোগ্য সহ অনেক গাইড রয়েছে:

www.instructables.com/id/Ultimate-Raspberr…

নেটওয়ার্কটিতে PI দৃশ্যমান এবং আপনি এটির সাথে সংযোগ স্থাপন করতে পারেন।

এটি ইথারনেট বা ওয়্যারলেসের মাধ্যমে কিনা তা বিবেচ্য নয়।

এই প্রকল্পটি জিনি প্রোগ্রামারস এডিটর ব্যবহার করে কেবল রাস্পবেরি পিআই দিয়ে সম্পন্ন করা যেতে পারে তবে আমি ব্যক্তিগতভাবে ভিসুয়াল স্টুডিও বা ইক্লিপস (বা এমনকি নোটপ্যাড ++) ব্যবহার করে একটি পিসিতে আমার কোড প্রিপ করা সহজ মনে করি এবং তারপর এটি ব্যবহার করে ডিআইডি করার জন্য পিআইতে আপলোড করুন ভিএনসি সংযোগ। আবার আমি এখানে এটি কভার করতে যাচ্ছি না কারণ একটি RPi এ VNC স্থাপনের জন্য অনেক চমৎকার নির্দেশাবলী রয়েছে।

আপনার যা দরকার তা হল সেই পয়েন্টে পৌঁছানো যেখানে আপনি কোড আপলোড এবং কম্পাইল করতে পারেন।

একটি নোট যা গুরুত্বপূর্ণ তা হল যেহেতু ইউপিএনপি হ্যান্ডলারের ইউডিপি মাল্টিকাস্ট প্রয়োজন, তাই ব্যবহৃত ইন্টারফেসগুলিকে 'প্রমিসকিউস' মোডে সেট করতে হবে।

এটি কমান্ড লাইনে করা যেতে পারে:

pi@raspberrypi: ~ $ ifconfig eth0 promisc

এবং / অথবা

pi@raspberrypi: ~ $ ifconfig wlan0 promisc

এটি স্থায়ী করা দরকার তাই আমি /etc/rc.local সম্পাদনা করেছি

sudo nano / etc / rc.local

লাইন অন্তর্ভুক্ত করতে:

sudo ifconfig eth0 promisc

ব্যানার # লাইনের প্রথম সেটের পরে ইন্টারফেসগুলি স্টার্টআপে সেট করা হয়েছে তা নিশ্চিত করার জন্য।

ধাপ 3: কোড ডাউনলোড এবং কম্পাইল করা

কোড নিজেই আমার Github সংগ্রহস্থলে বসে;

github.com/Switchdoctorstu/StuPiMo/blob/ma…

যেখানে সংগ্রহস্থলের ক্লোন করার 'সঠিক' উপায় রয়েছে। আমি পাই ডেস্কটপে Geany সম্পাদক খুলতে এবং কোডটি পেস্ট করা সহজ পেয়েছি।

একইভাবে, যদি আপনি কমান্ড লাইন ব্যবহার করেন;

একটি নতুন ডিরেক্টরি তৈরি করুন

mkdir স্টু

এটিতে পরিবর্তন করুন

সিডি স্টু

একটি নতুন টেক্সট ফাইল তৈরি করুন

ন্যানো StuPiMo.c

Github থেকে কোডটি কপি করে নতুন ফাইলে পেস্ট করুন

সংরক্ষণ এবং ত্যাগ.

একবার আপনার কাছে সি সোর্স কোড অবজেক্ট হিসাবে ফাইলটি থাকলে আপনি এটি ব্যবহার করে কম্পাইল করতে পারেন

gcc -o StuPiMo StuPiMo.c -l wiringPi

নোট করুন "-l wiringPi" নিশ্চিত করতে যে কম্পাইলার প্রয়োজনীয় wiringPi লাইব্রেরিতে লিঙ্ক করে।

কোডটি ব্যবহার করে চালানো যেতে পারে

./StuPiMo

আবার, যদি আপনি এটি স্টার্টআপে চালাতে চান তবে কমান্ডটি ব্যবহার করুন:

সুডো ন্যানো /etc/rc.local

নিম্নলিখিত লাইন যোগ করতে

sudo/home/pi/Stu/StuPiMo &

আপনার /etc/rc.local ফাইলে। প্রস্থান করার সময় আপনার ফাইল সংরক্ষণ করতে ভুলবেন না।

লক্ষ্য করুন '&' অপরিহার্য যে একটি সাব-প্রসেস তৈরি করা হয়েছে তা নিশ্চিত করার জন্য যাতে স্ক্রিপ্টটি এই মুহুর্তে অবরুদ্ধ না থাকে।

ধাপ 4: এটি ব্যবহার করা

একবার আপনি কোডটি চালানোর পরে, অ্যালেক্সাকে 'ডিসকভার ডিভাইস' জিজ্ঞাসা করুন এবং তার সমস্ত 8 টি ভার্চুয়াল ওয়েমো ডিভাইস খুঁজে পাওয়া উচিত।

তারপরে এটি কেবল বলার একটি ঘটনা: "আলেক্সা সকেট 1 চালু করুন" বা "আলেক্সা সকেট 6 বন্ধ করুন" ইত্যাদি এবং প্রাসঙ্গিক রিলে পরিবর্তন করা হবে।

ধাপ 5: কোড কিভাবে কাজ করে

কোডটি বেলকিন ওয়েমো সকেট ডিভাইসের একটি সিরিজ অনুকরণ করে কাজ করে।

এটি অর্জনের জন্য এটি 2 টি প্রধান ফাংশন পরিচালনা করতে হবে

  • একটি UPNP আবিষ্কার সম্প্রচার হ্যান্ডলার
  • একটি 'ডিভাইস হ্যান্ডলার' (ভার্চুয়াল ডিভাইসের প্রতি একটি) ডিভাইসে পাঠানো কমান্ড এবং প্রয়োজনীয় প্রতিক্রিয়াগুলি পরিচালনা করতে।

একটি 'বোনাস' বৈশিষ্ট্য হল যে এটি একটি ওয়েব পেজ প্রকাশ করে যাতে ডিভাইসগুলিকে নিয়ন্ত্রণ করা যায়।

ইউপিএনপি হ্যান্ডলার

UPNP হ্যান্ডলার 239.255.255.250 পোর্ট 1900 এ SSDP প্রোটোকল প্যাকেটগুলি পর্যবেক্ষণ করার জন্য একটি সকেট খুলেছে।

এটি একটি ডিসকভারি রেসপন্স প্যাকেটের সাথে আসা যেকোনো 'এম-সার্চ' প্রশ্নের জবাব দেয় যা যে কেউ জিজ্ঞাসা করলে পৃথক ওয়েমো এমুলেটরকে ঘোষণা করে।

ডিভাইস হ্যান্ডলার

ডিভাইস হ্যান্ডলার (প্রতি ভার্চুয়াল ডিভাইসে একটি) আইপি পোর্টগুলির একটি সিরিজ পর্যবেক্ষণ করে এবং অনুরোধগুলিতে সাড়া দেয়।

জিজ্ঞাসা করা হলে এটি একটি setup.xml প্রতিক্রিয়া পরিবেশন করবে

জিজ্ঞাসা করা হলে এটি একটি ইভেন্টের বিবরণ ফাইল পরিবেশন করবে

এটি একটি GETBINARYSTATE অনুরোধের সাড়া দেবে

এটি একটি SETBINARYSTATE অনুরোধ প্রক্রিয়া করবে এবং সাড়া দেবে

ওয়েব সার্ভার

ওয়েব সার্ভার একটি সাধারণ রুটিন যা প্রতি রিলে একটি বোতাম ধারণ করে একটি HTML ফর্ম তৈরি করে।

এটি বোতাম টিপে সাড়া দেবে এবং সেই অনুযায়ী রিলেটির অবস্থা টগল করবে।

ধাপ 6: কাস্টমাইজেশন এবং বন্ধুত্বপূর্ণ নাম

কাস্টমাইজেশন এবং বন্ধুত্বপূর্ণ নাম
কাস্টমাইজেশন এবং বন্ধুত্বপূর্ণ নাম

আমি কোডটি সহজ এবং সম্পাদনাযোগ্য রাখতে পাগল হইনি।

কোডের শুরুতে সংজ্ঞা দ্বারা বেসিকগুলি কাস্টমাইজ করা যায়:

// বিশ্বব্যাপী সংজ্ঞা#ওয়েব সার্ভার চালানোর জন্য ওয়েবপোর্ট 5353 // পোর্ট নির্ধারণ করে

#সংজ্ঞায়িত NUMDEVICES 8 // তৈরি করার জন্য ভার্চুয়াল ডিভাইসের সংখ্যা

#পোর্টবাস 43450 // বেস আইপি পোর্ট থেকে বাড়ানোর জন্য নির্ধারণ করুন

WEBPORT হল পোর্ট নম্বর যা অন্তর্নির্মিত ওয়েব সার্ভারে চলে। জিনিসগুলি সহজ করার জন্য এটি 80 -এ বসার জন্য তৈরি করা যেতে পারে কিন্তু আমি দেখতে পেলাম যে এটি টমক্যাট বা স্থানীয়ভাবে চলমান অন্যান্য পরিষেবার সাথে সাংঘর্ষিক।

NUMDEVICES লঞ্চ করার জন্য পৃথক WEMO এমুলেটর সংখ্যা নির্ধারণ করে। যদি আপনার একটি 2 পোর্ট রিলে কার্ড থাকে তবে এটি 2, 4 পোর্ট = 4 ইত্যাদি সেট করুন।

ডিভাইসগুলির জন্য বন্ধুত্বপূর্ণ নাম সেটআপ_নাম নামে একটি রুটিনে সেট করা আছে:

int setup_names (char friendly [NUMDEVICES] [NAMELEN]) {int i = 0;

// এই লুপ ব্যবহার করুন

জন্য (i = 0; i <NUMDEVICES; i ++) {

sprintf (বন্ধুত্বপূর্ণ , "সকেট %d", i + 1);

}

// অথবা ডিভাইসের নাম পূরণের জন্য নিম্নলিখিত ম্যানুয়াল টেবিল

/*

strcpy (বন্ধুত্বপূর্ণ [0], "বেডরুম টিভি");

strcpy (বন্ধুত্বপূর্ণ [1], "বৈদ্যুতিক কম্বল");

strcpy (বন্ধুত্বপূর্ণ [2], "বেডরুম ল্যাম্প");

strcpy (বন্ধুত্বপূর্ণ [3], "সকেট 4");

strcpy (বন্ধুত্বপূর্ণ [4], "সকেট 5");

strcpy (বন্ধুত্বপূর্ণ [5], "সকেট 6");

strcpy (বন্ধুত্বপূর্ণ [6], "সকেট 7");

strcpy (বন্ধুত্বপূর্ণ [7], "সকেট 8");

*/

আমি ফিরে;

}

আমি প্রতিটি ডিভাইস 'সকেট এন' কে কল করার জন্য একটি লুপ ব্যবহার করেছি কিন্তু আপনি এই লুপটি মুছে ফেলতে পারেন এবং এর পরিবর্তে আপনার নিজের বন্ধুত্বপূর্ণ নাম যোগ করতে পারেন (শুধু নিশ্চিত করুন যে আপনি NUMDEVICES এর মতো একই নম্বর যোগ করুন) যদি আপনি / * * /মুছে ফেলেন

যদি আপনি কোন পরিবর্তন করেন তবে কোডটি পুনরায় কম্পাইল করতে ভুলবেন না।

প্রস্তাবিত: