جدول المحتويات:

I2C Relay Met Arduino IDE: 5 خطوات
I2C Relay Met Arduino IDE: 5 خطوات

فيديو: I2C Relay Met Arduino IDE: 5 خطوات

فيديو: I2C Relay Met Arduino IDE: 5 خطوات
فيديو: I2C with Arduino and Raspberry Pi - Two Methods 2024, شهر نوفمبر
Anonim
I2C Relay Met Arduino IDE
I2C Relay Met Arduino IDE

أطلب لوحة ترحيل لطيفة ولكن لم يكن هناك تعليمات ArduinoIDE ، فقط Raspberry Pi e.o. اكتشفت كيفية استخدامه مع Arduino وأريد مشاركته حتى تتمكن من توفير ذلك الوقت.

مثال RaspberryPi الأصلي:

wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099

الشيء الجميل هو أنه يمكنك تكديس ما يصل إلى 4 لوحات. لذا يمكنك استخدام max. 4 × 4 = 16 تتابع على حافلة I2C واحدة.

هناك أيضًا بعض السلبيات:

  • أطراف صغيرة ، لا تناسب سلك 1 مم 2
  • لا يمكنك تغيير أسلاك الموصلات السفلية عندما تكون مكدسة معًا

ولكن لا يزال المجلس في متناول يدي.

الخطوة 1: الأسلاك

السلك
السلك
السلك
السلك
السلك
السلك

في الصور تستطيع أن ترى الأسلاك.

يحتاج 52Pi إلى كل من 5V (للتتابع) و 3.3V (شريحة I2C).

لذلك نحتاج إلى 5 أسلاك:

  • GND إلى GND
  • 5 فولت إلى 5 فولت
  • 3.3 فولت إلى 3.3 فولت
  • جيش تحرير السودان إلى جيش تحرير السودان
  • SCL إلى SCL

إذا كنت تستخدم Arduino UNO أو 5 V أخرى ، فاحرص على استخدام الحد الأقصى 3 ، 6 فولت من وحدة تحكم I2C! استخدم المقاومات أو لخفض 5 فولت من Arduino PIN's!

الخطوة 2: مثال رمز بسيط:

/ * مثال Arduino IDE (ESP) للوحة I2C relaisboard.

* بقلم Laurens Korste www.boktorrobotica.nl * مجاني للاستخدام. * / #include // لإعداد الفراغ للاتصال I2C () {// هذه القاعدة ليست لـ UNO أو اللوحات ذات دبابيس I2C المخصصة Wire.begin (D1، D2)؛ // انضم إلى ناقل i2c مع SDA = D1 و SCL = D2 لـ NodeMCU} حلقة فارغة () {Wire.beginTransmission (0x10) ؛ / * ابدأ الإرسال إلى العنوان I2C 10 (للتغيير أيضًا إلى 11 أو 12 أو 13) * / سلك.write (0x01) ؛ / * خيار relais 1 (من 4) على اللوحة 10 (أيضًا 0x02 ، 0x03 ، 0x04) * / Wire.write (0xFF) ؛ / * اضبط relais 1 على اللوحة 10 على ON. جميع الأرقام> 0 ستفعل ذلك * / Wire.endTransmission () ؛ / * إيقاف الإرسال * / تأخير (3000) ؛ Wire.beginTransmission (0x10) ؛ / * / Wire.write (0x01) ؛ Wire.write (0x00) ؛ / * اضبط relais 1 على اللوحة 10 على OFF * / Wire.endTransmission () ؛ / * إيقاف الإرسال * / تأخير (3000) ؛ }

الخطوة 3: كود اختبار الترحيل الرباعي

/ * رسم بواسطة Laurens Korste لـ Arduino (ESP / NodeMCU)

* لكن اللوحات الأخرى ستفعل أيضًا * www.boktorrobotica.nl * في هذا السكاش ، سيتم تنشيط المرحل 4 عند إلغاء تنشيطه * / #include // من أجل إعداد باطل اتصال I2C () {Serial.begin (115200) ؛ // بدء المسلسل للتصحيح (9600 لـ UNO) Wire.begin (D1، D2) ؛ // انضم إلى ناقل i2c مع SDA = D1 و SCL = D2 من NodeMCU لا حاجة لـ UNO} حلقة فارغة () {لـ (int i = 1 ؛ i <= 4 ؛ i ++) {Wire.beginTransmission (0x10) ؛ // ابدأ بعنوان الجهاز Wire.write (i) ؛ // اختيار relais Wire.write (0xFF) ؛ // أرسل الكود "on" FF (كل عدد من 01 إلى FF سيفعل) Wire.endTransmission () ؛ // توقف عن إرسال Serial.write (i) ؛ Serial.println ("aan") ؛ تأخير (1000) ؛ Wire.beginTransmission (0x10) ؛ // ابدأ بعنوان الجهاز Wire.write (i) ؛ Wire.write (0x00) ؛ // أرسل الكود "off" Wire.endTransmission () ؛ // توقف عن إرسال Serial.write (i) ؛ Serial.println ("uit") ؛ تأخير (1000) ؛ }}

الخطوة 4: مشروعي

مشروعي
مشروعي
مشروعي
مشروعي

لقد كتبت رمزًا لتشغيل مصاريعي الثلاثة ، ويمكن القيام بذلك باستخدام المفاتيح ولكن أيضًا باستخدام تطبيق BLYNK ، انظر الصورة.

  • ستبدأ ضغطة واحدة قصيرة في تحريك مصراع واحد (أو ستوقفه عندما يتحرك).
  • ضغطة واحدة طويلة وستفتح جميع المصاريع الثلاثة (أو تغلق أو تتوقف).
  • ضغط مزدوج: المصاريع تذهب إلى وضع "الثقوب".

كما يتضح في الصورة ، قمت أيضًا بدمج مستشعر درجة الحرارة والضوء.

الآن كل شيء على PCB قاعدة جيدة ومرتبة في صندوق.

الخطوة 5: استدعاء Relay بأمر واحد

يكون مفيدًا إذا كنت بحاجة إلى أمر واحد فقط لتنشيط أو إلغاء تنشيط المرحل. يوجد أدناه وظيفة يمكنها القيام بذلك (بوحدات بايت منخفضة وعالية البايت).

/ * رسم بواسطة Laurens Korste لـ Arduino (ESP / NodeMCU) مع لوحة ترحيل I2C * لكن اللوحات الأخرى ستعمل أيضًا * href = https://www.boktorrobotica.nl ؛ www.boktorrobotica.nl * https://wiki.52pi.com / index.php / DockerPi_4_Channel_Relay_SKU: _EP-0099 ؛ www.boktorrobotica.nl * في هذا الرسم التخطيطي ، سيتم تنشيط التتابع بمكالمة واحدة ؛ * // #include // لاتصال I2C // Relays Advertisatie. 4 PCB لكل ثنائي الفينيل متعدد الكلور 4 مرحلات ممكنة. في هذا الرسم التخطيطي ، تم دمج اثنين فقط من PCB // PCB والمرحلات بحيث يمكن استدعاؤهما بأمر واحد const بايت PutOn = 0xFF ؛ // أمر لتشغيل بايت const PutOff = 0x00 ؛ // comand لإيقاف التشغيل كلمة const Relay1bord1 = 0x1001 ؛ // يمكنك أن تصادف الأسماء من خلال المثال Relay1 const word Relay2bord1 = 0x1002 ؛ // يمكنك أن تصادف الأسماء على سبيل المثال Relay2 const word Relay3bord1 = 0x1003 ؛ // يمكنك أن تصادف الأسماء من خلال المثال Relay3 const word Relay4bord1 = 0x1004؛ // يمكنك أن تصادف الأسماء من خلال المثال Relay4 const word Relay1bord2 = 0x1101؛ // يمكنك أن تصادف الأسماء من خلال المثال Relay5 const w Ord Relay2bord2 = 0x1102 ؛ // يمكنك فرصة الأسماء من خلال المثال Relay6 const word Relay3bord2 = 0x1103 ؛ // يمكنك أن تصادف الأسماء من خلال المثال Relay7 const word Relay4bord2 = 0x1104 ؛ // يمكنك أن تصادف الأسماء من خلال المثال Relay8 const word Relay1bord3 = 0x1201 ؛ // يمكنك فرصة الأسماء عن طريق المثال Relay9 const word Relay2bord4 = 0x1302 ؛ // يمكنك أن تصادف الأسماء عن طريق المثال إعداد باطل Relay14 () {Serial.begin (115200) ؛ // بدء المسلسل للتصحيح (9600 لـ UNO) Wire.begin (D1، D2) ؛ // انضم إلى ناقل i2c مع SDA = D1 و SCL = D2 من NodeMCU لا حاجة لـ UNO} حلقة فارغة () {// لتبديل الترحيل 4 على PCB 2 على RelayActie (Relay4bord2 ، PutOn) ؛ تأخير (1000) ؛ // لتبديل الترحيل 4 على PCB 2 إيقاف RelayActie (Relay4bord2 ، PutOff) ؛ تأخير (1000) ؛ } void RelayActie (word Relay، Byte OnOrOff) {Wire.beginTransmission (highByte (Relay))؛ Wire.write (lowByte (Relay)) ؛ Wire.write (OnOrOff) ؛ Wire.endTransmission () ؛ }

موصى به: