Innholdsfortegnelse:

IOT123 - I2C BRICK MASTER JIG: 4 trinn
IOT123 - I2C BRICK MASTER JIG: 4 trinn

Video: IOT123 - I2C BRICK MASTER JIG: 4 trinn

Video: IOT123 - I2C BRICK MASTER JIG: 4 trinn
Video: I Broke Every LEGO RULE In 24 Hours... 2024, November
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

Mens jeg utvikler ASSIMILATE SENSORS og ACTORS, holder jeg en UNO hendig for å sende adhoc I2C -kommandoer til prototypene som utvikles. En av fordelene med I2C BRICKS er de standardiserte pinoutene. I stedet for å bruke brødbrettledninger hver gang (se Fritzings), brukes et solid lo-tech-skjold.

Trinn 1: Materialer og verktøy

Materialer og verktøy
Materialer og verktøy
Materialer og verktøy
Materialer og verktøy
Materialer og verktøy
Materialer og verktøy
Materialer og verktøy
Materialer og verktøy
  1. 4cm x 6cm Uninersal PCB (1)
  2. Tilkoblingskabel (~ 6)
  3. 4K7 -motstander (2) 6
  4. Mannlig overskrift (12P, 8P)
  5. Kvinnehode (9P eller 3P, 3P)
  6. Lodde og jern (1)

Trinn 2: Montering

montering
montering
montering
montering
montering
montering

Hvis du bruker 2 av 3P kvinnelige topptekster i stedet for 1 av 9P kvinnelige topptekst, passer ASSIMILATE SENSOR/ACTORS på JIG uten å demontere dem.

Med ledningene fjerner du opptil 10 mm på endene og tenner selve endene.

  1. Sett inn hanhodet (1) (2) på bunnen av kretskortet og loddet av på toppen.
  2. På toppen av kretskortet setter du inn hunhodet (3) og loddes av på bunnen.
  3. På toppen, gjennom hullet en rød ledning til RØD1 og RØD2.
  4. På bunnen, gjennomgående hulltråd fra RØD1 til RØD3.
  5. På bunnen, gjennomgående hulltråd fra RED2 til RED5, og loddetinn.
  6. På toppen, gjennomgående hulltråd fra RED3 til RED4, og loddetinn.
  7. På toppen, gjennom hullet en rød ledning til RØD6 og RØD7.
  8. På bunnen, gjennomgående hulltråd fra RED6 til RED8.
  9. På bunnen, gjennomgående hulltråd fra RED7 til RED10, og loddetinn.
  10. På toppen, gjennomgående hulltråd fra RED8 til RED9, og loddetinn.
  11. På toppen, gjennom hullet en svart ledning inn i SVART1 og SVART2.
  12. På bunnen, gjennomgående hulltråd fra SVART1 til SVART3.
  13. På bunnen, gjennomgående hulltråd fra BLACK2 til BLACK5, og loddetinn.
  14. På toppen, gjennomgående hulltråd fra BLACK3 til BLACK4, og loddetinn.
  15. På toppen, gjennom hullet en blå ledning til BLÅ1 og BLÅ2.
  16. På bunnen, gjennomgående hulltråd fra BLÅ1 til BLÅ3.
  17. På bunnen, gjennomgående hulltråd fra BLUE2 til BLUE5, og loddetinn.
  18. På toppen, gjennomgående hulltråd fra BLUE3 til BLUE4, og loddetinn.
  19. På toppen, gjennom hullet en grønn ledning til GREEN1 og GREEN2.
  20. På bunnen, gjennomgående hulltråd fra GREEN1 til GREEN3.
  21. På bunnen, gjennomgående hulltråd fra GREEN2 til GREEN5, og loddetinn.
  22. På toppen, gjennomgående hulltråd fra GREEN3 til GREEN4, og loddetinn.
  23. På toppen, gjennomgående hull en 4K7-motstand i SILVER3 og SILVER4.
  24. På bunnen, gjennomgående hulltråd fra SILVER3 til GREEN5, og loddetinn.
  25. På bunnen, gjennomgående hulltråd fra SILVER4 til RØD10, og loddetinn.
  26. På toppen, gjennom hullet en 4K7-motstand i SILVER1 og SILVER2.
  27. På bunnen, gjennomgående hulltråd fra SILVER1 til BLÅ5, og loddetinn.
  28. På bunnen, gjennomgående hulltråd fra SILVER2 til RØD10, og loddetinn.

Trinn 3: Kode for UNO

Kode for UNO
Kode for UNO

Skissen her er rudimentær. Den lar deg bruke konsollinngangen, for å få UNO til å sende I2C -meldinger til I2C ATTINY85 BRICK.

Alle instruksjonene skrives ut på skjermen, med de støttede alternativene.

I2C BRICK adhoc -kommandoer for slaver fra UNO master

#inkludere
const byte _num_chars = 32;
char _received_chars [_num_chars]; // en matrise for å lagre mottatte data
boolsk _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASSIMILATE IOT ACTOR/SENSOR EEPROM EDITOR");
Serial.println ("sikre ny linje valgt i konsollvindu");
Serial.println ();
Serial.println ("ADRESSE 1 BEKREFT METADATA -MOTTAK IKKE (FOR M2M)");
Serial.println ("ADDRESS 2 ACTOR COMMAND");
Serial.println ();
Serial.println ("ADRESSE ON BUS:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
for (byte adresse = 8; adresse <127; adresse ++)
{
Wire.beginTransmission (adresse);
const byte feil = Wire.endTransmission ();
hvis (feil == 0)
{
Serial.println (adresse);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
statisk byte ndx = 0;
char end_marker = '\ n';
røye rc;
mens (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
hvis (rc! = end_marker) {
_received_chars [ndx] = rc;
ndx ++;
hvis (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
annet {
_received_chars [ndx] = '\ 0'; // avslutt strengen
ndx = 0;
_has_new_data = true;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String received_string = String (_received_chars);
hvis (_has_new_data == true) {
int idx1 = received_string.indexOf ('');
String address = received_string.substring (0, idx1);
int address_int = address.toInt ();
hvis (address_int <8 || address_int> 127) {
Serial.println ("Ugyldig adresseinngang:");
Serial.println (adresse);
komme tilbake;
}
int idx2 = received_string.indexOf ('', idx1+1);
Strengkode;
hvis (idx2 == -1) {
code = received_string.substring (idx1+1);
}ellers{
code = received_string.substring (idx1+1, idx2+1);
}
int code_int = code.toInt ();
hvis (code_int <0 || code_int> 5) {
Serial.println ("UGyldig KODE -INNGANG:");
Serial.println (kode);
komme tilbake;
}
bool has_parameter = idx2> -1;
String parameter;
hvis (har_parameter) {
parameter = received_string.substring (idx2 + 1, idx2 + 17); // 16 tegn maks
hvis (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LENGDE 1");
_has_new_data = false;
komme tilbake;
}
}ellers{
hvis (code_int> 1) {
Serial.println ("PARAMETER KREVES!");
_has_new_data = false;
komme tilbake;
}
}
Serial.println ();
Serial.print ("input orig =");
Serial.println (mottatt_streng);
Serial.print ("adresse =");
Serial.println (adresse);
Serial.print ("kode =");
Serial.println (kode);
Serial.print ("parameter =");
Serial.println (parameter);
// SEND VIA I2C
Wire.beginTransmission (address_int);
Wire.write (code_int);
hvis (har_parameter) {
parameter.trim ();
strcpy (param_buf, parameter.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("SENDT VIA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = false;
}
}

se rawuno_i2c_command_input.ino hostet av ❤ av GitHub

Trinn 4: Neste trinn

Fra byggene som presenteres, er det nok bevegelige deler til at du kan bygge ditt eget ASSIMILATE IOT NETWORK.

Hver av de enkelte funksjonene til nodene (sensorer og aktører) kan kontrolleres på en desentralisert måte, ikke avhengig av at MCU -masteren har kunnskap om funksjonene som støttes.

Enhver app som kobler seg til MQTT -megleren kan kontrollere/observere alle funksjoner i IOT -noden. Det er M2M, webapplikasjoner, IFTTT og så videre. Mye enklere (eller rikere hvis du vil) grensesnitt til din IOT -verden.

Anbefalt: