সুচিপত্র:

ESP32 স্মার্ট হোম হাব: 11 টি ধাপ
ESP32 স্মার্ট হোম হাব: 11 টি ধাপ
Anonim
ESP32 স্মার্ট হোম হাব
ESP32 স্মার্ট হোম হাব
ESP32 স্মার্ট হোম হাব
ESP32 স্মার্ট হোম হাব
ESP32 স্মার্ট হোম হাব
ESP32 স্মার্ট হোম হাব
ESP32 স্মার্ট হোম হাব
ESP32 স্মার্ট হোম হাব

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

এই প্রকল্পের পৃষ্ঠপোষকতার জন্য DFRobot এবং PCBGOGO.com কে ধন্যবাদ!

আরও গভীরভাবে তথ্যের জন্য, Github repo দেখুন:

সরবরাহ

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • DHT22 সেন্সর

    www.dfrobot.com/product-1102.html

  • APDS9960 আলো এবং অঙ্গভঙ্গি সেন্সর

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD মডিউল

    www.dfrobot.com/product-590.html

  • এনালগ RGB LED স্ট্রিপ

    www.dfrobot.com/product-1829.html

  • DRV8825 Stepper মোটর ড্রাইভার
  • এসডি কার্ড রিডার
  • NEMA17 স্টেপার মোটরস

ধাপ 1: বৈশিষ্ট্য

বৈশিষ্ট্য
বৈশিষ্ট্য
বৈশিষ্ট্য
বৈশিষ্ট্য
বৈশিষ্ট্য
বৈশিষ্ট্য

এই বোর্ডের প্রধান বৈশিষ্ট্য হল একটি ESP32 FireBeetle Development Board যা সকল যোগাযোগ, সেন্সর রিডিং এবং আউটপুট পরিচালনা করে। দুটি স্টেপার মোটর চালক রয়েছে যারা দুটি বাইপোলার স্টেপার মোটর নিয়ন্ত্রণ করে।

I2C বাসটি APDS9960 বা LCD এর মতো উপাদানগুলির ব্যবহারের জন্যও ভেঙে গেছে। তাপমাত্রা পড়ার জন্য, ডিএইচটি 22 সেন্সরের সাথে সংযোগ স্থাপনের জন্য পিনগুলি ভেঙে ফেলা হয়, পাশাপাশি পরিবেষ্টিত আলোর মাত্রা পড়ার জন্য একটি ফোটোরিসিস্টরও রয়েছে।

বোর্ডে একটি এনালগ লাইট স্ট্রিপের জন্য সমর্থন রয়েছে, যার উপর LED লাইট চালানোর জন্য তিনটি MOSFET আছে।

ধাপ 2: পিসিবি

পিসিবি
পিসিবি
পিসিবি
পিসিবি
পিসিবি
পিসিবি
পিসিবি
পিসিবি

আমি প্রথমে agগলে একটি পরিকল্পিত তৈরি করে পিসিবি নকশা প্রক্রিয়া শুরু করি। যেহেতু আমি একটি ESP32 FireBeetle লাইব্রেরি খুঁজে পাইনি, আমি এর পরিবর্তে দুটি পিন 1x18 পিন হেডার ব্যবহার করেছি। তারপরে, আমি একটি পাওয়ার ম্যানেজমেন্ট সার্কিট তৈরি করেছি যা একটি ডিসি ব্যারেল জ্যাকের মাধ্যমে 12v গ্রহণ করতে পারে এবং সেন্সর এবং ESP32 কে পাওয়ার করার জন্য এটি 5v এ রূপান্তর করতে পারে।

পরিকল্পিত কাজ শেষ হওয়ার পর, আমি নিজেই পিসিবি ডিজাইনের দিকে এগিয়ে গেলাম।

আমি জানতাম যে ডিসি ব্যারেল প্লাগটি বোর্ডের সামনের দিকে থাকতে হবে এবং 100uF পাওয়ার সাপ্লাই স্মুথিং ক্যাপাসিটারগুলি স্টেপার মোটর ড্রাইভার পাওয়ার ইনপুটগুলির কাছাকাছি থাকা প্রয়োজন। সবকিছু গুছিয়ে নেওয়ার পরে, আমি ট্রেসগুলি রুট করতে শুরু করি।

যদিও ওশপার্ক দুর্দান্ত মানের পিসিবি তৈরি করে, তাদের দাম বেশ বেশি। সৌভাগ্যক্রমে, PCBGOGO.com সাশ্রয়ী মূল্যে দুর্দান্ত PCB তৈরি করে। আমি Oshpark.com থেকে মাত্র তিনটি বোর্ডের জন্য $ 52 দেওয়ার পরিবর্তে মাত্র $ 5 দিয়ে দশটি PCBs কিনতে পেরেছি।

ধাপ 3: সমাবেশ

সমাবেশ
সমাবেশ
সমাবেশ
সমাবেশ
সমাবেশ
সমাবেশ

সামগ্রিকভাবে, বোর্ড একত্রিত করা বেশ সহজ ছিল। আমি সারফেস মাউন্ট করা উপাদানগুলিকে সোল্ডার করে শুরু করেছিলাম, এবং তারপর ব্যারেল জ্যাক কানেক্টর এবং রেগুলেটর সংযুক্ত করেছিলাম। এরপরে, আমি মোটর ড্রাইভার এবং ফায়ারবিটলের মতো উপাদানগুলির জন্য পিন হেডারে বিক্রি করেছি।

সোল্ডারিং সম্পন্ন হওয়ার পরে, আমি একটি শর্ট সার্কিটের জন্য বোর্ডটি পরীক্ষা করেছিলাম একটি মাল্টিমিটারকে রেজিস্ট্যান্স-মেজারিং মোডে রেখে এবং দেখেছি যে রেজিস্ট্যান্স নির্দিষ্ট পরিমাণের বেশি কিনা। বোর্ড পাস, তাই আমি তারপর প্রতিটি উপাদান প্লাগ করতে সক্ষম ছিল।

ধাপ 4: প্রোগ্রামিং ওভারভিউ

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

ধাপ 5: ইনপুট

ইনপুট
ইনপুট
ইনপুট
ইনপুট
ইনপুট
ইনপুট

ইনপুট পরিচালনা করার জন্য, আমি "Hub_Inputs" নামে একটি ক্লাস তৈরি করেছি, যা হোম হাবকে APDS9960 এর সাথে যোগাযোগ করতে দেয়, সেইসাথে বোতাম এবং ক্যাপাসিটিভ টাচ ইন্টারফেস তৈরি এবং পরিচালনা করে। এতে নিম্নলিখিত ফাংশন রয়েছে:

তৈরি বোতাম

বোতাম টিপে থাকলে পান

বাটন প্রেসের সংখ্যা পান

সর্বশেষ অঙ্গভঙ্গি পান

ক্যাপাসিটিভ স্পর্শ মান পান

বোতামগুলি তিনটি বৈশিষ্ট্য সহ একটি কাঠামো হিসাবে সংরক্ষণ করা হয়: is_pressed, numberPresses এবং pin। প্রতিটি বোতাম, যখন তৈরি করা হয়, একটি বাধা সংযুক্ত করা হয়। যখন সেই বাধা ট্রিগার করা হয়, তখন ইন্টারাপ্ট সার্ভিস রুটিন (আইএসআর) পাস করা হয় বাটনের পয়েন্টার (বোতাম অ্যারেতে এটির মেমরির ঠিকানা হিসেবে দেওয়া) এবং is_pressed বুলিয়ান ভ্যালু আপডেট করার সাথে সাথে বাটন প্রেসের সংখ্যা বৃদ্ধি করে।

ক্যাপাসিটিভ স্পর্শ মান অনেক সহজ। টাচ রিড () ফাংশনে টাচ পিন দিয়ে সেগুলি পুনরুদ্ধার করা হয়।

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

ধাপ 6: আউটপুট

আউটপুট
আউটপুট
আউটপুট
আউটপুট
আউটপুট
আউটপুট

স্মার্ট হোম হাবটিতে তথ্য আউটপুট এবং লাইট পরিবর্তন করার বিভিন্ন উপায় রয়েছে। এমন পিন রয়েছে যা I2C বাসকে ভেঙে দেয়, ব্যবহারকারীদের একটি LCD সংযোগ করতে দেয়। এতদূর, শুধুমাত্র একটি আকারের LCD সমর্থিত: 20 x 4. ফাংশন “hub.display_message ()” ব্যবহার করে, ব্যবহারকারীরা একটি স্ট্রিং বস্তুর মধ্যে দিয়ে LCD- এ বার্তা প্রদর্শন করতে পারে।

এনালগ LEDs এর একটি স্ট্রিং সংযোগ করার জন্য একটি পিন হেডারও রয়েছে। ফাংশন কল "hub.set_led_strip (r, g, b)", স্ট্রিপের রঙ সেট করে।

দুটি স্টেপার মোটর এক জোড়া DRV8825 ড্রাইভার বোর্ড ব্যবহার করে চালিত হয়। আমি মোটর নিয়ন্ত্রণ পরিচালনা করার জন্য বেসিকস্টেপার লাইব্রেরি ব্যবহার করার সিদ্ধান্ত নিয়েছি। যখন বোর্ডটি বুট করা হয়, দুটি স্টেপার বস্তু তৈরি করা হয় এবং উভয় মোটর সক্রিয় হয়ে যায়। প্রতিটি মোটরকে স্টেপ করার জন্য, “hub.step_motor (motor_id, steps)” ফাংশন ব্যবহার করা হয়, যেখানে মোটর আইডি হয় 0 অথবা 1।

ধাপ 7: লগিং

লগিং
লগিং
লগিং
লগিং
লগিং
লগিং

যেহেতু বোর্ডের বেশ কয়েকটি সেন্সর রয়েছে, আমি স্থানীয়ভাবে ডেটা সংগ্রহ এবং লগ ইন করার ক্ষমতা চেয়েছিলাম।

লগিং শুরু করতে, "hub.create_log (ফাইলের নাম, হেডার)" দিয়ে একটি নতুন ফাইল তৈরি করা হয়, যেখানে হেডার একটি CSV ফাইলের সারি তৈরি করতে ব্যবহৃত হয় যা কলাম নির্দেশ করে। প্রথম কলাম সবসময় বছরের মাসের দিন ঘন্টা: মিনিট: সেকেন্ড ফরম্যাটে একটি টাইমস্ট্যাম্প। সময় পেতে, hub.log_to_file () ফাংশনটি মৌলিক_ফাংশন.গেট_টাইম () ফাংশনের সাথে সময় পায়। টিএম টাইম স্ট্রাক্ট তারপর ডেটা এবং ফাইলের নাম সহ লগিং ফাংশনে রেফারেন্স দ্বারা পাস করা হয়।

ধাপ 8: বুজার

বুজার
বুজার

যদি আপনি সঙ্গীত চালাতে না পারেন তবে আইওটি বোর্ডের কী লাভ? এজন্যই আমি শব্দ বাজানোর জন্য একটি ফাংশন সহ একটি বজার অন্তর্ভুক্ত করেছি। "Hub.play_sounds (সুর, সময়কাল, দৈর্ঘ্য)" কল করা একটি গান বাজাতে শুরু করে, সুরের সাথে নোট ফ্রিকোয়েন্সিগুলির একটি অ্যারে, নোটের সময়কালের একটি অ্যারে হিসাবে সময়কাল এবং নোটের সংখ্যা হিসাবে দৈর্ঘ্য।

ধাপ 9: বহিরাগত IoT ইন্টিগ্রেশন

বহিরাগত আইওটি ইন্টিগ্রেশন
বহিরাগত আইওটি ইন্টিগ্রেশন
বহিরাগত আইওটি ইন্টিগ্রেশন
বহিরাগত আইওটি ইন্টিগ্রেশন
বহিরাগত আইওটি ইন্টিগ্রেশন
বহিরাগত আইওটি ইন্টিগ্রেশন

হাব বর্তমানে IFTTT ওয়েবহুক সমর্থন করে। Hub_IoT.publish_webhook (url, data, event, key) অথবা Hub_IoT.publish_webhook (url, data) ফাংশনে কল করে এগুলি ট্রিগার করা যেতে পারে। এটি প্রদত্ত URL- এ একটি পোস্ট অনুরোধ পাঠায় সেই ডেটা সংযুক্ত, প্রয়োজনে ইভেন্টের নাম সহ। একটি উদাহরণ IFTTT ইন্টিগ্রেশন সেটআপ করার জন্য, প্রথমে একটি নতুন অ্যাপলেট তৈরি করুন। তারপর ওয়েবহুক পরিষেবাটি নির্বাচন করুন যা একটি অনুরোধ প্রাপ্ত হলে ট্রিগার করে।

পরবর্তী, ইভেন্টটিকে "high_temp" কল করুন এবং এটি সংরক্ষণ করুন। তারপরে, "সেই" অংশটির জন্য জিমেইল পরিষেবাটি নির্বাচন করুন এবং "আমার কাছে একটি ইমেল পাঠান" বিকল্পটি চয়ন করুন। পরিষেবার জন্য সেটআপের মধ্যে, "তাপমাত্রা বেশি!" বিষয়টির জন্য, এবং তারপর আমি "{{Value1}} এর পরিমাপকৃত তাপমাত্রা {{OccurredAt}}" রাখি, যা পরিমাপ করা তাপমাত্রা এবং ইভেন্টটি চালু হওয়ার সময় দেখায়।

এটি সেট আপ করার পরে, কেবল IFTTT দ্বারা তৈরি ওয়েবহুক URL টি পেস্ট করুন এবং ইভেন্ট বিভাগে "high_temp" রাখুন।

ধাপ 10: ব্যবহার

ব্যবহার
ব্যবহার
ব্যবহার
ব্যবহার
ব্যবহার
ব্যবহার
ব্যবহার
ব্যবহার

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

ধাপ 11: ভবিষ্যতের পরিকল্পনা

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

প্রস্তাবিত: