Агуулгын хүснэгт:

IOT123 - I2C 2CH RELAY BRICK: 5 алхам (зурагтай)
IOT123 - I2C 2CH RELAY BRICK: 5 алхам (зурагтай)

Видео: IOT123 - I2C 2CH RELAY BRICK: 5 алхам (зурагтай)

Видео: IOT123 - I2C 2CH RELAY BRICK: 5 алхам (зурагтай)
Видео: IOT123 - ICOS10: STRUCTURE 2024, Оны зургадугаар сарын
Anonim
IOT123 - I2C 2CH релений тоосго
IOT123 - I2C 2CH релений тоосго
IOT123 - I2C 2CH релений тоосго
IOT123 - I2C 2CH релений тоосго
IOT123 - I2C 2CH релений тоосго
IOT123 - I2C 2CH релений тоосго
IOT123 - I2C 2CH релений тоосго
IOT123 - I2C 2CH релений тоосго

IOT123 BRICKS бол зангилаа эсвэл өмсөж зүүх боломжтой функцийг нэмэгдүүлэхийн тулд бусад IOT123 тоосгоны хамт нухаж хийх боломжтой DIY модульчлагдсан нэгж юм. Эдгээр нь нүхээр хоорондоо холбогдсон инчийн дөрвөлжин, хоёр талт протобор дээр суурилдаг.

Эдгээр тоосгоны хэд хэдэн сайт дээр олон зангилаа (Master MCUs - ESP8266 эсвэл ATTINY84) дээр байх төлөвтэй байна. MCU нь мэдрэгчийн зорилго, програм хангамжийн талаар урьдчилсан мэдлэг шаардагддаггүй. Энэ нь I2C зангилааг хайж, дараа нь боол бүрээс үл хөдлөх хөрөнгийн демпинг (мэдрэгчийн өгөгдөл) авахыг хүсдэг. Эдгээр BRICKs нь 5.0V, 3.3V болон өөр AUX шугамыг өөрчилж болно.

Энэхүү I2C 2CH RELAY BRICK нь I2C KY019 BRICK функцийг өргөжүүлж, унших/бичих хоёр шинж чанартай:

2CH RELAYS [0] (үнэн/худал)

2CH RELAYS [1] (үнэн/худал)

ATTINY85-ийн хажуугийн нүхийг ашиглаагүй тул DIP8-ийг ПХБ-д гагнах үед пого пин програмистыг идэвхжүүлнэ. Дараагийн хийсвэрлэл, D1M WIFI BLOCK төвд холбогдсон жижиг цилиндрт BRICKS -ийг савлаж, утгыг MQTT сервер рүү шахах ажлыг боловсруулж байна.

Алхам 1: Материал ба багаж хэрэгсэл

Материал ба багаж хэрэгсэл
Материал ба багаж хэрэгсэл
Материал ба багаж хэрэгсэл
Материал ба багаж хэрэгсэл
Материал ба багаж хэрэгсэл
Материал ба багаж хэрэгсэл

Материал ба эх үүсвэрийн бүрэн жагсаалт байдаг.

  1. 2 сувгийн реле (1)
  2. ATTINY85 20PU (1)
  3. 1 "Хоёр талт протобоард (1)
  4. Эрэгтэй толгой 90º (3P, 3P)
  5. Эрэгтэй толгой (2P, 2P)
  6. Холбогч шунт (1)
  7. Холбох утас (~ 7)
  8. Гагнуур ба төмөр (1)

Алхам 2: ATTINY85 -ийг бэлтгэ

ATTINY85 -ийг бэлтгэ
ATTINY85 -ийг бэлтгэ
ATTINY85 -ийг бэлтгэ
ATTINY85 -ийг бэлтгэ
ATTINY85 -ийг бэлтгэ
ATTINY85 -ийг бэлтгэ

ТАЙЛБАР: Хэрэв та Crouton интеграцчлах гэж байгаа бол эндээс номын санг ашиглаж, суулгасан "attiny_2ch_relay" жишээг ашиглана уу.

Самбарын менежерээс AttinyCore хэрэгтэй байна. Ачаалагч "EEPROM хадгалагдсан", "8mHZ Дотоод" шарна уу (бүх тохиргоог дээр харуулав).

Кодын санг эндээс олж болно.

Номын сангийн ZIP файлыг эндээс олж болно.

"ZIP номын санг импортлох" зааврыг эндээс үзнэ үү.

Номын санг суулгасны дараа та "attiny_2ch_relay" жишээг нээж болно.

ATTINY85 дээр програмыг байршуулахын тулд та эдгээр зааварчилгааны дэлгэрэнгүй мэдээллийг авах боломжтой:

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

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

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

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

Үргэлжлүүлэхээсээ өмнө талхны самбараар туршиж үзэх нь дээр.

Хэрэв танд одоо байгаа ASSIMILATE SENSORS байгаа бол SENSOR/MCU Host хослол дээр боолын хаяг өөр байгаа эсэхийг шалгаарай, өөрөөр хэлбэл MCU/зангилаан дээр ганцхан релей тоглогч байхад л бүх реле тоглогчид ижил хаягтай байж болно.

Алхам 3: Хэлхээ угсрах

Цахилгаан хэлхээг угсрах
Цахилгаан хэлхээг угсрах
Цахилгаан хэлхээг угсрах
Цахилгаан хэлхээг угсрах
Цахилгаан хэлхээг угсрах
Цахилгаан хэлхээг угсрах
  1. Урд талд ATTINY85 (1), 3P 90deg эрэгтэй толгой (2) (3), 3P эрэгтэй толгой (4) (5) хэсгүүдийг оруулж, ар талд нь гагнах хэрэгтэй.
  2. Ар талд нь шар утсыг YELLOW1 -ээс YELLOW2 хүртэл хайчилж, гагнана.
  3. Ар талд нь ORANGE1 -ээс ORANGE2 хүртэлх улбар шар утсыг хайчилж, гагнана.
  4. Ар талд нь BLUE1 -ээс BLUE2 хүртэлх цэнхэр утсыг хайчилж, гагнана.
  5. Ар талд GREEN1 -ээс GREEN2 хүртэлх ногоон утсыг хайчилж, гагнана.
  6. Ар талд нь BLACK1 -ээс BLACK2 хүртэлх хар утсыг хайчилж, гагнана.
  7. Ар талд нь BLACK3 -аас BLACK4 хүртэлх хар утсыг хайчилж, гагнана.
  8. Ар талд нь улаан утсыг RED1 -ээс RED2 хүртэл хайчилж, гагнана.
  9. Ар талд нь RED3 -аас RED4 хүртэлх нүцгэн утсыг хайчилж, гагнана.
  10. Ар талд SILVER1 -ээс SILVER2 хүртэлх нүцгэн утсыг хайчилж, гагнана.
  11. 5V эсвэл 3V3 шугам дээр холбогчийг нэмнэ үү.

Одоо релеийг зүүгээрээ ПХБ эсвэл утсаар холбож, зүү гэрээнд заасан цэгүүдэд холбож болно.

Алхам 4: Туршилт

Туршилт
Туршилт
Туршилт
Туршилт
Туршилт
Туршилт
Туршилт
Туршилт

Эдгээр хэд хэдэн тоосго нь олон зангилаа (MCUs - ESP8266 эсвэл ATTINY84) дээр байх төлөвтэй байна. Энэ бол нэгжийн туршилт юм: I2C командыг UNO -аас ATTINY руу илгээдэг бөгөөд энэ нь релейг нээж, хаадаг.

Бид өмнө нь Arduino -д зориулан I2C SHIELD барьсан.

Хэрэв та үүнийг талхаар хийхийг хүсвэл:

  1. UNO дээрх 5.0V -ийг BRICK дээрх VCC холбоно уу.
  2. UNO дээрх GND -ийг BRICK дээр GND -тэй холбоно уу.
  3. UNO дээрх A5 -ийг BRICK дээрх SCL руу холбоно уу.
  4. UNO дээрх A4 -ийг BRICK дээрх SDA -тай холбоно уу.
  5. SDA-аас VCC руу 4K7 татах эсэргүүцлийг холбоно уу.
  6. SCL-ээс VCC руу 4K7 татах эсэргүүцлийг холбоно уу.

Тестийг ажиллуулж байна

  1. НҮБ -аа USB төхөөрөмжөөрөө Dev компьютерт холбоно уу.
  2. НҮБ -д код байршуулна уу.
  3. Arduino консолыг нээнэ үү.
  4. 9600 baud сонгоно уу (НҮБ -ыг дахин эхлүүлж, шаардлагатай бол консолыг дахин нээнэ үү).
  5. Боолын хаягийг консол дээр хэвлэх болно.
  6. Хэзээ, илгээх хайрцагт 2 0: 1 (15 2 0: 1) оруулаад CH1 реле асна.

  7. Хэзээ, илгээх хайрцагт 2 0: 0 (тэгэхээр 15 2 0: 0) оруулаад CH1 реле унтарна.
  8. Хэзээ, илгээх хайрцагт 2 1: 1 (тэгэхээр 15 2 1: 1) оруулаад CH2 реле асна.
  9. Хэзээ, илгээх хайрцагт 2 1: 0 (тэгэхээр 15 2 0: 0) оруулаад CH2 реле унтарна.

I2C BRICK НҮБ -ын мастераас гаргасан боолуудад зориулсан adhoc командууд

#оруулах
const байт _num_chars = 32;
char _ хүлээн авсан_чар [_нум_чарс]; // хүлээн авсан өгөгдлийг хадгалах массив
boolean _has_new_data = худал;
voidsetup () {
Цуваа эхлэх (9600);
Serial.println ();
Serial.println ("IOT ACTOR/SENSOR EEPROM EDITOR ASSIMILATE");
Serial.println ("консолын цонхонд шинэ мөрийг сонгосон эсэхийг баталгаажуулах");
Serial.println ();
Serial.println ("ADDRESS 1 METADATA RECEIPT N/A (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;
for (байт хаяг = 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) {
_ хүлээн авсан_чарс [ndx] = rc;
ndx ++;
хэрэв (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
өөр {
_ хүлээн авсан_чарс [ndx] = '\ 0'; // мөрийг зогсоох
ndx = 0;
_has_new_data = үнэн;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String хүлээн авсан_ мөр = String (хүлээн авсан_чарс);
хэрэв (_has_new_data == үнэн) {
int idx1 = хүлээн авсан_стринг.indexOf ('');
String хаяг = хүлээн авсан_мөр.субстринг (0, idx1);
int address_int = address.toInt ();
if (address_int <8 || address_int> 127) {
Serial.println ("ХҮРГҮЙ ХАЯГЫН ОРОЛЦОО:");
Serial.println (хаяг);
буцах;
}
int idx2 = хүлээн авсан_стринг.indexOf ('', idx1+1);
String код;
хэрэв (idx2 == -1) {
код = хүлээн авсан_мөр.субстринг (idx1+1);
} өөр {
код = хүлээн авсан_мөр.субстринг (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;
String параметр;
if (has_parameter) {
параметр = хүлээн авсан_мөр.субстринг (idx2 + 1, idx2 + 17); // хамгийн ихдээ 16 тэмдэгт
if (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LENGTH 1");
_has_new_data = худал;
буцах;
}
} өөр {
хэрэв (code_int> 1) {
Serial.println ("PARAMETER REUUIRED!");
_has_new_data = худал;
буцах;
}
}
Serial.println ();
Serial.print ("оролтын ориг =");
Serial.println (хүлээн авсан_ мөр);
Serial.print ("хаяг =");
Serial.println (хаяг);
Serial.print ("код =");
Serial.println (код);
Serial.print ("параметр =");
Serial.println (параметр);
// I2C -ээр илгээх
Wire.beginTransmission (address_int);
Wire.write (code_int);
if (has_parameter) {
параметр.trim ();
strcpy (param_buf, parameter.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("I2C -ээр илгээгдсэн!");
Serial.println ();
Serial.println ("");
_has_new_data = худал;
}
}

GitHub -ийн ❤ дээр зохион байгуулагдсан rawuno_i2c_command_input.ino -г үзэх

Алхам 5: Дараагийн алхамууд

Дараагийн алхмууд
Дараагийн алхмууд
Дараагийн алхмууд
Дараагийн алхмууд
Дараагийн алхмууд
Дараагийн алхмууд
Дараагийн алхмууд
Дараагийн алхмууд

Энэхүү тоосгоныг ашигладаг ASSIMILATE ACTOR: 2CH RELAY нь ATTINY85 дээр аль хэдийн суулгасан мета өгөгдлөөр Crouton-ийн автомат тохиргоог хийсэн болно. Crouton руу илгээсэн JSON пакетыг ICOS10 -ийн хамгийн сүүлийн үеийн програм хангамжаар дамжуулан илгээдэг. Хэрэв та одоохондоо хэтэрхий их бүтэцтэй бол энгийн ESP8266 дээр үзэл баримтлалын нотолгоо хийж болно.

Туршилтанд ашигласан UNO ноорог нь таны зорилтот I2C автобусанд мөргөлдөөн гарсан тохиолдолд ATTINY85 дээр EEPROM руу шинэ боолын хаягийг хадгалах функцтэй. Хэд хэдэн схемийг нэмж оруулсан боловч таны хүсч буй зүйлээс хамаарч доош гүйдлийн хэлхээг холбох янз бүрийн арга байдаг тул би үүнийг танд үлдээх болно:)

Зөвлөмж болгож буй: