Inhoudsopgave:
- Stap 1: Materialen en gereedschappen
- Stap 2: Bereid de ATTINY85. voor
- Stap 3: Montage van de indicatoren
- Stap 4: Het hoofdcircuit monteren
- Stap 5: Testen
- Stap 6: Volgende stappen
Video: IOT123 - I2C HEARTBEAT BAKSTEEN - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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 HEARTBEAT BRICK geeft aan of de ATTINY-slave in leven is, ook het I2C-verkeer, en één eigenschap heeft:
STATUS ("LEVEND")
PB1 (wit) geeft de gezondheid van ATTINY aan.
PB3 (geel) schakelt met I2C-verzoeken van de master.
PB4 (oranje) schakelt met I2C-ontvangst van de master.
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.
- Papieren printplaat (7 x 7 gaten)
- LEDS (Rood, Groen, Blauw)
- Weerstanden (3 van 1K)
- ATTINY85 20PU (1)
- 1" Dubbelzijdig protoboard (1)
- Mannelijke kop 90º (3P, 3P)
- Mannelijke kop (2P, 2P)
- Jumper-shunt (1)
- 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 voorbeeld dat is geïnstalleerd "attiny_heartbeat"
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_heartbeat" openen.
Om de firmware naar de ATTINY85 te uploaden, vindt u mogelijk meer details in deze instructables:
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-…
Best te testen via breadboard alvorens verder te gaan.
Als je bestaande ASSIMILATE SENSORS hebt, zorg er dan voor dat het slave-adres anders is op een SENSOR/MCU Host-combinatie, b.v. alle Relay-acteurs kunnen hetzelfde adres hebben, zolang u maar één Relay-actor op een MCU/node hebt.
Stap 3: Montage van de indicatoren
De indicatoren zijn bedoeld om volledig aanpasbaar te zijn. Het zijn de gebeurtenissignalen van het hoofdcircuit die worden gezien als Heartbeats. Voor deze build zullen we LED-indicatoren gebruiken; je build kan relais gebruiken (ja, de VCC is uitgebroken) of een andere visuele / signaalgebaseerde indicator. De weerstandswaarden zijn afhankelijk van uw persoonlijke voorkeur hoe helder u ze wilt.
- Steek aan de bovenkant een blauwe LED in RED1 (+) en BLACK1 (G) en soldeer aan de onderkant.
- Buig aan de onderkant het snoer van RED1 zodat het de koperen pad op SILVER8 raakt en knip het af.
- Knip aan de onderkant de draad af van BLACK1 boven soldeer.
- Steek aan de bovenkant een groene LED in RED2 (+) en BLACK2 (G) en soldeer aan de onderkant.
- Buig aan de onderkant het snoer van RED2 zodat het de koperen pad op SILVER9 raakt en knip het af.
- Knip aan de onderkant de draad af van BLACK2 boven het soldeer.
- Steek aan de bovenkant een rode LED in RED3 (+) en BLACK3 (G) en soldeer aan de onderkant.
- Buig aan de onderkant het snoer van RED3 zodat het de koperen pad op SILVER10 raakt en knip het af.
- Knip aan de onderkant de draad af van BLACK3 boven het soldeer.
- Steek aan de bovenkant een weerstand van 1K in de doorgaande gaten SILVER1 en SILVER4.
- Aan de onderkant traceer, trim en soldeer lood van SILVER1 naar BLACK1.
- Steek aan de bovenkant een weerstand van 1K in de doorgaande gaten SILVER2 en SILVER4.
- Aan de onderkant traceer, trim en soldeer lood van SILVER2 naar BLACK2.
- Steek aan de bovenkant een weerstand van 1K in de doorgaande gaten SILVER3 en SILVER4.
- Aan de onderkant traceer, trim en soldeer lood van SILVER3 naar BLACK3.
- Aan de onderkant soldeert u de draden op SILVER4 en snijdt u deze af met een lengte van ongeveer 5 mm.
- Soldeer aan de onderkant een zwarte draad op SILVER4.
- Soldeer aan de onderkant een witte draad in SILVER5, zodat de continuïteit van de RED1 wordt gegarandeerd.
- Soldeer aan de onderkant een gele draad in SILVER6, zodat de continuïteit van de RED2 wordt gegarandeerd.
- Soldeer aan de onderkant een oranje draad in SILVER7, zodat de continuïteit van de kabel van RED3 wordt gegarandeerd.
Stap 4: Het hoofdcircuit monteren
Samenkomst:
- 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.
- Trek aan de achterkant een gele draad van GEEL1 naar GEEL2 en soldeer.
- Trek aan de achterkant een oranje draad van ORANJE1 naar ORANJE2 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 witte draad van WIT1 naar WIT2 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 blote draad van RED3 naar RED4 en soldeer.
- Trek aan de achterkant een blootliggende draad van SILVER1 naar SILVER2 en soldeer.
- Voeg een jumper toe op de 5V- of 3V3-lijn.
Bij gebruik van de bovenstaande indicatoren (zie pinout-diagram):
- Soldeer aan de achterkant de witte draad in PB1.
- Soldeer aan de achterkant de gele draad in PB3.
- Soldeer aan de achterkant de oranje draad in PB4.
- Soldeer aan de achterkant de zwarte draad in GND.
Stap 5: 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 de ontvangst-LED omschakelt. De ATTINY ALIVE-LED blijft branden.
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 slave wordt afgedrukt naar de console.
- Wanneer, voer in het verzendvak 2 1 (dus 16 2 1) in en de Ontvangen-LED gaat branden.
- Wanneer, voer in het verzendvak 2 0 (dus 16 2 0) in en de Ontvangen-LED gaat uit.
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 6: Volgende stappen
De follow-up ASSIMILATE ACTOR: HEARTBEAT die deze steen gebruikt, heeft automatische configuratie voor Crouton via de metadata die hier al in de ATTINY85 zijn 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.
Aanbevolen:
Heartbeat Game - Project: 4 stappen
Heartbeat Game - Project: Vandaag is het 20 mei, zoals we allemaal weten. Het is al traditionele Chinese Valentijnsdag geworden. (520 in het Chinees betekent ik hou van je). Nu gaan we een interactief apparaat maken genaamd heartbeat lab om het stilzwijgende begrip van het paar te testen. Dit is een test
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