Inhoudsopgave:

IOT123 - I2C BAKSTEEN MASTER JIG - Ajarnpa
IOT123 - I2C BAKSTEEN MASTER JIG - Ajarnpa

Video: IOT123 - I2C BAKSTEEN MASTER JIG - Ajarnpa

Video: IOT123 - I2C BAKSTEEN MASTER JIG - Ajarnpa
Video: IOT123 - ICOS10: STRUCTURE 2024, Juli-
Anonim
IOT123 - I2C BAKSTEEN MASTER JIG
IOT123 - I2C BAKSTEEN MASTER JIG
IOT123 - I2C BAKSTEEN MASTER JIG
IOT123 - I2C BAKSTEEN MASTER JIG
IOT123 - I2C BAKSTEEN MASTER JIG
IOT123 - I2C BAKSTEEN MASTER JIG

Tijdens het ontwikkelen van de ASSIMILATE SENSOREN en ACTOREN, houd ik een UNO bij de hand om adhoc I2C-commando's te sturen naar de prototypes die worden ontwikkeld. Een van de voordelen van de I2C BRICKS zijn de gestandaardiseerde pinouts. In plaats van elke keer breadboard-draden te gebruiken (zie de Fritzings), wordt een stevig lo-tech schild gebruikt.

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
  1. 4cm x 6cm Unirsale PCB (1)
  2. Aansluitdraad (~6)
  3. 4K7 Weerstanden (2)6
  4. Mannelijke kop (12P, 8P)
  5. Vrouwelijke koptekst (9P, of 3P, 3P)
  6. Soldeer en ijzer (1)

Stap 2: Montage

samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst

Als u 2 of 3P vrouwelijke headers gebruikt in plaats van de 1 off 9P vrouwelijke header, passen de ASSIMILATE SENSOR/ACTORS op de JIG zonder ze te demonteren.

Strip met de bedrading tot 10 mm aan de uiteinden en vertin de uiteinden.

  1. Steek aan de onderkant van de print de mannelijke header (1) (2) en soldeer deze aan de bovenkant af.
  2. Bovenop de print steek je de female header (3) en soldeer je aan de onderkant vast.
  3. Steek aan de bovenkant een rode draad door in RED1 en RED2.
  4. Aan de onderkant doorlopende draad van RED1 naar RED3.
  5. Aan de onderkant doorlopende draad van RED2 naar RED5 en soldeer.
  6. Aan de bovenkant doorlopende draad van RED3 naar RED4 en soldeer.
  7. Steek aan de bovenkant een rode draad door in RED6 en RED7.
  8. Aan de onderkant doorlopende draad van RED6 naar RED8.
  9. Aan de onderkant doorlopende draad van RED7 naar RED10 en soldeer.
  10. Aan de bovenkant doorlopende draad van RED8 naar RED9 en soldeer.
  11. Steek aan de bovenkant een zwarte draad door in ZWART1 en ZWART2.
  12. Aan de onderkant, doorlopende draad van ZWART1 naar ZWART3.
  13. Aan de onderkant doorlopende draad van ZWART2 naar ZWART5 en soldeer.
  14. Aan de bovenkant, doorlopende draad van ZWART3 naar ZWART4, en soldeer.
  15. Steek aan de bovenkant een blauwe draad door in BLAUW1 en BLAUW2.
  16. Aan de onderkant, doorlopende draad van BLUE1 naar BLUE3.
  17. Aan de onderkant doorlopende draad van BLUE2 naar BLUE5 en soldeer.
  18. Aan de bovenkant doorlopende draad van BLUE3 naar BLUE4 en soldeer.
  19. Steek aan de bovenkant een groene draad door het gat in GROEN1 en GROEN2.
  20. Aan de onderkant doorlopende draad van GROEN1 naar GROEN3.
  21. Aan de onderkant doorlopende draad van GREEN2 naar GREEN5 en soldeer.
  22. Aan de bovenkant doorlopende draad van GREEN3 naar GREEN4 en soldeer.
  23. Aan de bovenkant, doorlopende opening een 4K7-weerstand in SILVER3 en SILVER4.
  24. Aan de onderkant doorlopende draad van SILVER3 naar GREEN5 en soldeer.
  25. Aan de onderkant doorlopende draad van SILVER4 naar RED10 en soldeer.
  26. Aan de bovenkant, doorlopende opening een 4K7-weerstand in SILVER1 en SILVER2.
  27. Aan de onderkant doorlopende draad van SILVER1 naar BLUE5 en soldeer.
  28. Aan de onderkant doorlopende draad van SILVER2 naar RED10 en soldeer.

Stap 3: Code voor de UNO

Code voor de UNO
Code voor de UNO

De schets hier is rudimentair. Hiermee kunt u de console-invoer gebruiken om de UNO I2C-berichten naar de I2C ATTINY85 BRICK te laten sturen.

Alle instructies worden op het scherm afgedrukt, met de ondersteunde opties.

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

Van de gepresenteerde builds zijn er genoeg bewegende delen om je eigen ASSIMILATE IOT-NETWERK te bouwen.

Elk van de individuele functies van de knooppunten (sensoren en actoren) kan op een gedecentraliseerde manier worden bestuurd, niet afhankelijk van de MCU-master om kennis te hebben van de ondersteunde functies.

Elke app die verbinding maakt met de MQTT-broker kan elke functie van de IOT Node controleren/observeren. Dat is M2M, webapplicaties, IFTTT enzovoort. Veel eenvoudiger (of rijker als je wilt) interfaces naar je IOT-wereld.

Aanbevolen: