Talaan ng mga Nilalaman:

IOT123 - I2C HEARTBEAT BRICK: 6 Hakbang
IOT123 - I2C HEARTBEAT BRICK: 6 Hakbang

Video: IOT123 - I2C HEARTBEAT BRICK: 6 Hakbang

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

Ang IOT123 BRICKS ay mga modular na yunit ng DIY na maaaring mashed sa iba pang mga IOT123 BRICKS, upang magdagdag ng pag-andar sa isang node o naisusuot. Ang mga ito ay batay sa pulgadang parisukat, mga dobleng panig na mga protoboard na may magkakaugnay na mga butas.

Ang isang bilang ng mga BRICKS na ito ay inaasahan na nasa maraming mga node (Master MCUs - ESP8266 o ATTINY84) sa isang site. Ang MCU ay hindi nangangailangan ng paunang kaalaman tungkol sa mga layunin ng sensor o mga pangangailangan ng software. Sinusuri nito ang mga node ng I2C pagkatapos ay humiling ng isang dump ng pag-aari (data ng sensor) mula sa bawat alipin. Ang mga BRICK na ito ay nagbibigay ng 5.0V, 3.3V at isa pang linya ng AUX na napapasadyang.

Ang I2C HEARTBEAT BRICK ay nagpapahiwatig kung ang ATTINY na alipin ay buhay, pati na rin ang trapiko ng I2C, at may isang pag-aari:

STATUS ("BUHAY")

Ang PB1 (puti) ay nagpapahiwatig ng kalusugan ng ATTINY.

Ang pag-toggle ng PB3 (dilaw) ay may mga kahilingan sa I2C mula sa master.

Ang PB4 (orange) ay nagpapalipat-lipat sa pagtanggap ng I2C mula sa master.

Ang mga through-hole na katabi ng ATTINY85 ay naiwang hindi nagamit, upang paganahin ang isang programang pogo pin habang ang DIP8 ay solder sa PCB. Ang isang karagdagang abstraction, na ibinabalot ang BRICKS sa maliliit na silindro na nag-plug sa isang D1M WIFI BLOCK hub, na binobomba ang mga halaga sa isang MQTT server, ay binuo.

Hakbang 1: Mga Materyales at Tool

Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan

Mayroong isang buong listahan ng Materyal at Sourcing.

  1. Papel PCB (7 x 7 butas)
  2. LEDS (Pula, berde, Asul)
  3. Mga Resistor (3 off 1K)
  4. ATTINY85 20PU (1)
  5. 1 "Dobleng panig na protoboard (1)
  6. Lalake Header 90º (3P, 3P)
  7. Lalaking Header (2P, 2P)
  8. Jumper Shunt (1)
  9. Hookup wire (~ 7)
  10. Panghinang at Bakal (1)

Hakbang 2: Ihanda ang ATTINY85

Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85

TANDAAN: Kung may balak na isama ang Crouton, mangyaring gamitin ang library mula dito, at gamitin ang halimbawang naka-install na "attiny_heartbeat"

Kailangan ang AttinyCore mula sa Boards Manager. Sunugin ang bootloader na "EEPROM Nananatili", "8mHZ Panloob" (lahat ng config na ipinakita sa itaas).

Makikita ang repository ng code dito.

Ang isang ZIP ng silid-aklatan ay matatagpuan dito.

Mga tagubilin para sa "Pag-import ng isang ZIP Library" dito.

Kapag na-install na ang library maaari mong buksan ang halimbawang "attiny_heartbeat".

Upang mai-upload ang firmware sa ATTINY85, maaari kang makahanap ng higit pang mga detalye sa mga itinuturo na ito:

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

Pinakamahusay na subukan sa pamamagitan ng breadboard bago magpatuloy.

Kung mayroon kang mga ASSIMILATE SENSORS, tiyaking naiiba ang address ng alipin sa isang kumbinasyon ng SENSOR / MCU Host hal. lahat ng mga aktor ng Relay ay maaaring magkaroon ng parehong address hangga't mayroon kang isang Relay na aktor sa isang MCU / node.

Hakbang 3: Pag-iipon ng mga tagapagpahiwatig

Pag-iipon ng mga tagapagpahiwatig
Pag-iipon ng mga tagapagpahiwatig
Pag-iipon ng mga tagapagpahiwatig
Pag-iipon ng mga tagapagpahiwatig
Pag-iipon ng mga tagapagpahiwatig
Pag-iipon ng mga tagapagpahiwatig

Ang mga tagapagpahiwatig ay sinadya upang maging ganap na napapasadyang. Ito ang mga signal ng kaganapan mula sa pangunahing circuit na nakikita bilang Heartbeats. Para sa pagbuo na ito gagamitin namin ang mga tagapagpahiwatig ng LED; ang iyong build ay maaaring gumamit ng mga relay (oo ang VCC ay nasira) o ibang tagapagpahiwatig na batay sa visual / signal. Ang mga halaga ng risistor ay nakasalalay sa personal na kagustuhan sa kung gaano kalinaw ang gusto mo sa kanila.

  1. Sa itaas, ipasok ang isang asul na LED sa RED1 (+) at BLACK1 (G), at solder sa ibaba.
  2. Sa ibaba, yumuko ang tingga mula sa RED1 upang hawakan nito ang tanso pad sa SILVER8 at i-trim.
  3. Sa ibaba, i-trim ang tingga mula sa BLACK1 sa itaas na panghinang.
  4. Sa itaas, ipasok ang isang berdeng LED sa RED2 (+) at BLACK2 (G), at solder sa ibaba.
  5. Sa ilalim, yumuko ang tingga mula sa RED2 upang hawakan nito ang tanso pad sa SILVER9 at i-trim.
  6. Sa ibaba, i-trim ang tingga mula sa BLACK2 sa itaas ng panghinang.
  7. Sa itaas, ipasok ang isang pulang LED sa RED3 (+) at BLACK3 (G), at solder sa ibaba.
  8. Sa ibaba, yumuko ang tingga mula sa RED3 upang hawakan nito ang tanso pad sa SILVER10 at i-trim.
  9. Sa ibaba, i-trim ang tingga mula sa BLACK3 sa itaas ng panghinang.
  10. Sa itaas, ipasok ang isang 1K risistor sa pamamagitan ng mga butas na SILVER1 at SILVER4.
  11. Sa ibaba, subaybayan, i-trim at panghinang ang tingga mula sa SILVER1 papunta sa BLACK1.
  12. Sa itaas, ipasok ang isang 1K risistor sa pamamagitan ng mga butas na SILVER2 at SILVER4.
  13. Sa ibaba, subaybayan, i-trim at panghinang ang lead mula sa SILVER2 papunta sa BLACK2.
  14. Sa itaas, ipasok ang isang 1K risistor sa pamamagitan ng mga butas na SILVER3 at SILVER4.
  15. Sa ibaba, subaybayan, i-trim at panghinang ang lead mula sa SILVER3 papunta sa BLACK3.
  16. Sa ibaba, ang mga wire ng panghinang sa SILVER4 at i-trim sa halos 5mm na pagpapalawak.
  17. Sa ilalim, maghinang ng isang itim na kawad papunta sa SILVER4.
  18. Sa ibaba, maghinang ng isang puting kawad sa SILVER5, tinitiyak ang pagpapatuloy na humantong mula sa RED1.
  19. Sa ibaba, maghinang ng isang dilaw na kawad sa SILVER6, tinitiyak ang pagpapatuloy na humantong mula sa RED2.
  20. Sa ibaba, maghinang ng isang orange wire sa SILVER7, tinitiyak ang pagpapatuloy na humantong mula sa RED3.

Hakbang 4: Pag-iipon ng Pangunahing Circuit

Pag-iipon ng Main Circuit
Pag-iipon ng Main Circuit
Pag-iipon ng Main Circuit
Pag-iipon ng Main Circuit
Pag-iipon ng Main Circuit
Pag-iipon ng Main Circuit

Assembly:

  1. Sa harap, ipasok ang mga sangkap ATTINY85 (1), 3P 90deg male header (2) (3), 3P male header (4) (5) at solder sa likuran.
  2. Sa likuran, subaybayan ang isang dilaw na kawad mula sa YELLOW1 hanggang YELLOW2 at panghinang.
  3. Sa likuran, subaybayan ang isang orange wire mula ORANGE1 hanggang ORANGE2 at solder.
  4. Sa likuran, subaybayan ang isang asul na kawad mula BLUE1 hanggang BLUE2 at solder.
  5. Sa likuran, subaybayan ang isang berdeng kawad mula GREEN1 hanggang GREEN2 at panghinang.
  6. Sa likuran, subaybayan ang isang puting kawad mula sa WHITE1 hanggang WHITE2 at solder.
  7. Sa likuran, subaybayan ang isang itim na kawad mula BLACK1 hanggang BLACK2 at solder.
  8. Sa likuran, subaybayan ang isang itim na kawad mula BLACK3 hanggang BLACK4 at solder.
  9. Sa likuran, subaybayan ang isang pulang kawad mula sa RED1 hanggang RED2 at panghinang.
  10. Sa likuran, subaybayan ang isang hubad na kawad mula sa RED3 hanggang RED4 at panghinang.
  11. Sa likuran, subaybayan ang isang hubad na kawad mula sa SILVER1 hanggang sa SILVER2 at panghinang.
  12. Magdagdag ng isang lumulukso sa linya ng 5V o 3V3.

Kung gumagamit ng Mga Tagapahiwatig sa itaas (sumangguni sa pinout diagram):

  1. Sa likuran, solder ang puting kawad sa PB1.
  2. Sa likuran, solder ang dilaw na kawad sa PB3.
  3. Sa likuran, solder ang orange wire sa PB4.
  4. Sa likuran, solder ang itim na kawad sa GND.

Hakbang 5: Pagsubok

Pagsubok
Pagsubok
Pagsubok
Pagsubok
Pagsubok
Pagsubok
Pagsubok
Pagsubok

Ang isang bilang ng mga BRICKS na ito ay inaasahan na nasa maraming mga node (MCUs - ESP8266 o ATTINY84) sa isang kapaligiran. Ito ay isang pagsubok sa yunit: nagpapadala ng mga utos ng I2C mula sa UNO patungo sa ATTINY na nagpapalipat-lipat sa Makatanggap na LED. Ang ATTINY ALIVE LED ay mananatili.

Nakagawa na kami dati ng isang I2C SHIELD para sa Arduino.

Kung nais mong i-breadboard ito sa halip:

  1. Ikonekta ang 5.0V sa UNO sa isang VCC sa BRICK.
  2. Ikonekta ang GND sa UNO sa GND sa BRICK.
  3. Ikonekta ang A5 sa UNO sa SCL sa BRICK.
  4. Ikonekta ang A4 sa UNO sa SDA sa BRICK.
  5. Ikonekta ang isang resistor na pull-up na 4K7 mula sa SDA patungong VCC.
  6. Ikonekta ang isang resistor na pull-up na 4K7 mula sa SCL patungong VCC.

Pagpapatakbo ng pagsubok

  1. Ikonekta ang iyong UNO sa iyong Dev PC gamit ang USB.
  2. I-upload ang code sa UNO.
  3. Buksan ang Arduino Console.
  4. Pumili ng 9600 baud (i-restart ang UNO at muling buksan ang console kung kailangan mo).
  5. Ang address ng alipin ay i-print sa console.
  6. Kailan, ipasok ang send box 2 1 (kaya 16 2 1), at ang Nakatanggap na LED ay nakabukas.
  7. Kailan, ipasok ang send box 2 0 (kaya 16 2 0), at ang LED na Tumanggap ay naka-off.

Ang mga utos ng I2C BRICK adhoc para sa mga alipin mula sa UNO master

# isama
Const byte _num_chars = 32;
char _received_chars [_num_chars]; // isang array upang maiimbak ang natanggap na data
boolean _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASSIMILATE IOT ACTOR / SENSOR EEPROM EDITOR");
Serial.println ("tiyaking napili ang newline sa window ng console");
Serial.println ();
Serial.println ("ADDRESS 1 CONFIRM METADATA RESEIPT N / A (FOR M2M)");
Serial.println ("ADDRESS 2 ACTOR CommAND");
Serial.println ();
Serial.println ("ADDRESSES ON BUS:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int aparato_count = 0;
para sa (byte address = 8; address <127; address ++)
{
Wire.beginTransmission (address);
const byte error = Wire.endTransmission ();
kung (error == 0)
{
Serial.println (address);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
static byte ndx = 0;
char end_marker = '\ n';
char rc;
habang (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
kung (rc! = end_marker) {
_received_chars [ndx] = rc;
ndx ++;
kung (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
iba pa {
_received_chars [ndx] = '\ 0'; // wakasan ang string
ndx = 0;
_has_new_data = totoo;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
Const String natanggap_string = String (_received_chars);
kung (_has_new_data == totoo) {
int idx1 = natanggap_string.indexOf (");
String address = natanggap_string.substring (0, idx1);
int address_int = address.toInt ();
kung (address_int <8 || address_int> 127) {
Serial.println ("INVALID ADDRESS INPUT:");
Serial.println (address);
bumalik;
}
int idx2 = natanggap_string.indexOf (", idx1 + 1);
String code;
kung (idx2 == -1) {
code = ditampa_string.substring (idx1 + 1);
} iba pa {
code = ditampa_string.substring (idx1 + 1, idx2 + 1);
}
int code_int = code.toInt ();
kung (code_int <0 || code_int> 5) {
Serial.println ("INVALID CODE INPUT:");
Serial.println (code);
bumalik;
}
bool has_parameter = idx2> -1;
Parameter ng string;
kung (has_parameter) {
parameter = ditampa_string.substring (idx2 + 1, idx2 + 17); // 16 chars max
kung (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LENGTH 1");
_has_new_data = false;
bumalik;
}
} iba pa {
kung (code_int> 1) {
Serial.println ("PARAMETER REQUIRED!");
_has_new_data = false;
bumalik;
}
}
Serial.println ();
Serial.print ("input Orig =");
Serial.println (natanggap_string);
Serial.print ("address =");
Serial.println (address);
Serial.print ("code =");
Serial.println (code);
Serial.print ("parameter =");
Serial.println (parameter);
// SEND VIA I2C
Wire.beginTransmission (address_int);
Wire.write (code_int);
kung (has_parameter) {
parameter.trim ();
strcpy (param_buf, parameter.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("SENT VIA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = false;
}
}

tingnan ang rawuno_i2c_command_input.ino na naka-host sa ❤ ng GitHub

Hakbang 6: Susunod na Mga Hakbang

Mga Susunod na Hakbang
Mga Susunod na Hakbang
Mga Susunod na Hakbang
Mga Susunod na Hakbang

Ang follow-up na ASSIMILATE ACTOR: HEARTBEAT na gumagamit ng brick na ito ay may awtomatikong pagsasaayos para sa Crouton sa pamamagitan ng metadata na naka-install na sa ATTINY85 dito. Ang packet ng JSON na ipinadala sa Crouton ay ipinadala sa pamamagitan ng pinakabagong firmware para sa ICOS10. Maaari kang gumawa ng isang Proof-of-concept sa isang ordinaryong ESP8266, kung ang pagbuo ay labis na sa ngayon.

Ang UNO sketch na ginamit sa Pagsubok ay may isang function para sa pag-save ng isang bagong address ng alipin sa EEPROM sa ATTINY85, kung mayroon kang sagupaan sa iyong target na I2C bus.

Inirerekumendang: