Table des matières:
- Étape 1: Matériel et outils
- Étape 2: Préparez l'ATTINY85
- Étape 3: Assembler le circuit
- Étape 4: Tester
- Étape 5: Étapes suivantes
Vidéo: IOT123 - BRIQUE I2C MQ2 : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
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
Il existe une liste complète de la nomenclature et de l'approvisionnement.
- Brique capteur MQ2 (1)
- ATTINY85 20PU (1)
- 1" Protoboard double face (1)
- Connecteur mâle 90º (3P, 3P)
- Embase mâle (2P, 2P)
- Shunt de cavalier (1)
- Fil de branchement (~7)
- Soudure et fer (1)
Étape 2: 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
- À 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.
- A l'arrière, tracez un fil orange d'ORANGE1 à ORANGE2 et soudez.
- À l'arrière, tracez un fil bleu de BLUE1 à BLUE2 et soudez.
- À l'arrière, tracez un fil vert de GREEN1 à GREEN2 et soudez.
- À l'arrière, tracez un fil nu de SILVER1 à SILVER2 et soudez.
- À l'arrière, tracez un fil nu de SILVER3 à SILVER4 et soudez.
- A l'arrière, tracez un fil noir de NOIR1 à NOIR2 et soudez.
- A l'arrière, tracez un fil noir de BLACK3 à BLACK4 et soudez.
- À l'arrière, tracez un fil rouge de RED1 à RED2 et soudez.
- À l'arrière, tracez un fil rouge de RED3 à RED4 et soudez.
- À 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
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.
- Téléchargez le code UNO sur votre harnais de test UNO. Assurez-vous que ADDRESS_SLAVE correspond à l'adresse I2C de BRICK.
- Connectez le 5.0V sur UNO à un VCC sur BRICK.
- Assurez-vous que le cavalier de cette broche est activé.
- Connectez le GND sur UNO à GND sur BRICK.
- Connectez l'A5 sur UNO à SCL sur BRICK.
- Connectez l'A4 sur UNO à SDA sur BRICK.
- Connectez une résistance de rappel 4K7 de SDA à VCC.
- Connectez une résistance de rappel 4K7 de SCL à VCC.
- Connectez votre UNO à votre Dev PC avec USB.
- Ouvrez la console Arduino. Choisissez 9600 bauds (redémarrez l'UNO et rouvrez la console si nécessaire).
- 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é:
Écran LCD I2C/IIC - Utilisez un écran LCD SPI vers l'écran LCD I2C à l'aide du module SPI vers IIC avec Arduino : 5 étapes
Écran LCD I2C/IIC | Utilisez un écran LCD SPI sur l'écran LCD I2C à l'aide du module SPI vers IIC avec Arduino : Salut les gars, car un SPI LCD 1602 normal a trop de fils à connecter, il est donc très difficile de l'interfacer avec arduino, mais il existe un module disponible sur le marché qui peut convertir l'affichage SPI en affichage IIC, vous n'avez donc besoin de connecter que 4 fils
IOT123 - CAPTEUR D'ASSIMILATION : MQ2 : 4 étapes
IOT123 - ASSIMILATE SENSOR : MQ2 : ASSIMILATE SENSORS sont des capteurs d'environnement qui ont une couche d'abstraction matérielle et logicielle supplémentaire, ce qui permet d'ajouter des types complètement nouveaux à un ASSIMILATE SENSOR HUB et les lectures sont pompées vers un serveur MQTT sans ajout de code
IOT123 - ESCLAVE DE PROTOTYPAGE DE BRIQUES I2C : 3 étapes
IOT123 - ESCLAVE DE PROTOTYPAGE DE BRIQUES I2C : lors du développement du dernier ACTEUR ASSIMILÉ (RELAIS KY-019), une carte de développement générique a été créée pour m'économiser du travail supplémentaire sur mon bureau. Il a les brochages standard du I2C IOT123 BRICK, mais permet des connexions personnalisées au capteur de l'ATT
IOT123 - RAILS PCB I2C : 5 étapes
IOT123 - RAILS DE PCB I2C : Là où des boîtiers durables ne sont pas nécessaires, les CAPTEURS ET ACTEURS DE RÉSEAU ASSIMILATE IOT peuvent s'empiler plus efficacement et avec moins de ressources et d'efforts, directement sur des rails minimalistes. Les cylindres d'enveloppe peuvent être utilisés (comme indiqué dans cette construction) ou le und
IOT123 - I2C BRICK MASTER JIG : 4 étapes
IOT123 - I2C BRICK MASTER JIG : Lors du développement des CAPTEURS ASSIMILÉS et des ACTEURS, je garde un UNO à portée de main pour envoyer des commandes I2C ad hoc aux prototypes en cours de développement. L'un des avantages des BRICKS I2C est le brochage standardisé. Plutôt que d'utiliser des fils de maquette à chaque fois