Სარჩევი:

I2C სარელეო შეხვდა Arduino IDE: 5 ნაბიჯი
I2C სარელეო შეხვდა Arduino IDE: 5 ნაბიჯი

ვიდეო: I2C სარელეო შეხვდა Arduino IDE: 5 ნაბიჯი

ვიდეო: I2C სარელეო შეხვდა Arduino IDE: 5 ნაბიჯი
ვიდეო: როგორ გააკეთოთ LDmicro Arduino PLC I2C LCD– ით 2024, ივლისი
Anonim
I2C სარელეო შეხვდა Arduino IDE
I2C სარელეო შეხვდა Arduino IDE

მე ვკვეთავს მშვენიერ სარელეო დაფას, მაგრამ არ იყო ArduinoIDE ინსტრუქცია, უბრალოდ Raspberry Pi e.o. მე ვხვდები როგორ გამოვიყენო ის არდუინოსთან და მინდა გავუზიარო მას, ასე რომ თქვენ შეგიძლიათ დაზოგოთ ეს დრო.

ორიგინალური RaspberryPi მაგალითი:

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

სასიამოვნოა ის, რომ თქვენ შეგიძლიათ დააწყოთ 4 დაფა. ასე რომ თქვენ შეგიძლიათ გამოიყენოთ მაქს. 4 x 4 = 16 სარელეო ერთ I2C ავტობუსზე.

ასევე არსებობს უარყოფითი მხარეები:

  • პატარა ტერმინები, არ ჯდება 1 მმ 2 მავთული
  • თქვენ არ შეგიძლიათ შეცვალოთ ქვედა კონექტორების გაყვანილობა, როდესაც ისინი ერთმანეთზეა მიბმული

მაგრამ მაინც მოსახერხებელი დაფა.

ნაბიჯი 1: გაყვანილობა

გაყვანილობა
გაყვანილობა
გაყვანილობა
გაყვანილობა
გაყვანილობა
გაყვანილობა

სურათებში თქვენ ხედავთ მავთულხლართებს.

52Pi- ს სჭირდება ორივე 5V (სარელეოებისთვის) და 3.3V (I2C ჩიპი).

ასე რომ, საჭიროა 5 მავთული:

  • GND to GND
  • 5 V– დან 5 V– მდე
  • 3.3 V to 3.3 V
  • SLA to SLA
  • SCL– დან SCL– მდე

თუ თქვენ იყენებთ Arduino UNO– ს ან სხვა 5 V– ს, იყავით I3C კონტროლერის მაქსიმალური 3, 6 V! გამოიყენეთ რეზისტორები ან სხვა, რომ შეამციროთ 5 ვ Arduino PIN– დან!

ნაბიჯი 2: მარტივი კოდის მაგალითი:

/* Arduino IDE (ESP) მაგალითი I2C relaisboard- ისთვის.

* ლორენს კორსტის მიერ www.boktorrobotica.nl * უფასო გამოსაყენებლად. */ #include // for I2C communication void setup () {// this rule not for UNO or დაფები for a dedicated I2C pins Wire.begin (D1, D2); // შეუერთდით i2c ავტობუსს SDA = D1 და SCL = D2 NodeMCU} void loop () {Wire.beginTransmission (0x10);/ * დაიწყეთ გადაცემა I2C მისამართზე 10 (ასევე შეიცვლება 11, 12 ან 13) */ Wire. დაწერა (0x01); / * არჩევანი რელე 1 (4 – დან) 10 ბორტზე (ასევე 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* დააყენეთ რელე 1 ბორტზე 10 ON. ყველა ნომერი> 0 ამას გააკეთებს */ Wire.endTransmission (); / * გადაცემის შეწყვეტა */ შეფერხება (3000); Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * დააყენეთ რელე 1 ბორტზე 10 OFF */ Wire.endTransmission (); / * გადაცემის შეწყვეტა */ შეფერხება (3000); }

ნაბიჯი 3: ოთხი სარელეო ტესტის კოდი

/* ლორენს კორსტის ესკიზი არდუინოსთვის (ESP / NodeMCU)

* მაგრამ სხვა დაფებიც ამას გააკეთებენ * www.boktorrobotica.nl * ამ სკეიჩში 4 სარელეო გააქტიურდება გამორთული */ #include // I2C საკომუნიკაციო void setup () {Serial.begin (115200); // დაიწყოს სერიული გამართვისთვის (9600 UNO– სთვის) Wire.begin (D1, D2); // შეუერთდეს i2c ავტობუსს SDA = D1 და SCL = D2 of NodeMCU არ სჭირდება UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // დაიწყეთ მოწყობილობის მისამართით Wire.write (i); // არჩევანი relais Wire.write (0xFF); // გაგზავნეთ "ჩართული" კოდი FF (ყველა რიცხვი 01 -დან FF- ს გააკეთებს) Wire.endTransmission (); // შეწყვიტოს გადაცემა Serial.write (i); Serial.println ("აან"); დაგვიანება (1000); Wire.beginTransmission (0x10); // დაიწყეთ მოწყობილობის მისამართით Wire.write (i); Wire.write (0x00); // "off" კოდის გაგზავნა Wire.endTransmission (); // შეწყვიტოს გადაცემა Serial.write (i); Serial.println ("uit"); დაგვიანება (1000); }}

ნაბიჯი 4: ჩემი პროექტი

Ჩემი პროექტი
Ჩემი პროექტი
Ჩემი პროექტი
Ჩემი პროექტი

მე დავწერე კოდი, რომ ვიმუშაო ჩემი 3 საკეტებით. ეს შეიძლება გაკეთდეს კონცენტრატორებით, არამედ BLYNK აპლიკაციით, იხილეთ სურათი.

  • ერთი მოკლე დაჭერით დაიწყება ერთი ჩამკეტის გადაადგილება (ან შეაჩერე იგი მოძრაობისას).
  • ერთი გრძელი პრესი და სამივე საკეტი იხსნება (ან იხურება ან ჩერდება).
  • ორმაგი წნევა: ჩამკეტები მიდიან "ხვრელების" პოზიციაზე.

როგორც სურათზე ჩანს, მე ასევე ჩავრთე ტემპერატურისა და სინათლის სენსორი.

ახლა ყველაფერი კარგ ბაზაზე PCB და სისუფთავე ყუთში.

ნაბიჯი 5: დარეკეთ სარელეო ერთი ბრძანებით

ეს სასარგებლოა, თუ თქვენ გჭირდებათ მხოლოდ ერთი ბრძანება რელეს გასააქტიურებლად ან გამორთვისთვის. ქვემოთ მოცემულია ფუნქცია, რომელსაც შეუძლია ამის გაკეთება (დაბალი და მაღალი ბაიტებით).

/ * ლორენს კორსტის ესკიზი არდუინოსთვის (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 * ამ ესკიზში რელე გააქტიურდება ერთი ზარით; * // #ჩათვლით // I2C კომუნიკაციისთვის // დეკლარაციის რელეები. 4 PCB თითოეული PCB- ზე შესაძლებელია 4 რელე. ამ ესკიზში გაერთიანებულია მხოლოდ ორი PCB // PCB და რელეები ისე, რომ მათ შეიძლება დარეკონ ერთი ბრძანებით const byte PutOn = 0xFF; // ბრძანება const byte PutOff = 0x00; // comand გამორთვისთვის const სიტყვა Relay1bord1 = 0x1001; // შეგიძლიათ სახელების შანსი მაგალითით Relay1 const word Relay2bord1 = 0x1002; // თქვენ შეგიძლიათ შემთხვევით დაასახელოთ სახელები მაგალითის მიხედვით Relay2 const word Relay3bord1 = 0x1003; // შეგიძლიათ სახელების შანსი მაგალითზე Relay3 const word Relay4bord1 = 0x1004; // თქვენ შეგიძლიათ შემთხვევით დაასახელოთ სახელები Relay4 const სიტყვა Relay1bord2 = 0x1101; // თქვენ შეგიძლიათ შემთხვევით დაასახელოთ სახელები მაგალითად Relay5 const w ord Relay2bord2 = 0x1102; // თქვენ შეგიძლიათ შემთხვევით დაასახელოთ სახელები Relay6 const სიტყვა Relay3bord2 = 0x1103; // თქვენ შეგიძლიათ შემთხვევით დაასახელოთ სახელები Relay7 const სიტყვა Relay4bord2 = 0x1104; // თქვენ შეგიძლიათ შემთხვევით დაასახელოთ სახელები Relay8 const სიტყვა Relay1bord3 = 0x1201; // თქვენ შეგიძლიათ შემთხვევით დაასახელოთ სახელები Relay9 const word Relay2bord4 = 0x1302; // თქვენ შეგიძლიათ შემთხვევით დაასახელოთ სახელები Relay14 void setup () {Serial.begin (115200); // დაიწყოს სერიული გამართვისთვის (9600 UNO– სთვის) Wire.begin (D1, D2); // შეუერთდეს i2c ავტობუსს SDA = D1 და SCL = D2 of 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 (); }

გირჩევთ: