Innholdsfortegnelse:

IOT123 - I2C 2CH RELAY BRICK: 5 Steps (med bilder)
IOT123 - I2C 2CH RELAY BRICK: 5 Steps (med bilder)

Video: IOT123 - I2C 2CH RELAY BRICK: 5 Steps (med bilder)

Video: IOT123 - I2C 2CH RELAY BRICK: 5 Steps (med bilder)
Video: IOT123 - ICOS10: STRUCTURE 2024, Juni
Anonim
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK

IOT123 BRICKS er DIY modulære enheter som kan moses sammen med andre IOT123 BRICKS, for å legge funksjonalitet til en node eller bærbar. De er basert på tommers firkantede, tosidige protoboard med sammenkoblede gjennomgående hull.

En rekke av disse BRICKS forventes å være på flere noder (Master MCUer - ESP8266 eller ATTINY84) på et nettsted. MCU trenger ingen forkunnskaper om sensorens formål eller programvarebehov. Den søker etter I2C -noder og ber deretter om en eiendomsdump (sensordata) fra hver slave. Disse BRICKene leverer 5.0V, 3.3V og en annen AUX -linje som kan tilpasses.

Denne I2C 2CH RELAY BRICK utvider funksjonaliteten til I2C KY019 BRICK, og har to lese-/skriveegenskaper:

2CH RELAYS [0] (true/false)

2CH RELAYS [1] (true/false)

Gjennomføringshullene ved siden av ATTINY85 har blitt ubrukt, for å muliggjøre en pogo pin programmerer mens DIP8 er loddet til PCB. En ytterligere abstraksjon, pakking av BRICKS i små sylindere som kobles til en D1M WIFI BLOCK -hub, som pumper verdiene til en MQTT -server, utvikles.

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

Det er en fullstendig oversikt over materiale og innkjøpsliste.

  1. 2 -kanals relé (1)
  2. ATTINY85 20PU (1)
  3. 1 "Dobbeltsidig protoboard (1)
  4. Hannoverskrift 90º (3P, 3P)
  5. Mannlig overskrift (2P, 2P)
  6. Genser Shunt (1)
  7. Tilkoblingskabel (~ 7)
  8. Lodde og jern (1)

Trinn 2: Forbered ATTINY85

Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85

MERK: Hvis du har tenkt å ha Crouton -integrasjon, kan du bruke biblioteket herfra og bruke eksemplet installert "attiny_2ch_relay".

AttinyCore fra Boards Manager er nødvendig. Brenn oppstartslaster "EEPROM beholdt", "8mHZ intern" (all konfigurasjon vist ovenfor).

Kodelageret finner du her.

En ZIP av biblioteket finner du her.

Instruksjoner for "Import av et ZIP -bibliotek" her.

Når biblioteket er installert, kan du åpne eksempelet "attiny_2ch_relay".

For å laste opp fastvaren til ATTINY85, kan du finne flere detaljer i disse instruksjonene:

www.instructables.com/id/How-to-Program-A…

www.instructables.com/id/Programming-the-…

www.instructables.com/id/Programming-the-…

www.instructables.com/id/Programming-the-…

Best å teste via brødbrett før du fortsetter.

Hvis du har eksisterende ASSIMILATE SENSORS, må du kontrollere at slaveadressen er forskjellig på en SENSOR/MCU -vertskombinasjon, dvs. at alle reléaktørene kan ha samme adresse så lenge du bare har en reléaktør på en MCU/node.

Trinn 3: Sett sammen kretsen

Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
  1. Sett på forsiden komponentene ATTINY85 (1), 3P 90deg hannhoder (2) (3), 3P hannhoder (4) (5) og lodd av på baksiden.
  2. På baksiden, spor en gul ledning fra GUL1 til GUL 2 og loddetinn.
  3. På baksiden, spor en oransje ledning fra ORANGE1 til ORANGE2 og loddetinn.
  4. På baksiden, spor en blå ledning fra BLÅ1 til BLÅ2 og loddetinn.
  5. På baksiden, spor en grønn ledning fra GREEN1 til GREEN2 og loddetinn.
  6. På baksiden, spor en svart ledning fra BLACK1 til BLACK2 og loddetinn.
  7. På baksiden, spor en svart ledning fra BLACK3 til BLACK4 og loddetinn.
  8. På baksiden, spor en rød ledning fra RØD1 til RØD2 og loddetinn.
  9. På baksiden, spor en bar ledning fra RED3 til RED4 og loddetinn.
  10. På baksiden kan du spore en ledning fra SILVER1 til SILVER2 og lodde.
  11. Legg til en jumper på 5V eller 3V3 linjen.

Reléet kan nå kobles direkte via tappene til kretskortet eller via ledninger, til punktene vist i stiftkontrakten.

Trinn 4: Testing

Testing
Testing
Testing
Testing
Testing
Testing
Testing
Testing

En rekke av disse BRICKS forventes å være på flere noder (MCUer - ESP8266 eller ATTINY84) i et miljø. Dette er en enhetstest: sender I2C -kommandoer fra UNO til ATTINY som åpner eller lukker reléene.

Vi har tidligere bygget et I2C SHIELD for Arduino.

Hvis du vil kaste den i stedet:

  1. Koble 5.0V på UNO til en VCC på BRICK.
  2. Koble GND på UNO til GND på BRICK.
  3. Koble A5 på UNO til SCL på BRICK.
  4. Koble A4 på UNO til SDA på BRICK.
  5. Koble en opptrekksmotstand 4K7 fra SDA til VCC.
  6. Koble en opptrekkmotstand 4K7 fra SCL til VCC.

Kjører testen

  1. Koble UNO til Dev PC med USB.
  2. Last opp koden til UNO.
  3. Åpne Arduino -konsollen.
  4. Velg 9600 baud (start UNO på nytt og åpne konsollen hvis du må).
  5. Adressen til slaven skrives ut til konsollen.
  6. Når, skriv inn sendekassen 2 0: 1 (altså 15 2 0: 1), og CH1 -reléet slås på.

  7. Når, skriv inn sendekassen 2 0: 0 (altså 15 2 0: 0), og CH1 -reléet slås av.
  8. Når, skriv inn sendingsboksen 2 1: 1 (altså 15 2 1: 1), og CH2 -reléet slås på.
  9. Når, skriv inn i sendingsboksen 2 1: 0 (altså 15 2 0: 0), og CH2 -reléet slås av.

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 5: Neste trinn

Neste skritt
Neste skritt
Neste skritt
Neste skritt
Neste skritt
Neste skritt
Neste skritt
Neste skritt

Oppfølgingen ASSIMILATE ACTOR: 2CH RELAY som bruker denne mursteinen har automatisk konfigurasjon for Crouton via metadataene som allerede er installert i ATTINY85 her. JSON -pakken som sendes til Crouton sendes via den siste fastvaren for ICOS10. Du kan gjøre et Proof-of-concept på en vanlig ESP8266, hvis bygget er for mye for nå.

UNO -skissen som ble brukt i testing har en funksjon for å lagre en ny slave -adresse til EEPROM på ATTINY85, hvis du har et sammenstøt på mål I2C -bussen. Noen skjemaer er lagt til, men det er forskjellige måter å koble nedstrøms krets avhengig av hva du vil oppnå, så jeg lar det være for deg:)

Anbefalt: