সুচিপত্র:

IOT123 - I2C হার্টবিট ব্রিক: 6 টি ধাপ
IOT123 - I2C হার্টবিট ব্রিক: 6 টি ধাপ

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

ভিডিও: IOT123 - I2C হার্টবিট ব্রিক: 6 টি ধাপ
ভিডিও: IOT123 - ICOS10: STRUCTURE 2024, জুন
Anonim
IOT123 - I2C হার্টবিট ব্রিক
IOT123 - I2C হার্টবিট ব্রিক
IOT123 - I2C হার্টবিট ব্রিক
IOT123 - I2C হার্টবিট ব্রিক
IOT123 - I2C হার্টবিট ব্রিক
IOT123 - I2C হার্টবিট ব্রিক

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

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

এই I2C হার্টবিট ব্রিক নির্দেশ করে যে ATTINY ক্রীতদাস বেঁচে আছে কিনা, I2C ট্র্যাফিকও আছে এবং তার একটি সম্পত্তি আছে:

অবস্থা ("জীবিত")

PB1 (সাদা) ATTINY স্বাস্থ্য নির্দেশ করে।

PB3 (হলুদ) মাস্টারের কাছ থেকে I2C অনুরোধের সাথে টগল করে।

PB4 (কমলা) টগল I2C সঙ্গে মাস্টার থেকে প্রাপ্ত।

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

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

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

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

  1. কাগজ PCB (7 x 7 গর্ত)
  2. LEDS (লাল, সবুজ, নীল)
  3. প্রতিরোধক (1K বন্ধ 3)
  4. ATTINY85 20PU (1)
  5. 1 "ডবল পার্শ্বযুক্ত প্রোটোবোর্ড (1)
  6. পুরুষ শিরোলেখ 90º (3P, 3P)
  7. পুরুষ শিরোলেখ (2P, 2P)
  8. জাম্পার শান্ট (1)
  9. হুকআপ ওয়্যার (~ 7)
  10. ঝাল এবং লোহা (1)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ধাপ 3: নির্দেশক একত্রিত করা

নির্দেশক একত্রিত করা
নির্দেশক একত্রিত করা
নির্দেশক একত্রিত করা
নির্দেশক একত্রিত করা
নির্দেশক একত্রিত করা
নির্দেশক একত্রিত করা

সূচকগুলি সম্পূর্ণরূপে স্বনির্ধারিত হওয়ার জন্য বোঝানো হয়েছে। এটি প্রধান সার্কিট থেকে ইভেন্ট সংকেত যা হার্টবিট হিসাবে দেখা হয়। এই নির্মাণের জন্য আমরা LED সূচক ব্যবহার করব; আপনার বিল্ড রিলে ব্যবহার করতে পারে (হ্যাঁ VCC ভেঙে গেছে) অথবা অন্য ভিজ্যুয়াল/সিগন্যাল ভিত্তিক সূচক। প্রতিরোধক মান ব্যক্তিগত পছন্দ উপর নির্ভর করবে আপনি তাদের কতটা উজ্জ্বল চান।

  1. শীর্ষে, RED1 (+) এবং BLACK1 (G), এবং নীচে সোল্ডারে একটি নীল LED োকান।
  2. নীচে, RED1 থেকে সীসা বাঁকুন যাতে এটি SILVER8 এর তামার প্যাড স্পর্শ করে এবং ছাঁটাই করে।
  3. নীচে, সোল্ডারের উপরে BLACK1 থেকে সীসা ছাঁটা।
  4. উপরে, RED2 (+) এবং BLACK2 (G), এবং নীচে সোল্ডারে একটি সবুজ LED োকান।
  5. নীচে, RED2 থেকে সীসা বাঁকুন যাতে এটি SILVER9 এর তামার প্যাড স্পর্শ করে এবং ছাঁটাই করে।
  6. নীচে, ঝাল উপরে BLACK2 থেকে সীসা ছাঁটা।
  7. শীর্ষে, একটি লাল LED RED3 (+) এবং BLACK3 (G), এবং নীচে ঝাল সন্নিবেশ করান।
  8. নীচে, RED3 থেকে সীসা বাঁকুন যাতে এটি SILVER10 এ তামার প্যাড স্পর্শ করে এবং ছাঁটাই করে।
  9. নীচে, সোল্ডারের উপরে BLACK3 থেকে সীসা ছাঁটা।
  10. শীর্ষে, থ্রি-হোল SILVER1 এবং SILVER4 এ 1K রোধকারী োকান।
  11. নীচে, SILVER1 থেকে BLACK1 তে ট্রেস, ট্রিম এবং সোল্ডার সীসা।
  12. শীর্ষে, থ্রি-হোল SILVER2 এবং SILVER4 এ একটি 1K রোধক সন্নিবেশ করান।
  13. নীচে, SILVER2 থেকে BLACK2 তে ট্রেস, ট্রিম এবং সোল্ডার সীসা।
  14. শীর্ষে, থ্রি-হোল SILVER3 এবং SILVER4 এ একটি 1K রোধক সন্নিবেশ করান।
  15. নীচে, সিলভার 3 থেকে ব্ল্যাক 3 তে ট্রেস, ট্রিম এবং সোল্ডার সীসা।
  16. নীচে, সিলভার 4 -এ সোল্ডার তারগুলি এবং প্রায় 5 মিমি প্রসারিত ট্রিম করুন।
  17. নীচে, সিলভার 4 এর উপর একটি কালো তারের ঝালাই করুন।
  18. নীচে, SILVER5 এর মধ্যে একটি সাদা তারের সোল্ডার, RED1 থেকে নেতৃত্বের ধারাবাহিকতা নিশ্চিত করে।
  19. নিচের দিকে, হলুদ তারের সিলভার 6 -এ সোল্ডার করুন, যা RED2 থেকে নেতৃত্বের ধারাবাহিকতা নিশ্চিত করে।
  20. নীচে, SILVER7 এ একটি কমলা তারের সোল্ডার, RED3 থেকে নেতৃত্বের ধারাবাহিকতা নিশ্চিত করে।

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

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

সমাবেশ:

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

উপরের নির্দেশক ব্যবহার করলে (পিনআউট ডায়াগ্রাম দেখুন):

  1. পিছনে, সাদা ওয়্যারটি PB1 এ সোল্ডার করুন।
  2. পিছনে, হলুদ তারের PB3 মধ্যে ঝালাই।
  3. পিছনে, PB4 মধ্যে কমলা তারের ঝাল।
  4. পিছনে, কালো তারের GND- এ সোল্ডার করুন।

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

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

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

আমরা এর আগে 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. আরডুইনো কনসোল খুলুন।
  4. 9600 বড চয়ন করুন (ইউএনও পুনরায় চালু করুন এবং আপনার প্রয়োজন হলে কনসোলটি পুনরায় চালু করুন)।
  5. স্লেভের ঠিকানা কনসোলে প্রিন্ট হবে।
  6. যখন, পাঠান বাক্সে প্রবেশ করুন 2 1 (তাই 16 2 1), এবং রিসিভ LED চালু হয়।
  7. যখন, পাঠান বাক্সে 2 0 (তাই 16 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 দেখুন

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

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

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

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

প্রস্তাবিত: