Innehållsförteckning:

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

Video: IOT123 - I2C BRICK MASTER JIG: 4 steg

Video: IOT123 - I2C BRICK MASTER JIG: 4 steg
Video: 100 Ways To Use A LEGO Brick Separator... 2024, December
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

Medan jag utvecklar ASSIMILATE SENSORS och ACTORS, håller jag en UNO till hands för att skicka adhoc I2C -kommandon till prototyperna som utvecklas. En av fördelarna med I2C BRICKS är de standardiserade pinoutsna. Istället för att använda brödbrädetrådar varje gång (se Fritzings) används en robust lo-tech-sköld.

Steg 1: Material och verktyg

Material och verktyg
Material och verktyg
Material och verktyg
Material och verktyg
Material och verktyg
Material och verktyg
Material och verktyg
Material och verktyg
  1. 4cm x 6cm Uninersal PCB (1)
  2. Anslutningstråd (~ 6)
  3. 4K7 -motstånd (2) 6
  4. Manlig huvud (12P, 8P)
  5. Kvinnlig rubrik (9P eller 3P, 3P)
  6. Löd och järn (1)

Steg 2: Montering

hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning

Om du använder 2 av 3P kvinnliga headers istället för 1 off 9P kvinnliga header, passar ASSIMILATE SENSOR/ACTORS på JIG utan att demontera dem.

Med ledningarna, ta av upp till 10 mm på ändarna och tina ändarna.

  1. På undersidan av kretskortet sätter du in hanrubriken (1) (2) och löds av ovanpå.
  2. På toppen av kretskortet, sätt in honhuvudet (3) och löd av på undersidan.
  3. På toppen, genomgående hål en röd tråd i RÖD1 och RÖD2.
  4. På botten, genomgående håltråd från RÖD1 till RÖD3.
  5. På botten, genomgående håltråd från RED2 till RED5 och löd.
  6. På toppen, genomgående håltråd från RED3 till RED4, och löd.
  7. På toppen, genomgående hål en röd tråd till RED6 och RED7.
  8. På botten, genomgående håltråd från RED6 till RED8.
  9. På botten, genomgående håltråd från RED7 till RED10 och löd.
  10. På toppen, genomgående håltråd från RED8 till RED9, och löd.
  11. På toppen, genomgående hål en svart tråd i SVART1 och SVART2.
  12. På botten, genomgående håltråd från SVART1 till SVART3.
  13. På botten, genomgående håltråd från BLACK2 till BLACK5 och löd.
  14. På toppen, genomgående håltråd från BLACK3 till BLACK4 och löd.
  15. På toppen, genomgående hål en blå tråd i BLÅ1 och BLÅ2.
  16. På botten, genomgående håltråd från BLUE1 till BLUE3.
  17. På botten, genomgående håltråd från BLUE2 till BLUE5 och löd.
  18. På toppen, genomgående håltråd från BLUE3 till BLUE4 och löd.
  19. På toppen, genomgående hål en grön tråd in i GRÖN1 och GRÖN2.
  20. På botten, genomgående håltråd från GREEN1 till GREEN3.
  21. På botten, genomgående håltråd från GREEN2 till GREEN5 och löd.
  22. På toppen, genomgående håltråd från GREEN3 till GREEN4 och löd.
  23. På toppen, genomgående hål ett 4K7-motstånd i SILVER3 och SILVER4.
  24. På botten, genomgående håltråd från SILVER3 till GREEN5 och löd.
  25. På botten, genomgående håltråd från SILVER4 till RED10, och löd.
  26. På toppen, genomgående hål ett 4K7-motstånd i SILVER1 och SILVER2.
  27. På botten, genomgående håltråd från SILVER1 till BLUE5 och löd.
  28. På botten, genomgående håltråd från SILVER2 till RED10 och löd.

Steg 3: Kod för UNO

Kod för UNO
Kod för UNO

Skissen här är rudimentär. Det låter dig använda konsolens ingång för att få UNO att skicka I2C -meddelanden till I2C ATTINY85 BRICK.

Alla instruktioner skrivs ut på skärmen, med de alternativ som stöds.

I2C BRICK adhoc -kommandon för slavar från UNO master

#omfatta
const byte _num_chars = 32;
char _received_chars [_num_chars]; // en array för att lagra mottagen data
booleska _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASSIMILATE IOT ACTOR/SENSOR EEPROM EDITOR");
Serial.println ("se till att ny rad har valts i konsolfönstret");
Serial.println ();
Serial.println ("ADRESS 1 CONFIRM METADATA RECEIPT N/A (FOR M2M)");
Serial.println ("ADRESS 2 ACTOR COMMAND");
Serial.println ();
Serial.println ("ADRESSES ON BUS:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
för (byte -adress = 8; adress <127; adress ++)
{
Wire.beginTransmission (adress);
const byte error = Wire.endTransmission ();
om (fel == 0)
{
Serial.println (adress);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
statisk byte ndx = 0;
char end_marker = '\ n';
röding;
medan (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
if (rc! = end_marker) {
_received_chars [ndx] = rc;
ndx ++;
if (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
annat {
_received_chars [ndx] = '\ 0'; // avsluta strängen
ndx = 0;
_has_new_data = true;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String received_string = String (_received_chars);
om (_has_new_data == true) {
int idx1 = received_string.indexOf ('');
String address = received_string.substring (0, idx1);
int address_int = address.toInt ();
if (address_int <8 || address_int> 127) {
Serial.println ("OGILTIG ADRESSINGÅNG:");
Serial.println (adress);
lämna tillbaka;
}
int idx2 = received_string.indexOf ('', idx1+1);
Strängkod;
om (idx2 == -1) {
kod = mottagen_sträng.substräng (idx1+1);
}annan{
kod = mottagen_sträng.substräng (idx1+1, idx2+1);
}
int code_int = code.toInt ();
if (code_int <0 || code_int> 5) {
Serial.println ("INGÅNG KODINGÅNG:");
Serial.println (kod);
lämna tillbaka;
}
bool has_parameter = idx2> -1;
Strängparameter;
if (has_parameter) {
parameter = received_string.substring (idx2 + 1, idx2 + 17); // 16 tecken max
if (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LÄNGD 1");
_has_new_data = false;
lämna tillbaka;
}
}annan{
om (code_int> 1) {
Serial.println ("PARAMETER KRÄVS!");
_has_new_data = false;
lämna tillbaka;
}
}
Serial.println ();
Serial.print ("input orig =");
Serial.println (mottagen_sträng);
Serial.print ("address =");
Serial.println (adress);
Serial.print ("kod =");
Serial.println (kod);
Serial.print ("parameter =");
Serial.println (parameter);
// SKICKA VIA 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 ("SKICKAD VIA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = false;
}
}

visa rawuno_i2c_command_input.ino värd med ❤ av GitHub

Steg 4: Nästa steg

Från de presenterade byggnaderna finns det tillräckligt med rörliga delar för att du ska kunna bygga ditt eget ASSIMILATE IOT NETWORK.

Var och en av nodernas individuella funktioner (sensorer och aktörer) kan styras på ett decentraliserat sätt, inte beroende på att MCU -mastern har någon kunskap om de funktioner som stöds.

Varje app som ansluter till MQTT -mäklaren kan styra/observera alla funktioner i IOT -noden. Det är M2M, webbapplikationer, IFTTT och så vidare. Mycket enklare (eller rikare om du vill) gränssnitt till din IOT -värld.

Rekommenderad: