Turinys:

IOT123 - I2C HEARTBEAT BRICK: 6 žingsniai
IOT123 - I2C HEARTBEAT BRICK: 6 žingsniai

Video: IOT123 - I2C HEARTBEAT BRICK: 6 žingsniai

Video: IOT123 - I2C HEARTBEAT BRICK: 6 žingsniai
Video: Zaful Bikini HAUL 2018 | TRY ON | Valerie pac 2024, Lapkritis
Anonim
IOT123 - I2C Širdies ritmo plyta
IOT123 - I2C Širdies ritmo plyta
IOT123 - I2C Širdies ritmo plyta
IOT123 - I2C Širdies ritmo plyta
IOT123 - I2C Širdies ritmo plyta
IOT123 - I2C Širdies ritmo plyta

„IOT123 BRICKS“yra moduliniai „pasidaryk pats“įrenginiai, kuriuos galima sumaišyti su kitais „IOT123 BRICKS“elementais, kad mazgas ar nešiojamas papildytų funkcionalumą. Jie yra pagrįsti kvadratinėmis, dvipusiomis protobordais, tarpusavyje sujungtais per skyles.

Tikimasi, kad nemažai šių plytų bus keliuose svetainės mazguose (pagrindiniai MCU - ESP8266 arba ATTINY84). MCU nereikia išankstinių žinių apie jutiklių paskirtį ar programinės įrangos poreikius. Jis nuskaito, ar nėra I2C mazgų, tada iš kiekvieno vergo prašo nuosavybės iškelties (jutiklio duomenys). Šie BRICK maitina 5.0V, 3.3V ir kitą AUX liniją, kurią galima pritaikyti.

Šis „I2C HEARTBEAT BRICK“nurodo, ar „ATTINY“vergas yra gyvas, taip pat „I2C“srautas, ir turi vieną savybę:

BŪKLĖ („GYVAS“)

PB1 (balta) rodo ATTINY sveikatą.

PB3 (geltona) perjungia pagrindinio valdiklio I2C užklausas.

PB4 (oranžinė) perjungia I2C priėmimą iš pagrindinio kompiuterio.

Skylės, esančios greta ATTINY85, buvo nenaudojamos, kad būtų galima naudoti „Pogo“smeigtuko programuotoją, kol DIP8 yra lituojamas prie PCB. Toliau kuriama, kad BRICKS būtų supakuotas į mažus cilindrus, kurie jungiami prie D1M WIFI BLOCK koncentratoriaus, siurbiant vertes į MQTT serverį.

1 žingsnis: medžiagos ir įrankiai

Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai

Yra visas medžiagų ir šaltinių sąrašas.

  1. Popierinė PCB (7 x 7 skylės)
  2. LED (raudona, žalia, mėlyna)
  3. Rezistoriai (3 išjungti 1K)
  4. ATTINY85 20PU (1)
  5. 1 "dvipusė protoboard (1)
  6. Vyriška antraštė 90º (3P, 3P)
  7. Vyriška antraštė (2P, 2P)
  8. Džemperio šuntas (1)
  9. Prijungimo laidas (~ 7)
  10. Lituoklis ir geležis (1)

2 žingsnis: Paruoškite ATTINY85

Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85

PASTABA: jei ketinate integruoti „Crouton“, naudokite biblioteką iš čia ir naudokite įdiegtą pavyzdį „attiny_heartbeat“

Reikia „AttinyCore“iš valdybos. Įrašykite įkrovos įkėlimo programą „EEPROM Retained“, „8mHZ Internal“(visa konfigūracija parodyta aukščiau).

Kodo saugyklą rasite čia.

Bibliotekos pašto adresą rasite čia.

„ZIP bibliotekos importavimo“instrukcijos čia.

Įdiegę biblioteką galite atidaryti pavyzdį „attiny_heartbeat“.

Norėdami įkelti programinę -aparatinę įrangą į ATTINY85, daugiau informacijos rasite šiose instrukcijose:

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

Prieš tęsiant, geriausia išbandyti per duonos lentą.

Jei turite ASSIMILATE JUTIKLIŲ, įsitikinkite, kad SENSOR/MCU pagrindinio kompiuterio derinio adresas skiriasi, pvz. visi estafetės veikėjai gali turėti tą patį adresą, jei turite tik vieną relės veikėją MCU/mazge.

3 žingsnis: indikatorių surinkimas

Indikatorių surinkimas
Indikatorių surinkimas
Indikatorių surinkimas
Indikatorių surinkimas
Indikatorių surinkimas
Indikatorių surinkimas

Rodikliai turi būti visiškai pritaikomi. Įvykio signalai iš pagrindinės grandinės yra laikomi širdies plakimais. Šiai konstrukcijai naudosime LED indikatorius; jūsų konstrukcija gali naudoti relės (taip, VCC yra sugedęs) arba kitą vaizdinį/signalu pagrįstą indikatorių. Rezistoriaus vertės priklausys nuo asmeninių pageidavimų, kiek norite, kad jie būtų ryškūs.

  1. Viršuje įdėkite mėlyną šviesos diodą į RED1 (+) ir BLACK1 (G), o apačioje - lydmetalį.
  2. Apačioje sulenkite laidą nuo RED1 taip, kad jis liestų varinę pagalvę ant SILVER8 ir apipjaustykite.
  3. Apačioje apipjaukite laidą iš BLACK1 virš lydmetalio.
  4. Viršuje įdėkite žalią šviesos diodą į RED2 (+) ir BLACK2 (G), o apačioje - lydmetalį.
  5. Apačioje sulenkite laidą nuo RED2 taip, kad jis liestų varinę pagalvę ant SILVER9 ir apipjaustykite.
  6. Apačioje apipjaukite laidą iš BLACK2 virš lydmetalio.
  7. Viršuje įdėkite raudoną šviesos diodą į RED3 (+) ir BLACK3 (G), o apačioje - lydmetalį.
  8. Apačioje sulenkite laidą nuo RED3 taip, kad jis liestų varinę pagalvę ant SILVER10 ir apipjaustytų.
  9. Apačioje apipjaukite laidą iš BLACK3 virš lydmetalio.
  10. Viršuje įkiškite 1K rezistorių į skylutes SILVER1 ir SILVER4.
  11. Apačioje atsekite, apipjaustykite ir lituokite nuo SILVER1 ant BLACK1.
  12. Viršuje įkiškite 1K rezistorių į skylutes SILVER2 ir SILVER4.
  13. Apačioje atsekite, apipjaustykite ir lituokite iš SILVER2 ant BLACK2.
  14. Viršuje įkiškite 1K rezistorių į skylutes SILVER3 ir SILVER4.
  15. Apačioje atsekite, apipjaustykite ir lituokite iš SILVER3 ant BLACK3.
  16. Apatinėje dalyje lituokite SILVER4 laidus ir apipjaukite maždaug 5 mm ilgio.
  17. Apačioje ant SILVER4 lituokite juodą laidą.
  18. Apatinėje dalyje į SILVER5 prilituokite baltą laidą, taip užtikrindami tęstinumą nuo RED1.
  19. Apatinėje dalyje į SILVER6 įlituokite geltoną laidą, kad užtikrintumėte tęstinumą nuo RED2.
  20. Apatinėje dalyje į SILVER7 lituokite oranžinę vielą, užtikrindami tęstinumą nuo RED3.

4 žingsnis: pagrindinės grandinės surinkimas

Pagrindinės grandinės surinkimas
Pagrindinės grandinės surinkimas
Pagrindinės grandinės surinkimas
Pagrindinės grandinės surinkimas
Pagrindinės grandinės surinkimas
Pagrindinės grandinės surinkimas

Surinkimas:

  1. Priekyje įkiškite komponentus ATTINY85 (1), 3P 90 laipsnių apvalkalo galvutes (2) (3), 3P išorines galvutes (4) (5) ir lituokite galinėje pusėje.
  2. Galinėje pusėje atsekite geltoną vielą nuo GELTONOS1 iki GELTONOS2 ir lydmetalį.
  3. Galinėje pusėje atsekite oranžinę vielą nuo ORANGE1 iki ORANGE2 ir lydmetalį.
  4. Galinėje pusėje atsekite mėlyną laidą nuo BLUE1 iki BLUE2 ir lydmetalį.
  5. Galinėje pusėje atsekite žalią laidą nuo GREEN1 iki GREEN2 ir lydmetalį.
  6. Galinėje pusėje atsekite baltą vielą nuo WHITE1 iki WHITE2 ir lydmetalį.
  7. Galinėje pusėje atsekite juodą laidą nuo BLACK1 iki BLACK2 ir lydmetalį.
  8. Galinėje pusėje atsekite juodą laidą nuo BLACK3 iki BLACK4 ir lydmetalį.
  9. Galinėje pusėje atsekite raudoną vielą nuo RED1 iki RED2 ir lydmetalį.
  10. Galinėje pusėje atsekite pliką laidą nuo RED3 iki RED4 ir lydmetalį.
  11. Galinėje pusėje atsekite pliką vielą nuo SILVER1 iki SILVER2 ir lydmetalį.
  12. Pridėkite trumpiklį 5V arba 3V3 linijoje.

Jei naudojate aukščiau esančius indikatorius (žr. „Pinout“diagramą):

  1. Galinėje pusėje lituokite baltą laidą į PB1.
  2. Gale esantį geltoną laidą įlituokite į PB3.
  3. Galinėje pusėje lituokite oranžinę vielą į PB4.
  4. Galinėje pusėje lituokite juodą laidą į GND.

5 žingsnis: bandymas

Testavimas
Testavimas
Testavimas
Testavimas
Testavimas
Testavimas
Testavimas
Testavimas

Tikimasi, kad daugelis šių plytų bus keliuose aplinkos mazguose (MCU - ESP8266 arba ATTINY84). Tai vieneto testas: siunčia I2C komandas iš UNO į ATTINY, kuris perjungia priėmimo šviesos diodą. Šviečia šviesos diodas ATTINY ALIVE.

Anksčiau mes sukūrėme „I2C SHIELD“„Arduino“.

Jei norite vietoj to uždėti lentą:

  1. Prijunkite 5,0 V UNO prie BRCK VCC.
  2. Prijunkite UNO GND prie BRICK GND.
  3. Prijunkite A5 ant UNO prie SCL BRICK.
  4. Prijunkite A4 UNO prie SDA BRICK.
  5. Prijunkite 4K7 ištraukiamąjį rezistorių iš SDA prie VCC.
  6. Prijunkite 4K7 ištraukiamąjį rezistorių iš SCL prie VCC.

Bandymo vykdymas

  1. Prijunkite UNO prie „Dev“kompiuterio naudodami USB.
  2. Įkelkite kodą į UNO.
  3. Atidarykite „Arduino“konsolę.
  4. Pasirinkite 9600 baudų (iš naujo paleiskite UNO ir, jei reikia, vėl atidarykite konsolę).
  5. Vergo adresas bus atspausdintas konsolėje.
  6. Kai įveskite siuntimo laukelį 2 1 (taigi 16 2 1), ir priėmimo šviesos diodas įsijungs.
  7. Kai įveskite siuntimo laukelį 2 0 (taigi 16 2 0) ir gavimo šviesos diodas užges.

I2C BRICK adhoc komandos vergams iš UNO master

#įtraukti
const baitas _num_chars = 32;
char _gautos_ženklos [_num_chars]; // masyvas, skirtas saugoti gautus duomenis
loginis _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASIMILIUOTI IOT AKTORIUS/JUTIKLIO EEPROM REDAKTORIUS");
Serial.println ("užtikrinti, kad konsolės lange būtų pasirinkta nauja eilutė");
Serial.println ();
Serial.println ("1 ADRESAS PATVIRTINTI METADATO GAVIMĄ N/A (M2M)");
Serial.println ("2 ADRESAS AKTORIŲ KOMANDA");
Serial.println ();
Serial.println ("ADRESAI BUSE:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
(baitų adresas = 8; adresas <127; adresas ++)
{
Wire.beginTransmission (adresas);
const baito klaida = Wire.endTransmission ();
jei (klaida == 0)
{
Serial.println (adresas);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
statinis baitas ndx = 0;
char end_marker = '\ n';
char rc;
nors (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
if (rc! = end_marker) {
_sulaukė_ženklų [ndx] = rc;
ndx ++;
jei (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
Kitas {
_received_chars [ndx] = '\ 0'; // nutraukti eilutę
ndx = 0;
_has_new_data = tiesa;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String gavo_string = String (_received_chars);
jei (_turi_ naujus duomenis == tiesa) {
int idx1 = gavo_string.indexOf ('');
Eilutės adresas = gavo_string.substring (0, idx1);
int address_int = address.toInt ();
if (address_int <8 || address_int> 127) {
Serial.println ("NETEISINGAS ADRESO ĮVADAS:");
Serial.println (adresas);
grįžti;
}
int idx2 = gavo_string.indexOf ('', idx1+1);
Eilutės kodas;
jei (idx2 == -1) {
kodas = gavo_string.substring (idx1+1);
}Kitas{
kodas = gavo_string.substring (idx1+1, idx2+1);
}
int kodas_int = kodas.toInt ();
if (code_int <0 || code_int> 5) {
Serial.println ("NETEISINGAS KODO ĮVADAS:");
Serial.println (kodas);
grįžti;
}
bool has_parameter = idx2> -1;
Styginių parametras;
if (has_parameter) {
parametras = gavo_string.substring (idx2 + 1, idx2 + 17); // maks. 16 simbolių
jei (parametras.length () <1) {
Serial.println („PARTAMETER MIN. LENGTH 1“);
_has_new_data = klaidinga;
grįžti;
}
}Kitas{
if (code_int> 1) {
Serial.println ("REIKALINGAS PARAMETRAS!");
_has_new_data = klaidinga;
grįžti;
}
}
Serial.println ();
Serial.print ("įvesties orig =");
Serial.println (gavo_eilę);
Serial.print ("adresas =");
Serial.println (adresas);
Serial.print ("kodas =");
Serial.println (kodas);
Serial.print ("parametras =");
Serial.println (parametras);
// Siųsti per I2C
Wire.beginTransmission (adresas_int);
Wire.write (code_int);
if (has_parameter) {
parametras.trim ();
strcpy (param_buf, parametras.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("IŠSIŲSTA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = klaidinga;
}
}

peržiūrėkite rawuno_i2c_command_input.ino, kurį su „❤“priglobia „GitHub“

6 veiksmas: kiti veiksmai

Tolesni žingsniai
Tolesni žingsniai
Tolesni žingsniai
Tolesni žingsniai

Tolesnis asimiliacinis aktorius: „HEARTBEAT“, kuris naudoja šią plytą, turi automatinę „Crouton“konfigūraciją per čia esančius ATTINY85 metaduomenis. „Crouton“siunčiamas JSON paketas siunčiamas naudojant naujausią ICOS10 programinę įrangą. Galite sukurti „Proof-of-concept“naudodami įprastą ESP8266, jei sukūrimo kol kas per daug.

Testavimo metu naudojamas UNO eskizas turi funkciją išsaugoti naują vergo adresą EEPROM ATTINY85, jei susiduriate su tiksline I2C magistralė.

Rekomenduojamas: