Indholdsfortegnelse:
Video: IOT123 - I2C BRICK MASTER JIG: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
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
- 4cm x 6cm Uninersal PCB (1)
- Tilslutningstråd (~ 6)
- 4K7 modstande (2) 6
- Male Header (12P, 8P)
- Kvindehoved (9P eller 3P, 3P)
- Lodde og jern (1)
Trin 2: Montering
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.
- I bunden af printkortet indsættes hanhovedet (1) (2) og loddes af ovenpå.
- På toppen af printkortet indsættes hunhovedet (3) og loddes af på bunden.
- På toppen, gennemgående hul en rød ledning til RØD1 og RØD2.
- I bunden gennemgående hultråd fra RØD1 til RØD3.
- På bunden, gennemgående hultråd fra RED2 til RED5 og lodning.
- På toppen, gennemgående hultråd fra RED3 til RED4, og loddetin.
- På toppen, gennemgående hul en rød ledning til RØD6 og RØD7.
- På bunden, gennemgående hultråd fra RED6 til RED8.
- I bunden gennemgående hultråd fra RØD7 til RØD10 og lodning.
- På toppen, gennemgående hultråd fra RØD8 til RØD9 og lodning.
- På toppen, gennemgående hul en sort ledning ind i SORT1 og SORT2.
- I bunden gennemgående hultråd fra BLACK1 til BLACK3.
- I bunden gennemgående hultråd fra BLACK2 til BLACK5 og lodning.
- På toppen, gennemgående hultråd fra BLACK3 til BLACK4 og lodning.
- På toppen, gennemgående hul en blå ledning ind i BLÅ1 og BLÅ2.
- I bunden, gennemgående hultråd fra BLUE1 til BLUE3.
- På bunden, gennemgående hultråd fra BLUE2 til BLUE5 og lodning.
- På toppen, gennemgående hultråd fra BLUE3 til BLUE4 og lodning.
- På toppen, gennemgående hul en grøn ledning ind i GRØN1 og GRØN2.
- På bunden gennemgående hultråd fra GRØN1 til GRØN3.
- På bunden, gennemgående hultråd fra GREEN2 til GREEN5 og lodning.
- På toppen, gennemgående hultråd fra GREEN3 til GREEN4 og lodning.
- På toppen, gennemgående hul en 4K7-modstand i SILVER3 og SILVER4.
- På bunden gennemgående hultråd fra SILVER3 til GRØN5 og loddetin.
- På bunden gennemgående hultråd fra SILVER4 til RØD10 og lodning.
- På toppen, gennemgående hul en 4K7-modstand i SILVER1 og SILVER2.
- På bunden gennemløbstråd fra SILVER1 til BLUE5 og lodning.
- På bunden gennemgående hultråd fra SILVER2 til RØD10 og loddetin.
Trin 3: 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:
SMD Test Jig: 3 trin
SMD Test Jig: SMD'er er gode, når du vænner dig til dem, men deres lille størrelse gør dem svære at teste. Jeg begyndte at høste brugte SMD'er fra gamle printkort for et par år siden. Gratis komponenter, yay! Men så er der problemet med at sortere dem og finde
Klik på Brick Switch til Makey Makey: 4 trin (med billeder)
Klik på Brick Switch til Makey Makey: Denne 3D -printede switch giver brugeren mulighed for at gøre en Makey Makey til et " finger slide " for et " klik " i spil eller kan være højre/venstre pile for at rulle gennem præsentationer. Tilføjelsen af højre og venstre terminalbeslag til
IOT123 - 3.3V POWER BRICK: 4 trin
IOT123 - 3.3V POWER BRICK: IOT123 BRICKS er DIY modulære enheder, der kan moses sammen med andre IOT123 BRICKS, for at tilføje funktionalitet til en node eller bærbar. De er baseret på tommer firkantede, dobbeltsidede protoboards med indbyrdes forbundne huller. Selvom instruktionen
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: 4 trin
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: UPDATE: Denne opsætning er stort set akademisk eller en base for test af software/strømforsyning. Selv når PB5 er deaktiveret som RESET, læser den ikke værdier nøjagtigt ved hjælp af analogRead: det vigtigste anvendelsesmulighed for sensoraflæsninger. Vil undersøge opsætningen af ATTINY84
IOT123 - ATTINY85 SOFTWARE SERIAL JIG Assembly: 4 trin
IOT123 - ATTINY85 SOFTWARE SERIAL JIG Assembly: Jeg har brugt ATTINY85'er til laveffektsensor mashups. Oprindeligt troede jeg, at der ikke var nogen måde at fejlsøge disse chips ved hjælp af en konsol og brugte nogle smukke " derude " metoder til at kigge på, hvad der sker i løbetid. Så stødte jeg på SoftwareSeria