Inhoudsopgave:
- Stap 1: Materialen en gereedschappen
- Stap 2: Bereid de ATTINY85. voor
- Stap 3: Monteer het circuit
- Stap 4: Testen
- Stap 5: Volgende stappen
Video: IOT123 - I2C KY019 BAKSTEEN - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
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 KY019 BRICK is de eerste van de ACTOREN en heeft één lees-/schrijfeigenschap:
Wissel (waar/onwaar)
De sensorstenen van het Keyes-type worden eerst geabstraheerd omdat ze worden geleverd met vitamines (extra benodigde componenten) en relatief goedkoop zijn (ik kocht 37 voor 10 AUD). Andere boards/circuits zullen worden geïntroduceerd in de I2C BRICKS.
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
Er is een volledige lijst van materiaal en sourcing.
- KY-019 Relais (1)
- ATTINY85 20PU (1)
- 1" Dubbelzijdig protoboard (1)
- Mannelijke kop 90º (3P, 3P)
- Aansluitdraad (~7)
- Soldeer en ijzer (1)
Stap 2: Bereid de ATTINY85. voor
OPMERKING: Als u Crouton-integratie wilt hebben, gebruik dan de bibliotheek vanaf hier en gebruik het geïnstalleerde voorbeeld "attiny_ky019".
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_ky019" openen.
Om de firmware naar de ATTINY85 te uploaden, vindt u mogelijk meer details in deze instructables:
www.instructables.com/id/Programming-the-A…
www.instructables.com/id/How-to-Program-AT…
www.instructables.com/id/How-to-program-th…
www.instructables.com/id/Programming-the-A…
www.instructables.com/id/Programming-an-At…
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
- Plaats aan de voorkant de componenten ATTINY85 (1), 3P 90deg mannelijke headers (2) (3) en soldeer ze aan de achterkant vast.
- Trek aan de achterkant een gele draad van GEEL1 naar GEEL2 en soldeer.
- Trek aan de achterkant een blauwe draad van BLUE1 naar BLUE2 en soldeer.
- Trek aan de achterkant een groene draad van GROEN1 naar GROEN2 en soldeer.
- Trek aan de achterkant een zwarte draad van ZWART1 naar ZWART2 en soldeer.
- Trek aan de achterkant een zwarte draad van BLACK3 naar BLACK4 en soldeer.
- Trek aan de achterkant een rode draad van RED1 naar RED2 en soldeer.
- Trek aan de achterkant een rode draad van RED3 naar RED4 en soldeer.
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
Een aantal van deze BRICKS zal naar verwachting op meerdere nodes (MCU's - ESP8266 of ATTINY84) in een omgeving staan. Dit is een eenheidstest: stuurt I2C-commando's van de UNO naar de ATTINY die het relais opent of sluit.
We hebben eerder een I2C SHIELD voor Arduino gebouwd.
Als je het in plaats daarvan wilt breadboarden:
- Sluit de 5.0V op UNO aan op een VCC op BRICK.
- Verbind de GND op UNO met GND op BRICK.
- Verbind de A5 op UNO met SCL op BRICK.
- Verbind de A4 op UNO met SDA op BRICK.
- Sluit een 4K7 pull-up weerstand aan van SDA naar VCC.
- Sluit een 4K7 pull-up weerstand aan van SCL naar VCC.
De test uitvoeren
- Verbind uw UNO met uw Dev-pc via USB.
- Upload de code naar de UNO.
- Open de Arduino-console. Kies 9600 baud (start de UNO opnieuw en open de console indien nodig).
- Het adres van de slaaf wordt afgedrukt naar de console.
- Wanneer, voer in het verzendvak 2 1 (dus 12 2 1) in en het relais wordt ingeschakeld.
- Wanneer, voer in het verzendveld 2 0 (dus 12 2 0) in en het 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
De follow-up ASSIMILATE ACTOR: KY019 die deze steen gebruikt, heeft 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:
IOT123 - D1M BLOCK - ADXL345 Montage: 8 stappen
IOT123 - D1M BLOCK - ADXL345 Montage: D1M BLOCKS voegt tactiele hoesjes, labels, polariteitsgeleiders en breakouts toe voor de populaire Wemos D1 Mini SOC/Shields/Clones. Deze D1M BLOCK geeft een eenvoudige aansluiting tussen de Wemos D1 Mini en de ADXL345 Accelerometer-module.Mijn aanvankelijke motivatie voor ontwikke
IOT123 - OPLADER DOCTOR BREAKOUT: 3 stappen
IOT123 - CHARGER DOCTOR BREAKOUT: Tijdens het debuggen van versie 0.4 van de SOLAR TRACKER CONTROLLER heb ik veel tijd besteed aan het aansluiten van de multimeter op verschillende NPN-schakelcircuits. De multimeter had geen breadboard-vriendelijke aansluitingen. Ik heb gekeken naar een paar op MCU gebaseerde monitoren, waaronder
IOT123 - D1M BLOCK - TP4056 Montage: 8 stappen
IOT123 - D1M BLOCK - TP4056 Montage: D1M BLOCKS voegt tactiele hoesjes, labels, polariteitsgeleiders en breakouts toe voor de populaire Wemos D1 Mini SOC/Shields/Clones. Deze D1M BLOCK bevat een batterijladermodule. Deze D1M BLOCK is ontwikkeld om het batterijvermogen van de D1M ESP12 BLOCK te testen. T
IOT123 - VERMOGEN METER BOX Montage: 6 stappen
IOT123 - POWER METER BOX Montage: Dit is een behuizing voor de ATTINYPOWERMETER geschreven door moononournation. Het kan continu de spanning (V), stroom (mA) en het geaccumuleerde stroomverbruik (mWh) meten. En plot ook een eenvoudige grafiek om de cijfers te visualiseren. Omdat een eenvoudige aansluitingsgids wordt bespat o
IOT123 - ASSIMILAEREN ACTOR: KY019: 4 stappen
IOT123 - ASSIMILATE ACTOR: KY019: Het is met 5V TIL-besturingssignaal dat DC / AC-signaal kan besturen. Deze build is gebaseerd op de I2C KY019 BRICK. Als je 2 kanalen nodig hebt, raad ik aan om deze acteur om te ruilen voor de 2CH RELAY BRICK. ASSIMILATEN ACTOREN/SENSOREN zijn omgevingsactoren/senso