Inhoudsopgave:

IOT123 - I2C 2CH RELAIS BAKSTEEN - Ajarnpa
IOT123 - I2C 2CH RELAIS BAKSTEEN - Ajarnpa

Video: IOT123 - I2C 2CH RELAIS BAKSTEEN - Ajarnpa

Video: IOT123 - I2C 2CH RELAIS BAKSTEEN - Ajarnpa
Video: IOT123 - ICOS10: STRUCTURE 2024, Juni-
Anonim
IOT123 - I2C 2CH RELAIS BAKSTEEN
IOT123 - I2C 2CH RELAIS BAKSTEEN
IOT123 - I2C 2CH RELAIS BAKSTEEN
IOT123 - I2C 2CH RELAIS BAKSTEEN
IOT123 - I2C 2CH RELAIS BAKSTEEN
IOT123 - I2C 2CH RELAIS BAKSTEEN
IOT123 - I2C 2CH RELAIS BAKSTEEN
IOT123 - I2C 2CH RELAIS BAKSTEEN

De IOT123 BRICKS zijn doe-het-zelf modulaire units die kunnen worden gepureerd met andere IOT123 BRICKS, om functionaliteit toe te voegen aan een node of wearable. Ze zijn gebaseerd op de vierkante inch vierkante, dubbelzijdige protoboards met onderling verbonden doorgaande gaten.

Een aantal van deze BRICKS zal naar verwachting op meerdere knooppunten (Master MCU's - ESP8266 of ATTINY84) op een site staan. De MCU heeft geen voorkennis nodig van het doel van de sensoren of softwarebehoeften. Het scant naar I2C-knooppunten en vraagt vervolgens om een eigendomsdump (sensorgegevens) van elke slave. Deze BRICKs leveren 5.0V, 3.3V en een andere AUX-lijn die aanpasbaar is.

Deze I2C 2CH RELAY BRICK breidt de functionaliteit van de I2C KY019 BRICK uit en heeft twee lees-/schrijfeigenschappen:

2CH RELAIS[0] (waar/onwaar)

2CH RELAIS [1] (waar/onwaar)

De doorgaande gaten naast de ATTINY85 zijn ongebruikt gelaten om een pogo-pin-programmeur mogelijk te maken terwijl de DIP8 op de PCB wordt gesoldeerd. Een verdere abstractie, het verpakken van de BRICKS in kleine cilinders die worden aangesloten op een D1M WIFI BLOCK-hub, waarbij de waarden naar een MQTT-server worden gepompt, wordt ontwikkeld.

Stap 1: Materialen en gereedschappen

Materialen en gereedschappen
Materialen en gereedschappen
Materialen en gereedschappen
Materialen en gereedschappen
Materialen en gereedschappen
Materialen en gereedschappen

Er is een volledige lijst van materiaal en sourcing.

  1. 2-kanaals relais (1)
  2. ATTINY85 20PU (1)
  3. 1" Dubbelzijdig protoboard (1)
  4. Mannelijke kop 90º (3P, 3P)
  5. Mannelijke kop (2P, 2P)
  6. Jumper-shunt (1)
  7. Aansluitdraad (~7)
  8. Soldeer en ijzer (1)

Stap 2: Bereid de ATTINY85. voor

Bereid de ATTINY85. voor
Bereid de ATTINY85. voor
Bereid de ATTINY85. voor
Bereid de ATTINY85. voor
Bereid de ATTINY85. voor
Bereid de ATTINY85. voor

OPMERKING: Als u Crouton-integratie wilt hebben, gebruik dan de bibliotheek vanaf hier en gebruik het geïnstalleerde voorbeeld "attiny_2ch_relay".

AttinyCore van de Boards Manager is nodig. Brand bootloader "EEPROM Retained", "8mHZ Internal" (alle hierboven getoonde configuraties).

De coderepository is hier te vinden.

Een ZIP van de bibliotheek vind je hier.

Instructies voor "Een ZIP-bibliotheek importeren" hier.

Zodra de bibliotheek is geïnstalleerd, kunt u het voorbeeld "attiny_2ch_relay" openen.

Om de firmware naar de ATTINY85 te uploaden, vindt u mogelijk meer details in deze instructables:

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

Best te testen via breadboard alvorens verder te gaan.

Als je bestaande ASSIMILATE SENSORS hebt, zorg er dan voor dat het slave-adres verschillend is op een SENSOR/MCU Host-combinatie, d.w.z. alle relais-actoren kunnen hetzelfde adres hebben, zolang je maar één relais-actor op een MCU/node hebt.

Stap 3: Monteer het circuit

Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit
  1. Plaats aan de voorkant de componenten ATTINY85 (1), 3P 90deg mannelijke headers (2) (3), 3P mannelijke headers (4) (5) en soldeer ze aan de achterkant vast.
  2. Trek aan de achterkant een gele draad van GEEL1 naar GEEL2 en soldeer.
  3. Trek aan de achterkant een oranje draad van ORANJE1 naar ORANJE2 en soldeer.
  4. Trek aan de achterkant een blauwe draad van BLUE1 naar BLUE2 en soldeer.
  5. Trek aan de achterkant een groene draad van GROEN1 naar GROEN2 en soldeer.
  6. Trek aan de achterkant een zwarte draad van ZWART1 naar ZWART2 en soldeer.
  7. Trek aan de achterkant een zwarte draad van BLACK3 naar BLACK4 en soldeer.
  8. Trek aan de achterkant een rode draad van RED1 naar RED2 en soldeer.
  9. Trek aan de achterkant een blote draad van RED3 naar RED4 en soldeer.
  10. Trek aan de achterkant een blootliggende draad van SILVER1 naar SILVER2 en soldeer.
  11. Voeg een jumper toe op de 5V- of 3V3-lijn.

Het relais kan nu rechtstreeks via zijn pinnen op de printplaat worden aangesloten of via draden, op de punten die in het pincontract zijn aangegeven.

Stap 4: Testen

Testen
Testen
Testen
Testen
Testen
Testen
Testen
Testen

Een aantal van deze BRICKS zal naar verwachting op meerdere nodes (MCU's - ESP8266 of ATTINY84) in een omgeving staan. Dit is een unit-test: stuurt I2C-commando's van de UNO naar de ATTINY die de relais opent of sluit.

We hebben eerder een I2C SHIELD voor Arduino gebouwd.

Als je het in plaats daarvan wilt breadboarden:

  1. Sluit de 5.0V op UNO aan op een VCC op BRICK.
  2. Verbind de GND op UNO met GND op BRICK.
  3. Verbind de A5 op UNO met SCL op BRICK.
  4. Verbind de A4 op UNO met SDA op BRICK.
  5. Sluit een 4K7 pull-up weerstand aan van SDA naar VCC.
  6. Sluit een 4K7 pull-up weerstand aan van SCL naar VCC.

De test uitvoeren

  1. Verbind uw UNO met uw Dev-pc via USB.
  2. Upload de code naar de UNO.
  3. Open de Arduino-console.
  4. Kies 9600 baud (start de UNO opnieuw en open de console indien nodig).
  5. Het adres van de slave wordt afgedrukt naar de console.
  6. Wanneer, voer in het verzendveld 2 0:1 (dus 15 2 0:1) in en het CH1-relais wordt ingeschakeld.

  7. Wanneer, voer in het verzendveld 2 0:0 (dus 15 2 0:0) in en het CH1-relais wordt uitgeschakeld.
  8. Wanneer, voer in het zendveld 2 1:1 (dus 15 2 1:1) in en het CH2-relais gaat aan.
  9. Wanneer, voer in het zendveld 2 1:0 (dus 15 2 0:0) in en het CH2-relais wordt uitgeschakeld.

I2C BRICK adhoc-commando's voor slaves van UNO-master

#erbij betrekken
const byte _num_chars = 32;
char _received_chars [_num_chars]; // een array om de ontvangen gegevens op te slaan
boolean _has_new_data = false;
voidsetup() {
Serieel.begin(9600);
Serieel.println();
Serial.println ("ASSIMILEER IOT ACTOR/SENSOR EEPROM EDITOR");
Serial.println("zorg ervoor dat de nieuwe regel is geselecteerd in het consolevenster");
Serieel.println();
Serial.println("ADRES 1 BEVESTIG METADATA ONTVANGST N.v.t. (VOOR M2M)");
Serial.println ("ADRES 2 ACTORCOMMANDO");
Serieel.println();
Serial.println("ADRESSEN OP BUS:");
scan_i2c_adressen();
Serieel.println();
Serieel.println("");
}
voidscan_i2c_addresses(){
int device_count = 0;
voor (byte adres = 8; adres < 127; adres++)
{
Wire.beginTransmission (adres);
const byte error = Wire.endTransmission();
als (fout == 0)
{
Serial.println(adres);
}
}
}
voidloop() {
recv_with_end_marker();
send_to_i2c();
}
voidrecv_with_end_marker() {
statische byte ndx = 0;
char end_marker = '\n';
char rc;
while (Serial.available() >0 && _has_new_data == false) {
rc = Serieel.lezen();
if (rc != end_marker) {
_received_chars[ndx] = rc;
ndx++;
if (ndx >= _num_chars) {
ndx = _num_chars - 1;
}
}
anders {
_received_chars[ndx] = '\0'; // beëindig de string
ndx = 0;
_has_new_data = waar;
}
}
}
voidsend_to_i2c() {
char param_buf[16];
const String ontvangen_string = String (_received_chars);
if (_has_new_data == waar) {
int idx1 = Received_string.indexOf('');
Stringadres = ontvangen_string.substring(0, idx1);
int adres_int = adres.toInt();
if (address_int < 8 || address_int >127){
Serial.println("INVALID ADRES INPUT:");
Serial.println(adres);
opbrengst;
}
int idx2 = Received_string.indexOf('', idx1+1);
Stringcode;
als (idx2 == -1){
code = ontvangen_string.substring(idx1+1);
}anders{
code = ontvangen_string.substring(idx1+1, idx2+1);
}
int code_int = code.toInt();
if (code_int < 0 || code_int >5){
Serial.println("INVALID CODE INPUT:");
Serieel.println(code);
opbrengst;
}
bool has_parameter = idx2 > -1;
Stringparameter;
if (has_parameter){
parameter = ontvangen_string.substring(idx2 + 1, idx2 + 17); // maximaal 16 tekens
if (parameter.lengte() < 1){
Serial.println("PARTAMETER MIN. LENGTE 1");
_has_new_data = onwaar;
opbrengst;
}
}anders{
if (code_int >1){
Serial.println("PARAMETER VEREIST!");
_has_new_data = onwaar;
opbrengst;
}
}
Serieel.println();
Serial.print("invoer origineel = ");
Serial.println(received_string);
Serial.print("adres = ");
Serial.println(adres);
Serial.print("code = ");
Serieel.println(code);
Serial.print("parameter = ");
Seriële.println (parameter);
// VERZENDEN VIA I2C
Wire.beginTransmission(address_int);
Wire.write(code_int);
if (has_parameter){
parameter.trim();
strcpy(param_buf, parameter.c_str());
Wire.write (param_buf);
}
Wire.endTransmission();
Serieel.println();
Serial.println ("VERZONDEN VIA I2C!");
Serieel.println();
Serieel.println("");
_has_new_data = onwaar;
}
}

bekijk rawuno_i2c_command_input.ino gehost met ❤ door GitHub

Stap 5: Volgende stappen

Volgende stappen
Volgende stappen
Volgende stappen
Volgende stappen
Volgende stappen
Volgende stappen
Volgende stappen
Volgende stappen

De follow-up ASSIMILATE ACTOR: 2CH RELAY die deze steen gebruikt, heeft een automatische configuratie voor Crouton via de metadata die hier al in de ATTINY85 is geïnstalleerd. Het JSON-pakket dat naar Crouton wordt gestuurd, wordt verzonden via de nieuwste firmware voor de ICOS10. Je kunt een Proof-of-concept doen op een gewone ESP8266, als de build voorlopig te veel is.

De UNO-schets die in Testen wordt gebruikt, heeft een functie voor het opslaan van een nieuw slave-adres in EEPROM op de ATTINY85, als u een botsing heeft op uw doel-I2C-bus. Er zijn een paar schema's toegevoegd, maar er zijn verschillende manieren om het stroomafwaartse circuit te bedraden, afhankelijk van wat je wilt bereiken, dus dat laat ik voor je over:)

Aanbevolen: