Indholdsfortegnelse:

IOT123 - I2C 2CH RELAY BRICK: 5 trin (med billeder)
IOT123 - I2C 2CH RELAY BRICK: 5 trin (med billeder)

Video: IOT123 - I2C 2CH RELAY BRICK: 5 trin (med billeder)

Video: IOT123 - I2C 2CH RELAY BRICK: 5 trin (med billeder)
Video: IOT123 - ICOS10: STRUCTURE 2024, November
Anonim
IOT123 - I2C 2CH RELÆSTEN
IOT123 - I2C 2CH RELÆSTEN
IOT123 - I2C 2CH RELÆSTEN
IOT123 - I2C 2CH RELÆSTEN
IOT123 - I2C 2CH RELÆSTEN
IOT123 - I2C 2CH RELÆSTEN
IOT123 - I2C 2CH RELÆSTEN
IOT123 - I2C 2CH RELÆSTEN

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.

Et antal af disse BRICKS forventes at være på flere noder (Master MCU'er - ESP8266 eller ATTINY84) på et websted. MCU'en behøver ingen forudgående viden om sensorernes formål eller softwarebehov. Den scanner efter I2C -noder og anmoder derefter om en egenskabsdump (sensordata) fra hver slave. Disse BRICK'er leverer 5.0V, 3.3V og en anden AUX -linje, der kan tilpasses.

Denne I2C 2CH RELAY BRICK udvider funktionaliteten af I2C KY019 BRICK og har to læse/skrive egenskaber:

2CH RELÆER [0] (true/false)

2CH RELÆER [1] (true/false)

De gennemgående huller ved siden af ATTINY85 er blevet efterladt ubrugte for at muliggøre en pogo pin programmerer, mens DIP8 er loddet til printet. En yderligere abstraktion, emballering af BRICKS i små cylindre, der sættes i et D1M WIFI BLOCK -hub, der pumper værdierne til en MQTT -server, udvikles.

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

Der er en fuld liste over materiale og indkøbsliste.

  1. 2 kanal relæ (1)
  2. ATTINY85 20PU (1)
  3. 1 "Dobbeltsidet protoboard (1)
  4. Mandskærebord 90º (3P, 3P)
  5. Male Header (2P, 2P)
  6. Jumper Shunt (1)
  7. Tilslutningskablet (~ 7)
  8. Lodde og jern (1)

Trin 2: Forbered ATTINY85

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

BEMÆRK: Hvis du agter at have Crouton -integration, skal du bruge biblioteket herfra og bruge eksemplet installeret "attiny_2ch_relay".

AttinyCore fra bestyrelseschefen er påkrævet. Brænd bootloader "EEPROM beholdt", "8mHZ intern" (alle konfigurationer vist ovenfor).

Kodelageret kan findes her.

En ZIP af biblioteket findes her.

Instruktioner til "Import af et ZIP -bibliotek" her.

Når biblioteket er installeret, kan du åbne eksemplet "attiny_2ch_relay".

For at uploade firmwaren til ATTINY85 finder du muligvis flere detaljer i disse instruktioner:

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-…

Bedst at teste via breadboard, inden du fortsætter.

Hvis du har eksisterende ASSIMILATE SENSORS, skal du sørge for, at slaveadressen er forskellig på en SENSOR/MCU -værtskombination, dvs. at alle relæaktører kan have den samme adresse, så længe du kun har en relæaktør på en MCU/node.

Trin 3: Saml kredsløbet

Saml kredsløbet
Saml kredsløbet
Saml kredsløbet
Saml kredsløbet
Saml kredsløbet
Saml kredsløbet
  1. På forsiden indsættes komponenterne ATTINY85 (1), 3P 90deg hanhoveder (2) (3), 3P hanhoveder (4) (5) og loddes af på bagsiden.
  2. På bagsiden skal du spore en gul ledning fra GUL1 til GUL2 og lodde.
  3. På bagsiden kan du spore en orange ledning fra ORANGE1 til ORANGE2 og lodde.
  4. På bagsiden kan du spore en blå ledning fra BLUE1 til BLUE2 og lodde.
  5. På bagsiden kan du spore en grøn ledning fra GREEN1 til GREEN2 og lodde.
  6. På bagsiden kan du spore en sort ledning fra BLACK1 til BLACK2 og lodde.
  7. På bagsiden kan du spore en sort ledning fra BLACK3 til BLACK4 og lodde.
  8. På bagsiden skal du spore en rød ledning fra RØD1 til RØD2 og lodde.
  9. På bagsiden kan du spore en ledning fra RED3 til RED4 og lodde.
  10. På bagsiden skal du spore en ledning fra SILVER1 til SILVER2 og lodde.
  11. Tilføj en jumper på 5V eller 3V3 linjen.

Relæet kan nu forbindes direkte via sine ben til printkortet eller via ledninger til de punkter, der er vist i stiftkontrakten.

Trin 4: Test

Test
Test
Test
Test
Test
Test
Test
Test

Et antal af disse BRICKS forventes at være på flere noder (MCU'er - ESP8266 eller ATTINY84) i et miljø. Dette er en enhedstest: sender I2C -kommandoer fra UNO til ATTINY, som åbner eller lukker relæerne.

Vi har tidligere bygget et I2C SHIELD til Arduino.

Hvis du vil breadboard det i stedet:

  1. Tilslut 5.0V på UNO til en VCC på BRICK.
  2. Tilslut GND på UNO til GND på BRICK.
  3. Tilslut A5 på UNO til SCL på BRICK.
  4. Tilslut A4 på UNO til SDA på BRICK.
  5. Tilslut en 4K7 pull-up modstand fra SDA til VCC.
  6. Tilslut en 4K7 pull-up modstand fra SCL til VCC.

Kører testen

  1. Tilslut din UNO til din Dev PC med USB.
  2. Upload koden til UNO.
  3. Åbn Arduino -konsollen.
  4. Vælg 9600 baud (genstart UNO, og åbn konsollen igen, hvis du skal).
  5. Slavens adresse udskrives til konsollen.
  6. Når, indtast i afsendelsesboksen 2 0: 1 (altså 15 2 0: 1), og CH1 -relæet tændes.

  7. Når, indtast i afsendelsesboksen 2 0: 0 (altså 15 2 0: 0), og CH1 -relæet slukker.
  8. Når, indtast i afsendelsesboksen 2 1: 1 (altså 15 2 1: 1), og CH2 -relæet tændes.
  9. Når, indtast i afsendelsesboksen 2 1: 0 (altså 15 2 0: 0), og CH2 -relæet slukker.

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 5: Næste trin

Næste skridt
Næste skridt
Næste skridt
Næste skridt
Næste skridt
Næste skridt
Næste skridt
Næste skridt

Opfølgningen ASSIMILATE ACTOR: 2CH RELAY, der bruger denne mursten, har automatisk konfiguration til Crouton via de metadata, der allerede er installeret i ATTINY85 her. JSON -pakken sendt til Crouton sendes via den nyeste firmware til ICOS10. Du kan lave et Proof-of-concept på en almindelig ESP8266, hvis bygningen er for meget for nu.

UNO -skitsen, der blev brugt i Testing, har en funktion til at gemme en ny slave -adresse til EEPROM på ATTINY85, hvis du har et sammenstød på din mål -I2C -bus. Der er tilføjet et par skemaer, men der er forskellige måder at tilslutte kredsløbet nedstrøms afhængigt af hvad du vil opnå, så jeg overlader det til dig:)

Anbefalede: