Inhoudsopgave:

IOT123 - I2C HEARTBEAT BAKSTEEN - Ajarnpa
IOT123 - I2C HEARTBEAT BAKSTEEN - Ajarnpa

Video: IOT123 - I2C HEARTBEAT BAKSTEEN - Ajarnpa

Video: IOT123 - I2C HEARTBEAT BAKSTEEN - Ajarnpa
Video: Arduino Heart Rate Monitor || Pulse Sensor Health Tracking system || Heart beat sensor 2024, November
Anonim
IOT123 - I2C HARTSLAG BAKSTEEN
IOT123 - I2C HARTSLAG BAKSTEEN
IOT123 - I2C HARTSLAG BAKSTEEN
IOT123 - I2C HARTSLAG BAKSTEEN
IOT123 - I2C HARTSLAG BAKSTEEN
IOT123 - I2C HARTSLAG 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 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

Materialen en gereedschappen
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. Papieren printplaat (7 x 7 gaten)
  2. LEDS (Rood, Groen, Blauw)
  3. Weerstanden (3 van 1K)
  4. ATTINY85 20PU (1)
  5. 1" Dubbelzijdig protoboard (1)
  6. Mannelijke kop 90º (3P, 3P)
  7. Mannelijke kop (2P, 2P)
  8. Jumper-shunt (1)
  9. Aansluitdraad (~7)
  10. 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
Bereid de ATTINY85. voor
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

Montage van de indicatoren
Montage van de indicatoren
Montage van de indicatoren
Montage van de indicatoren
Montage van de indicatoren
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.

  1. Steek aan de bovenkant een blauwe LED in RED1 (+) en BLACK1 (G) en soldeer aan de onderkant.
  2. Buig aan de onderkant het snoer van RED1 zodat het de koperen pad op SILVER8 raakt en knip het af.
  3. Knip aan de onderkant de draad af van BLACK1 boven soldeer.
  4. Steek aan de bovenkant een groene LED in RED2 (+) en BLACK2 (G) en soldeer aan de onderkant.
  5. Buig aan de onderkant het snoer van RED2 zodat het de koperen pad op SILVER9 raakt en knip het af.
  6. Knip aan de onderkant de draad af van BLACK2 boven het soldeer.
  7. Steek aan de bovenkant een rode LED in RED3 (+) en BLACK3 (G) en soldeer aan de onderkant.
  8. Buig aan de onderkant het snoer van RED3 zodat het de koperen pad op SILVER10 raakt en knip het af.
  9. Knip aan de onderkant de draad af van BLACK3 boven het soldeer.
  10. Steek aan de bovenkant een weerstand van 1K in de doorgaande gaten SILVER1 en SILVER4.
  11. Aan de onderkant traceer, trim en soldeer lood van SILVER1 naar BLACK1.
  12. Steek aan de bovenkant een weerstand van 1K in de doorgaande gaten SILVER2 en SILVER4.
  13. Aan de onderkant traceer, trim en soldeer lood van SILVER2 naar BLACK2.
  14. Steek aan de bovenkant een weerstand van 1K in de doorgaande gaten SILVER3 en SILVER4.
  15. Aan de onderkant traceer, trim en soldeer lood van SILVER3 naar BLACK3.
  16. Aan de onderkant soldeert u de draden op SILVER4 en snijdt u deze af met een lengte van ongeveer 5 mm.
  17. Soldeer aan de onderkant een zwarte draad op SILVER4.
  18. Soldeer aan de onderkant een witte draad in SILVER5, zodat de continuïteit van de RED1 wordt gegarandeerd.
  19. Soldeer aan de onderkant een gele draad in SILVER6, zodat de continuïteit van de RED2 wordt gegarandeerd.
  20. 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

Het hoofdcircuit monteren
Het hoofdcircuit monteren
Het hoofdcircuit monteren
Het hoofdcircuit monteren
Het hoofdcircuit monteren
Het hoofdcircuit monteren

Samenkomst:

  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 witte draad van WIT1 naar WIT2 en soldeer.
  7. Trek aan de achterkant een zwarte draad van ZWART1 naar ZWART2 en soldeer.
  8. Trek aan de achterkant een zwarte draad van BLACK3 naar BLACK4 en soldeer.
  9. Trek aan de achterkant een rode draad van RED1 naar RED2 en soldeer.
  10. Trek aan de achterkant een blote draad van RED3 naar RED4 en soldeer.
  11. Trek aan de achterkant een blootliggende draad van SILVER1 naar SILVER2 en soldeer.
  12. Voeg een jumper toe op de 5V- of 3V3-lijn.

Bij gebruik van de bovenstaande indicatoren (zie pinout-diagram):

  1. Soldeer aan de achterkant de witte draad in PB1.
  2. Soldeer aan de achterkant de gele draad in PB3.
  3. Soldeer aan de achterkant de oranje draad in PB4.
  4. Soldeer aan de achterkant de zwarte draad in GND.

Stap 5: 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 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:

  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 verzendvak 2 1 (dus 16 2 1) in en de Ontvangen-LED gaat branden.
  7. 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

Volgende stappen
Volgende stappen
Volgende stappen
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: