সুচিপত্র:

IOT123 - I2C KY019 ব্রিক: 5 টি ধাপ
IOT123 - I2C KY019 ব্রিক: 5 টি ধাপ

ভিডিও: IOT123 - I2C KY019 ব্রিক: 5 টি ধাপ

ভিডিও: IOT123 - I2C KY019 ব্রিক: 5 টি ধাপ
ভিডিও: Arduino keypad door lock with i2c LCD -Test1 2024, জুলাই
Anonim
IOT123 - I2C KY019 ব্রিক
IOT123 - I2C KY019 ব্রিক
IOT123 - I2C KY019 ব্রিক
IOT123 - I2C KY019 ব্রিক

IOT123 BRICKS হল DIY মডুলার ইউনিট যা অন্যান্য IOT123 BRICKS এর সাথে মেশানো যায়, যাতে নোড বা পরিধেয় কার্যকারিতা যোগ করা যায়। তারা ইঞ্চি বর্গক্ষেত্রের উপর ভিত্তি করে, গর্তের মাধ্যমে আন্তconসংযোগযুক্ত ডবল পার্শ্বযুক্ত প্রোটোবোর্ড।

এই ব্রিকগুলির একটি সংখ্যা একাধিক নোডের (মাস্টার MCUs - ESP8266 বা ATTINY84) একটি সাইটে থাকতে পারে বলে আশা করা হচ্ছে। এমসিইউর সেন্সর উদ্দেশ্য বা সফটওয়্যারের প্রয়োজনের পূর্বের জ্ঞানের প্রয়োজন নেই। এটি I2C নোডের জন্য স্ক্যান করে তারপর প্রতিটি ক্রীতদাস থেকে একটি সম্পত্তি ডাম্প (সেন্সর ডেটা) অনুরোধ করে। এই ব্রিকগুলি 5.0V, 3.3V এবং অন্য AUX লাইন সরবরাহ করে যা কাস্টমাইজযোগ্য।

এই I2C KY019 ব্রিকটি ACTORS- এর প্রথম, এবং এর একটি পড়া/লেখার সম্পত্তি রয়েছে:

সুইচ (সত্য/মিথ্যা)।

Keyes টাইপ সেন্সর ইটগুলি প্রথমে বিমূর্ত হবে কারণ তারা ভিটামিন (অতিরিক্ত উপাদান প্রয়োজন) সহ অন্তর্ভুক্ত এবং অপেক্ষাকৃত চিপ (আমি 10AUD এর জন্য 37 কিনেছি)। অন্যান্য বোর্ড/সার্কিটগুলি I2C BRICKS- এ চালু করা হবে।

ATPINY85 সংলগ্ন থ্রু-হোলগুলি অব্যবহৃত রেখে দেওয়া হয়েছে, যাতে একটি পোগো পিন প্রোগ্রামার সক্ষম হয়, যখন DIP8 PCB- এর কাছে বিক্রি হয়। আরও একটি বিমূর্ততা, ব্রিক্সগুলিকে ছোট সিলিন্ডারে প্যাকেজ করা যা একটি D1M WIFI BLOCK হাবের মধ্যে প্লাগ করে, একটি MQTT সার্ভারে মানগুলি পাম্প করে তৈরি করা হচ্ছে।

ধাপ 1: উপকরণ এবং সরঞ্জাম

উপকরণ এবং সরঞ্জাম
উপকরণ এবং সরঞ্জাম
উপকরণ এবং সরঞ্জাম
উপকরণ এবং সরঞ্জাম
উপকরণ এবং সরঞ্জাম
উপকরণ এবং সরঞ্জাম

একটি সম্পূর্ণ বিল উপাদান এবং সোর্সিং তালিকা আছে।

  1. KY-019 রিলে (1)
  2. ATTINY85 20PU (1)
  3. 1 "ডবল পার্শ্বযুক্ত প্রোটোবোর্ড (1)
  4. পুরুষ শিরোলেখ 90º (3P, 3P)
  5. হুকআপ ওয়্যার (~ 7)
  6. ঝাল এবং লোহা (1)

ধাপ 2: ATTINY85 প্রস্তুত করুন

ATTINY85 প্রস্তুত করুন
ATTINY85 প্রস্তুত করুন
ATTINY85 প্রস্তুত করুন
ATTINY85 প্রস্তুত করুন
ATTINY85 প্রস্তুত করুন
ATTINY85 প্রস্তুত করুন

দ্রষ্টব্য: যদি ক্রাউটন ইন্টিগ্রেশন করার ইচ্ছা হয়, অনুগ্রহ করে এখান থেকে লাইব্রেরি ব্যবহার করুন এবং "attiny_ky019" ইনস্টল করা উদাহরণটি ব্যবহার করুন।

বোর্ড ম্যানেজার থেকে AttinyCore প্রয়োজন। বার্ন বুটলোডার "EEPROM রিটেনড", "8mHZ ইন্টারনাল" (উপরে দেখানো সব কনফিগারেশন)।

কোড রিপোজিটরি পাওয়া যাবে এখানে।

লাইব্রেরির একটি জিপ এখানে পাওয়া যাবে।

এখানে "একটি জিপ লাইব্রেরি আমদানি করার" নির্দেশাবলী।

লাইব্রেরি ইনস্টল হয়ে গেলে আপনি "attiny_ky019" উদাহরণটি খুলতে পারেন।

ATTINY85 এ ফার্মওয়্যার আপলোড করার জন্য, আপনি এই নির্দেশাবলীতে আরো বিস্তারিত জানতে পারেন:

www.instructables.com/id/Programming-the-A…

www.instructables.com/id/How-to-Program-AT…

www.instructables.com/id/How-to-program-th…

www.instructables.com/id/Programming-the-A…

www.instructables.com/id/Programming-an-At…

চালিয়ে যাওয়ার আগে ব্রেডবোর্ডের মাধ্যমে পরীক্ষা করা ভাল।

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

ধাপ 3: সার্কিট একত্রিত করুন

সার্কিট একত্রিত করুন
সার্কিট একত্রিত করুন
সার্কিট একত্রিত করুন
সার্কিট একত্রিত করুন
সার্কিট একত্রিত করুন
সার্কিট একত্রিত করুন
সার্কিট একত্রিত করুন
সার্কিট একত্রিত করুন
  1. সামনে, ATTINY85 (1), 3P 90deg পুরুষ হেডার (2) (3), এবং পিছনে ঝাল বন্ধ উপাদানগুলি সন্নিবেশ করান।
  2. পিছনে, YELLOW1 থেকে YELLOW2 এবং সোল্ডারের একটি হলুদ তারের সন্ধান করুন।
  3. পিছনে, BLUE1 থেকে BLUE2 এবং সোল্ডারে একটি নীল তারের সন্ধান করুন।
  4. পিছনে, GREEN1 থেকে GREEN2 এবং সোল্ডারে একটি সবুজ তারের সন্ধান করুন।
  5. পিছনে, BLACK1 থেকে BLACK2 এবং সোল্ডার পর্যন্ত একটি কালো তারের সন্ধান করুন।
  6. পিছনে, BLACK3 থেকে BLACK4 এবং সোল্ডারে একটি কালো তারের সন্ধান করুন।
  7. পিছনে, RED1 থেকে RED2 এবং সোল্ডারে একটি লাল তারের সন্ধান করুন।
  8. পিছনে, RED3 থেকে RED4 এবং সোল্ডারে একটি লাল তারের সন্ধান করুন।

রিলে এখন তার পিনের মাধ্যমে সরাসরি পিসিবি বা তারের মাধ্যমে পিন চুক্তিতে দেখানো পয়েন্টের সাথে সংযুক্ত হতে পারে।

ধাপ 4: পরীক্ষা

পরীক্ষামূলক
পরীক্ষামূলক
পরীক্ষামূলক
পরীক্ষামূলক
পরীক্ষামূলক
পরীক্ষামূলক

এই ব্রিকগুলির একটি সংখ্যা একটি পরিবেশে একাধিক নোডে (MCUs - ESP8266 বা ATTINY84) থাকবে বলে আশা করা হচ্ছে। এটি একটি ইউনিট পরীক্ষা: UNO থেকে ATTINY তে I2C কমান্ড পাঠায় যা রিলে খুলে বা বন্ধ করে।

আমরা এর আগে Arduino এর জন্য একটি I2C শিল্ড তৈরি করেছি।

আপনি যদি এর পরিবর্তে রুটিবোর্ড করতে চান:

  1. UNO- এ 5.0V ব্রিকের VCC- এর সাথে সংযুক্ত করুন।
  2. UNO- তে GND- কে BRID- তে GND -এ সংযুক্ত করুন।
  3. ইউএনও -তে A5 কে BRIC- এ এসসিএল -এ সংযুক্ত করুন।
  4. ইউএনও -তে A4 কে ব্রিকের SDA- এর সাথে সংযুক্ত করুন।
  5. এসডিএ থেকে ভিসিসিতে একটি 4K7 পুল-আপ প্রতিরোধক সংযুক্ত করুন।
  6. এসসিএল থেকে ভিসিসিতে একটি 4K7 পুল-আপ প্রতিরোধক সংযুক্ত করুন।

পরীক্ষা চালাচ্ছেন।

  1. ইউএসবি দিয়ে আপনার ইউএনওকে আপনার দেব পিসির সাথে সংযুক্ত করুন।
  2. ইউএনওতে কোড আপলোড করুন।
  3. আরডুইনো কনসোল খুলুন 9600 বড চয়ন করুন (ইউএনও পুনরায় চালু করুন এবং যদি আপনার প্রয়োজন হয় তবে কনসোলটি আবার খুলুন)।
  4. স্লেভের ঠিকানা কনসোলে প্রিন্ট হবে।
  5. যখন, প্রেরণ বাক্সে প্রবেশ করুন 2 1 (তাই 12 2 1), এবং রিলে চালু হয়।
  6. যখন, পাঠান বাক্সে 2 0 (তাই 12 2 0) লিখুন, এবং রিলে বন্ধ হয়ে যায়।

ইউএনও মাস্টারের দাসদের জন্য আই 2 সি ব্রিক অ্যাডহক কমান্ড।

#অন্তর্ভুক্ত
const বাইট _num_chars = 32;
char _received_chars [_num_chars]; // প্রাপ্ত ডেটা সংরক্ষণ করার জন্য একটি অ্যারে
বুলিয়ান _has_new_data = মিথ্যা;
অকার্যকর সেটআপ() {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASIMILATE IOT ACTOR/SENSOR EEPROM EDITOR");
Serial.println ("কনসোল উইন্ডোতে নির্বাচিত নতুন লাইন নিশ্চিত করুন");
Serial.println ();
Serial.println ("ঠিকানা 1 কনফার্ম মেটাডাটা রিসিভ এন/এ (M2M এর জন্য");
Serial.println ("ADDRESS 2 ACTOR COMMAND");
Serial.println ();
Serial.println ("বাসে ঠিকানা:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
জন্য (বাইট ঠিকানা = 8; ঠিকানা <127; ঠিকানা ++)
{
Wire.beginTransmission (ঠিকানা);
const বাইট ত্রুটি = Wire.endTransmission ();
যদি (ত্রুটি == 0)
{
Serial.println (ঠিকানা);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
স্ট্যাটিক বাইট ndx = 0;
char end_marker = '\ n';
char rc;
while (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
যদি (rc! = end_marker) {
_received_chars [ndx] = rc;
ndx ++;
যদি (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
অন্য {
_received_chars [ndx] = '\ 0'; // স্ট্রিং বন্ধ করুন
ndx = 0;
_has_new_data = সত্য;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const স্ট্রিং প্রাপ্ত_স্ট্রিং = স্ট্রিং (_received_chars);
যদি (_has_new_data == সত্য) {
int idx1 = receive_string.indexOf ('');
স্ট্রিং ঠিকানা = প্রাপ্ত_স্ট্রিং। সাবস্ট্রিং (0, idx1);
int address_int = address.toInt ();
যদি (address_int <8 || address_int> 127) {
Serial.println ("অবৈধ ঠিকানা ইনপুট:");
Serial.println (ঠিকানা);
প্রত্যাবর্তন;
}
int idx2 = receive_string.indexOf ('', idx1+1);
স্ট্রিং কোড;
যদি (idx2 == -1) {
কোড = receive_string.substring (idx1+1);
} অন্য {
কোড = receive_string.substring (idx1+1, idx2+1);
}
int code_int = code.toInt ();
if (code_int <0 || code_int> 5) {
Serial.println ("ইনভ্যালিড কোড ইনপুট:");
Serial.println (কোড);
প্রত্যাবর্তন;
}
bool has_parameter = idx2> -1;
স্ট্রিং প্যারামিটার;
যদি (has_parameter) {
প্যারামিটার = প্রাপ্ত_স্ট্রিং.সাবস্ট্রিং (idx2 + 1, idx2 + 17); // 16 অক্ষর সর্বোচ্চ
যদি (parameter.length () <1) {
Serial.println ("অংশীদার মিনিট। দৈর্ঘ্য 1");
_has_new_data = মিথ্যা;
প্রত্যাবর্তন;
}
} অন্য {
যদি (code_int> 1) {
Serial.println ("প্যারামিটার প্রয়োজন!");
_has_new_data = মিথ্যা;
প্রত্যাবর্তন;
}
}
Serial.println ();
সিরিয়াল.প্রিন্ট ("ইনপুট অরিজ =");
Serial.println (প্রাপ্ত_স্ট্রিং);
সিরিয়াল.প্রিন্ট ("ঠিকানা =");
Serial.println (ঠিকানা);
সিরিয়াল.প্রিন্ট ("কোড =");
Serial.println (কোড);
সিরিয়াল.প্রিন্ট ("প্যারামিটার =");
Serial.println (প্যারামিটার);
// I2C এর মাধ্যমে পাঠান
Wire.beginTransmission (address_int);
Wire.write (code_int);
যদি (has_parameter) {
parameter.trim ();
strcpy (param_buf, parameter.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("S2 VIA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = মিথ্যা;
}
}

GitHub দ্বারা raw দিয়ে হোস্ট করা rawuno_i2c_command_input.ino দেখুন

ধাপ 5: পরবর্তী পদক্ষেপ

পরবর্তী পদক্ষেপ
পরবর্তী পদক্ষেপ
পরবর্তী পদক্ষেপ
পরবর্তী পদক্ষেপ
পরবর্তী পদক্ষেপ
পরবর্তী পদক্ষেপ
পরবর্তী পদক্ষেপ
পরবর্তী পদক্ষেপ

ফলো-আপ এসমিলিয়েট অ্যাক্টর: KY019 যা এই ইট ব্যবহার করে তা ক্রটিনের জন্য স্বয়ংক্রিয় কনফিগারেশনের মাধ্যমে ATTINY85 এ ইতিমধ্যেই ইনস্টল করা মেটাডেটার মাধ্যমে রয়েছে। ক্রাউটনে পাঠানো JSON প্যাকেটটি ICOS10 এর জন্য সর্বশেষ ফার্মওয়্যারের মাধ্যমে পাঠানো হয়। আপনি যদি একটি সাধারণ ESP8266 এ একটি প্রুফ অফ কনসেপ্ট করতে পারেন, যদি বিল্ডটি আপাতত খুব বেশি হয়।

আপনার লক্ষ্যযুক্ত I2C বাসে সংঘর্ষ হলে, ATTINY85 এ EEPROM- এ একটি নতুন স্লেভ ঠিকানা সংরক্ষণের জন্য ইউএনও স্কেচ ব্যবহার করা হয়।

কয়েকটি স্কিম্যাটিক্স যুক্ত করা হয়েছে, তবে আপনি যা অর্জন করতে চান তার উপর নির্ভর করে ডাউনস্ট্রিম সার্কিটের তারের বিভিন্ন উপায় রয়েছে, তাই আমি এটি আপনার জন্য রেখে দেব:)

প্রস্তাবিত: