Turinys:
- 1 žingsnis: medžiagos ir įrankiai
- 2 žingsnis: Paruoškite ATTINY85
- 3 žingsnis: indikatorių surinkimas
- 4 žingsnis: pagrindinės grandinės surinkimas
- 5 žingsnis: bandymas
- 6 veiksmas: kiti veiksmai
Video: IOT123 - I2C HEARTBEAT BRICK: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
„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
Yra visas medžiagų ir šaltinių sąrašas.
- Popierinė PCB (7 x 7 skylės)
- LED (raudona, žalia, mėlyna)
- Rezistoriai (3 išjungti 1K)
- ATTINY85 20PU (1)
- 1 "dvipusė protoboard (1)
- Vyriška antraštė 90º (3P, 3P)
- Vyriška antraštė (2P, 2P)
- Džemperio šuntas (1)
- Prijungimo laidas (~ 7)
- Lituoklis ir geležis (1)
2 žingsnis: 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
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.
- Viršuje įdėkite mėlyną šviesos diodą į RED1 (+) ir BLACK1 (G), o apačioje - lydmetalį.
- Apačioje sulenkite laidą nuo RED1 taip, kad jis liestų varinę pagalvę ant SILVER8 ir apipjaustykite.
- Apačioje apipjaukite laidą iš BLACK1 virš lydmetalio.
- Viršuje įdėkite žalią šviesos diodą į RED2 (+) ir BLACK2 (G), o apačioje - lydmetalį.
- Apačioje sulenkite laidą nuo RED2 taip, kad jis liestų varinę pagalvę ant SILVER9 ir apipjaustykite.
- Apačioje apipjaukite laidą iš BLACK2 virš lydmetalio.
- Viršuje įdėkite raudoną šviesos diodą į RED3 (+) ir BLACK3 (G), o apačioje - lydmetalį.
- Apačioje sulenkite laidą nuo RED3 taip, kad jis liestų varinę pagalvę ant SILVER10 ir apipjaustytų.
- Apačioje apipjaukite laidą iš BLACK3 virš lydmetalio.
- Viršuje įkiškite 1K rezistorių į skylutes SILVER1 ir SILVER4.
- Apačioje atsekite, apipjaustykite ir lituokite nuo SILVER1 ant BLACK1.
- Viršuje įkiškite 1K rezistorių į skylutes SILVER2 ir SILVER4.
- Apačioje atsekite, apipjaustykite ir lituokite iš SILVER2 ant BLACK2.
- Viršuje įkiškite 1K rezistorių į skylutes SILVER3 ir SILVER4.
- Apačioje atsekite, apipjaustykite ir lituokite iš SILVER3 ant BLACK3.
- Apatinėje dalyje lituokite SILVER4 laidus ir apipjaukite maždaug 5 mm ilgio.
- Apačioje ant SILVER4 lituokite juodą laidą.
- Apatinėje dalyje į SILVER5 prilituokite baltą laidą, taip užtikrindami tęstinumą nuo RED1.
- Apatinėje dalyje į SILVER6 įlituokite geltoną laidą, kad užtikrintumėte tęstinumą nuo RED2.
- Apatinėje dalyje į SILVER7 lituokite oranžinę vielą, užtikrindami tęstinumą nuo RED3.
4 žingsnis: pagrindinės grandinės surinkimas
Surinkimas:
- 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.
- Galinėje pusėje atsekite geltoną vielą nuo GELTONOS1 iki GELTONOS2 ir lydmetalį.
- Galinėje pusėje atsekite oranžinę vielą nuo ORANGE1 iki ORANGE2 ir lydmetalį.
- Galinėje pusėje atsekite mėlyną laidą nuo BLUE1 iki BLUE2 ir lydmetalį.
- Galinėje pusėje atsekite žalią laidą nuo GREEN1 iki GREEN2 ir lydmetalį.
- Galinėje pusėje atsekite baltą vielą nuo WHITE1 iki WHITE2 ir lydmetalį.
- Galinėje pusėje atsekite juodą laidą nuo BLACK1 iki BLACK2 ir lydmetalį.
- Galinėje pusėje atsekite juodą laidą nuo BLACK3 iki BLACK4 ir lydmetalį.
- Galinėje pusėje atsekite raudoną vielą nuo RED1 iki RED2 ir lydmetalį.
- Galinėje pusėje atsekite pliką laidą nuo RED3 iki RED4 ir lydmetalį.
- Galinėje pusėje atsekite pliką vielą nuo SILVER1 iki SILVER2 ir lydmetalį.
- Pridėkite trumpiklį 5V arba 3V3 linijoje.
Jei naudojate aukščiau esančius indikatorius (žr. „Pinout“diagramą):
- Galinėje pusėje lituokite baltą laidą į PB1.
- Gale esantį geltoną laidą įlituokite į PB3.
- Galinėje pusėje lituokite oranžinę vielą į PB4.
- Galinėje pusėje lituokite juodą laidą į GND.
5 žingsnis: bandymas
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ą:
- Prijunkite 5,0 V UNO prie BRCK VCC.
- Prijunkite UNO GND prie BRICK GND.
- Prijunkite A5 ant UNO prie SCL BRICK.
- Prijunkite A4 UNO prie SDA BRICK.
- Prijunkite 4K7 ištraukiamąjį rezistorių iš SDA prie VCC.
- Prijunkite 4K7 ištraukiamąjį rezistorių iš SCL prie VCC.
Bandymo vykdymas
- Prijunkite UNO prie „Dev“kompiuterio naudodami USB.
- Įkelkite kodą į UNO.
- Atidarykite „Arduino“konsolę.
- Pasirinkite 9600 baudų (iš naujo paleiskite UNO ir, jei reikia, vėl atidarykite konsolę).
- Vergo adresas bus atspausdintas konsolėje.
- Kai įveskite siuntimo laukelį 2 1 (taigi 16 2 1), ir priėmimo šviesos diodas įsijungs.
- 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
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:
Spustelėkite „Brick Switch for Makey Makey“: 4 žingsniai (su nuotraukomis)
Spustelėkite „Brick Switch for Makey Makey“: šis 3D spausdintas jungiklis leis vartotojui paversti „Makey Makey“į „piršto skaidrę“. jei norite spustelėti " žaidimuose arba rodyklėmis į dešinę/į kairę slinkti per pristatymus. Pridedami dešiniojo ir kairiojo gnybtų laikikliai
IOT123 - D1M BLOCK - 2xAMUX surinkimas: 7 žingsniai (su paveikslėliais)
IOT123 - D1M BLOCK - 2xAMUX surinkimas: D1M BLOCKS prideda lytėjimo dėklus, etiketes, poliškumo kreipiklius ir išpjovas populiariame „Wemos D1 Mini SOC/Shields/Clones“. Viena iš ESP8266 mikroschemos problemų yra ta, kad ji turi tik vieną analoginį IO kaištį. Ši instrukcija parodo, kaip surinkti 2xA
IOT123 - D1M BLOCK - RFTXRX Surinkimas: 8 žingsniai
IOT123 - D1M BLOCK - RFTXRX surinkimas: D1M BLOCKS prideda lytėjimo dėklus, etiketes, poliškumo kreipiklius ir išpjovas populiariame „Wemos D1 Mini SOC/Shields/Clones“. RF siųstuvai/imtuvai leidžia ESP8266 pasiekti esamą namų/pramonės automatiką. Šis korpusas suteikia 433
IOT123 - LIR2032 BATERY BRICK: 4 žingsniai
IOT123 - LIR2032 BATTERY BRICK: „IOT123 BRICKS“yra moduliniai „pasidaryk pats“įrenginiai, kuriuos galima sumaišyti su kitais IOT123 plytais, kad mazgas būtų papildomas ar nešiojamas. Jie yra pagrįsti colių kvadratinėmis dvipusiomis protobootomis, sujungtomis per skyles. Nors instrukcija
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: 4 žingsniai
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: ATNAUJINIMAS: Ši sąranka iš esmės yra akademinė arba skirta programinės įrangos/maitinimo šaltinio testavimui. Net kai PB5 yra išjungtas kaip RESET, jis tiksliai neskaito reikšmių naudodami analogRead: pagrindinį jutiklių rodmenų naudojimo atvejį. Bus išnagrinėta ATTINY84 sąranka