فهرست مطالب:

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

من یک relayboard خوب سفارش می دهم اما هیچ دستور 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 میلی متر مربع مناسب نیست
  • وقتی اتصال دهنده های پایینی روی هم قرار می گیرند ، نمی توانید سیم کشی آنها را تغییر دهید

اما هنوز هم هیئت مدیره مفید است.

مرحله 1: سیم کشی

سیم کشی
سیم کشی
سیم کشی
سیم کشی
سیم کشی
سیم کشی

در تصاویر سیم کشی را مشاهده می کنید.

52Pi به هر دو 5 ولت (برای رله) و 3.3 ولت (تراشه I2C) نیاز دارد.

بنابراین 5 سیم مورد نیاز است:

  • GND به GND
  • 5 ولت تا 5 ولت
  • 3.3 ولت تا 3.3 ولت
  • SLA به SLA
  • SCL به SCL

اگر از Arduino UNO یا سایر 5 ولت استفاده می کنید ، حداکثر 3 ، 6 ولت را از کنترلر I2C تهیه کنید! برای کاهش 5 ولت از پین های آردوینو ، از مقاومت ها یا موارد دیگر استفاده کنید!

مرحله 2: مثال کد ساده:

/* Arduino IDE (ESP) مثال برای relaisboard I2C.

* توسط Laurens Korste www.boktorrobotica.nl * رایگان برای استفاده. */ #include // for I2C connection void setup () {// این قانون برای UNO یا تخته هایی با پین I2C اختصاصی Wire.begin (D1، D2) نیست ؛ // پیوستن به گذرگاه i2c با SDA = D1 و SCL = D2 برای NodeMCU} حلقه void () {Wire.beginTransmission (0x10) ؛/ * شروع به ارسال به آدرس I2C 10 (همچنین تغییر به 11 ، 12 یا 13) */ Wire. نوشتن (0x01) ؛ / * Relais انتخاب 1 (از 4) روی برد 10 (همچنین 0x02 ، 0x03 ، 0x04) */ Wire.write (0xFF) ؛ /* relais 1 روی برد 10 را روی ON قرار دهید. همه شماره های> 0 این کار را انجام می دهند */ Wire.endTransmission ()؛ / * توقف انتقال */ تاخیر (3000) ؛ Wire.begin انتقال (0x10) ؛ / * */ Wire.write (0x01) ؛ Wire.write (0x00) ؛ / * رله 1 را روی صفحه 10 روی OFF */ Wire.endTransmission () تنظیم کنید / * توقف انتقال */ تاخیر (3000) ؛ }

مرحله 3: کد تست چهار رله

/* طرح توسط Laurens Korste برای Arduino (ESP / NodeMCU)

* اما سایر تابلوها نیز این کار را انجام می دهند * www.boktorrobotica.nl * در این skeych ، رله 4 فعال و غیرفعال می شود // شروع سریال برای اشکال زدایی (9600 برای UNO) Wire.begin (D1، D2) ؛ // به گذرگاه i2c با SDA = D1 و SCL = D2 NodeMCU بپیوندید بدون نیاز به UNO} void loop () {for (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.begin انتقال (0x10) ؛ // با آدرس دستگاه Wire.write (i) شروع کنید؛ Wire.write (0x00) ؛ // ارسال کد "خاموش" Wire.endTransmission ()؛ // توقف انتقال Serial.write (i)؛ Serial.println ("uit") ؛ تاخیر (1000) ؛ }}

مرحله 4: پروژه من

پروژه من
پروژه من
پروژه من
پروژه من

من یک کد برای کارکرد 3 کرکره ام نوشته ام. این را می توان با سوئیچ ها انجام داد ، اما همچنین با برنامه BLYNK ، تصویر را ببینید.

  • با یک فشار کوتاه حرکت یک شاتر شروع می شود (یا هنگام حرکت متوقف می شود).
  • یک فشار طولانی و هر سه کرکره باز می شوند (یا بسته یا متوقف می شوند).
  • فشار مضاعف: کرکره ها به موقعیت "سوراخ" می روند.

همانطور که در تصویر مشاهده می شود ، من یک سنسور دما و نور را نیز ادغام کردم.

اکنون همه چیز روی یک PCB پایه خوب و مرتب در یک جعبه قرار دارد.

مرحله 5: با یک فرمان یک رله فراخوانی کنید

اگر برای فعال یا غیرفعال کردن رله فقط به یک دستور نیاز دارید مفید است. در زیر تابعی است که می تواند این کار را انجام دهد (با lowbyte و highbyte).

/ * طرح توسط Laurens Korste برای Arduino (ESP/NodeMCU) با رله I2C * اما سایر تخته ها نیز این کار را انجام می دهند * href = https://www.boktorrobotica.nl؛ www.boktorrobotica.nl * https://wiki.52pi com 4 رله ممکن است. در این طرح فقط دو PCB // PCB و رله با هم ادغام می شوند تا بتوان آنها را با یک دستور const byte فراخوانی کرد PutOn = 0xFF؛ // فرمان برای روشن شدن const byte PutOff = 0x00؛ // comand برای خاموش کردن word const Relay4bord1 = 0x1004 ؛ // می توانید نام ها را با مثال Relay4 کلمه ثابت Relay1bord2 = 0x1101 ؛ // می توانید نام ها را با مثال Relay5 const w شانس دهید ord Relay2bord2 = 0x1102؛ // شما می توانید نامها را با مثال Relay6 const word Relay3bord2 = 0x1103 شانس دهید. // شما می توانید نام ها را با مثال Relay7 const word Relay4bord2 = 0x1104 شانس دهید؛ // می توانید نامها را با مثال Relay8 کلمه ثابت Relay1bord3 = 0x1201؛ // می توانید نام ها را با مثال Relay9 const word Relay2bord4 = 0x1302 شانس دهید. // می توانید نام ها را با مثال Relay14 void setup () {Serial.begin (115200)؛ // شروع سریال برای اشکال زدایی (9600 برای UNO) Wire.begin (D1، D2) ؛ // برای اتصال سوئیچ i2c با SDA = D1 و SCL = D2 NodeMCU نیازی به UNO} void loop () {// برای تغییر رله 4 در PCB 2 در RelayActie (Relay4bord2 ، PutOn) نیست ؛ تاخیر (1000) ؛ // برای تغییر رله 4 در PCB 2 خاموش RelayActie (Relay4bord2 ، PutOff) ؛ تاخیر (1000) ؛ } void RelayActie (واژه رله ، بایت OnOrOff) {Wire.beginTransmission (highByte (رله)) ؛ Wire.write (lowByte (رله)) ؛ Wire.write (OnOrOff) ؛ Wire.endTransmission ()؛ }

توصیه شده: