Sadržaj:

IOT123 - I2C CIGLA OD SRCA: 6 koraka
IOT123 - I2C CIGLA OD SRCA: 6 koraka

Video: IOT123 - I2C CIGLA OD SRCA: 6 koraka

Video: IOT123 - I2C CIGLA OD SRCA: 6 koraka
Video: IOT123 - ICOS10: STRUCTURE 2024, Studeni
Anonim
IOT123 - I2C CIGLA OD SRCA
IOT123 - I2C CIGLA OD SRCA
IOT123 - I2C CIGLA OD SRCA
IOT123 - I2C CIGLA OD SRCA
IOT123 - I2C CIGLA OD SRCA
IOT123 - I2C CIGLA OD SRCA

IOT123 CIGLE su DIY modularne jedinice koje se mogu kombinirati s drugim IOT123 CIGLAMA, za dodavanje funkcionalnosti čvoru ili nosivom uređaju. Temelje se na inčnim kvadratnim, dvostranim protoboardima s međusobno povezanim rupama.

Očekuje se da će se određeni broj ovih CIGLA nalaziti na više čvorova (glavni MCU -ovi - ESP8266 ili ATTINY84) na web mjestu. MCU -u nije potrebno prethodno znanje o namjeni senzora ili softverskim potrebama. Skenira I2C čvorove, a zatim traži dump svojstva (podatke senzora) od svakog podređenog uređaja. Ove OPEKE isporučuju 5.0V, 3.3V i drugu AUX liniju koja se može prilagoditi.

Ova I2C HEARTBEAT CIKLA pokazuje je li ATTINY slave živ, također I2C promet i ima jedno svojstvo:

STATUS ("ŽIVO")

PB1 (bijela) označava zdravlje ATTINY.

PB3 (žuto) prebacuje se s I2C zahtjevima glavnog uređaja.

PB4 (narančasta) prebacuje se s I2C prijemom od glavnog uređaja.

Prolazne rupe uz ATTINY85 ostavljene su neiskorištene, kako bi se omogućio pogo pin programator dok je DIP8 lemljen na PCB. Razvija se daljnja apstrakcija, pakiranje CIGLA u male cilindre koji se spajaju u D1M WIFI BLOCK čvorište, pumpajući vrijednosti na MQTT poslužitelj.

Korak 1: Materijali i alati

Materijali i alati
Materijali i alati
Materijali i alati
Materijali i alati
Materijali i alati
Materijali i alati
Materijali i alati
Materijali i alati

Postoji potpuni popis materijala i izvora.

  1. Papirna ploča (7 x 7 rupa)
  2. LED diode (crvena, zelena, plava)
  3. Otpornici (3 od 1K)
  4. ATTINY85 20PU (1)
  5. 1 "dvostrana protoboard (1)
  6. Muški zaglavlje 90º (3P, 3P)
  7. Muški zaglavlje (2P, 2P)
  8. Premosnik za skakače (1)
  9. Spojna žica (~ 7)
  10. Lemljenje i željezo (1)

Korak 2: Pripremite ATTINY85

Pripremite ATTINY85
Pripremite ATTINY85
Pripremite ATTINY85
Pripremite ATTINY85
Pripremite ATTINY85
Pripremite ATTINY85
Pripremite ATTINY85
Pripremite ATTINY85

NAPOMENA: Ako namjeravate imati Croutonovu integraciju, upotrijebite biblioteku odavde i upotrijebite instalirani primjer "attiny_heartbeat"

Potreban je AttinyCore od upravitelja odbora. Snimite bootloader "EEPROM zadržan", "8mHZ Interni" (sve konfiguracije prikazane gore).

Spremište kodova može se pronaći ovdje.

ZIP biblioteke možete pronaći ovdje.

Upute za "Uvoz ZIP knjižnice" ovdje.

Nakon što je knjižnica instalirana, možete otvoriti primjer "attiny_heartbeat".

Da biste učitali firmver na ATTINY85, više detalja možete pronaći u ovim uputama:

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

Prije nastavka najbolje je testirati putem matične ploče.

Ako imate postojeće ASISIMILATNE SENZORE, provjerite je li adresa slave drugačija u kombinaciji SENZOR/MCU domaćin, npr. svi glumci releja mogu imati istu adresu sve dok imate samo jednog glumca releja na MCU/čvoru.

Korak 3: Sastavljanje pokazatelja

Sastavljanje pokazatelja
Sastavljanje pokazatelja
Sastavljanje pokazatelja
Sastavljanje pokazatelja
Sastavljanje pokazatelja
Sastavljanje pokazatelja

Namjera je da se pokazatelji u potpunosti prilagode. Signali događaja iz glavnog kruga vide se kao otkucaji srca. Za ovu ćemo konstrukciju koristiti LED indikatore; vaša konstrukcija može koristiti releje (da, VCC je isključen) ili neki drugi vizualni/signalni indikator. Vrijednosti otpornika ovisit će o osobnim preferencijama o tome koliko ih želite svijetli.

  1. Na vrhu umetnite plavu LED diodu u CRVENU1 (+) i CRNU1 (G), a lemite s donje strane.
  2. Sa donje strane savijte kabel od RED1 tako da dodiruje bakreni jastučić na SREBRNOM8 i podreže ga.
  3. Na dnu, obrežite kabel od BLACK1 iznad lemljenja.
  4. Na vrhu umetnite zelenu LED diodu u CRVENE2 (+) i CRNU2 (G), a lemite na dnu.
  5. Sa donje strane savijte kabel od RED2 tako da dodiruje bakreni jastučić na SREBRNOM9 i obrezuje ga.
  6. Na dnu, obrežite kabel od BLACK2 iznad lemljenja.
  7. Na vrhu umetnite crvenu LED diodu u CRVENU3 (+) i CRNU3 (G), a lemite s donje strane.
  8. Sa donje strane savijte kabel od RED3 tako da dodiruje bakreni jastučić na SILVER10 i podreže ga.
  9. Na dnu, obrežite kabel od BLACK3 iznad lemljenja.
  10. Na vrhu umetnite 1K otpornik u otvore SILVER1 i SILVER4.
  11. Na dnu, trag, obrezivanje i lemljenje kabela od SREBRNOG1 do CRNOG1.
  12. Na vrhu umetnite 1K otpornik u otvore SILVER2 i SILVER4.
  13. Na dnu, trag, obrezivanje i lemljenje kabela od SILVER2 do BLACK2.
  14. Na vrhu umetnite 1K otpornik u otvore SILVER3 i SILVER4.
  15. Pri dnu traga, obrežite i lemite kabel od SREBRNOG3 do CRNOG3.
  16. Na dnu lemite žice na SILVER4 i obrežite ih na oko 5 mm produžavajući se.
  17. Na dnu lemite crnu žicu na SILVER4.
  18. Na dnu lemite bijelu žicu u SILVER5, osiguravajući kontinuitet od RED1.
  19. Na dnu lemite žutu žicu u SILVER6, osiguravajući kontinuitet od RED2.
  20. Na dnu lemite narančastu žicu u SILVER7, osiguravajući kontinuitet od RED3.

Korak 4: Sastavljanje glavnog kruga

Sastavljanje glavnog kruga
Sastavljanje glavnog kruga
Sastavljanje glavnog kruga
Sastavljanje glavnog kruga
Sastavljanje glavnog kruga
Sastavljanje glavnog kruga

Skupština:

  1. S prednje strane umetnite komponente ATTINY85 (1), 3P 90deg muške glave (2) (3), 3P muške glave (4) (5) i lemite sa stražnje strane.
  2. Na stražnjoj strani ucrtajte žutu žicu od ŽUTE1 do ŽUTE2 i lemite.
  3. Na stražnjoj strani nacrtajte narančastu žicu od NARANČE1 do NARANČE2 i lemite.
  4. Na stražnjoj strani nacrtajte plavu žicu od PLAVE1 do PLAVE2 i lemite.
  5. Na stražnjoj strani nacrtajte zelenu žicu od ZELENE1 do ZELENE2 i lemite.
  6. Na stražnjoj strani obilježite bijelu žicu od BIJELOG1 do BIJELOG2 i lemite.
  7. Na stražnjoj strani nacrtajte crnu žicu od BLACK1 do BLACK2 i lemite.
  8. Na stražnjoj strani nacrtajte crnu žicu od BLACK3 do BLACK4 i lemite.
  9. Na stražnjoj strani ocrtajte crvenu žicu od RED1 do RED2 i lemite.
  10. Sa stražnje strane ocrtajte golu žicu od RED3 do RED4 i lemite.
  11. Na stražnjoj strani ocrtajte golu žicu od SREBRO1 do SREBRO2 i lemite.
  12. Dodajte kratkospojnik na liniju 5V ili 3V3.

Ako koristite gornje pokazatelje (pogledajte dijagram iscrtavanja):

  1. Na stražnjoj strani lemite bijelu žicu u PB1.
  2. Sa stražnje strane lemite žutu žicu u PB3.
  3. Na stražnjoj strani lemite narančastu žicu u PB4.
  4. Na stražnjoj strani lemite crnu žicu u GND.

Korak 5: Testiranje

Testiranje
Testiranje
Testiranje
Testiranje
Testiranje
Testiranje
Testiranje
Testiranje

Očekuje se da će određeni broj ovih CIGLA biti na više čvorova (MCU -ovi - ESP8266 ili ATTINY84) u okruženju. Ovo je jedinični test: šalje I2C naredbe iz UNO -a na ATTINY koji prebacuje LED za primanje. LED ATTINY ALIVE svijetli.

Prethodno smo izgradili I2C ŠTIT za Arduino.

Ako ga umjesto toga želite zamisliti:

  1. Spojite 5.0V na UNO na VCC na BRICK.
  2. Spojite GND na UNO na GND na BRICK.
  3. Spojite A5 na UNO na SCL na BRICK.
  4. Spojite A4 na UNO na SDA na BRICK.
  5. Spojite 4K7 pull-up otpornik sa SDA na VCC.
  6. Spojite 4K7 pull-up otpornik iz SCL-a u VCC.

Pokretanje testa

  1. Spojite svoj UNO na svoje Dev računalo putem USB -a.
  2. Učitajte kôd u UNO.
  3. Otvorite Arduino konzolu.
  4. Odaberite 9600 bauda (ponovno pokrenite UNO i ponovno otvorite konzolu ako morate).
  5. Adresa podređenog uređaja ispisat će se na konzoli.
  6. Kada unesite u okvir za slanje 2 1 (dakle 16 2 1) i LED za primanje će se uključiti.
  7. Kada unesite u okvir za slanje 2 0 (dakle 16 2 0), a LED za primanje se isključuje.

I2C BRICK adhoc naredbe za robove od UNO master -a

#uključi
const bajt _broj_znakova = 32;
char _primljeni_slovci [_broj_znakova]; // niz za spremanje primljenih podataka
boolean _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASIMILIRAJ IOT ACTOR/SENSOR EEPROM EDITOR");
Serial.println ("osigurajte da je novi red izabran u prozoru konzole");
Serial.println ();
Serial.println ("ADRESA 1 POTVRDI PRIJEM METADATA N/A (ZA M2M)");
Serial.println ("ZAPOVJEDA GLUMCA ADRESE 2");
Serial.println ();
Serial.println ("ADRESE NA BUSU:");
scan_i2c_adrese ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int uređaj_broj = 0;
for (adresa bajta = 8; adresa <127; adresa ++)
{
Wire.beginTransmission (adresa);
greška const bajta = Wire.endTransmission ();
ako (pogreška == 0)
{
Serial.println (adresa);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
statički bajt ndx = 0;
char end_marker = '\ n';
char rc;
while (Serial.available ()> 0 && _has_new_data == false) {
rc = Serijski.čitaj ();
if (rc! = end_marker) {
_primljeni_slovnici [ndx] = rc;
ndx ++;
if (ndx> = _broj_znakova) {
ndx = _broj_znakova - 1;
}
}
drugo {
_received_chars [ndx] = '\ 0'; // završava niz
ndx = 0;
_has_new_data = true;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const niz primljen_string = niz (_primljeni_slovnici);
if (_has_new_data == true) {
int idx1 = primljeni_string.indexOf ('');
Adresa niza = primljena_string.substring (0, idx1);
int adresa_int = adresa.toInt ();
if (adresa_int <8 || adresa_int> 127) {
Serial.println ("INVALID ADDRESS INPUT:");
Serial.println (adresa);
povratak;
}
int idx2 = primljeni_string.indexOf ('', idx1+1);
Kod niza;
if (idx2 == -1) {
kod = primljeni_string.substring (idx1+1);
}drugo{
kod = primljeni_string.substring (idx1+1, idx2+1);
}
int code_int = code.toInt ();
if (code_int <0 || code_int> 5) {{100} {101}
Serial.println ("INVALID CODE INPUT:");
Serial.println (kod);
povratak;
}
bool has_parameter = idx2> -1;
Parametar niza;
if (ima_parametar) {
parametar = primljeni_string.substring (idx2 + 1, idx2 + 17); // maksimalno 16 znakova
if (parameter.length () <1) {
Serial.println ("PARTAMETAR MIN. LENGTH 1");
_has_new_data = false;
povratak;
}
}drugo{
if (code_int> 1) {
Serial.println ("PARAMETAR POTREBAN!");
_has_new_data = false;
povratak;
}
}
Serial.println ();
Serial.print ("input orig =");
Serial.println (primljeni_ string);
Serial.print ("adresa =");
Serial.println (adresa);
Serial.print ("code =");
Serial.println (kod);
Serial.print ("parameter =");
Serial.println (parametar);
// POŠALJI PREKO I2C
Wire.beginTransmission (adresa_int);
Wire.write (code_int);
if (ima_parametar) {
parameter.trim ();
strcpy (param_buf, parameter.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("Poslano putem I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = false;
}
}

pogledajte rawuno_i2c_command_input.ino hostirano sa ❤ od strane GitHub -a

Korak 6: Sljedeći koraci

Sljedeći koraci
Sljedeći koraci
Sljedeći koraci
Sljedeći koraci

Sljedeći ASSIMILATE ACTOR: HEARTBEAT koji koristi ovu ciglu ima automatsku konfiguraciju za Croutona putem metapodataka koji su već instalirani u ATTINY85 ovdje. JSON paket poslan Croutonu šalje se putem najnovijeg firmvera za ICOS10. Možete napraviti Proof-of-concept na običnom ESP8266, ako je za sada gradnja previše.

UNO skica korištena u Testiranju ima funkciju spremanja nove slave adrese u EEPROM na ATTINY85, ako dođe do sukoba na ciljanoj I2C sabirnici.

Preporučeni: