Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01
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
