Sommario:
- Passaggio 1: materiali e strumenti
- Passaggio 2: assemblaggio
- Passaggio 3: codice per l'ONU
- Passaggio 4: passaggi successivi
Video: IOT123 - DIMA I2C BRICK MASTER: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Durante lo sviluppo di ASSIMILATE SENSORS e ACTORS, tengo a portata di mano un UNO per inviare comandi I2C ad hoc ai prototipi in fase di sviluppo. Uno dei vantaggi di I2C BRICKS è la piedinatura standardizzata. Piuttosto che usare ogni volta i fili della breadboard (vedi i Fritzings), viene utilizzato un robusto scudo lo-tech.
Passaggio 1: materiali e strumenti
- PCB inerziale 4 cm x 6 cm (1)
- Cavo di collegamento (~6)
- Resistori 4K7 (2)6
- Testata maschio (12P, 8P)
- Intestazione femmina (9P, o 3P, 3P)
- Saldare e Ferro (1)
Passaggio 2: assemblaggio
Se si utilizzano 2 connettori femmina 3P invece di 1 connettore femmina 9P, ASSIMILATE SENSOR/ACTORS si adatterà al JIG senza smontarli.
Con il cablaggio, spelare fino a 10 mm alle estremità e stagnare le estremità.
- Nella parte inferiore del PCB, inserire l'intestazione maschio (1)(2) e saldare sopra.
- Sulla parte superiore del PCB, inserire l'intestazione femmina (3) e saldare sul fondo.
- Sulla parte superiore, forare un filo rosso in RED1 e RED2.
- In basso, cavo passante da RED1 a RED3.
- In basso, filo passante da RED2 a RED5 e saldare.
- Sulla parte superiore, filo passante da RED3 a RED4 e saldare.
- Sulla parte superiore, forare un filo rosso in RED6 e RED7.
- In basso, cavo passante da RED6 a RED8.
- In basso, filo passante da RED7 a RED10 e saldare.
- Sulla parte superiore, filo passante da RED8 a RED9 e saldatura.
- In alto, forare un filo nero in BLACK1 e BLACK2.
- In basso, cavo passante da NERO1 a NERO3.
- In basso, filo passante da BLACK2 a BLACK5 e saldatura.
- Sulla parte superiore, filo passante da BLACK3 a BLACK4 e saldatura.
- Sulla parte superiore, forare un filo blu in BLUE1 e BLUE2.
- In basso, cavo passante da BLU1 a BLU3.
- In basso, filo passante da BLUE2 a BLUE5 e saldare.
- Sulla parte superiore, filo passante da BLUE3 a BLUE4 e saldare.
- Sulla parte superiore, forare un filo verde in VERDE1 e VERDE2.
- In basso, cavo passante da VERDE1 a VERDE3.
- In basso, filo passante da GREEN2 a GREEN5, e saldare.
- Sulla parte superiore, filo passante da GREEN3 a GREEN4 e saldare.
- Sulla parte superiore, foro passante un resistore 4K7 in SILVER3 e SILVER4.
- In basso, filo passante da SILVER3 a GREEN5 e saldare.
- In basso, filo passante da SILVER4 a RED10 e saldare.
- Sulla parte superiore, foro passante un resistore 4K7 in SILVER1 e SILVER2.
- Sul fondo, filo passante da SILVER1 a BLUE5 e saldare.
- In basso, filo passante da SILVER2 a RED10 e saldare.
Passaggio 3: codice per l'ONU
Lo schizzo qui è rudimentale. Consente di utilizzare l'ingresso della console, per fare in modo che l'UNO invii messaggi I2C all'I2C ATTINY85 BRICK.
Tutte le istruzioni vengono stampate sullo schermo, con le opzioni supportate.
I2C BRICK comandi ad hoc per gli slave dal master UNO
#includere |
const byte _num_chars = 32; |
char _caratteri_ricevuti[_num_caratteri]; // un array per memorizzare i dati ricevuti |
booleano _has_new_data = falso; |
voidsetup() { |
Serial.begin(9600); |
Serial.println(); |
Serial.println("ASSIMILA IOT ACTOR/SENSOR EEPROM EDITOR"); |
Serial.println("assicura che la nuova riga sia selezionata nella finestra della console"); |
Serial.println(); |
Serial.println("INDIRIZZO 1 CONFERMA RICEVUTA METADATI N/A (PER M2M)"); |
Serial.println("COMANDO ATTORE INDIRIZZO 2"); |
Serial.println(); |
Serial.println("INDIRIZZI SUL BUS:"); |
scan_i2c_addresses(); |
Serial.println(); |
Serial.println(""); |
} |
voidscan_i2c_addresses(){ |
int device_count = 0; |
for (indirizzo byte = 8; indirizzo < 127; indirizzo++) |
{ |
Wire.beginTransmission(indirizzo); |
const byte errore = Wire.endTransmission(); |
se (errore == 0) |
{ |
Serial.println(indirizzo); |
} |
} |
} |
voidloop() { |
recv_with_end_marker(); |
send_to_i2c(); |
} |
voidrecv_with_end_marker() { |
byte statico 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++; |
if (ndx >= _num_chars) { |
ndx = _num_chars - 1; |
} |
} |
altro { |
_received_chars[ndx] = '\0'; // termina la stringa |
ndx = 0; |
_has_new_data = vero; |
} |
} |
} |
voidsend_to_i2c() { |
char param_buf[16]; |
const String stringa_ricevuta = String(_caratteri_ricevuti); |
if (_has_new_data == true) { |
int idx1 = stringa_ricevuta.indexOf(''); |
Indirizzo stringa = stringa_ricevuta.substring(0, idx1); |
int address_int = address.toInt(); |
if (address_int < 8 || address_int >127){ |
Serial.println("INSERIMENTO INDIRIZZO NON VALIDO:"); |
Serial.println(indirizzo); |
Restituzione; |
} |
int idx2 = stringa_ricevuta.indexOf('', idx1+1); |
Codice stringa; |
if (idx2 == -1){ |
codice = stringa_ricevuta.sottostringa(idx1+1); |
}altro{ |
codice = stringa_ricevuta.sottostringa(idx1+1, idx2+1); |
} |
int code_int = code.toInt(); |
if (code_int < 0 || code_int >5){ |
Serial.println("INSERIMENTO CODICE NON VALIDO:"); |
Serial.println(codice); |
Restituzione; |
} |
bool has_parameter = idx2 > -1; |
Parametro stringa; |
if (ha_parametro){ |
parametro = stringa_ricevuta.sottostringa(idx2 + 1, idx2 + 17); // 16 caratteri max |
if (parametro.lunghezza() < 1){ |
Serial.println("PARTAMETRO MIN. LUNGHEZZA 1"); |
_has_new_data = falso; |
Restituzione; |
} |
}altro{ |
if (code_int >1){ |
Serial.println("PARAMETRO RICHIESTO!"); |
_has_new_data = falso; |
Restituzione; |
} |
} |
Serial.println(); |
Serial.print("input orig = "); |
Serial.println(received_string); |
Serial.print("indirizzo = "); |
Serial.println(indirizzo); |
Serial.print("codice = "); |
Serial.println(codice); |
Serial.print("parametro = "); |
Serial.println(parametro); |
// INVIA TRAMITE I2C |
Wire.beginTransmission(address_int); |
Wire.write(code_int); |
if (ha_parametro){ |
parametro.trim(); |
strcpy(param_buf, parametro.c_str()); |
Wire.write(param_buf); |
} |
Wire.endTransmission(); |
Serial.println(); |
Serial.println("INVIATO TRAMITE I2C!"); |
Serial.println(); |
Serial.println(""); |
_has_new_data = falso; |
} |
} |
visualizza rawuno_i2c_command_input.ino ospitato con ❤ da GitHub
Passaggio 4: passaggi successivi
Dalle build presentate, ci sono abbastanza parti mobili per costruire la tua RETE IOT ASSIMILATA.
Ognuna delle singole funzioni dei nodi (sensori e attori) è controllabile in maniera decentralizzata, non dipendendo dal master dell'MCU per avere alcuna conoscenza delle funzionalità supportate.
Qualsiasi app che si connette al broker MQTT può controllare/osservare ogni funzionalità del nodo IOT. Quello è M2M, applicazioni web, IFTTT e così via. Interfacce molto più semplici (o più ricche se vuoi) al tuo mondo IOT.
Consigliato:
Progettazione del Master I2C in VHDL: 5 passaggi
Progettazione di I2C Master in VHDL: in questo tutorial, viene discussa la progettazione di un semplice master I2C in VHDL. NOTA: fare clic su ciascuna immagine per visualizzare l'immagine completa
IOT123 - MATTONE I2C KY019: 5 passaggi
IOT123 - I2C KY019 BRICK: I BRICK IOT123 sono unità modulari fai da te che possono essere combinate con altri BRICK IOT123, per aggiungere funzionalità a un nodo o indossabili. Si basano su protoboard quadrati in pollici, a doppia faccia con fori passanti interconnessi. Un certo numero di questi BRICK
IOT123 - SLAVE DI PROTOTIPAZIONE MATTONE I2C: 3 Passaggi
IOT123 - I2C BRICK PROTOTYPING SLAVE: Durante lo sviluppo dell'ultimo ASSIMILATE ACTOR (KY-019 RELAY), è stata creata una scheda di sviluppo generica per risparmiarmi un po' di lavoro extra alla mia scrivania. Ha i pinout standard dell'I2C IOT123 BRICK, ma consente connessioni personalizzate al sensore dall'ATT
IOT123 - SLITTE PCB I2C: 5 passaggi
IOT123 - I2C PCB RAILS: dove non sono necessari involucri durevoli, ASSIMILATE IOT NETWORK SENSORS e ACTORS possono impilarsi in modo più efficiente e con meno risorse e sforzi, direttamente su binari minimalisti. I cilindri di alloggiamento possono essere utilizzati (come mostrato in questa build) o l'und
IOT123 - POWER BRICK 3.3V: 4 passaggi
IOT123 - POWER BRICK 3.3V: I BRICK IOT123 sono unità modulari fai da te che possono essere combinate con altri BRICK IOT123, per aggiungere funzionalità a un nodo o indossabili. Si basano su schede prototipi quadrate in pollici, a doppia faccia con fori passanti interconnessi. Sebbene le istruzioni