Мазмуну:

IOT123 - I2C BRICK MASTER JIG: 4 кадам
IOT123 - I2C BRICK MASTER JIG: 4 кадам

Video: IOT123 - I2C BRICK MASTER JIG: 4 кадам

Video: IOT123 - I2C BRICK MASTER JIG: 4 кадам
Video: How LEGO Minifigures are made 2024, Ноябрь
Anonim
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG

СЕНСОРЛОРДУ ЖАНА АКТОРЛОРДУ ЧАКЫРУУДА, мен иштеп жаткан прототиптерге adhoc I2C буйруктарын жөнөтүү үчүн UNOну колдо кармап турам. 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 -кадам: Ассамблея

Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея

Эгерде сиз 1 өчүрүүчү 9P аялдын башынын ордуна 2 өчүрүүчү 3P аял башын колдонсоңуз, 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. Төмөндө, BLUE1ден BLUE3ке чейинки тешик зым.
  17. Төмөндө BLUE2ден BLUE5ке чейин тешик аркылуу өткөрүлгөн зым жана ширетүү.
  18. Үстүндө BLUE3төн BLUE4ке чейин тешик аркылуу өткөрүлгөн зым жана ширетүүчү.
  19. Үстүндө жашыл зым GREEN1 жана GREEN2ге тешилет.
  20. Ылдый жагында GREEN1ден GREEN3ге чейин тешик зым.
  21. Төмөндө, GREEN2ден GREEN5ге чейин тешик аркылуу өткөрүлгөн зым жана ширетүү.
  22. Үстүндө GREEN3төн GREEN4ге чейин тешик аркылуу өткөрүлгөн зым жана ширетүүчү.
  23. Үстүндө, SILVER3 жана SILVER4 ичине тешик аркылуу 4K7 каршылыгы.
  24. Төмөндө, SILVER3төн GREEN5ге тешик аркылуу өткөрүлгөн зым жана ширетүүчү.
  25. Ылдыйда, SILVER4тен RED10га тешилген зым жана ширетүүчү.
  26. Үстүнкү жагында, SILVER1 жана SILVER2ге 4K7 каршылыгы аркылуу тешилет.
  27. Төмөндө, SILVER1ден BLUE5ге тешик аркылуу өткөрүлгөн зым жана ширетүү.
  28. Төмөндө, SILVER2ден RED10га тешик аркылуу өткөрүлгөн зым жана ширетүү.

3 -кадам: БУУнун коду

БУУнун коду
БУУнун коду

Бул жерде эскиз жөнөкөй. Бул БУУнун I2C ATTINY85 BRICKке I2C билдирүүлөрдү жөнөтүүсүн камсыз кылуу үчүн Консоль Киргизүүсүн колдонууга мүмкүнчүлүк берет.

Бардык көрсөтмөлөр колдоого алынган параметрлер менен экранда басылып чыгат.

UNO кожоюнунун кулдары үчүн I2C BRICK adhoc буйруктары

#кошуу
const байт _num_chars = 32;
char _received_chars [_num_chars]; // алынган маалыматтарды сактоо үчүн массив
логикалык _has_new_data = жалган;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("IOT ACTOR/SENSOR EEPROM EDITOR СОНУН");
Serial.println ("консоль терезесинде жаңы сызыктын тандалышын камсыз кылуу");
Serial.println ();
Serial.println ("ADRESS 1 METADATA RECEIPT N/A (M2M ҮЧҮН) ЫРАСТАНДЫ");
Serial.println ("АДРЕС 2 АКТОР КОМАНДАСЫ");
Serial.println ();
Serial.println ("АВТОБУСТАГЫ АДРЕСТЕР:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
үчүн (байт дареги = 8; дарек <127; дарек ++)
{
Wire.beginTrmission (дарек);
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 ++;
эгер (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
башка {
_received_chars [ndx] = '\ 0'; // сапты токтотуу
ndx = 0;
_has_new_data = чындык;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String алынды_сап = Стринг (_received_chars);
эгер (_has_new_data == true) {
int idx1 = алынды_string.indexOf ('');
Стринг дареги = алынды_string.substring (0, idx1);
int address_int = address.toInt ();
эгер (address_int <8 || address_int> 127) {
Serial.println ("ЖАРАКСЫЗ АДРЕС КИРИШИ:");
Serial.println (дареги);
кайтуу;
}
int idx2 = алынды_string.indexOf ('', idx1+1);
Стринг коду;
эгер (idx2 == -1) {
код = алынды_стринг.substring (idx1+1);
} башка {
код = алынды_стринг.substring (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 parameter;
if (has_parameter) {
параметр = алынды_сап.substring (idx2 + 1, idx2 + 17); // максимум 16 тамга
if (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LENGTH 1");
_has_new_data = жалган;
кайтуу;
}
} башка {
эгер (code_int> 1) {
Serial.println ("ПАРАМЕТР КЕРЕК!");
_has_new_data = жалган;
кайтуу;
}
}
Serial.println ();
Serial.print ("input orig =");
Serial.println (алынган_сап);
Serial.print ("дарек =");
Serial.println (дареги);
Serial.print ("код =");
Serial.println (код);
Serial.print ("parameter =");
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 = жалган;
}
}

GitHub тарабынан ❤ уюштурулган rawuno_i2c_command_input.ino караңыз

4 -кадам: Кийинки кадамдар

Көрсөтүлгөн конструкциялардан, сиз өзүңүздүн IOT NETWORK ASSIMILATE IOT NETWORKту курууга жетиштүү кыймылдуу бөлүктөрү бар.

Түйүндөрдүн ар бир жеке функциялары (сенсорлор жана актерлор) борборлоштурулган тартипте башкарылат, MCU чебери колдоого алынган өзгөчөлүктөр жөнүндө эч кандай маалыматка ээ эмес.

MQTT брокерине туташкан ар кандай колдонмо IOT түйүнүнүн ар бир өзгөчөлүгүн көзөмөлдөй алат/байкай алат. Бул M2M, веб -тиркемелер, IFTTT ж.б. IOT дүйнөңүзгө бир топ жөнөкөй (же кааласаңыз бай) интерфейстер.

Сунушталууда: