Table des matières:

IOT123 - BRIQUE I2C MQ2 : 5 étapes
IOT123 - BRIQUE I2C MQ2 : 5 étapes

Vidéo: IOT123 - BRIQUE I2C MQ2 : 5 étapes

Vidéo: IOT123 - BRIQUE I2C MQ2 : 5 étapes
Vidéo: Asservissement | Arduino #4: Discrétisation de la dérivée première - Implémentation 2/2 [TUTO] 2024, Juillet
Anonim
IOT123 - BRIQUE I2C MQ2
IOT123 - BRIQUE I2C MQ2
IOT123 - BRIQUE I2C MQ2
IOT123 - BRIQUE I2C MQ2
IOT123 - BRIQUE I2C MQ2
IOT123 - BRIQUE I2C MQ2
IOT123 - BRIQUE I2C MQ2
IOT123 - BRIQUE I2C MQ2

Les BRIQUES IOT123 sont des unités modulaires de bricolage qui peuvent être mélangées avec d'autres BRIQUES IOT123, pour ajouter des fonctionnalités à un nœud ou à un appareil portable. Ils sont basés sur des protoboards double face en pouces carrés avec des trous traversants interconnectés.

Un certain nombre de ces BRICKS devraient se trouver sur plusieurs nœuds (MCU maîtres - ESP8266 ou ATTINY84) sur un site. Le MCU n'a besoin d'aucune connaissance préalable de l'objectif des capteurs ou des besoins logiciels. Il recherche les nœuds I2C puis demande un vidage des propriétés (données du capteur) à chaque esclave. Ces briques fournissent 5,0 V, 3,3 V et une autre ligne AUX personnalisable.

Cette brique I2C MQ2 déverse 3 propriétés:

GPL (parties par million), CO (PPM), FUMÉE (PPM)

Ce capteur a fourni un scénario intéressant: il a besoin d'au moins 2 minutes (jusqu'à 5 minutes) pour se réchauffer, puis il doit être étalonné pendant 20 secondes avant utilisation. Comme le MCU hôte n'est intéressé qu'à obtenir des paires nom/valeur (et un message de continuation), nous avons introduit une propriété "PREPARE". Comme son message de continuation est "1" (plus à venir), le MCU hôte continuera à interroger la BRICK jusqu'à ce qu'elle soit prête. Il est également recommandé de "brûler" le MQ2 avant utilisation, c'est-à-dire de le laisser connecté à votre circuit 5V pendant 24 heures.

Les briques de capteur de type Keyes seront d'abord extraites car elles contiennent des vitamines (composants supplémentaires nécessaires) incluses et sont relativement bon marché (j'en ai acheté 37 pour 10AUD). D'autres cartes/circuits seront introduits dans les BRICKS I2C.

Les trous traversants adjacents à l'ATTINY85 ont été laissés inutilisés, pour permettre un programmeur de broches pogo pendant que le DIP8 est soudé au PCB.

Une autre abstraction, emballer les BRIQUES dans de petits cylindres qui se branchent sur un hub D1M WIFI BLOCK, pompant les valeurs vers un serveur MQTT, est en cours de développement.

Étape 1: Matériel et outils

Matériel et outils
Matériel et outils
Matériel et outils
Matériel et outils
Matériel et outils
Matériel et outils

Il existe une liste complète de la nomenclature et de l'approvisionnement.

  1. Brique capteur MQ2 (1)
  2. ATTINY85 20PU (1)
  3. 1" Protoboard double face (1)
  4. Connecteur mâle 90º (3P, 3P)
  5. Embase mâle (2P, 2P)
  6. Shunt de cavalier (1)
  7. Fil de branchement (~7)
  8. Soudure et fer (1)

Étape 2: Préparez l'ATTINY85

Préparez l'ATTINY85
Préparez l'ATTINY85
Préparez l'ATTINY85
Préparez l'ATTINY85
Préparez l'ATTINY85
Préparez l'ATTINY85
Préparez l'ATTINY85
Préparez l'ATTINY85

AttinyCore du Boards Manager est nécessaire. Gravez le bootloader "EEPROM Retained", "8mHZ Internal" (toutes les configurations présentées ci-dessus).

Utilisez la source incluse; compiler et programmer sur l'ATtiny85.

Le GIST est ici:

gist.github.com/IOT-123/4c501046d365d01a60…

Vous pouvez trouver plus de détails dans ces 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…

Il est préférable de tester via la maquette avant de continuer.

Si vous avez des CAPTEURS ASSIMILÉS existants, assurez-vous que l'adresse esclave est différente sur une combinaison d'hôte CAPTEUR/MCU, c'est-à-dire que tous les capteurs de température peuvent avoir la même adresse tant que vous n'avez qu'un seul capteur de température sur un MCU/nœud.

Étape 3: Assembler le circuit

Assembler le circuit
Assembler le circuit
Assembler le circuit
Assembler le circuit
Assembler le circuit
Assembler le circuit
  1. À l'avant, insérez les composants ATTINY85 (1), les embases mâles 3P 90deg (2) (3), les embases mâles 2P (4) (5) et soudez à l'arrière.
  2. A l'arrière, tracez un fil orange d'ORANGE1 à ORANGE2 et soudez.
  3. À l'arrière, tracez un fil bleu de BLUE1 à BLUE2 et soudez.
  4. À l'arrière, tracez un fil vert de GREEN1 à GREEN2 et soudez.
  5. À l'arrière, tracez un fil nu de SILVER1 à SILVER2 et soudez.
  6. À l'arrière, tracez un fil nu de SILVER3 à SILVER4 et soudez.
  7. A l'arrière, tracez un fil noir de NOIR1 à NOIR2 et soudez.
  8. A l'arrière, tracez un fil noir de BLACK3 à BLACK4 et soudez.
  9. À l'arrière, tracez un fil rouge de RED1 à RED2 et soudez.
  10. À l'arrière, tracez un fil rouge de RED3 à RED4 et soudez.
  11. À l'arrière, tracez un fil jaune de JAUNE1 à JAUNE2 et soudez.

Le capteur peut maintenant être connecté directement via ses broches au PCB ou via des fils, aux points indiqués dans le contrat de broche.

Étape 4: Tester

Essai
Essai
Essai
Essai
Essai
Essai

Un certain nombre de ces BRICKS devraient se trouver sur plusieurs nœuds (MCU - ESP8266 ou ATTINY84) dans un environnement. Il s'agit d'un test unitaire: vérifie les requêtes/réponses UNO jusqu'à ce que toutes les données aient été vidées, puis néglige l'esclave I2C.

  1. Téléchargez le code UNO sur votre harnais de test UNO. Assurez-vous que ADDRESS_SLAVE correspond à l'adresse I2C de BRICK.
  2. Connectez le 5.0V sur UNO à un VCC sur BRICK.
  3. Assurez-vous que le cavalier de cette broche est activé.
  4. Connectez le GND sur UNO à GND sur BRICK.
  5. Connectez l'A5 sur UNO à SCL sur BRICK.
  6. Connectez l'A4 sur UNO à SDA sur BRICK.
  7. Connectez une résistance de rappel 4K7 de SDA à VCC.
  8. Connectez une résistance de rappel 4K7 de SCL à VCC.
  9. Connectez votre UNO à votre Dev PC avec USB.
  10. Ouvrez la console Arduino. Choisissez 9600 bauds (redémarrez l'UNO et rouvrez la console si nécessaire).
  11. Les noms de propriété et les valeurs doivent être imprimés sur la console une fois, puis le mot sleep est répété.

Si vous voyez "setup" alors 3 lignes de déchets se répètent, vous pouvez avoir vos lignes SDA et SCL à l'envers.

Journalisation maître I2C à partir de l'esclave I2C avec prise en charge du traceur/métadonnées

#comprendre
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _property[2][24] = {"nom", "valeur"};
void setup() {
Fil.begin(); // rejoindre le bus i2c (adresse facultative pour le maître)
Serial.begin(9600); // démarrer la série pour la sortie
retard(1000);
if (!_outputPlotterOnly){
Serial.println("configuration");
Serial.println();
}
}
boucle vide() {
si (_i2cNodeProcessed){
if (!_confirmedMetadata){// indique à l'esclave de commencer à envoyer les données du capteur
retard(1);
Wire.beginTransmission(ADDRESS_SLAVE);
Wire.write(1);
Wire.endTransmission();
retard (100);
_confirmedMetadata = true;
}
_i2cNodeProcessed = false;
if (!_outputPlotterOnly){
Serial.println();
}
revenir;
}
Wire.requestFrom(ADDRESS_SLAVE, 16);
_packetSegment++;
paquet de caractères[16];
indexent = 0;
bool isContinueSegment = false;// continueSegment (le 3e) 1=plus, 0=dernier
while (Wire.available()) { // l'esclave peut envoyer moins que demandé
char c = Wire.read();
paquet[index] = int(c) > -1 ? c: '';// remplace les caractères invalides par des espaces
si (_packetSegment == 3){
_packetSegment = 0;
isContinueSegment = true;
//Série.println("-------------");
//Série.println(int(c));
//Série.println("-------------");
if (int(c) == 48 || int(c) == 86){// 0 sur la dernière propriété
_i2cNodeProcessed = vrai;
// envoyer les valeurs à MQTT
Pause;
}
}
index++;
}
si (!isContinueSegment){
if (!_outputPlotterOnly){
Serial.println(paquet);
}
strcpy(_property[_packetSegment - 1], packet); // définit la variable locale avec le nom/la valeur
}autre{
if (_outputPlotterOnly && _confirmedMetadata){
si (_i2cNodeProcessed){
Serial.println(_property[1]);
}autre{
Serial.print(_property[1]);
Serial.print("");
}
}
}
}

voir rawuno_i2c_generic_sensor_test_w_plotter_v2.ino hébergé avec ❤ par GitHub

Étape 5: Étapes suivantes

La disposition de base du circuit et la couche I2C du logiciel sont liées à de nombreux capteurs différents. La chose principale pour commencer est le contrat de paquet entre le maître et l'esclave.

J'ai prévu/démarré un réseau de capteurs emballés (imprimés en 3D) qui utilisent ce cadre et qui s'y connecteront au fur et à mesure que les pièces seront publiées.

Ce BLOC est utilisé par le MQ2 ASSIMILATE SENSOR.

Conseillé: