Përmbajtje:

TOTA IOT123 - I2C 2CH RELAY: 5 hapa (me fotografi)
TOTA IOT123 - I2C 2CH RELAY: 5 hapa (me fotografi)

Video: TOTA IOT123 - I2C 2CH RELAY: 5 hapa (me fotografi)

Video: TOTA IOT123 - I2C 2CH RELAY: 5 hapa (me fotografi)
Video: I2C and SPI on a PCB Explained! 2024, Nëntor
Anonim
TOTE IOT123 - I2C 2CH RELEJ
TOTE IOT123 - I2C 2CH RELEJ
TOTE IOT123 - I2C 2CH RELEJ
TOTE IOT123 - I2C 2CH RELEJ
TOTA IOT123 - I2C 2CH RELAY
TOTA IOT123 - I2C 2CH RELAY
TOTA IOT123 - I2C 2CH RELAY
TOTA IOT123 - I2C 2CH RELAY

TULLA IOT123 janë njësi modulare DIY që mund të përzihen me Tulla të tjera IOT123, për të shtuar funksionalitetin në një nyje ose të veshshme. Ato bazohen në protoboards katrore të inçit, të dyanshëm me ndërlidhje përmes vrimave.

Një numër i këtyre Tullave pritet të jenë në nyje të shumta (Master MCUs - ESP8266 ose ATTINY84) në një sit. MCU nuk ka nevojë për njohuri paraprake për qëllimin e sensorëve ose nevojat e softuerit. Ai skanon për nyjet I2C pastaj kërkon një deponim të pronës (të dhëna të sensorit) nga secili skllav. Këto Tulla furnizojnë 5.0V, 3.3V dhe një linjë tjetër AUX e cila është e personalizueshme.

Kjo TULL I2C 2CH RELAY shtrin funksionalitetin e TURS I2C KY019 dhe ka dy veti leximi/shkrimi:

2CH RELAYS [0] (e vërtetë/e rreme)

2CH RELAYS [1] (e vërtetë/e rreme)

Vrimat ngjitur me ATTINY85 janë lënë të papërdorura, për të mundësuar një programues pogo pin ndërsa DIP8 është ngjitur në PCB. Një abstraksion i mëtejshëm, paketimi i Tullave në cilindra të vegjël që futen në një shpërndarës D1M WIFI BLOCK, duke pompuar vlerat në një server MQTT, është duke u zhvilluar.

Hapi 1: Materialet dhe Mjetet

Materialet dhe Mjetet
Materialet dhe Mjetet
Materialet dhe Mjetet
Materialet dhe Mjetet
Materialet dhe Mjetet
Materialet dhe Mjetet

Ekziston një listë e plotë e Faturave të Materialeve dhe Burimeve.

  1. Stafetë me 2 kanale (1)
  2. ATTINY85 20PU (1)
  3. Protoboard me 1 anë (1)
  4. Koka e meshkujve 90º (3P, 3P)
  5. Koka e burrave (2P, 2P)
  6. Jumper Shunt (1)
  7. Teli lidhës (7 ~)
  8. Ngjitës dhe hekur (1)

Hapi 2: Përgatitni ATTINY85

Përgatitni ATTINY85
Përgatitni ATTINY85
Përgatitni ATTINY85
Përgatitni ATTINY85
Përgatitni ATTINY85
Përgatitni ATTINY85

SHENIM: Nëse keni ndërmend të keni integrim në Crouton, ju lutemi përdorni bibliotekën nga këtu dhe përdorni shembullin e instaluar "attiny_2ch_relay".

Nevojitet AttinyCore nga Menaxheri i Bordeve. Djeg bootloader "EEPROM Retained", "8mHZ Interior" (të gjitha konfigurimet e treguara më lart).

Depoja e kodeve mund të gjendet këtu.

Një ZIP i bibliotekës mund të gjendet këtu.

Udhëzimet për "Importimi i një biblioteke ZIP" këtu.

Pasi të jetë instaluar biblioteka, mund të hapni shembullin "attiny_2ch_relay".

Për të ngarkuar firmware-in në ATTINY85, mund të gjeni më shumë detaje në këto udhëzime:

www.instructables.com/id/How-to-Program-A…

www.instructables.com/id/Programming-the-…

www.instructables.com/id/Programming-the-…

www.instructables.com/id/Programming-the-…

Më së miri për të provuar përmes bordit të bukës para se të vazhdoni.

Nëse keni Sensorë ASSIMILATE ekzistues, sigurohuni që adresa e skllavit të jetë e ndryshme në një kombinim SENSOR/MCU Host dmth. Të gjithë aktorët e Relay mund të kenë të njëjtën adresë për sa kohë që keni vetëm një aktor Relay në një MCU/nyje.

Hapi 3: Mblidhni qarkun

Mblidhni qarkun
Mblidhni qarkun
Mblidhni qarkun
Mblidhni qarkun
Mblidhni qarkun
Mblidhni qarkun
  1. Në pjesën e përparme, futni përbërësit ATTINY85 (1), titujt meshkuj 3P 90deg (2) (3), titujt meshkuj 3P (4) (5) dhe ngjitini në pjesën e pasme.
  2. Në pjesën e pasme, gjurmoni një tel të verdhë nga YELLOW1 në YELLOW2 dhe lidhni.
  3. Në pjesën e pasme, gjurmoni një tel portokalli nga ORANGE1 në ORANGE2 dhe lidhni.
  4. Në pjesën e pasme, gjurmoni një tel blu nga BLUE1 në BLUE2 dhe ngjiteni.
  5. Në pjesën e pasme, gjurmoni një tel të gjelbër nga GREEN1 në GREEN2 dhe lidhni.
  6. Në pjesën e pasme, gjurmoni një tel të zi nga BLACK1 në BLACK2 dhe ngjiteni.
  7. Në pjesën e pasme, gjurmoni një tel të zi nga BLACK3 në BLACK4 dhe ngjiteni.
  8. Në pjesën e pasme, gjurmoni një tel të kuq nga RED1 në RED2 dhe lidhni.
  9. Në pjesën e pasme, gjurmoni një tel të zhveshur nga RED3 në RED4 dhe lidhni.
  10. Në pjesën e pasme, gjurmoni një tel të zhveshur nga SILVER1 në SILVER2 dhe ngjiteni.
  11. Shtoni një bluzë në linjën 5V ose 3V3.

Stafeta tani mund të lidhet drejtpërdrejt nëpërmjet kunjave të saj në PCB ose nëpërmjet telave, në pikat e treguara në kontratën e kunjave.

Hapi 4: Testimi

Duke testuar
Duke testuar
Duke testuar
Duke testuar
Duke testuar
Duke testuar
Duke testuar
Duke testuar

Një numër i këtyre Tullave pritet të jenë në nyje të shumta (MCUs - ESP8266 ose ATTINY84) në një mjedis. Ky është një test njësie: dërgon komanda I2C nga UNO në ATTINY e cila hap ose mbyll reletë.

Ne kemi ndërtuar më parë një I2C SHIELD për Arduino.

Nëse dëshironi ta vendosni atë në vend:

  1. Lidhni 5.0V në UNO me një VCC në BRICK.
  2. Lidhni GND në UNO me GND në Tulla.
  3. Lidhni A5 në UNO me SCL në Tulla.
  4. Lidhni A4 në UNO me SDA në BRICK.
  5. Lidhni një rezistencë tërheqëse 4K7 nga SDA në VCC.
  6. Lidhni një rezistencë tërheqëse 4K7 nga SCL në VCC.

Drejtimi i testit

  1. Lidhni UNO -në tuaj me kompjuterin tuaj Dev me USB.
  2. Ngarko kodin në UNO.
  3. Hapni tastierën Arduino.
  4. Zgjidhni 9600 baud (rinisni UNO dhe rihapni tastierën nëse është e nevojshme).
  5. Adresa e skllavit do të printohet në tastierë.
  6. Kur, futni në kutinë e dërgimit 2 0: 1 (pra 15 2 0: 1), dhe stafeta CH1 ndizet.

  7. Kur, futni në kutinë e dërgimit 2 0: 0 (pra 15 2 0: 0), dhe stafeta CH1 fiket.
  8. Kur, futni në kutinë e dërgimit 2 1: 1 (pra 15 2 1: 1), dhe stafeta CH2 ndizet.
  9. Kur, futni në kutinë e dërgimit 2 1: 0 (pra 15 2 0: 0), dhe stafeta CH2 fiket.

Komandat adhoc të I2C BRICK për skllevërit nga masteri i UNO

#përfshi
const byte _num_chars = 32;
char _marrë_chars [_num_chars]; // një grup për të ruajtur të dhënat e marra
boolean _has_new_data = false;
voidsetup () {
Serial.filloj (9600);
Serial.println ();
Serial.println ("ASSIMILATE IOT ACTOR/SENSOR EEPROM EDITOR");
Serial.println ("siguro që linja e re e zgjedhur në dritaren e tastierës");
Serial.println ();
Serial.println ("ADRESA 1 KONFIRMIMI I PETRFSHIRJES SET METADATAVE N/A (P MR M2M)");
Serial.println ("ADRESA 2 KOMANDA E AKTORIT");
Serial.println ();
Serial.println ("Adresat në autobus:");
scan_i2c_adresa ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_adresat () {
int pajisja_numër = 0;
për (adresa e bajtit = 8; adresa <127; adresa ++)
{
Wire.beginTransmetimi (adresa);
const byte error = Wire.endTransmission ();
nëse (gabim == 0)
{
Serial.println (adresa);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
bajt statik ndx = 0;
fundi_shënues = '\ n';
char rc;
ndërsa (Serial. i disponueshëm ()> 0 && _has_new_data == false) {
rc = Serial.read ();
nëse (rc! = shënuesi i fundit) {
_marrë_chars [ndx] = rc;
ndx ++;
nëse (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
tjeter {
_rriten_chars [ndx] = '\ 0'; // përfundoni vargun
ndx = 0;
_has_new_data = e vërtetë;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const Vija e pranuar_string = String (_cipat_ e marra);
nëse (_has_new_data == vërtetë) {
int idx1 = marrë_string.indexOf ('');
Adresa e vargut = marrë_string.substring (0, idx1);
int address_int = adresa.toInt ();
nëse (adresa_int <8 || adresa_int> 127) {
Serial.println ("HYRJA E ADRESS SV INVALIDIT:");
Serial.println (adresa);
kthim;
}
int idx2 = marrë_string.indexOf ('', idx1+1);
Kodi i vargut;
nëse (idx2 == -1) {
kodi = marrë_string.substring (idx1+1);
} tjetër {
kodi = marrë_string.substring (idx1+1, idx2+1);
}
int code_int = code.toInt ();
nëse (code_int <0 || code_int> 5) {
Serial.println ("HYRJA E KODIT TV INVALIDUAR:");
Serial.println (kodi);
kthim;
}
bool has_parameter = idx2> -1;
Parametri i vargut;
nëse (ka_parametër) {
parametër = marrë_string.substring (idx2 + 1, idx2 + 17); // 16 karaktere max
if (parametri.length () <1) {
Serial.println ("PARTAMETRI MIN. Gjatësia 1");
_has_new_data = false;
kthim;
}
} tjetër {
nëse (code_int> 1) {
Serial.println ("PARAMETRI I KERKESUAR!");
_has_new_data = false;
kthim;
}
}
Serial.println ();
Serial.print ("input orig =");
Serial.println (vargu i marrë);
Serial.print ("adresa =");
Serial.println (adresa);
Serial.print ("code =");
Serial.println (kodi);
Serial.print ("parametri =");
Serial.println (parametri);
// D SRGIMI VIA I2C
Wire.beginTransmission (adresa_int);
Wire.write (code_int);
nëse (ka_parametër) {
parametër.trim ();
strcpy (param_buf, parametër.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("DENTRGUAR NGA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = false;
}
}

shikoni rawuno_i2c_command_input.ino të pritur me ❤ nga GitHub

Hapi 5: Hapat e ardhshëm

Hapat e ardhshëm
Hapat e ardhshëm
Hapat e ardhshëm
Hapat e ardhshëm
Hapat e ardhshëm
Hapat e ardhshëm
Hapat e ardhshëm
Hapat e ardhshëm

Vazhdimi ASTIMILATOR ACTOR: 2CH RELAY i cili përdor këtë tullë ka konfigurim automatik për Crouton nëpërmjet meta të dhënave të instaluara tashmë në ATTINY85 këtu. Paketa JSON e dërguar në Crouton dërgohet përmes firmuerit më të fundit për ICOS10. Ju mund të bëni një Proof-of-concept në një ESP8266 të zakonshëm, nëse ndërtimi është shumë për tani.

Skica UNO e përdorur në Testim ka një funksion për të ruajtur një adresë të re skllave në EEPROM në ATTINY85, nëse keni një përplasje në autobusin tuaj të synuar I2C. Janë shtuar disa skema, por ka mënyra të ndryshme për të lidhur qarkun në rrjedhën e poshtme në varësi të asaj që dëshironi të arrini, kështu që unë do ta lë atë për ju:)

Recommended: