Съдържание:

IOT123 - I2C тухлен майстор JIG: 4 стъпки
IOT123 - I2C тухлен майстор JIG: 4 стъпки

Видео: IOT123 - I2C тухлен майстор JIG: 4 стъпки

Видео: IOT123 - I2C тухлен майстор JIG: 4 стъпки
Видео: I2C Communication | Detailed Tutorial | Arduino and NodeMCU ESP8266 2024, Декември
Anonim
IOT123 - I2C тухлен майстор JIG
IOT123 - I2C тухлен майстор JIG
IOT123 - I2C тухлен майстор JIG
IOT123 - I2C тухлен майстор JIG
IOT123 - I2C тухлен майстор JIG
IOT123 - I2C тухлен майстор JIG

Докато разработвам АСИМИЛАЦИОННИ СЕНЗОРИ И АКТОРИ, аз държа UNO удобен за изпращане на adhoc I2C команди към прототипите, които се разработват. Едно от предимствата на I2C BRICKS са стандартизираните изводи. Вместо всеки път да се използват проводници (вижте Fritzings), се използва здрав ло-технологичен щит.

Стъпка 1: Материали и инструменти

Материали и инструменти
Материали и инструменти
Материали и инструменти
Материали и инструменти
Материали и инструменти
Материали и инструменти
Материали и инструменти
Материали и инструменти
  1. 4cm x 6cm Uninersal PCB (1)
  2. Свързващ проводник (~ 6)
  3. 4K7 резистори (2) 6
  4. Мъжко заглавие (12P, 8P)
  5. Женска заглавка (9P или 3P, 3P)
  6. Припой и желязо (1)

Стъпка 2: Монтаж

Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж

Ако използвате 2 изключени 3P женски заглавки вместо 1 off 9P женска, ASSIMILATE SENSOR/ACTORS ще се поберат на JIG, без да ги разглобявате.

С окабеляването отстранете до 10 мм от краищата и оловете самите краища.

  1. В долната част на печатната платка поставете мъжкия хедър (1) (2) и го запояйте отгоре.
  2. В горната част на печатната платка поставете женската глава (3) и спойнете отдолу.
  3. Отгоре прокарайте червен проводник в RED1 и RED2.
  4. На дъното, проводник през червено от RED1 в RED3.
  5. На дъното, проводник през RED2 в RED5, и спойка.
  6. Отгоре, проводник през червено от RED3 в RED4, и спойка.
  7. Отгоре прокарайте червен проводник в RED6 и RED7.
  8. На дъното, проводник през червено от RED6 в RED8.
  9. На дъното, проводник през RED7 в RED10, и спойка.
  10. Най-отгоре, проводник през RED8 в RED9, и спойка.
  11. Отгоре пробийте черен проводник в BLACK1 и BLACK2.
  12. На дъното, проводник през отвор от BLACK1 в BLACK3.
  13. На дъното, проводник през отвор от BLACK2 в BLACK5 и спойка.
  14. Отгоре, проводник през отвор от BLACK3 в BLACK4 и запояване.
  15. Отгоре пробийте синя жица в BLUE1 и BLUE2.
  16. На дъното, проводник през отвора от СИН1 в СИН3.
  17. Отдолу проводник през отвор от СИН2 в СИН5 и спойка.
  18. Отгоре, проводник през отвор от СИН3 в СИН4, и спойка.
  19. Отгоре пробийте зелен проводник в GREEN1 и GREEN2.
  20. На дъното, проводник през отвор от ЗЕЛЕН1 в ЗЕЛЕН3.
  21. На дъното, проводник през отвор от GREEN2 в GREEN5 и спойка.
  22. Отгоре, проводник през GREEN3 в GREEN4, и спойка.
  23. Отгоре пробийте 4K7 резистор в SILVER3 и SILVER4.
  24. На дъното, проводник през отвор от SILVER3 в GREEN5 и спойка.
  25. На дъното, проводник през отвор от SILVER4 в RED10 и спойка.
  26. Отгоре пробийте 4K7 резистор в SILVER1 и SILVER2.
  27. На дъното, проводник през отвор от SILVER1 в BLUE5 и спойка.
  28. Отдолу проводник през отвор от SILVER2 в RED10 и спойка.

Стъпка 3: Код за UNO

Код за UNO
Код за UNO

Скицата тук е елементарна. Тя ви позволява да използвате конзолния вход, за да накарате UNO да изпраща I2C съобщения до I2C ATTINY85 BRICK.

Всички инструкции се отпечатват на екрана с поддържаните опции.

I2C BRICK adhoc команди за подчинени от UNO master

#включва
const байт _num_chars = 32;
char _received_chars [_num_chars]; // масив за съхраняване на получените данни
логически _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASSIMILATE IOT ACTOR/SENSOR EEPROM EDITOR");
Serial.println ("осигурете избрания нов ред в прозореца на конзолата");
Serial.println ();
Serial.println ("АДРЕС 1 ПОТВЪРДИ ПОЛУЧАВАНЕ НА МЕТАДАННИ Н/Д (ЗА M2M)");
Serial.println ("АДРЕС 2 АКТОРСКА КОМАНДА");
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 ();
if (rc! = end_marker) {
_received_chars [ndx] = rc;
ndx ++;
if (ndx> = _num_chars) {
ndx = _ брой_чарси - 1;
}
}
иначе {
_received_chars [ndx] = '\ 0'; // прекратяваме низа
ndx = 0;
_has_new_data = true;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const Низ получен_стринг = Низ (_received_chars);
if (_has_new_data == true) {
int idx1 = получен_стринг.indexOf ('');
Адрес на низ = получен_стринг.подстринг (0, idx1);
int address_int = address.toInt ();
if (address_int <8 || address_int> 127) {
Serial.println ("INVALID ADDRESS INPUT:");
Serial.println (адрес);
връщане;
}
int idx2 = получен_стринг.indexOf ('', idx1+1);
Код на низ;
ако (idx2 == -1) {
код = получен_стринг.подстринг (idx1+1);
} else {
код = получен_стринг.подстринг (idx1+1, idx2+1);
}
int code_int = code.toInt ();
if (code_int <0 || code_int> 5) {
Serial.println ("INVALID CODE INPUT:");
Serial.println (код);
връщане;
}
bool has_parameter = idx2> -1;
Низов параметър;
if (has_parameter) {
параметър = получен_стринг.подстринг (idx2 + 1, idx2 + 17); // 16 символа макс
if (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LENGTH 1");
_has_new_data = false;
връщане;
}
} else {
if (code_int> 1) {
Serial.println ("ИЗИСКВАН ПАРАМЕТЪР!");
_has_new_data = false;
връщане;
}
}
Serial.println ();
Serial.print ("input orig =");
Serial.println (получен_стринг);
Serial.print ("address =");
Serial.println (адрес);
Serial.print ("code =");
Serial.println (код);
Serial.print ("параметър =");
Serial.println (параметър);
// ИЗПРАЩАНЕ ЧРЕЗ I2C
Wire.beginTransmission (address_int);
Wire.write (code_int);
if (has_parameter) {
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 = false;
}
}

вижте rawuno_i2c_command_input.ino хоствано с ❤ от GitHub

Стъпка 4: Следващи стъпки

От представените компилации има достатъчно движещи се части, за да изградите своя собствена АСИМИЛИРУВАЩА МОЖЕТА МРЕЖА.

Всяка от отделните функции на възлите (сензори и актьори) може да се контролира по децентрализиран начин, без да зависи от главния MCU, за да има познания за поддържаните функции.

Всяко приложение, свързано с брокера MQTT, може да контролира/наблюдава всяка функция на възела IOT. Това е M2M, уеб приложения, IFTTT и така нататък. Много по -прости (или по -богати, ако искате) интерфейси към вашия IOT свят.

Препоръчано: