সুচিপত্র:

ওয়াইফাই LED স্ট্রিপ + ESP8266: 6 ধাপ সহ তাপমাত্রা সেন্সর
ওয়াইফাই LED স্ট্রিপ + ESP8266: 6 ধাপ সহ তাপমাত্রা সেন্সর

ভিডিও: ওয়াইফাই LED স্ট্রিপ + ESP8266: 6 ধাপ সহ তাপমাত্রা সেন্সর

ভিডিও: ওয়াইফাই LED স্ট্রিপ + ESP8266: 6 ধাপ সহ তাপমাত্রা সেন্সর
ভিডিও: Светодиодная лента RGB SONOFF L1 Smart LED Light Strip | #Обзор 2024, জুলাই
Anonim
ওয়াইফাই LED স্ট্রিপ + ESP8266 সহ তাপমাত্রা সেন্সর
ওয়াইফাই LED স্ট্রিপ + ESP8266 সহ তাপমাত্রা সেন্সর

এই টিউটোরিয়ালটি একটি ESP8266 সেট আপ করার ধাপগুলি বর্ণনা করে এবং এটি একটি তাপমাত্রা সেন্সর এবং LED স্ট্রিপ উভয়ের সাথে কথা বলার সাথে সাথে ওয়াইফাই এর মাধ্যমে MQTT দিয়ে ইনপুট গ্রহণ এবং আউটপুট পাঠাতে সক্ষম হয়। প্রকল্পটি 2016 সালের শরত্কালে ক্যাল পলি সান লুইস ওবিসপোতে নেওয়া একটি কোর্সের জন্য তৈরি করা হয়েছিল- CPE 439: রিয়েল টাইম এমবেডেড সিস্টেমস। সামগ্রিক লক্ষ্য ছিল সস্তা হার্ডওয়্যারের সাথে ইন্টারনেট-সংযুক্ত "জিনিস" তৈরির সহজতা প্রদর্শন করা।

সরবরাহ/সরঞ্জাম প্রয়োজন:

  • NodeMCU ESP8266 dev বোর্ড
  • WS2812B LED স্ট্রিপ
  • MAX31820 তাপমাত্রা সেন্সর
  • ব্রেডবোর্ড
  • 4.7K ওহম প্রতিরোধক
  • 220 ওহম প্রতিরোধক
  • জাম্পার তার
  • মাইক্রো-ইউএসবি কেবল
  • পিসি (বা ভিএম) লিনাক্স চালাচ্ছে (যেমন উবুন্টু)

অনুমান/পূর্বশর্ত:

  • একটি ডেবিয়ান-ভিত্তিক ডিস্ট্রোতে কমান্ড-লাইন সরঞ্জাম ব্যবহার এবং প্যাকেজ ইনস্টল করার অভিজ্ঞতা
  • মেকফিল সিনট্যাক্সের প্রাথমিক ধারণা
  • তারের সংযোগ

ধাপ 1: একটি বিল্ড এনভায়রনমেন্ট তৈরি করা

প্রকল্পটি তৈরি করতে, আপনার মেশিনে esp-open-sdk ইনস্টল করতে হবে। লিঙ্কটি অনুসরণ করুন এবং বিল্ড নির্দেশাবলী পড়ুন। সংক্ষেপে আপনি নির্ভরশীলতা ইনস্টল করার জন্য কিছু sudo apt-get কমান্ড করছেন, একটি git clone --reconsive to clone/download esp-open-sdk, এবং পরিশেষে esp-open-sdk নির্মাণের জন্য একটি কমান্ড।

আমাকে দেখ

ধাপ 2: সোর্স কোড পান, কনফিগার করুন এবং তৈরি করুন

এখন যে esp-open-sdk নির্মিত হয়েছে, প্রকল্পের সংগ্রহস্থল ক্লোন করুন।

গিট ক্লোন

প্রকল্প ডিরেক্টরিতে পরিবর্তন করুন, একটি। স্থানীয় ফোল্ডার তৈরি করুন এবং উদাহরণ সেটিংস অনুলিপি করুন।

cd esp-rtos- পরীক্ষা

mkdir -p.local cp settings.example.mk.local/settings.mk

এখন যেকোনো টেক্সট এডিটর দিয়ে.local/settings.mk খুলুন এবং নিম্নলিখিত সেটিংস পরিবর্তন করুন:

  • OPENSDK_ROOT: ধাপ 1 এ নির্মিত esp-open-sdk এর অবস্থানের জন্য পরম পথ
  • WIFI_SSID: আপনার ওয়াইফাই নেটওয়ার্কের SSID
  • WIFI_PASS: আপনার ওয়াইফাই নেটওয়ার্কের পাসওয়ার্ড
  • PIXEL_COUNT: আপনার WS2812B LED স্ট্রিপে পিক্সেলের সংখ্যা

দ্রষ্টব্য: যেহেতু এই প্রকল্পটি এলইডি চালানোর জন্য এসপিআই ব্যবহার করে এবং তাদের সরবরাহের জন্য নোডএমসিইউ 3.3 ভি ব্যবহার করে, আপনি সম্ভবত ~ 60 টি এলইডি চালাতে পারবেন না।

দ্রষ্টব্য: অন্যান্য সেটিংস পরিবর্তন করার প্রয়োজন নেই, তবে ইচ্ছা হলে হতে পারে। কাজের অগ্রাধিকারগুলির ক্রম রাখার সুপারিশ করা হয়। অগ্রাধিকার সংখ্যা যত কম, কাজের অগ্রাধিকার তত কম।

এখন প্রকল্পটি তৈরি করুন:

মেক -সি উদাহরণ/cpe439

যদি সবকিছু সঠিকভাবে সেট আপ করা হয় তবে এটি সংকলন শুরু করা উচিত। শেষে আপনার দেখা উচিত:

সফলভাবে তৈরি 'ফার্মওয়্যার/cpe439.bin'

আমাকে দেখ

ধাপ 3: হার্ডওয়্যার উপাদানগুলি সংযুক্ত করুন

হার্ডওয়্যার উপাদানগুলি সংযুক্ত করুন
হার্ডওয়্যার উপাদানগুলি সংযুক্ত করুন

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

প্রথমে, NodeMCU কে রুটিবোর্ডে আটকে দিন, তারপর ডায়াগ্রামে দেখানো হিসাবে সংযোগগুলি তৈরি করতে জাম্পার তারগুলি ব্যবহার করুন।

কয়েকটি জিনিস সম্পর্কে সচেতন হতে হবে:

  1. গুরুত্বপূর্ণ: WS2812B ডেটা লাইন দ্বিমুখী নয়। আপনি যদি স্ট্রিপের এলইডি পাশের চিহ্নগুলি ঘনিষ্ঠভাবে দেখেন, তাহলে আপনার একটি তীরের দিকে নির্দেশ করা হবে। NodeMCU- এর D7 থেকে আউটপুটটি WS2812B- এর দিকে নির্দেশক মার্কারের মতো হতে হবে, যা আপনি নিবিড়ভাবে দেখলে ডায়াগ্রামে দেখতে পাবেন।
  2. আপনার WS2812B কোন ধরণের কানেক্টর নিয়ে আসে তার উপর নির্ভর করে, আপনি তাদের রুটিবোর্ডে নিরাপদে সংযুক্ত করতে কিছু পরিবর্তন করতে হতে পারে। আপনি রুটিবোর্ড-সক্ষম জাম্পার কেবলগুলির সাথে সংযোগ করতে অ্যালিগেটর ক্লিপগুলিও ব্যবহার করতে পারেন।
  3. MAX31820 পিনের একটি ছোট পিচ আছে এবং স্ট্যান্ডার্ড 0.1 "/2.54 মিমি জাম্পারের চেয়ে পাতলা, যা তাদের সংযোগ করা কঠিন করে তোলে। এর চারপাশে একটি উপায় হল মহিলা থেকে পুরুষ জাম্পার তার ব্যবহার করা, প্লাস্টিকের কেসটি মহিলা দিক থেকে সরিয়ে নেওয়া, তারপরে মহিলা জাম্পার ছোট MAX31820 পিনের চারপাশে শক্ত করে শেষ করার জন্য কিছু প্লায়ার ব্যবহার করুন।

NodeMCU কে পাওয়ার করার আগে সংযোগগুলি দুবার পরীক্ষা করুন যাতে উপাদানগুলির ক্ষতি না হয়।

ধাপ 4: ফ্ল্যাশ এবং রান

ঝলকানি

সমস্ত হার্ডওয়্যারের সাথে সংযুক্ত, আপনার NodeMCU প্লাগ ইন করুন এবং নিম্নলিখিত কমান্ড দিয়ে ফ্ল্যাশ করুন:

ফ্ল্যাশ -সি উদাহরণ/cpe439 ESPPORT =/dev/ttyUSB0 করুন

/dev/ttyUSB0 হল সিরিয়াল কম যা NodeMCU এর অধীনে দেখানো উচিত। আপনার যদি অন্যান্য সিরিয়াল ডিভাইস সংযুক্ত থাকে, তাহলে এটি /dev /ttyUSB1 বা অন্য কোনো নম্বর হিসেবে দেখা যাবে। চেক করার জন্য আপনি এই কমান্ডটি দুবার চালাতে পারেন, একবার NodeMCU আনপ্লাগ করা, এবং একবার এটি প্লাগ ইন করে এবং পার্থক্যটি তুলনা করুন:

ls /dev /ttyUSB*

আরেকটি সমস্যা যা আপনার সম্মুখীন হতে পারে তা হল ডিভাইসটি অ্যাক্সেস করার অনুমতি না থাকা। এটি ঠিক করার দুটি উপায় হল:

  1. আপনার ব্যবহারকারীকে ডায়ালআউট গ্রুপে যুক্ত করুন:

    sudo adduser $ (whoami) ডায়ালআউট

  2. chmod বা chown ডিভাইস:

sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0এটি স্থায়ী সমাধান হওয়ায় প্রথম পদ্ধতিটি পছন্দ করা হয়।

চলছে

ফ্ল্যাশ কমান্ড সফলভাবে চালানোর পরে, ডিভাইসটি অবিলম্বে বুট হবে এবং সংকলিত কোড চালানো শুরু করবে। ফ্ল্যাশ করার পরে যে কোনও সময়ে আপনি সিরিয়াল আউটপুট দেখতে নিম্নলিখিত কমান্ডটি চালাতে পারেন:

python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q

সময় বাঁচাতে আপনি এটি আপনার ~/.bashrc ফাইলে যোগ করতে পারেন:

উপনাম nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'

..যা আপনাকে সেই কমান্ডের উপনাম হিসেবে "nodemcu" টাইপ করতে দেয়।

যদি সবকিছু সঠিকভাবে কনফিগার করা থাকে, তাহলে আপনার LED স্ট্রিপটি সবুজ হয়ে উঠবে, এবং সিরিয়ালে আপনাকে ওয়াইফাই সংযোগ দেখতে হবে, একটি IP ঠিকানা পেতে হবে, MQTT- এর সাথে সংযোগ স্থাপন করতে হবে এবং তাপমাত্রার তথ্য বের করে দেওয়া হবে এমন বার্তাগুলি।

অবস্থা = 1wifi_task: অবস্থা = 1ip: 192.168.2.23, মাস্ক: 255.255.255.0, GW: 192.168.2.1ws2812_spi_init okRequest টেম্প OKwifi_task: STATUS = 5xQueueReceive + + 25.43xQueueSend okWiFi: Connectedmqtt_task: MyWiFiSSID, চ্যানেল 1dhcp ক্লায়েন্ট শুরু … wifi_task সঙ্গে সংযুক্ত startedmqtt_task: (পুনরায়) MQTT সার্ভার test.mosquitto.org… xQueueReceive +25.50xQueue এর সাথে সংযুক্ত হচ্ছে

ধাপ 5: মিথস্ক্রিয়া

ধরুন আপনার ডিভাইসটি ওয়াইফাই এবং MQTT ব্রোকারের সাথে সফলভাবে সংযুক্ত হয়েছে, আপনি MQTT সহ NodeMCU থেকে ডেটা পাঠাতে এবং গ্রহণ করতে সক্ষম হবেন। আপনি যদি ইতিমধ্যে না করে থাকেন তবে মশার ক্লায়েন্ট প্যাকেজটি ইনস্টল করুন:

sudo apt-get install মশা-ক্লায়েন্ট

আপনি এখন আপনার শেল থেকে Mositto_pub এবং Mositto_sub প্রোগ্রাম ব্যবহার করতে সক্ষম হবেন।

তাপমাত্রা আপডেট গ্রহণ

তাপমাত্রার তথ্য পাওয়ার জন্য আমরা NodeMCU যে বিষয়ে প্রকাশ করছি সেই সাবস্ক্রাইব করতে সাবধানে মশার_সাব কমান্ড ব্যবহার করতে চাই।

Mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp

টার্মিনালে পৌঁছে আপনার তাপমাত্রা ডেটা (সেলসিয়াসে) দেখা উচিত।

+25.87+25.93+25.68…

LED স্ট্রিপ কালার দূর থেকে সেট করা

MQTT- এর মাধ্যমে NodeMCU- এ RGB মান পাঠানোর জন্য একটি সাধারণ বার্তা বিন্যাস ব্যবহার করা হয়। কমান্ড ফরম্যাট এই মত দেখাচ্ছে:

r: RRRg: GGGb: BBB

যেখানে RRR, GGG, BBB আপনি যে রঙটি পাঠাতে চান তার RGB মান (0-255) এর সাথে মিলে যায়। আমাদের কমান্ড পাঠানোর জন্য, আমরা mositto_pub কমান্ড ব্যবহার করব। এখানে কিছু উদাহরন:

Mosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m 'r: 255g: 0b: 0 #' # redmosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m 'r: 0g: 255b: 0 ~ ' # greenmosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m' r: 0g: 0b: 255 ~ ' # blue

আপনি যদি ক্রিয়েটিভ হতে চান, তাহলে এইরকম একটি কালার-পিকার অনলাইনে খুঁজুন এবং আপনার পছন্দমত RGB ভ্যালু দিয়ে কমান্ড এডিট করুন।

সতর্ক থেকো

এই প্রকল্পের বিষয়গুলি একটি পাবলিক এমকিউটিটি ব্রোকারে /cpe439 /rgb এবং /cpe439 /temp এ সেট করা আছে, যার অর্থ আপনার মতো একই বিষয় প্রকাশ বা সাবস্ক্রাইব করতে অন্য কাউকে বাধা দেওয়ার কিছু নেই। জিনিসগুলি চেষ্টা করার জন্য, একটি পাবলিক ব্রোকার ব্যবহার করা ভাল, কিন্তু আরো গুরুতর প্রকল্পগুলির জন্য আপনি পাসওয়ার্ড সুরক্ষা সহ একটি ব্রোকারের সাথে সংযোগ স্থাপন করতে চান, অথবা সার্ভারে আপনার নিজের ব্রোকার চালাতে চান।

ধাপ 6: বাস্তবায়নের বিবরণ

ওয়ানওয়্যারের

ESP8266 এর মাত্র 1 টি কোর আছে, এত দীর্ঘ, ব্লকিং কাজ যেমন তাপমাত্রা সেন্সরের জন্য তাপমাত্রা পরিমাপ করার জন্য 750ms অপেক্ষা করার ফলে সাধারণত ওয়াইফাই ভালভাবে কাজ করে না, এমনকি একটি ক্র্যাশও হতে পারে। ফ্রিআরটিওএস দৃষ্টান্তে, আপনি এই দীর্ঘ অপেক্ষাগুলি পরিচালনা করার জন্য vTaskDelay () কে কল করেন, তবে ফ্রিআরটিওএস সিস্টেম টিকের চেয়ে ছোট এবং পড়া লেখার মধ্যে অনেক ছোট অপেক্ষাও প্রয়োজন, এবং এইভাবে vTaskDelay () দিয়ে এড়ানো যায় না। এইগুলিও পেতে, এই প্রকল্পের ওয়ানওয়াইয়ার ড্রাইভারটি একটি ESP8266 এর হার্ডওয়্যার টাইমার দ্বারা চালিত একটি রাষ্ট্র-মেশিনকে চালানোর জন্য লেখা হয়েছিল, যা প্রতি 10 মাইক্রো-সেকেন্ডের মতো ঘটনাগুলিকে ট্রিগার করতে পারে, যা সবচেয়ে ছোট হতে পারে ওয়ানওয়াইর রিড/রাইট অপারেশনের মধ্যে প্রয়োজনীয় সময়। বেশিরভাগ অন্যান্য বাস্তবায়ন বিলম্বিত কল ব্যবহার করে delay_us () বা অনুরূপ এটি পরিচালনা করার জন্য, কিন্তু যদি আপনি ক্রমাগত তাপমাত্রা আপডেট গ্রহণ করেন, তবে সেই সমস্ত বিলম্ব যোগ হতে শুরু করে, যার ফলে কম প্রতিক্রিয়াশীল অ্যাপ্লিকেশন হয়। কোডের এই অংশের উৎস অতিরিক্ত/ওয়ানওয়্যার ফোল্ডারে অবস্থিত।

WS2812B

ESP8266 তে PWM- এর জন্য কোনো স্ট্যান্ডার্ড হার্ডওয়্যার অপশন নেই যা 800KHz এ LED স্ট্রিপ চালাতে পারে। এটি পেতে, এই প্রকল্পটি LEDs চালানোর জন্য SPI MOSI পিন ব্যবহার করে। এসপিআই -এর ঘড়ির হার সামঞ্জস্য করে, এবং চারপাশে এসপিআই পেলোড পরিবর্তন করে, আপনি প্রতিটি পৃথক LED এর মোটামুটি নির্ভরযোগ্য নিয়ন্ত্রণ অর্জন করতে পারেন। এই পদ্ধতিটি এর ত্রুটি ছাড়া নয়- একটির জন্য LEDs একটি 5V উত্স দ্বারা চালিত হওয়া উচিত এবং SPI পিনের আউটপুটে একটি স্তরের শিফটার যুক্ত করা উচিত। কিন্তু 3.3V কাজ করে। দ্বিতীয়ত, এসপিআই পদ্ধতি ব্যবহার করে অসম্পূর্ণ সময়ের কারণে এমন সমস্যা দেখা দেয়। এবং তৃতীয়ত এখন আপনি অন্য কোন কিছুর জন্য SPI ব্যবহার করতে পারবেন না। এই পদ্ধতির অতিরিক্ত পটভূমি এখানে পাওয়া যাবে, এবং কোডের এই অংশটির উৎস অতিরিক্ত/ws2812 ফোল্ডারে অবস্থিত।

LED স্ট্রিপ চালানোর জন্য আরো নির্ভরযোগ্য পদ্ধতি হল i2s ব্যবহার করা। তবে এই পদ্ধতিতে প্রচুর চিপ-নির্দিষ্ট হ্যাক রয়েছে, তাই এসপিআই একটি শেখার ব্যায়াম হিসাবে একটি ভাল পছন্দ বলে মনে হচ্ছে।

প্রস্তাবিত: