Съдържание:
Видео: IOT123 - I2C тухлен майстор JIG: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Докато разработвам АСИМИЛАЦИОННИ СЕНЗОРИ И АКТОРИ, аз държа UNO удобен за изпращане на adhoc I2C команди към прототипите, които се разработват. Едно от предимствата на I2C BRICKS са стандартизираните изводи. Вместо всеки път да се използват проводници (вижте Fritzings), се използва здрав ло-технологичен щит.
Стъпка 1: Материали и инструменти
- 4cm x 6cm Uninersal PCB (1)
- Свързващ проводник (~ 6)
- 4K7 резистори (2) 6
- Мъжко заглавие (12P, 8P)
- Женска заглавка (9P или 3P, 3P)
- Припой и желязо (1)
Стъпка 2: Монтаж
Ако използвате 2 изключени 3P женски заглавки вместо 1 off 9P женска, ASSIMILATE SENSOR/ACTORS ще се поберат на JIG, без да ги разглобявате.
С окабеляването отстранете до 10 мм от краищата и оловете самите краища.
- В долната част на печатната платка поставете мъжкия хедър (1) (2) и го запояйте отгоре.
- В горната част на печатната платка поставете женската глава (3) и спойнете отдолу.
- Отгоре прокарайте червен проводник в RED1 и RED2.
- На дъното, проводник през червено от RED1 в RED3.
- На дъното, проводник през RED2 в RED5, и спойка.
- Отгоре, проводник през червено от RED3 в RED4, и спойка.
- Отгоре прокарайте червен проводник в RED6 и RED7.
- На дъното, проводник през червено от RED6 в RED8.
- На дъното, проводник през RED7 в RED10, и спойка.
- Най-отгоре, проводник през RED8 в RED9, и спойка.
- Отгоре пробийте черен проводник в BLACK1 и BLACK2.
- На дъното, проводник през отвор от BLACK1 в BLACK3.
- На дъното, проводник през отвор от BLACK2 в BLACK5 и спойка.
- Отгоре, проводник през отвор от BLACK3 в BLACK4 и запояване.
- Отгоре пробийте синя жица в BLUE1 и BLUE2.
- На дъното, проводник през отвора от СИН1 в СИН3.
- Отдолу проводник през отвор от СИН2 в СИН5 и спойка.
- Отгоре, проводник през отвор от СИН3 в СИН4, и спойка.
- Отгоре пробийте зелен проводник в GREEN1 и GREEN2.
- На дъното, проводник през отвор от ЗЕЛЕН1 в ЗЕЛЕН3.
- На дъното, проводник през отвор от GREEN2 в GREEN5 и спойка.
- Отгоре, проводник през GREEN3 в GREEN4, и спойка.
- Отгоре пробийте 4K7 резистор в SILVER3 и SILVER4.
- На дъното, проводник през отвор от SILVER3 в GREEN5 и спойка.
- На дъното, проводник през отвор от SILVER4 в RED10 и спойка.
- Отгоре пробийте 4K7 резистор в SILVER1 и SILVER2.
- На дъното, проводник през отвор от SILVER1 в BLUE5 и спойка.
- Отдолу проводник през отвор от SILVER2 в RED10 и спойка.
Стъпка 3: Код за 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 свят.
Препоръчано:
Щракнете върху Тухлен превключвател за Makey Makey: 4 стъпки (със снимки)
Щракнете върху Тухлен превключвател за Makey Makey: Този 3D отпечатан превключвател ще позволи на потребителя да превърне Makey Makey в „слайд за пръст“за " щракване " в игри или може да бъде стрелка надясно/наляво за превъртане през презентации. Добавянето на десен и ляв монтаж на клеми за
IOT123 - D1M БЛОК - 2xAMUX Монтаж: 7 стъпки (със снимки)
IOT123 - D1M БЛОК - 2xAMUX Монтаж: D1M BLOCKS добавят тактилни калъфи, етикети, водачи за полярност и пробиви за популярните Wemos D1 Mini SOC/щитове/клонинги. Един от проблемите с чипа ESP8266 е, че има само един аналогов IO пин. Тази инструкция показва как да сглобите 2xA
IOT123 - D1M БЛОК - RFTXRX Монтаж: 8 стъпки
IOT123 - D1M БЛОК - RFTXRX Монтаж: D1M BLOCKS добавят тактилни калъфи, етикети, водачи за полярност и пробиви за популярните Wemos D1 Mini SOC/щитове/клонинги. RF предаватели/приемници позволяват на ESP8266 достъп до съществуваща домашна/индустриална автоматизация. Този корпус осигурява пробиви за 433
IOT123 - D1M БЛОК - GY521 Монтаж: 8 стъпки
IOT123 - D1M BLOCK - GY521 Монтаж: D1M BLOCKS добавят тактилни калъфи, етикети, водачи за полярност и пробиви за популярните Wemos D1 Mini SOC/щитове/клонинги. Този D1M БЛОК дава лесно свързване между Wemos D1 Mini и модула GY-521 (щифтовете за адрес и прекъсване могат да бъдат закачени
IOT123 - D1M БЛОК - ADXL345 Монтаж: 8 стъпки
IOT123 - D1M BLOCK - ADXL345 Монтаж: D1M BLOCKS добавят тактилни калъфи, етикети, водачи за полярност и пробиви за популярните Wemos D1 Mini SOC/щитове/клонинги. Този D1M БЛОК дава просто свързване между Wemos D1 Mini и модула за акселерометър ADXL345. Моята първоначална мотивация за развитие