Turinys:

IOT123 - I2C BRICK MASTER JIG: 4 žingsniai
IOT123 - I2C BRICK MASTER JIG: 4 žingsniai

Video: IOT123 - I2C BRICK MASTER JIG: 4 žingsniai

Video: IOT123 - I2C BRICK MASTER JIG: 4 žingsniai
Video: How LEGO Minifigures are made 2024, Liepa
Anonim
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG

Kurdamas ASSIMILIATUOJAMUS JUTIKLIUS IR AKTORIUS, turiu ranka UNO, kuris siunčia adhoc I2C komandas kuriamiems prototipams. Vienas iš „I2C BRICKS“privalumų yra standartizuoti kaiščiai. Užuot kiekvieną kartą naudoję lentos laidus (žr. Fritzings), naudojamas tvirtas lo-tech skydas.

1 žingsnis: medžiagos ir įrankiai

Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
  1. 4 cm x 6 cm vienpusis PCB (1)
  2. Prijungimo laidas (~ 6)
  3. 4K7 rezistoriai (2) 6
  4. Vyrų antraštė (12P, 8P)
  5. Moteriška antraštė (9P arba 3P, 3P)
  6. Lituoklis ir geležis (1)

2 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Jei naudosite 2 išjungtas 3P antraštes, o ne 1 išjungtas 9P antraštes, ASSIMILIATUOJAMAS JUTIKLIS/AKTORIAI tilps ant JIG jų neišardant.

Naudodami laidus, nuimkite galus iki 10 mm ir skardinkite galus.

  1. PCB apačioje įdėkite antgalį (1) (2) ir lituokite viršuje.
  2. PCB viršuje įdėkite antgalį (3) ir lituokite apačioje.
  3. Viršuje per skylę raudona viela į RED1 ir RED2.
  4. Apačioje laidas per skylę nuo RED1 iki RED3.
  5. Apačioje laidas iš skylės iš RED2 į RED5 ir lydmetalis.
  6. Viršuje laidas iš RED3 į RED4 ir lydmetalis.
  7. Viršuje per skylę raudona viela į RED6 ir RED7.
  8. Apačioje laidas per skylę nuo RED6 iki RED8.
  9. Apačioje laidas iš skylių iš RED7 į RED10 ir lydmetalis.
  10. Viršuje laidas iš RED8 į RED9 ir lydmetalis.
  11. Viršuje per skylę juoda viela į BLACK1 ir BLACK2.
  12. Apačioje viela per skylę nuo BLACK1 iki BLACK3.
  13. Apačioje laidas iš skylės iš BLACK2 į BLACK5 ir lydmetalis.
  14. Viršuje viela per skylę iš BLACK3 į BLACK4 ir lydmetalis.
  15. Viršuje per skylę mėlyna viela į BLUE1 ir BLUE2.
  16. Apačioje viela per skylę nuo BLUE1 iki BLUE3.
  17. Apačioje viela per skylę iš BLUE2 į BLUE5 ir lydmetalis.
  18. Viršuje viela per skylę iš BLUE3 į BLUE4 ir lydmetalis.
  19. Viršuje per skylę žalią laidą į GREEN1 ir GREEN2.
  20. Apačioje laidas iš GREEN1 į GREEN3.
  21. Apačioje, per skylę esanti viela iš GREEN2 į GREEN5, ir lydmetalis.
  22. Viršuje laidas iš GREEN3 į GREEN4 ir lydmetalis.
  23. Viršuje per skylę 4K7 rezistorius į SILVER3 ir SILVER4.
  24. Apačioje-skylė iš SILVER3 į GREEN5 ir lydmetalis.
  25. Apačioje laidas iš skylės iš SILVER4 į RED10 ir lydmetalis.
  26. Viršuje per skylę 4K7 rezistorius į SILVER1 ir SILVER2.
  27. Apačioje-skylės viela iš SILVER1 į BLUE5 ir lydmetalis.
  28. Apačioje laidas iš skylės iš SILVER2 į RED10 ir lydmetalis.

3 žingsnis: UNO kodas

UNO kodas
UNO kodas

Eskizas čia elementarus. Tai leidžia naudoti konsolės įvestį, kad UNO siunčia I2C pranešimus į I2C ATTINY85 BRICK.

Visos instrukcijos spausdinamos ekrane su palaikomomis parinktimis.

I2C BRICK adhoc komandos vergams iš UNO master

#įtraukti
const baitas _num_chars = 32;
char _gautos_ženklos [_num_chars]; // masyvas, skirtas saugoti gautus duomenis
loginis _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASIMILIUOTI IOT AKTORIUS/JUTIKLIO EEPROM REDAKTORIUS");
Serial.println ("užtikrinti, kad konsolės lange būtų pasirinkta nauja eilutė");
Serial.println ();
Serial.println ("1 ADRESAS PATVIRTINTI METADATO GAVIMĄ N/A (M2M)");
Serial.println ("2 ADRESAS AKTORIŲ KOMANDA");
Serial.println ();
Serial.println ("ADRESAI BUSE:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
(baitų adresas = 8; adresas <127; adresas ++)
{
Wire.beginTransmission (adresas);
const baito klaida = Wire.endTransmission ();
jei (klaida == 0)
{
Serial.println (adresas);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
statinis baitas ndx = 0;
char end_marker = '\ n';
char rc;
nors (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
if (rc! = end_marker) {
_sulaukė_ženklų [ndx] = rc;
ndx ++;
jei (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
Kitas {
_received_chars [ndx] = '\ 0'; // nutraukti eilutę
ndx = 0;
_has_new_data = tiesa;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String gavo_string = String (_received_chars);
jei (_turi_ naujus duomenis == tiesa) {
int idx1 = gavo_string.indexOf ('');
Eilutės adresas = gavo_string.substring (0, idx1);
int address_int = address.toInt ();
if (address_int <8 || address_int> 127) {
Serial.println ("NETEISINGAS ADRESO ĮVADAS:");
Serial.println (adresas);
grįžti;
}
int idx2 = gavo_string.indexOf ('', idx1+1);
Eilutės kodas;
jei (idx2 == -1) {
kodas = gavo_string.substring (idx1+1);
}Kitas{
kodas = gavo_string.substring (idx1+1, idx2+1);
}
int kodas_int = kodas.toInt ();
if (code_int <0 || code_int> 5) {
Serial.println ("NETEISINGAS KODO ĮVADAS:");
Serial.println (kodas);
grįžti;
}
bool has_parameter = idx2> -1;
Styginių parametras;
if (has_parameter) {
parametras = gavo_string.substring (idx2 + 1, idx2 + 17); // maks. 16 simbolių
jei (parametras.length () <1) {
Serial.println („PARTAMETER MIN. LENGTH 1“);
_has_new_data = klaidinga;
grįžti;
}
}Kitas{
if (code_int> 1) {
Serial.println ("REIKALINGAS PARAMETRAS!");
_has_new_data = klaidinga;
grįžti;
}
}
Serial.println ();
Serial.print ("įvesties orig =");
Serial.println (gavo_eilę);
Serial.print ("adresas =");
Serial.println (adresas);
Serial.print ("kodas =");
Serial.println (kodas);
Serial.print ("parametras =");
Serial.println (parametras);
// Siųsti per I2C
Wire.beginTransmission (adresas_int);
Wire.write (code_int);
if (has_parameter) {
parametras.trim ();
strcpy (param_buf, parametras.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("IŠSIŲSTA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = klaidinga;
}
}

peržiūrėkite rawuno_i2c_command_input.ino, kurį su „❤“priglobia „GitHub“

4 žingsnis: kiti veiksmai

Iš pateiktų konstrukcijų yra pakankamai judančių dalių, kad galėtumėte sukurti savo ASSIMILATE IOT NETWORK.

Kiekviena atskira mazgų funkcija (jutikliai ir veikėjai) yra valdoma decentralizuotai, nepriklausomai nuo to, ar MCU meistras turi žinių apie palaikomas funkcijas.

Bet kuri programa, jungianti MQTT brokerį, gali valdyti/stebėti kiekvieną IOT mazgo funkciją. Tai M2M, žiniatinklio programos, IFTTT ir pan. Daug paprastesnės (arba turtingesnės, jei jums patinka) sąsajos su jūsų IOT pasauliu.

Rekomenduojamas: