Indholdsfortegnelse:

IOT123 - I2C HEARTBEAT BRICK: 6 trin
IOT123 - I2C HEARTBEAT BRICK: 6 trin

Video: IOT123 - I2C HEARTBEAT BRICK: 6 trin

Video: IOT123 - I2C HEARTBEAT BRICK: 6 trin
Video: Zaful Bikini HAUL 2018 | TRY ON | Valerie pac 2024, Juni
Anonim
IOT123 - I2C HEARTBEAT MURK
IOT123 - I2C HEARTBEAT MURK
IOT123 - I2C HEARTBEAT MURK
IOT123 - I2C HEARTBEAT MURK
IOT123 - I2C HEARTBEAT MURK
IOT123 - I2C HEARTBEAT MURK

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 HEARTBEAT BRICK angiver, om ATTINY -slaven er i live, også I2C -trafikken og har en egenskab:

STATUS ("ALIVE")

PB1 (hvid) angiver ATTINY sundhed.

PB3 (gul) skifter med I2C -anmodninger fra masteren.

PB4 (orange) skifter med I2C modtagelse fra masteren.

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
Materialer og værktøjer
Materialer og værktøjer

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

  1. Papir -print (7 x 7 huller)
  2. Lysdioder (rød, grøn, blå)
  3. Modstande (3 fra 1K)
  4. ATTINY85 20PU (1)
  5. 1 "Dobbeltsidet protoboard (1)
  6. Mandskærebord 90º (3P, 3P)
  7. Male Header (2P, 2P)
  8. Jumper Shunt (1)
  9. Tilslutningskablet (~ 7)
  10. Lodde og jern (1)

Trin 2: Forbered ATTINY85

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

BEMÆRK: Hvis du har til hensigt at have Crouton -integration, skal du bruge biblioteket herfra og bruge eksemplet installeret "attiny_heartbeat"

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_heartbeat".

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

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

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

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

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

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 Host -kombination f.eks. 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: Samling af indikatorerne

Samling af indikatorerne
Samling af indikatorerne
Samling af indikatorerne
Samling af indikatorerne
Samling af indikatorerne
Samling af indikatorerne

Indikatorerne er beregnet til at kunne tilpasses fuldt ud. Det er hændelsessignalerne fra hovedkredsløbet, der ses som hjerteslag. Til dette byggeri vil vi bruge LED -indikatorer; din build kan bruge relæer (ja VCC er brudt ud) eller en anden visuel/signalbaseret indikator. Modstandsværdierne afhænger af personlig præference for, hvor lyse du vil have dem.

  1. På toppen skal du indsætte en blå LED i RØD1 (+) og SORT1 (G) og lodde i bunden.
  2. I bunden skal du bøje ledningen fra RØD1, så den rører kobberpuden på SILVER8 og trimme.
  3. I bunden skal du trimme bly fra BLACK1 over loddetin.
  4. På toppen indsætter du en grøn LED i RØD2 (+) og SORT2 (G), og loddes i bunden.
  5. I bunden skal du bøje ledningen fra RED2, så den rører kobberpuden på SILVER9 og trimme.
  6. I bunden trimmes bly fra BLACK2 over loddetin.
  7. På toppen sættes en rød LED ind i RØD3 (+) og SORT3 (G) og loddes i bunden.
  8. I bunden skal du bøje ledningen fra RED3, så den rører kobberpuden på SILVER10 og trimme.
  9. I bunden skal du trimme bly fra BLACK3 over loddetin.
  10. På toppen indsættes en 1K modstand i gennemgående huller SILVER1 og SILVER4.
  11. På bunden skal du spore, trimme og lodde bly fra SILVER1 ind på SORT1.
  12. På toppen indsættes en 1K-modstand i gennemgående huller SILVER2 og SILVER4.
  13. På bunden skal du spore, trimme og lodde bly fra SILVER2 ind på BLACK2.
  14. På toppen indsættes en 1K modstand i gennemgående huller SILVER3 og SILVER4.
  15. På bunden skal du spore, trimme og lodde bly fra SILVER3 ind på BLACK3.
  16. I bunden loddes tråde på SILVER4 og trimmes med en længde på cirka 5 mm.
  17. I bunden loddes en sort ledning på SILVER4.
  18. På bunden loddes en hvid ledning ind i SILVER5, hvilket sikrer kontinuitet for at føre fra RØD1.
  19. På bunden loddes en gul ledning ind i SILVER6, hvilket sikrer kontinuitet fra RED2.
  20. På bunden loddes en orange ledning ind i SILVER7, hvilket sikrer kontinuitet fra RED3.

Trin 4: Samling af hovedkredsløbet

Samling af hovedkredsløbet
Samling af hovedkredsløbet
Samling af hovedkredsløbet
Samling af hovedkredsløbet
Samling af hovedkredsløbet
Samling af hovedkredsløbet

Montage:

  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 hvid ledning fra WHITE1 til WHITE2 og lodde.
  7. På bagsiden kan du spore en sort ledning fra BLACK1 til BLACK2 og lodde.
  8. På bagsiden kan du spore en sort ledning fra BLACK3 til BLACK4 og lodde.
  9. På bagsiden skal du spore en rød ledning fra RØD1 til RØD2 og lodde.
  10. På bagsiden kan du spore en ledning fra RED3 til RED4 og lodde.
  11. På bagsiden skal du spore en ledning fra SILVER1 til SILVER2 og lodde.
  12. Tilføj en jumper på 5V eller 3V3 linjen.

Hvis du bruger indikatorerne ovenfor (se pinout -diagram):

  1. På bagsiden loddes den hvide ledning ind i PB1.
  2. På bagsiden loddes den gule ledning ind i PB3.
  3. På bagsiden loddes den orange ledning ind i PB4.
  4. På bagsiden loddes den sorte ledning ind i GND.

Trin 5: 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 skifter modtagelses -LED. ATTINY ALIVE LED'en forbliver tændt.

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 1 (altså 16 2 1), og modtag -LED'en tændes.
  7. Når, indtast i afsendelsesboksen 2 0 (altså 16 2 0), og modtag -LED'en 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 6: Næste trin

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

Opfølgningen ASSIMILATE ACTOR: HEARTBEAT, 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.

Anbefalede: