Indholdsfortegnelse:

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

Video: IOT123 - I2C BRICK MASTER JIG: 4 trin

Video: IOT123 - I2C BRICK MASTER JIG: 4 trin
Video: How LEGO Minifigures are made 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 udvikler ASSIMILATE SENSORS og ACTORS, holder jeg en UNO praktisk til at sende adhoc I2C -kommandoer til de prototyper, der udvikles. En af fordelene ved I2C BRICKS er de standardiserede pinouts. I stedet for at bruge brødbrætstråde hver gang (se Fritzings) bruges et robust lo-tech-skjold.

Trin 1: Materialer og værktøjer

Materialer og værktøjer
Materialer og værktøjer
Materialer og værktøjer
Materialer og værktøjer
Materialer og værktøjer
Materialer og værktøjer
Materialer og værktøjer
Materialer og værktøjer
  1. 4cm x 6cm Uninersal PCB (1)
  2. Tilslutningstråd (~ 6)
  3. 4K7 modstande (2) 6
  4. Male Header (12P, 8P)
  5. Kvindehoved (9P eller 3P, 3P)
  6. Lodde og jern (1)

Trin 2: Montering

montage
montage
montage
montage
montage
montage

Hvis du bruger 2 off 3P kvindelige header i stedet for 1 off 9P kvindelige header, passer ASSIMILATE SENSOR/ACTORS på JIG'en uden at adskille dem.

Med ledningerne skal du fjerne op til 10 mm på enderne og tin selve enderne.

  1. I bunden af printkortet indsættes hanhovedet (1) (2) og loddes af ovenpå.
  2. På toppen af printkortet indsættes hunhovedet (3) og loddes af på bunden.
  3. På toppen, gennemgående hul en rød ledning til RØD1 og RØD2.
  4. I bunden gennemgående hultråd fra RØD1 til RØD3.
  5. På bunden, gennemgående hultråd fra RED2 til RED5 og lodning.
  6. På toppen, gennemgående hultråd fra RED3 til RED4, og loddetin.
  7. På toppen, gennemgående hul en rød ledning til RØD6 og RØD7.
  8. På bunden, gennemgående hultråd fra RED6 til RED8.
  9. I bunden gennemgående hultråd fra RØD7 til RØD10 og lodning.
  10. På toppen, gennemgående hultråd fra RØD8 til RØD9 og lodning.
  11. På toppen, gennemgående hul en sort ledning ind i SORT1 og SORT2.
  12. I bunden gennemgående hultråd fra BLACK1 til BLACK3.
  13. I bunden gennemgående hultråd fra BLACK2 til BLACK5 og lodning.
  14. På toppen, gennemgående hultråd fra BLACK3 til BLACK4 og lodning.
  15. På toppen, gennemgående hul en blå ledning ind i BLÅ1 og BLÅ2.
  16. I bunden, gennemgående hultråd fra BLUE1 til BLUE3.
  17. På bunden, gennemgående hultråd fra BLUE2 til BLUE5 og lodning.
  18. På toppen, gennemgående hultråd fra BLUE3 til BLUE4 og lodning.
  19. På toppen, gennemgående hul en grøn ledning ind i GRØN1 og GRØN2.
  20. På bunden gennemgående hultråd fra GRØN1 til GRØN3.
  21. På bunden, gennemgående hultråd fra GREEN2 til GREEN5 og lodning.
  22. På toppen, gennemgående hultråd fra GREEN3 til GREEN4 og lodning.
  23. På toppen, gennemgående hul en 4K7-modstand i SILVER3 og SILVER4.
  24. På bunden gennemgående hultråd fra SILVER3 til GRØN5 og loddetin.
  25. På bunden gennemgående hultråd fra SILVER4 til RØD10 og lodning.
  26. På toppen, gennemgående hul en 4K7-modstand i SILVER1 og SILVER2.
  27. På bunden gennemløbstråd fra SILVER1 til BLUE5 og lodning.
  28. På bunden gennemgående hultråd fra SILVER2 til RØD10 og loddetin.

Trin 3: Kode for UNO

Kode for UNO
Kode for UNO

Skitsen her er rudimentær. Det giver dig mulighed for at bruge konsolindgangen til at få UNO til at sende I2C -meddelelser til I2C ATTINY85 BRICK.

Alle instruktioner udskrives på skærmen med de understøttede muligheder.

I2C BRICK adhoc -kommandoer til slaver fra UNO master

#omfatte
const byte _num_chars = 32;
char _received_chars [_num_chars]; // en matrix til lagring af de modtagne data
boolsk _has_new_data = falsk;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASSIMILATE IOT ACTOR/SENSOR EEPROM EDITOR");
Serial.println ("sikre ny linje valgt i konsolvindue");
Serial.println ();
Serial.println ("ADRESSE 1 BEKRÆFTELSE METADATA MODTAGELSE IKKE (FOR M2M)");
Serial.println ("ADDRESS 2 ACTOR COMMAND");
Serial.println ();
Serial.println ("ADRESSER PÅ 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 fejl = Wire.endTransmission ();
hvis (fejl == 0)
{
Serial.println (adresse);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
statisk byte ndx = 0;
char end_marker = '\ n';
char 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;
}
}
andet {
_received_chars [ndx] = '\ 0'; // afslut 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 = modtaget_string.indexOf ('');
Strengadresse = modtaget_streng.substreng (0, idx1);
int address_int = address.toInt ();
hvis (address_int <8 || address_int> 127) {
Serial.println ("UGyldig ADRESSE -INDGANG:");
Serial.println (adresse);
Vend tilbage;
}
int idx2 = modtaget_string.indexOf ('', idx1+1);
String kode;
hvis (idx2 == -1) {
kode = modtaget_string.substring (idx1+1);
}andet{
kode = modtaget_streng.substreng (idx1+1, idx2+1);
}
int code_int = code.toInt ();
hvis (code_int <0 || code_int> 5) {
Serial.println ("UGyldig kodeindtastning:");
Serial.println (kode);
Vend tilbage;
}
bool has_parameter = idx2> -1;
String parameter;
hvis (har_parameter) {
parameter = modtaget_string.substring (idx2 + 1, idx2 + 17); // 16 tegn max
hvis (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LÆNGDE 1");
_has_new_data = falsk;
Vend tilbage;
}
}andet{
hvis (code_int> 1) {
Serial.println ("PARAMETER KRÆVES!");
_has_new_data = falsk;
Vend tilbage;
}
}
Serial.println ();
Serial.print ("input orig =");
Serial.println (modtaget_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 ("SENDET VIA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = falsk;
}
}

se rawuno_i2c_command_input.ino hostet af ❤ af GitHub

Trin 4: Næste trin

Fra de præsenterede builds er der nok bevægelige dele til, at du kan bygge dit eget ASSIMILATE IOT NETWORK.

Hver af de enkelte funktioner i noderne (sensorer og aktører) kan styres på en decentral måde, ikke afhængig af MCU -masteren for at have kendskab til de understøttede funktioner.

Enhver app, der opretter forbindelse til MQTT -mægleren, kan styre/observere alle funktioner i IOT -noden. Det er M2M, webapplikationer, IFTTT og så videre. Meget enklere (eller rigere, hvis du vil) grænseflader til din IOT -verden.

Anbefalede: