Inhoudsopgave:
- Stap 1: Materiaal en gereedschap
- Stap 2: Bereid de ATTINY85. voor
- Stap 3: Monteer het circuit
- Stap 4: Testen
- Stap 5: Volgende stappen
Video: IOT123 - I2C MQ2 BAKSTEEN - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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 MQ2 BRICK dumpt 3 eigenschappen:
LPG (Parts Per Million), CO (PPM), ROOK (PPM)
Deze sensor bood een interessant scenario: hij heeft minimaal 2 minuten (tot 5 minuten) nodig om op te warmen, daarna moet hij voor gebruik 20 seconden worden gekalibreerd. Omdat de host-MCU alleen geïnteresseerd is in het verkrijgen van naam/waarde-paren (en een vervolgbericht), hebben we een eigenschap "PREPARE" geïntroduceerd. Omdat het vervolgbericht "1" is (er komen er nog meer), zal de host-MCU de BRICK blijven pollen totdat deze klaar is. Het wordt ook aanbevolen om de MQ2 voor gebruik "in te branden", d.w.z. 24 uur aangesloten te laten op uw 5V-circuit.
De sensorstenen van het Keyes-type worden eerst geabstraheerd omdat ze worden geleverd met vitamines (extra benodigde componenten) en relatief goedkoop zijn (ik kocht 37 voor 10 AUD). Andere boards/circuits zullen worden geïntroduceerd in de I2C BRICKS.
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: Materiaal en gereedschap
Er is een volledige lijst van materiaal en sourcing.
- MQ2 sensorsteen (1)
- ATTINY85 20PU (1)
- 1" Dubbelzijdig protoboard (1)
- Mannelijke kop 90º (3P, 3P)
- Mannelijke kop (2P, 2P)
- Jumper-shunt (1)
- Aansluitdraad (~7)
- Soldeer en ijzer (1)
Stap 2: Bereid de ATTINY85. voor
AttinyCore van de Boards Manager is nodig. Brand bootloader "EEPROM Retained", "8mHZ Internal" (alle hierboven getoonde configuraties).
Gebruik de meegeleverde bron; compileren en programmeren naar de ATtiny85.
De GIST staat hier:
gist.github.com/IOT-123/4c501046d365d01a60…
Mogelijk vindt u meer details in deze instructables:
www.instructables.com/id/Programming-the-A…
www.instructables.com/id/How-to-Program-AT…
www.instructables.com/id/How-to-program-th…
www.instructables.com/id/Programming-the-A…
www.instructables.com/id/Programming-an-At…
Best te testen via breadboard alvorens verder te gaan.
Als je bestaande ASSIMILATE SENSOREN hebt, zorg er dan voor dat het slave-adres anders is op een SENSOR/MCU Host-combinatie, d.w.z. alle temperatuursensoren kunnen hetzelfde adres hebben, zolang je maar één temperatuursensor op een MCU/node hebt.
Stap 3: Monteer het circuit
- Plaats aan de voorkant de componenten ATTINY85 (1), 3P 90deg mannelijke headers (2) (3), 2P mannelijke headers (4) (5) en soldeer ze aan de achterkant vast.
- Trek aan de achterkant een oranje draad van ORANJE1 naar ORANJE2 en soldeer.
- Trek aan de achterkant een blauwe draad van BLUE1 naar BLUE2 en soldeer.
- Trek aan de achterkant een groene draad van GROEN1 naar GROEN2 en soldeer.
- Trek aan de achterkant een blootliggende draad van SILVER1 naar SILVER2 en soldeer.
- Trek aan de achterkant een blootliggende draad van SILVER3 naar SILVER4 en soldeer.
- Trek aan de achterkant een zwarte draad van ZWART1 naar ZWART2 en soldeer.
- Trek aan de achterkant een zwarte draad van BLACK3 naar BLACK4 en soldeer.
- Trek aan de achterkant een rode draad van RED1 naar RED2 en soldeer.
- Trek aan de achterkant een rode draad van RED3 naar RED4 en soldeer.
- Trek aan de achterkant een gele draad van GEEL1 naar GEEL2 en soldeer.
De sensor kan nu rechtstreeks via zijn pinnen op de printplaat worden aangesloten of via draden, op de punten die in het pincontract zijn aangegeven.
Stap 4: Testen
Een aantal van deze BRICKS zal naar verwachting op meerdere nodes (MCU's - ESP8266 of ATTINY84) in een omgeving staan. Dit is een unit-test: controleert de UNO-verzoeken/antwoorden totdat alle gegevens zijn gedumpt en negeert vervolgens de I2C-slave.
- Upload de UNO-code naar uw UNO-testharnas. Zorg ervoor dat ADDRESS_SLAVE overeenkomt met het I2C-adres van de BRICK.
- Sluit de 5.0V op UNO aan op een VCC op BRICK.
- Zorg ervoor dat de jumper voor die pin is ingeschakeld.
- Verbind de GND op UNO met GND op BRICK.
- Verbind de A5 op UNO met SCL op BRICK.
- Verbind de A4 op UNO met SDA op BRICK.
- Sluit een 4K7 pull-up weerstand aan van SDA naar VCC.
- Sluit een 4K7 pull-up weerstand aan van SCL naar VCC.
- Verbind uw UNO met uw Dev-pc via USB.
- Open de Arduino-console. Kies 9600 baud (start de UNO opnieuw en open de console indien nodig).
- De eigenschapsnamen en -waarden moeten eenmaal naar de console worden afgedrukt, waarna het woord slaap wordt herhaald.
Als u "setup" ziet en vervolgens 3 regels met rommel worden herhaald, heeft u mogelijk uw SDA- en SCL-regels achterstevoren.
I2C Master logging van I2C slave met plotter/metadata ondersteuning
#erbij betrekken |
#defineADDRESS_SLAVE10 |
bool _outputPlotterOnly = false; |
bool _confirmedMetadata = false; |
int _packetSegment = 0; |
bool _i2cNodeProcessed = false; |
char _property[2][24] = {"naam", "waarde"}; |
voidsetup() { |
Draad.begin(); // join i2c bus (adres optioneel voor master) |
Serieel.begin(9600); // start serieel voor uitvoer |
vertraging (1000); |
if (!_outputPlotterOnly){ |
Serial.println("setup"); |
Serieel.println(); |
} |
} |
voidloop() { |
if (_i2cNodeProcessed){ |
if (!_confirmedMetadata){// laat de slaaf weten dat hij sensorgegevens moet gaan verzenden |
vertraging(1); |
Wire.beginTransmission (ADDRESS_SLAVE); |
Draad.schrijven(1); |
Wire.endTransmission(); |
vertraging (100); |
_confirmedMetadata = waar; |
} |
_i2cNodeProcessed = onwaar; |
if (!_outputPlotterOnly){ |
Serieel.println(); |
} |
opbrengst; |
} |
Wire.requestFrom(ADDRESS_SLAVE, 16); |
_packetSegment++; |
char-pakket[16]; |
intindex = 0; |
bool isContinueSegment = false;// continueSegment (de 3e) 1=meer, 0=laatste |
while (Wire.available()) { // slave kan minder verzenden dan gevraagd |
char c = Wire.read(); |
pakket[index] = int(c) > -1 ? c: '';// vervang ongeldige tekens door spaties |
if (_packetSegment == 3){ |
_packetSegment = 0; |
isContinueSegment = waar; |
//Serial.println ("-------------"); |
//Serial.println(int(c)); |
//Serial.println ("-------------"); |
if (int(c) == 48 || int(c) == 86){// 0 op laatste eigenschap |
_i2cNodeProcessed = waar; |
// stuur waarden naar MQTT |
pauze; |
} |
} |
index++; |
} |
if (!isContinueSegment){ |
if (!_outputPlotterOnly){ |
Serial.println(pakket); |
} |
strcpy(_property[_packetSegment - 1], packet);// stel lokale var in met naam/waarde |
}anders{ |
if (_outputPlotterOnly && _confirmedMetadata){ |
if (_i2cNodeProcessed){ |
Serial.println(_property[1]); |
}anders{ |
Serial.print(_property[1]); |
Serieel.print(""); |
} |
} |
} |
} |
bekijk rawuno_i2c_generic_sensor_test_w_plotter_v2.ino gehost met ❤ door GitHub
Stap 5: Volgende stappen
De basislay-out van de schakeling en de I2C-laag van de software is te relateren aan veel verschillende sensoren. Het belangrijkste om goed mee te beginnen, is het pakketcontract tussen master en slave.
Ik heb een (3D-geprint) verpakt netwerk van sensoren gepland / gestart die dit raamwerk gebruiken en ernaar zullen linken als onderdelen worden gepubliceerd.
Dit BLOK wordt gebruikt door de MQ2 ASSIMILATE SENSOR.
Aanbevolen:
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
IOT123 - D1M BLOCK - TP4056 Montage: 8 stappen
IOT123 - D1M BLOCK - TP4056 Montage: D1M BLOCKS voegt tactiele hoesjes, labels, polariteitsgeleiders en breakouts toe voor de populaire Wemos D1 Mini SOC/Shields/Clones. Deze D1M BLOCK bevat een batterijladermodule. Deze D1M BLOCK is ontwikkeld om het batterijvermogen van de D1M ESP12 BLOCK te testen. T
IOT123 - VERMOGEN METER BOX Montage: 6 stappen
IOT123 - POWER METER BOX Montage: Dit is een behuizing voor de ATTINYPOWERMETER geschreven door moononournation. Het kan continu de spanning (V), stroom (mA) en het geaccumuleerde stroomverbruik (mWh) meten. En plot ook een eenvoudige grafiek om de cijfers te visualiseren. Omdat een eenvoudige aansluitingsgids wordt bespat o
IOT123 - ASSIMILEER SENSOR: MQ2: 4 stappen
IOT123 - ASSIMILATE SENSOR: MQ2: ASSIMILATE SENSORS zijn omgevingssensoren die een toegevoegde hardware- en software-abstractielaag hebben, waardoor het mogelijk is om volledig nieuwe typen toe te voegen aan een ASSIMILATE SENSOR HUB en de meetwaarden naar een MQTT-server te pompen zonder toegevoegde code