Innholdsfortegnelse:

IOT123 - I2C HEARTBEAT BRICK: 6 trinn
IOT123 - I2C HEARTBEAT BRICK: 6 trinn

Video: IOT123 - I2C HEARTBEAT BRICK: 6 trinn

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

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

STATUS ("ALIVE")

PB1 (hvit) indikerer ATTINY helse.

PB3 (gul) bytter med I2C -forespørsler fra masteren.

PB4 (oransje) bytter med I2C -mottak fra masteren.

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
Materialer og verktøy
Materialer og verktøy

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

  1. Paper PCB (7 x 7 hull)
  2. LED (rød, grønn, blå)
  3. Motstander (3 av 1K)
  4. ATTINY85 20PU (1)
  5. 1 "Dobbeltsidig protoboard (1)
  6. Hannoverskrift 90º (3P, 3P)
  7. Mannlig overskrift (2P, 2P)
  8. Genser Shunt (1)
  9. Tilkoblingskabel (~ 7)
  10. Lodde og jern (1)

Trinn 2: Forbered ATTINY85

Forbered ATTINY85
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_heartbeat"

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

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

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

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

Hvis du har eksisterende ASSIMILATE SENSORS, må du kontrollere at slaveadressen er annerledes på en SENSOR/MCU Host -kombinasjon, f.eks. alle stafettaktørene kan ha samme adresse så lenge du bare har en stafettskuespiller på en MCU/node.

Trinn 3: Montering av indikatorene

Montering av indikatorene
Montering av indikatorene
Montering av indikatorene
Montering av indikatorene
Montering av indikatorene
Montering av indikatorene

Indikatorene er ment å være fullt tilpassbare. Det er hendelsessignalene fra hovedkretsen som blir sett på som hjerteslag. For denne bygningen vil vi bruke LED -indikatorer; bygningen din kan bruke reléer (ja VCC er brutt ut) eller en annen visuell/signalbasert indikator. Motstandsverdiene vil avhenge av personlig preferanse for hvor lyst du vil ha dem.

  1. På toppen setter du inn en blå LED i RØD1 (+) og SVART1 (G), og loddes på bunnen.
  2. På bunnen, bøy ledningen fra RØD1 slik at den berører kobberputen på SILVER8 og trim.
  3. På bunnen, trim bly fra BLACK1 over loddetinn.
  4. På toppen setter du inn en grønn LED i RØD2 (+) og SVART2 (G), og loddes på bunnen.
  5. På bunnen, bøy ledningen fra RED2 så den berører kobberputen på SILVER9 og trim.
  6. På bunnen, trim bly fra BLACK2 over loddetinn.
  7. På toppen setter du inn en rød LED i RØD3 (+) og SVART3 (G), og loddes på bunnen.
  8. På bunnen, bøy ledningen fra RED3 så den berører kobberputen på SILVER10 og trim.
  9. På bunnen, trim ledningen fra BLACK3 over loddetinn.
  10. På toppen setter du en 1K-motstand inn i gjennomhullene SILVER1 og SILVER4.
  11. På bunnen, spor, trim og loddetin fra SILVER1 inn på SVART1.
  12. På toppen setter du en 1K-motstand inn i gjennomhullene SILVER2 og SILVER4.
  13. På bunnen, spor, trim og loddetin fra SILVER2 inn på BLACK2.
  14. På toppen setter du en 1K-motstand inn i gjennomgående hull SILVER3 og SILVER4.
  15. På bunnen, spor, trim og loddetin fra SILVER3 inn på BLACK3.
  16. På bunnen, loddetråder på SILVER4 og trim på omtrent 5 mm forlengelse.
  17. På bunnen loddes en svart ledning på SILVER4.
  18. På bunnen loddes en hvit ledning inn i SILVER5, noe som sikrer kontinuitet fra RØD1.
  19. På bunnen loddes en gul ledning inn i SILVER6, noe som sikrer kontinuitet fra RED2.
  20. På bunnen loddes en oransje ledning inn i SILVER7, noe som sikrer kontinuitet fra RED3.

Trinn 4: Montering av hovedkretsen

Montering av hovedkretsen
Montering av hovedkretsen
Montering av hovedkretsen
Montering av hovedkretsen
Montering av hovedkretsen
Montering av hovedkretsen

Montering:

  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 kan du spore en hvit ledning fra WHITE1 til WHITE2 og lodde.
  7. På baksiden, spor en svart ledning fra BLACK1 til BLACK2 og loddetinn.
  8. På baksiden, spor en svart ledning fra BLACK3 til BLACK4 og loddetinn.
  9. På baksiden, spor en rød ledning fra RØD1 til RØD2 og loddetinn.
  10. På baksiden, spor en bar ledning fra RED3 til RED4 og loddetinn.
  11. På baksiden kan du spore en ledning fra SILVER1 til SILVER2 og lodde.
  12. Legg til en jumper på 5V eller 3V3 linjen.

Hvis du bruker indikatorene ovenfor (se pinout -diagrammet):

  1. På baksiden lodder du den hvite ledningen inn i PB1.
  2. På baksiden loddes den gule ledningen inn i PB3.
  3. På baksiden loddes den oransje ledningen inn i PB4.
  4. På baksiden lodder du den svarte ledningen inn i GND.

Trinn 5: 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 veksler mottaks -LED. ATTINY ALIVE -lampen lyser.

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 sendingsboksen 2 1 (altså 16 2 1), og mottakslampen lyser.
  7. Når, skriv inn sendeboksen 2 0 (altså 16 2 0), og mottakslampen 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 6: Neste trinn

Neste skritt
Neste skritt
Neste skritt
Neste skritt

Oppfølgingen ASSIMILATE ACTOR: HEARTBEAT 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.

Anbefalt: