Ce projet est constitué de nœuds basés sur ATMEL ATMEL328p simples en utilisant les radios Hoperf LORA RFM95W / RFM96W. Les nœuds alimentés par batterie mesurent la température, l'humidité et la pression barométrique, selon le matériel connecté. Les nœuds de type d'impulsion à alimentation externe comptent les impulsions de différents compteurs d'utilité et se connectent également aux compteurs d'énergie multical Kamstrup. Gateway reçoit et collecte ces mesures à partir des nœuds du capteur et peut être accessible par communication série à l'aide du protocole Modbus RTU via RS-485 à deux fils ou UART de 3,3 volts commun. Cela permet l'interfaçage avec de nombreux systèmes domestiques de bricolage tels que Domoticz, Home Assistant et OpenHAB. Les capteurs utilisent des circuits imprimés personnalisés mais sont programmés avec Arduino IDE.
Ce projet est un package complet: il comprend à la fois des conceptions matérielles et des logiciels. Les schémas contient des conceptions de PCB afin que vous puissiez fabriquer ou commander des PCB à partir d'une usine et souder les nœuds. Le logiciel est prêt à être téléchargé tel quel. Si vous ne souhaitez pas utiliser les conceptions matérielles fournies, vous devriez pouvoir utiliser, par exemple, Arduino Pro Minis avec des protoboards à la place. Parcourez les .inos et les schémas pour découvrir les définitions de broches. N'oubliez pas de prendre en compte l'utilisation de la batterie si vous utilisez Pro Minis ou autre arduinos "pleine grandeur". N'oubliez pas non plus que les composants utilisés sont principalement tolérants de 3,3 volts uniquement, donc l'utilisation d'un UNO de 5 volts nécessite un changement de niveau.
Sautez directement vers les instructions, bien que je recommande fortement de lire l'ensemble de la lecture en premier.
Les capteurs nécessitent quelques composants externes pour fonctionner: les bibliothèques fournissent des fonctions pour les communications radio et les capteurs connectés tandis que les greffes de package matériel nécessaires pour fonctionner avec des cartes personnalisées utilisées par les capteurs. Suivez soigneusement en particulier les instructions concernant Radiohead et les bibliothèques de cryptographie, car celles-ci nécessitent quelques changements sous-jacents.
Radiohead Packet Radio Library pour les microprocesseurs intégrés fournit une prise en charge des radios RFM95W / RFM96W (et bien d'autres également). Téléchargez depuis AirSpayce.com. Après avoir extrait la bibliothèque dans votre dossier Arduino IDE Libraries, vous devrez faire un ajustement. Au début de Radiohead / RH_RF95.h Ligne de modification
#define RH_RF95_FIFO_SIZE 255
à
#define RH_RF95_FIFO_SIZE 64
La communication ne fonctionnera pas sans ce changement. Vous risquez également de manquer de SRAM sans cet ajustement.
La bibliothèque de cryptographie Arduino comprend la prise en charge du chiffrement. Si vous ne prévoyez pas de crypter le trafic, vous n'aurez pas besoin de cette bibliothèque. Télécharger sur github.com. Vous devrez télécharger le contenu ZIP et extraire des bibliothèques dans votre dossier Arduino IDE Libraries. N'oubliez pas non plus de décommenter la ligne suivante à la toute fin de Radiohead / Radiohead.h pour activer le cryptage:
//#define RH_ENABLE_ENCRYPTION_MODULE
Vous devrez également désactiver la récolte de l'entropie de chien de garde en commentant la ligne suivante au début de la crypto / rng.cpp car la minuterie de chien de garde est déjà utilisée par les nœuds alimentés par batterie:
#define RNG_WATCHDOG 1 // Harvest entropy from watchdog jitter.
Si vous êtes submergé par tout cela, vous voudrez peut-être simplement ne pas activer le cryptage. Après tout, les capteurs ne sont pas exactement un système de sécurité haute de toute façon.
La bibliothèque LowPowerLab SI7021 est nécessaire pour travailler avec le capteur de température et d'humidité SILICON LABS SI7021. Télécharger sur github.com.
Sparkfun BME280 Arduino Library Interfaces avec Bosch Sensortech BME280 Température, humidité et capteur de pression barométrique. Documentation sur github.com. Installez à l'aide d'Arduino IDE Library Manager.
Les capteurs utilisent une conception matérielle un peu différente de celle des planches Arduino ordinaires. Par exemple, les nœuds de batterie fonctionnent sur l'horloge et la passerelle internes de 1 MHz utilisent un cristal externe de 8 MHz. Ils manquent également de chargeur de démarrage (bien que vous puissiez l'utiliser, le matériel ne fournit tout simplement pas de broches en série pour brûler un nouveau firmware à l'aide de bootloader de toute façon). Au lieu de cela, le programme est flashé à l'aide de l'ICSP via un en-tête ISP.
Vous pouvez définir les fusibles nécessaires manuellement, mais il est considérablement plus facile d'utiliser simplement un package matériel prêt à l'emploi. McUdude a un joli noyau spécifiquement pour le faire. Téléchargez McUdude's MiniCore sur github.com.
Gateway collecte des données à partir des nœuds et agit comme un relais à un réseau Modbus. En utilisant la passerelle de l'émetteur-récepteur MAX3485 RS-485 intégré Maxim, peut être connecté à un réseau RS-485 RTU RS-485 existant en tant qu'esclave. L'omission de l'émetteur-récepteur fournit un port série TTL direct. Ceci peut être accessible avec, par exemple, une autre carte Arduino, une puce FTDI ou connecté directement à un Raspberry Pi. Quelle que soit la connexion physique, la passerelle est accessible à l'aide du protocole Modbus. La passerelle nécessite une alimentation CC régulée de 3,3 volts ou (non réglementée) 5-12 volts. De plus, Gateway a trois entrées d'impulsion (les valeurs d'impulsion sont périodiquement enregistrées sur EEPROM et restaurées sur la puissance), dont l'une peut être utilisée comme entrée de thermistance NTC. Ces entrées sont également accessibles via Modbus.
Un inconvénient du protocole Modbus est qu'un esclave ne peut pas informer le maître des nouveaux messages. Pour cela, Pulse 2 peut être permis de fonctionner comme une interruption externe. Cette broche se comporte comme une sortie de collection ouverte imitée (la tension à états élevé externe est cependant limitée à 3,3 volts). La broche sera tirée à la terre lorsqu'un message est reçu soit à partir d'un nœud important ou de tout nœud, selon les paramètres de la passerelle. Une fois la lecture de Modbus terminée, cette broche sera retrouvée à un état d'impédance élevé.

AVERTISSEMENT: le port série UART est de 3,3 volts, alors ne le connectez pas à un système de 5 volts.
Pourquoi modbus? Modbus est un protocole facile à utiliser et à intégrer ce type de transfert de données. Bien qu'il soit ancien et quelque peu limité dans les fonctionnalités, il fournit toujours toutes les choses nécessaires et est largement utilisée dans l'industrie. Les bibliothèques pour y accéder existent pour plus ou moins toutes les plates-formes. En outre, la plupart des systèmes de domaine de la maison de bricolage (Assistant à domicile, Domoticz et OpenHab pour n'en nommer que quelques-uns) ont un support Modbus.
Les registres sont accessibles à l'aide du code de fonction 3 (lecture des registres de maintien) ou 4 (lecture des registres d'entrée). Les deux renvoient les mêmes valeurs de registre. Notez que les registres non définis ne peuvent pas être lus. Par exemple, essayer de lire les registres 21-99 ou 108-199 renverra l'exception de l'adresse de données illégale .
| Adresse | Nombre | Nom | Type / unité | Notes |
|---|---|---|---|---|
| 0 | 30001 | Erreurs de modbus (CRC a échoué ou corrompu) | Comptoir | |
| 1 | 30002 | Cadres modbus déborde | Comptoir | |
| 2 | 30003 | La fonction illégale de modbus lit | Comptoir | |
| 3 | 30004 | Lecture d'adresse illégale modbus | Comptoir | |
| 4 | 30005 | Les cadres modbus reçus | Comptoir | |
| 5 | 30006 | Les cadres modbus envoyés | Comptoir | |
| 6 | 30007 | Nœuds pendant la dernière heure | Comptoir | |
| 7 | 30008 | Nœuds au cours des 12 dernières heures | Comptoir | |
| 8 | 30009 | Nœuds au cours des dernières 24 heures | Comptoir | |
| 9 | 30010 | Au moins un nœud bas sur la batterie | Booléen | |
| 10 | 30011 | Passerelle hors de la mémoire | Booléen | |
| 11 | 30012 | Time de passerelle de passerelle | Heure | |
| 12 | 30013 | Version du firmware | 8 msb = major, 8 LSB = mineur | |
| 13 | 30014 | Statut | Voir ci-dessous pour les bits. | |
| 14 | 30015 | Pouls 1 | Comptoir | 32 bits |
| 16 | 30017 | Pouls 2 | Comptoir | 32 bits |
| 18 | 30019 | Impulsion 3 / température | Comptoir / ° C | 32 bits |
| 20 | 30021 | Dernier ID de nœud reçu |
Bits de registre d'état (de LSB à MSB):
La première adresse est le nœud ID * 100 . Par exemple, ce tableau montre les adresses pour un ID de nœud 1. De même, les mesures pour l'ID de nœud 2 commencent à l'adresse 200, etc.
| Adresse | Nombre | Nom | Type / unité | Notes |
|---|---|---|---|---|
| 100 | 30101 | Dernière reçue | Minute | Quand le nœud a été vu pour la dernière fois. |
| 101 | 30102 | Tension de batterie | mv | Tension de la batterie de courant. |
| 102 | 30103 | Transmettre la puissance | % | Puissance de transmission relative. |
| 103 | 30104 | Intervalle de transmission | Minute | À quelle fréquence le nœud transmet au moins. |
| 104 | 30105 | Tête | Seulement 8 LSB, les données de débogage. Voir ci-dessous pour les bits. | |
| 105 | 30106 | Température | ° C | × 10 |
| 106 | 30107 | Humidité relative | RH% | × 10. Seulement si le nœud a SI7021 ou BME280. |
| 107 | 30108 | Pression / température barométrique | HPA / ° C | × 10. Pression Si le nœud a BME280, température si le nœud a à la fois SI7021 et NTC. |
Bits d'enregistrement d'en-tête (de LSB à MSB):
La première adresse est le nœud ID * 100 . Par exemple, ce tableau montre les adresses pour un ID de nœud 2. De même, les mesures pour l'ID de nœud 3 Démarrer à l'adresse 300, etc.
| Adresse | Nombre | Nom | Type / unité | Notes |
|---|---|---|---|---|
| 200 | 30201 | Dernière reçue | Minute | Quand le nœud a été vu pour la dernière fois. |
| 201 | 30202 | Transmettre la puissance | % | Puissance de transmission relative. |
| 202 | 30203 | Intervalle de transmission | Minute | À quelle fréquence le nœud transmet au moins. |
| 203 | 30204 | Tête | Seulement 8 LSB, les données de débogage. Voir ci-dessous pour les bits. | |
| 204 | 30205 | Pouls 1 | Comptoir | 32 bits |
| 206 | 30207 | Pouls 2 | Comptoir | 32 bits |
| 208 | 30209 | Impulsion 3 / température | Comptoir / ° C | 32 bits |
Bits d'enregistrement d'en-tête (de LSB à MSB):
La première adresse est le nœud ID * 100 . Par exemple, ce tableau montre les adresses d'un ID de nœud 3. De même, les mesures pour l'ID de nœud 4 commencent à l'adresse 400, etc.
| Adresse | Nombre | Nom | Type / unité | Notes |
|---|---|---|---|---|
| 300 | 30301 | Dernière reçue | Minute | Quand le nœud a été vu pour la dernière fois. |
| 301 | 30302 | Transmettre la puissance | % | Puissance de transmission relative. |
| 302 | 30303 | Intervalle de transmission | Minute | À quelle fréquence le nœud transmet au moins. |
| 303 | 30304 | Tête | Seulement 8 LSB, les données de débogage. Voir ci-dessous pour les bits. | |
| 304 | 30305 | Pouls 1 | Comptoir | 32 bits |
| 306 | 30307 | Pouls 2 | Comptoir | 32 bits |
| 308 | 30309 | Impulsion 3 / température | Comptoir / ° C | 32 bits |
| 310 | 30311 | Énergie thermique | kwh | 32 bits |
| 312 | 30313 | Flux réel | L / H | 32 bits |
| 314 | 30315 | Volume | m³ | × 100. 32 bits |
| 316 | 30317 | Puissance réelle | kw | × 10. 32 bits |
| 318 | 30319 | T₁ réel | ° C | × 100. 32 bits |
| 320 | 30321 | T₂ réel | ° C | × 100. 32 bits |
Bits d'enregistrement d'en-tête (de LSB à MSB):
Les capteurs comprennent deux types principaux de nœuds: la batterie et l'impulsion. Les nœuds de faible puissance alimentés par batterie surveillent la température, l'humidité et la pression. Les nœuds de type d'impulsion sont alimentés à l'extérieur et comptent les impulsions à partir des compteurs d'utilité. Les nœuds d'impulsion prennent également en charge la connexion d'une thermistance NTC pour la surveillance de la température et le RS-485 Modbus RTU. Ce dernier permet à le nœud d'être connecté à un compteur d'énergie 602 multical Kamstrup.
Les capteurs alimentés par batterie fournissent des nœuds simples pour surveiller la température, l'humidité et la pression barométrique. Ces nœuds fonctionnent sur deux batteries alcalines AA de 1,5 volt normales. Si une durée de vie plus longue est nécessaire ou si le nœud est placé dans un environnement froid, des batteries au lithium de taille AA de 1,5 volt plus chères peuvent également être utilisées.
AVERTISSEMENT: Le matériel n'offre aucune protection de tension inverse afin de conserver l'énergie et de maintenir le nombre de pièces minimales, alors assurez-vous d'observer la polarité lors de l'insertion de batteries ou vous détrurez le nœud .
Les nœuds passent la plupart du temps à dormir, seulement pour se réveiller pour prendre des mesures et envoyer des valeurs à la passerelle. La fréquence peut être contrôlée via des paramètres au début du fichier de code. En mode seuil, les nœuds se réveillent périodiquement et prennent des mesures. Si les valeurs diffèrent suffisamment de celles envoyées précédemment, un message est envoyé. Sinon, les nœuds reviennent. Cependant, il existe un temps de force spécifique contrôlant la fréquence à laquelle un nouveau message est envoyé au moins quel que soit le seuil. Si un nœud ne fonctionne pas en mode seuil, il enverra un message chaque fois qu'il se réveille.

Les nœuds prennent en charge trois types de capteurs: Silicon Labs SI7021, Bosch Sensortech BME280 et une thermistance NTC commune. Le premier a la température et l'humidité, le second ajoute la pression barométrique, et ce dernier ne fournit que la température. Un nœud ne peut avoir qu'un seul type de capteur, ou comme cas spécial à la fois SI7021 et NTC en même temps. PCB fournit des empreintes pour tous, et le type exact est défini dans l'exécution. C'est-à-dire que chaque nœud est flashé avec le même logiciel et il vérifie le bootup quel type de configuration de capteur est connecté.
Les capteurs SI7021 peuvent être achetés en tant que planches à rupture sur eBay et des endroits similaires pour quelques dollars. Lorsque vous achetez le capteur, obtenez un qui n'inclut pas le régulateur de tension et le décalage de niveau I2C. Les nœuds alimentés par batterie fonctionnent sur 3,3 volts afin que SI7021 puisse être alimenté directement. Le non-régulateur (inutile) (inutile) permet d'économiser la puissance de la batterie. Par exemple, celui-ci est recommandé, alors que celui-ci ne l'est pas.
Des capteurs BME280 sont également disponibles dans eBay, AliExpress et des planches de rupture similaires. Ils sont un peu plus chers. Ceux-ci semblent ne pas être disponibles sans le régulateur embarqué, donc si vous souhaitez réduire la consommation d'énergie, votre seule option est de supprimer le régulateur. Exemple d'image d'un régulateur supprimé illustré ici. Ce capteur, par exemple, a été utilisé avec succès.
Remarque: Les vendeurs chinois mélangent parfois le BME280 avec BMP280 antérieure et moins en vedette. Soyez prudent lors de l'achat du capteur. Informations à ce sujet par exemple ici et ici.
Les thermistances NTC peuvent être achetées aux mêmes endroits que les autres capteurs. Lors de l'achat de thermistances, assurez-vous d'obtenir trois valeurs nécessaires: résistance nominale , température nominale et coefficient bêta . Par exemple, cette thermistance a été utilisée avec succès et fonctionne avec les valeurs par défaut.
Les nœuds de type d'impulsion sont destinés à mesurer les impulsions d'une eau, d'électricité, de gaz ou d'un autre type de compteur avec un débit d'impulsion. Les nœuds ont trois entrées d'impulsion, dont l'une peut être utilisée comme entrée de thermistance NTC au lieu d'une entrée d'impulsion. Les entrées d'impulsion sont tirées en interne par microcontrôleur ou avec des résistances externes en option, et le compteur connecté le tire bas à la masse. Les valeurs d'impulsion sont périodiquement enregistrées sur EEPROM et restaurées sur la mise sous tension. Les nœuds d'impulsion nécessitent une alimentation à courant continu de 3,3 volts ou (non réglementée) 5 à 12 volts. Ils utilisent le même PCB que la passerelle.
Ces nœuds sont des nœuds d'impulsion réguliers avec un support supplémentaire pour Kamstrup Multical 602 Energy Metter. Le nœud est connecté par RS-485 à un compteur d'énergie 602 multical et lit périodiquement certaines valeurs du compteur. Voir la liste du registre MODBUS ci-dessus pour ces valeurs.
Remarque: le 602 multical semble être interrompu et remplacé par un 603 multical. Selon la fiche technique, Multical 603 prend en charge les mêmes registres de modbus que l'ancien 602. Par conséquent, les nœuds devraient fonctionner avec des 603 plus récents, mais cela n'est pas testé.
Protip: en utilisant ce nœud comme exemple, il devrait être assez facile de connecter un autre type de périphérique capable Modbus RTU à un nœud de type d'impulsion et de régler le code en conséquence. De cette façon, vous pouvez lire d'autres compteurs ou périphériques Modbus via des nœuds de capteurs.
Les capteurs utilisent les radios LORA RFM95W et RFM96W RFM95W. RFM95W est pour 868/915 MHz et RFM96W pour 433 MHz. Ce sont des radios à basse puissance bon marché avec une très bonne gamme. Les nœuds de batterie utilisent du fil ou des antennes hélicoïdales, tandis que les nœuds de passerelle et d'impulsion ont des connecteurs SMA pour des antennes mieux exécutées. Veuillez considérer les réglementations locales lors du choix de la plage de fréquences, de la bande passante, de la puissance de transmission et d'autres paramètres liés à la radio. Les nœuds ajustent automatiquement la puissance de transmission au niveau le plus bas possible.
La plage réalisable dépend grandement de nombreuses choses, mais personnellement, j'ai facilement réalisé plus d'un kilomètre à travers un mur de béton armé et une façade en métal. C'était entre une passerelle avec une antenne SMA dipôle et un nœud de batterie avec une antenne hélicoïdale. La même configuration a également atteint plus de 200 mètres dans les bâtiments dans un environnement plus bâti. Cependant, comme pour la communication sans fil en général, vos résultats varieront.
Remarque: Sur le PCB, il y a également une empreinte pour l'ancienne radio RFM69HW. Cela devrait fonctionner, mais il n'a pas été testé et il n'y a actuellement aucun support dans les logiciels pour cela. N'hésitez pas à créer une nouvelle branche et à l'implémenter.
Voici le tableau des matériaux. Tous les composants ne sont pas nécessaires, voir les notes ci-dessous pour ces pièces. La majorité des composants SMD sont 1206 pour un soudage à main plus facile. Les passerelles et les nœuds d'impulsion partagent le même PCB.
Quelques notes:
J'ai commandé avec succès des PCB de Seed Studio. Vous pouvez obtenir des planches pour 10 passerelles / nœuds d'impulsion et 10 nœuds de batterie pour 9,80 $ plus les frais de port. Bien sûr, n'importe quelle prototype d'usine PCB fonctionnera. Les PCB sont conçus pour ne pas avoir d'espace serré ou besoin de tolérances strictes. Pour la passerelle et le nœud d'impulsion, sélectionnez une épaisseur de 1,6 mm (l'enceinte maintiendra mieux le PCB). Avec les nœuds de batterie, les planches peuvent être plus minces (par exemple, 1,2 mm fonctionne bien). D'autres options devraient être correctes avec les valeurs par défaut.
Les planches sont conçues pour s'adapter aux enclos mentionnés dans le tableau. Bud Industries DMB-4771 est une boîte montée en rail DIN 35 mm, tandis que le PP42 Supertronic est une enceinte murale simple (utilisez du ruban adhésif double face). Dans le dossier schémas, il y a aussi AP9_Holder.stl qui est un modèle 3D d'un support simple pour fixer un nœud de batterie dans une boîte de jonction ABB AP9. Ceci est particulièrement pratique si vous installez un nœud à l'extérieur et avez accès à une imprimante 3D. Vous aurez besoin de deux supports et un ensemble de petites vis. Vous devrez également avoir un moyen de rendre la boîte à l'épreuve des pluies, mais de laisser une humidité et une température. Il a été prouvé que cela fonctionne: une carte de rupture BME280 s'adaptera à l'intérieur si vous soudez les fils à la carte comme indiqué ici. N'oubliez pas d'envelopper la planche de rupture (mais pas le capteur lui-même) avec du ruban isolant ou d'utiliser le rétrécissement thermique pour empêcher les courts-circuits. Cette image montre une planche de rupture SI7021 préparée pour l'utilisation du capteur extérieur. Vous devrez également percer le plastique à l'intérieur avec les connecteurs de la couverture de protection. Utilisez un peu d'imagination ici. Un capteur à l'épreuve des intempéries prêts à l'emploi ressemble à quelque chose comme ça. La connexion d'une thermistance NTC avec un fil suffisamment long fera un joli nœud de température de l'eau comme indiqué ici.
| Partie | Valeur | Appareil | Emballer | Taper | Notes |
|---|---|---|---|---|---|
| C1 | 100 nf | Condensateur de découplage | 1206 | Céramique | |
| C2 | 22 pf | Condensateur en cristal | 1206 | Céramique | |
| C3 | 22 pf | Condensateur en cristal | 1206 | Céramique | |
| C4 | 100 nf | Condensateur de découplage | 1206 | Céramique | Utilisé uniquement avec RFM95W / RFM96W. |
| C5 | 100 nf | Condensateur de découplage | 1206 | Céramique | Utilisé uniquement avec RFM69HW. |
| C6 | 100 nf | Condensateur de découplage | 1206 | Céramique | Utilisé uniquement avec U2 (MAX3485). |
| C7 | 1 UF | Condensateur d'entrée d'alimentation | 1206 | Tantale | |
| C8 | 1 UF | Condensateur de sortie | 1206 | Tantale | |
| C9 | 10 UF | Condensateur de sortie | 1206 | Céramique | |
| C10 | 100 nf | Condensateur de découplage | 1206 | Céramique | Utilisé uniquement avec 23K256. |
| C11 | Dépend | Condensateur de lissage d'impulsion 3 | 1206 | Céramique | Utilisez si des impulsions erronées sont comptées. |
| C12 | Dépend | Condensateur de lissage d'impulsion 2 | 1206 | Céramique | Utilisez si des impulsions erronées sont comptées. |
| C13 | Dépend | Condensateur de lissage d'impulsion 1 | 1206 | Céramique | Utilisez si des impulsions erronées sont comptées. |
| R1 | 10 kohm | Réinitialiser la résistance de traction | 1206 | ||
| R2 | 10 kohm | Résistance de pull-up de sélection de l'esclave radio | 1206 | ||
| R3 | 120 ohm | Résistance de terminaison RS-485 | 1206 | Utilisé uniquement avec U2 (MAX3485). | |
| R4 | Dépend | Résistance à LED de puissance | 1206 | Sélectionnez la valeur en fonction de la LED en utilisation. | |
| R5 | Dépend | Résistance LED d'activité | 1206 | Sélectionnez la valeur en fonction de la LED en utilisation. | |
| R6 | Dépend | Résistance LED d'activité en série | 1206 | Sélectionnez la valeur en fonction de la LED en utilisation. | |
| R7 | Dépend / 10 kohm | Résistance de la série Pulse 3 Pull-up / NTC | 1206 | Utiliser si la résistance de traction interne ATMEGA328P n'est pas assez forte, ou le NTC doit être utilisé. | |
| R8 | Dépend | Résistance à la traction d'impulsion 2 | 1206 | Utilisez si la résistance de traction interne ATMEGA328P n'est pas assez forte. | |
| R9 | Dépend | Résistance à la traction d'impulsion 1 | 1206 | Utilisez si la résistance de traction interne ATMEGA328P n'est pas assez forte. | |
| R10 | 10 kohm | Résistance de traction SRAM SLAGE SELECT | 1206 | Utilisé uniquement avec 23K256. | |
| D1 | Activité en série a mené | 1206 | |||
| D2 | Power LED | 1206 | |||
| D3 | Activité a mené | 1206 | |||
| Y1 | 8 MHz | Crystal HC-49US 8 MHz | |||
| S1 | Bouton-poussoir momentané | 3x6 mm | Par exemple, celui-ci. | ||
| X1 | Connecteur SMA | Par exemple, celui-ci. | |||
| Tête | En-tête de programmation ISP | 2x3, 0,1 " | |||
| Tête | En-tête de sélection d'ID de nœud | 2x5, 0,1 " | |||
| Tête | RS-485 terminer et en-tête J1 | 2x2, 0,1 " | |||
| Bornes à vis | Puissance, série, terrain d'impulsion, entrées d'impulsion | 3x2 + 1x3, 5,08 mm | Par exemple, deux terminaux et trois terminaux. | ||
| PWR_JMP | Cavalier de soudure | 1206 | Court ou utiliser une résistance zéro-ohm s'il n'utilise pas U4, c'est-à-dire la carte est fournie à 3,3 volts régulés externes. | ||
| Comm_jmp | Cavalier de soudure | Court s'il n'est pas utilisé U2, c'est-à-dire que UART direct est utilisé. | |||
| U1 | Microcontrôleur ATMEL ATMEGA328P | Dip-28 | Utilisez de préférence une prise. | ||
| U2 | Émetteur-récepteur maximal max3485 RS-485 | Dip-8 | Utilisez de préférence une prise. Utilisez uniquement si vous êtes connecté à un réseau RS-485. | ||
| U3 | Hoperf RFM95W / RFM96W / RFM69HW | ||||
| U4 | Microchip MIC5209-3.3 régulateur | SOT-223 | Facultatif (voir les notes ci-dessus). | ||
| U5 | Microchip 23K256 sram | Dip-8 | Facultatif (voir les notes ci-dessus). Utilisez de préférence une prise. | ||
| Enceinte | Bud Industries DMB-4771 |
| Partie | Valeur | Appareil | Emballer | Taper | Notes |
|---|---|---|---|---|---|
| C1 | 100 nf | Condensateur de découplage | 1206 | Céramique | |
| C2 | 100 nf | Condensateur de découplage | 1206 | Céramique | Utilisé uniquement avec RFM69HW. |
| C3 | 100 nf | Condensateur de découplage | 1206 | Céramique | Utilisé uniquement avec RFM95W / RFM96W. |
| C4 | 100 nf | Condensateur de lissage de puissance | 1206 | Céramique | |
| C5 | 10 UF | Condensateur de lissage de puissance | 1206 | Céramique | |
| C6 | 100 nf | Condensateur de découplage | 1206 | Céramique | |
| R1 | Dépend | Résistance LED d'activité | 1206 | Sélectionnez la valeur en fonction de la LED en utilisation. | |
| R2 | 10 kohm | Réinitialiser la résistance de traction | 1206 | ||
| R3 | 10 kohm | Résistance de la série NTC | 1206 | Utilisez uniquement avec NTC. | |
| R4 | 10 kohm | Résistance de pull-up de sélection de l'esclave radio | 1206 | ||
| D1 | Activité a mené | 1206 | |||
| S1 | Bouton-poussoir momentané | 3x6 mm | Par exemple, celui-ci. | ||
| Antenne | Antenne pour la fréquence utilisée, hélicoïdal ou fil | Par exemple, celui-ci. | |||
| Tête | En-tête de programmation ISP | 2x3, 0,1 " | |||
| Tête | En-tête de sélection d'ID de nœud | 2x6, 0,1 " | |||
| Tête | En-tête J1 | 1x2, 0,1 " | |||
| U1 | Microcontrôleur ATMEL ATMEGA328P | Dip-28 | Utilisez de préférence une prise. | ||
| U2 / U3 | Capteur SI7021 / BME280 | Deux empreintes de pas pour différentes ordres de broches. Voir les capteurs pris en charge pour plus d'informations. | |||
| U4 | Hoperf RFM95W / RFM96W / RFM69HW | ||||
| CNTS | Thermistance NTC | En-tête fourni. Voir les capteurs pris en charge pour plus d'informations. | |||
| Support de batterie | Support pour deux batteries de taille AA | Par exemple, une paire d'entre elles. | |||
| Enceinte | Supertronic pp42 |
Les planches ont quelques LED à bord pour indiquer différents événements. Ce chapitre décrit ces événements. Toutes les cartes clignoteront la version actuelle du firmware en cours d'exécution après la mise sous tension.
PWR est allumé chaque fois que la passerelle est alimentée. L2 clignote lorsque la passerelle transmet dans le réseau Modbus. Le tableau suivant concerne L1 .
| Clignotant | Intervalle | Description | Pendant | Notes |
|---|---|---|---|---|
| 1 | 2 sec. | Ensemble d'identité illégal. | Démarrer | Vérifiez les en-têtes ID et redémarrez. |
| 5 | 2 sec. | Échec de l'initialisation de la radio. | Démarrer | Vérifiez les connexions. |
| 1 | - | Reçu et enregistré un message d'un nœud. | Opération | |
| 2 | - | A reçu un message d'un nœud mais la mémoire est pleine. | Opération | Ajoutez une SRAM externe ou une quantité inférieure de nœuds. |
| 3 | - | Modbus réussi Lire de Master. | Opération | |
| 4 | - | MODBUS ÉCHECTÉ DE LIRE DE MASTER. | Opération |
Les nœuds de batterie n'ont qu'une seule LED.
| Clignotant | Intervalle | Description | Pendant | Notes |
|---|---|---|---|---|
| 1 | 2 sec. | Ensemble d'identité illégal. | Démarrer | Vérifiez les en-têtes ID et redémarrez. |
| 3 | 2 sec. | Échec de l'initialisation d'une configuration de capteur appropriée. | Démarrer | Vérifiez les connexions. |
| 5 | 2 sec. | Échec de l'initialisation de la radio. | Démarrer | Vérifiez les connexions. |
| 1 | - | Transmission réussie. | Opération | Uniquement en mode débogage ou transmission forcée. |
| 2 | - | Échec de la transmission. | Opération | Uniquement en mode débogage ou transmission forcée. |
Les nœuds d'impulsion partagent le même tableau que Gateway, ils ont donc également trois LED. PWR est allumé chaque fois que le nœud est alimenté. L2 clignote lorsque le nœud transmet dans le réseau Modbus. Le tableau suivant concerne L1 . Contrairement aux nœuds de batterie, dans les nœuds d'impulsion, L1 clignote toujours car ils ne sont pas limités par la batterie.
| Clignotant | Intervalle | Description | Pendant | Notes |
|---|---|---|---|---|
| 1 | 2 sec. | Ensemble d'identité illégal. | Démarrer | Vérifiez les en-têtes ID et redémarrez. |
| 5 | 2 sec. | Échec de l'initialisation de la radio. | Démarrer | Vérifiez les connexions. |
| 1 | - | Transmission réussie. | Opération | |
| 2 | - | Échec de la transmission. | Opération | |
| 3 | - | Modbus réussi à lire. | Opération | |
| 4 | - | Modbus échoué Lire. | Opération |
Les planches ont quelques en-têtes réglables utilisateur. Ceux-ci doivent être réglés avant que les planches ne soient alimentées. Chaque appareil a également un bouton. De plus, les nœuds de passerelle et d'impulsion ont des bornes à vis pour la puissance, les communications en série et les entrées d'impulsion.
Le bouton de la passerelle n'est actuellement pas utilisé en fonctionnement normal. Cependant, si vous court-vous J1 et maintenez le bouton tout en alimentant la passerelle, les valeurs d'impulsion enregistrées dans EEPROM seront réglées sur zéro.
Si le bouton est enfoncé lors de l'application de l'énergie, un nœud est mis en mode de débogage . Dans ce mode, le nœud envoie de nouvelles valeurs toutes les 8 secondes et clignote également la LED indiquant le succès. Ne pas utiliser à long terme car cela égoutra rapidement les batteries. Power Cycle Le nœud pour annuler le mode de débogage.
Pendant le bouton de fonctionnement normal, les déclencheurs instantanés Send avec pleine puissance et clignotent la LED indiquant le succès. Utilisez pour tester rapidement si le nœud est dans la plage de Gateway.
Si le bouton est enfoncé lors de l'application de l'énergie, un nœud est mis en mode de débogage . Dans ce mode, le nœud envoie de nouvelles valeurs toutes les 8 secondes. N'utilisez pas à long terme, car cela congelera inutilement le réseau radio.
Pendant le bouton de fonctionnement normal, les déclencheurs instantanés Send avec pleine puissance. Utilisez pour tester rapidement si le nœud est dans la plage de Gateway. De plus, si vous court-vous J1 et maintenez le bouton tout en alimentant le nœud, les valeurs d'impulsion enregistrées dans EEPROM seront définies sur zéro.
Reportez-vous aux schémas et aux PCB pour des instructions et des idées détaillées pour les conseils de fabrication. Toutes les puces sont à travers des packages de trous pour une soudure à main plus facile. Les composants plus petits sont principalement SMD, mais ils sont suffisamment grands pour que même les soudereurs non expérimentés puissent les souder.
Téléchargez le référentiel. Placez le contenu des bibliothèques à votre dossier Arduino Libraries. Copiez également SensorSgateway , Sensorbattery et SensorSpulse des dossiers à votre carnet de croquis Arduino.
Vous pouvez facilement installer MINICORE à l'aide de Boards Manager dans Arduino IDE. Suivez les instructions sur la page de MiniCore.
Installez toutes les bibliothèques externes nécessaires. Reportez-vous à la section des bibliothèques pour d'autres instructions. Faites une attention supplémentaire à la pièce concernant la bibliothèque cryptographique si vous utilisez le cryptage.
Au début de chaque .ino, il y a une section contenant tous les paramètres nécessaires avec de bonnes explications. Ajustez les paramètres au besoin. N'oubliez pas que la fréquence, la clé de chiffrement et le faible taux doivent correspondre à chaque appareil du même réseau ou de la même communication ne fonctionnera pas.
Étant donné que les capteurs utilisent du matériel très différent des planches Arduino ordinaires, les microcontrôleurs doivent être programmés avec certains paramètres spéciaux. Pour ce faire, vous aurez besoin d'un programmeur ISP AVR externe. Heureusement, vous pouvez également utiliser un autre Arduino (Uno ou Pro Mini, par exemple) si vous n'avez pas de programmeur de FAI dédié disponible. Suivez les instructions sur arduino.cc pour le câblage et la combustion de l'esquisse Arduinoisp. Il n'y a qu'une seule prise: tout ce que vous utilisez pour programmer une nouvelle carte doit être de 3,3 volts . ATMEGA328P est bien avec 5 volts, mais tous les autres composants fonctionnent à 3,3 volts, donc l'alimentation de la carte 5 volts brûlera très probablement certains ou tous les composants. Ce que je suggère, c'est une version de 3,3 volts d'Arduino Pro Mini ou Pro Micro.
Suivez les instructions mentionnées précédemment jusqu'à ce que vous appuyez sur le programme de botter . Dans les outils> Board et sous MiniCore Sélectionnez ATMEGA328 . Sélectionnez d'autres options comme suit:
Ensuite, appuyez sur Burn Bootloader . Cela ne brûle pas de chargeur de démarrage car nous avons sélectionné pour ne pas utiliser de chargeur de démarrage, cela ne fera que brûler les fusibles nécessaires. Gardez les deux cartes toujours connectées depuis la prochaine fois, nous téléchargerons l'esquisse.
Remarque: cela ne doit être fait qu'une seule fois avec chaque nouveau microcontrôleur. Si vous modifiez plus tard les paramètres de croquis et téléchargez le nouveau croquis, vous pouvez sauter l'étape 6 et suivre directement l'étape 7.
Avec toujours les deux cartes connectées, les paramètres de la carte Arduino IDE comme décrit à l'étape 6 et l'esquisse réelle ouverte, appuyez simplement sur le téléchargement à l'aide du programmeur sous Sketch . Cela téléchargera le croquis comme tout autre croquis Arduino. Après cela, vous avez terminé.
Placez votre passerelle vers un emplacement central et connectez-le à un réseau capable de Modbus. À l'aide des en-têtes de cavalier, définissez son adresse d'esclave Modbus et appliquez de la puissance.
Distribuez d'autres nœuds au besoin, en sélectionnant d'abord leurs adresses avec des en-têtes de cavalier, puis en connectant une alimentation ou des batteries externe. Utilisez le bouton sur les nœuds pour forcer une transmission en pleine puissance - normalement, ajustez automatiquement leur puissance de transmission au niveau le plus bas possible. Un clignotement de la LED embarquée indique une transmission réussie, deux clignotent un échec. LED clignote uniquement lorsque vous forçant une transmission avec le bouton. Vous pouvez utiliser le script Python fourni en lecture_modbus.py pour lire les données de la passerelle à des fins de débogage.
Start logging measurements to a MySQL database ( save_modbus_to_db.py provides a starting point for this), for example, and graph it with Grafana, or connect the gateway to a home automation hub and monitor measurements that way.
Note: Due to the changes, version 2 gateway is no longer compatible with nodes running lower versions. Messages will be delivered but because nodes expect different kind of acknowledgements, they will consider messages lost. This triggers retransmits, full transmit power and more battery usage.
Initial public release.