Inhoudsopgave:
- Stap 1: Materialen en gereedschappen
- Stap 2: Montage
- Stap 3: Code voor de UNO
- Stap 4: Volgende stappen
Video: IOT123 - I2C BAKSTEEN MASTER JIG - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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
- 4cm x 6cm Unirsale PCB (1)
- Aansluitdraad (~6)
- 4K7 Weerstanden (2)6
- Mannelijke kop (12P, 8P)
- Vrouwelijke koptekst (9P, of 3P, 3P)
- Soldeer en ijzer (1)
Stap 2: Montage
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.
- Steek aan de onderkant van de print de mannelijke header (1) (2) en soldeer deze aan de bovenkant af.
- Bovenop de print steek je de female header (3) en soldeer je aan de onderkant vast.
- Steek aan de bovenkant een rode draad door in RED1 en RED2.
- Aan de onderkant doorlopende draad van RED1 naar RED3.
- Aan de onderkant doorlopende draad van RED2 naar RED5 en soldeer.
- Aan de bovenkant doorlopende draad van RED3 naar RED4 en soldeer.
- Steek aan de bovenkant een rode draad door in RED6 en RED7.
- Aan de onderkant doorlopende draad van RED6 naar RED8.
- Aan de onderkant doorlopende draad van RED7 naar RED10 en soldeer.
- Aan de bovenkant doorlopende draad van RED8 naar RED9 en soldeer.
- Steek aan de bovenkant een zwarte draad door in ZWART1 en ZWART2.
- Aan de onderkant, doorlopende draad van ZWART1 naar ZWART3.
- Aan de onderkant doorlopende draad van ZWART2 naar ZWART5 en soldeer.
- Aan de bovenkant, doorlopende draad van ZWART3 naar ZWART4, en soldeer.
- Steek aan de bovenkant een blauwe draad door in BLAUW1 en BLAUW2.
- Aan de onderkant, doorlopende draad van BLUE1 naar BLUE3.
- Aan de onderkant doorlopende draad van BLUE2 naar BLUE5 en soldeer.
- Aan de bovenkant doorlopende draad van BLUE3 naar BLUE4 en soldeer.
- Steek aan de bovenkant een groene draad door het gat in GROEN1 en GROEN2.
- Aan de onderkant doorlopende draad van GROEN1 naar GROEN3.
- Aan de onderkant doorlopende draad van GREEN2 naar GREEN5 en soldeer.
- Aan de bovenkant doorlopende draad van GREEN3 naar GREEN4 en soldeer.
- Aan de bovenkant, doorlopende opening een 4K7-weerstand in SILVER3 en SILVER4.
- Aan de onderkant doorlopende draad van SILVER3 naar GREEN5 en soldeer.
- Aan de onderkant doorlopende draad van SILVER4 naar RED10 en soldeer.
- Aan de bovenkant, doorlopende opening een 4K7-weerstand in SILVER1 en SILVER2.
- Aan de onderkant doorlopende draad van SILVER1 naar BLUE5 en soldeer.
- Aan de onderkant doorlopende draad van SILVER2 naar RED10 en soldeer.
Stap 3: 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:
DRONE-MASTER: 6 stappen
DRONE MASTER: Dit is tinkercad 3D-ontwerp van een AI-robot. Het coördineren en besturen van alle drones in programma's of grote functies of zelfs in een voetbalwedstrijd is behoorlijk moeilijk. We hebben meer getrainde drone-operators nodig om het te doen. Maar deze AI-robot is futuristisch en zal b
ESP32 Modbus Master TCP: 7 stappen
ESP32 Modbus Master TCP: In deze les programmeer je de ESP32-processor als Modbus TCP Master. We zullen twee apparaten gebruiken die deze processor bevatten: Moduino ESP32 en Pycom. Beide apparaten draaien in een MicroPytthon-omgeving. Onze Modbus Slave wordt een pc-computer met M
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
Smart Master/Slave-stekkerdoos voor uw pc [mod] (zelfuitschakeling maar nul stand-by): 6 stappen (met afbeeldingen)
Smart Master/Slave-stekkerdoos voor uw pc [mod] (zelfuitschakeling maar nul stand-by): Uit moet uit zijn. En de bruikbaarheid zou goed moeten zijn. Om het kort te maken: we hebben niet het juiste product gevonden, dus hebben we er een gemod. We kochten wat "Energy Saver" stekkerdozen van Zweibrueder. De apparaten zijn erg solide en niet erg e