Table des matières:

Mini station météo avec Attiny85 : 6 étapes (avec photos)
Mini station météo avec Attiny85 : 6 étapes (avec photos)

Vidéo: Mini station météo avec Attiny85 : 6 étapes (avec photos)

Vidéo: Mini station météo avec Attiny85 : 6 étapes (avec photos)
Vidéo: TRONIK AVENTUR 301 : ATMEGA328P pour économiser des Arduino Uno 2024, Novembre
Anonim
Mini station météo avec Attiny85
Mini station météo avec Attiny85
Mini station météo avec Attiny85
Mini station météo avec Attiny85
Mini station météo avec Attiny85
Mini station météo avec Attiny85

Dans un récent instructable, Indigod0g a décrit une mini station météo qui fonctionne plutôt bien, en utilisant deux Arduinos. Peut-être que tout le monde ne veut pas sacrifier 2 Arduinos pour obtenir des lectures d'humidité et de température et j'ai commenté qu'il devrait être possible de faire une fonction similaire avec deux Attiny85. Je suppose que parler est facile, alors je ferais mieux de mettre mon argent là où est ma bouche.

En fait, si je combine deux instructables précédents, j'ai écrit:

Interface LCD à 2 fils pour Arduino ou Attiny et Recevoir et envoyer des données entre Attiny85 (Arduino IDE 1.06) alors la plupart du travail est déjà fait. Il suffit d'adapter un peu le logiciel.

J'ai choisi une solution lcd à deux fils avec un registre à décalage, plutôt qu'un LCD I2C car sur l'Attiny le registre à décalage est plus facile à mettre en œuvre que le bus I2C. Cependant… si vous souhaitez par exemple lire un capteur de pression BMP180 ou BMP085, vous avez de toute façon besoin d'I2C pour cela, vous pouvez donc aussi utiliser un écran LCD I2C. TinyWireM est une bonne bibliothèque pour I2C sur un Attiny (mais elle nécessite un espace supplémentaire).

BOM L'émetteur: DHT11 Attiny85 10 k résistance 433MHz module émetteur

Le récepteur Attiny85 10k résistance 433 MHz module récepteur

L'afficheur 74LS164 registre à décalage 1N4148 diode 2x1k résistance 1x1k résistance variable un afficheur LCD 2x16

Étape 1: Mini station météo avec Attiny85: l'émetteur

Mini station météo avec Attiny85: l'émetteur
Mini station météo avec Attiny85: l'émetteur
Mini station météo avec Attiny85: l'émetteur
Mini station météo avec Attiny85: l'émetteur
Mini station météo avec Attiny85: l'émetteur
Mini station météo avec Attiny85: l'émetteur
Mini station météo avec Attiny85: l'émetteur
Mini station météo avec Attiny85: l'émetteur

L'émetteur est une configuration très basique de l'Attiny85 avec une résistance de rappel sur la ligne de réinitialisation. Un module émetteur est attaché à la broche numérique '0' et la broche de données DHT11 se fixe à la broche numérique 4. Attachez un fil de 17,2 cm comme antenne (pour une bien meilleure antenne voir étape 5). Le logiciel est le suivant:

//fonctionnera sur Attiny//RF433=D0 broche 5

//DHT11=D4 broche 3 // bibliothèques #include //De Rob Tillaart #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 //pin où votre émetteur est connecté //variables float h=0; flottant t=0; int transmit_t = 0; int transmission_h = 0; int transmission_données = 0; void setup() { pinMode(1, INPUT); man.setupTransmit(TX_PIN, MAN_1200); } boucle vide() { int chk = DHT11.read11(DHT11PIN); h=DHT11.humidité; t=DHT11.température; // Je sais, j'utilise ici 3 variables entières // où je pourrais utiliser 1 // mais c'est juste pour qu'il soit plus facile de suivre transmit_h=100* (int) h; transmettre_t=(int) t; transmit_data=transmit_h+transmit_t; man.transmit(transmit_data); retard (500); }

Le logiciel utilise le code Manchester pour envoyer les données. Il lit le DHT11 et stocke la température et l'humidité dans 2 flotteurs séparés. Comme le code Manchester n'envoie pas de flottants, mais un entier, j'ai plusieurs options: 1- diviser les flottants en deux entiers chacun et les envoyer2- envoyer chaque flottant sous forme d'entier3- envoyer les deux flottants sous forme d'un entierAvec l'option 1, je dois combiner les entiers flottent à nouveau dans le récepteur et je dois identifier quel entier est quoi, ce qui rend le code long. Avec l'option 2, j'ai encore besoin d'identifier quel entier est pour l'humidité et lequel pour la température. Je ne peux pas utiliser la séquence seule au cas où un entier serait perdu dans la transmission, je devrais donc envoyer un identifiant attaché à l'entier. Avec l'option 3, je ne peux envoyer qu'un seul entier. Évidemment, cela rend les lectures un peu moins précises - à moins de 1 degré - et on ne peut pas envoyer des températures inférieures à zéro, mais ce n'est qu'un simple code et il existe des moyens de contourner cela. Pour l'instant c'est à peu près le principe. Donc ce que je fais c'est que je transforme les flotteurs en nombres entiers et je multiplie l'humidité par 100. Ensuite j'ajoute la température à l'humidité multipliée. Étant donné que l'humidité ne sera jamais à 100% le le nombre maximum que j'obtiendrai est 9900. Étant donné que la température ne sera pas non plus supérieure à 100 degrés, le nombre maximum sera de 99, donc le nombre le plus élevé que j'enverrai est 9999 et qui est facile à séparer du côté du récepteur. Bien sûr mon calcul dans lequel j'utilise 3 entiers est exagéré car il pourrait facilement être fait avec 1 variable. Je voulais juste rendre le code plus facile à suivre. Le code se compile maintenant comme suit:

Taille de l'esquisse binaire: 2 836 octets (sur un maximum de 8 192 octets) pour tenir dans un Attiny 45 ou 85NOTE la bibliothèque dht.h que j'utilise est celle de Rob Tillaart. Cette bibliothèque convient également à un DHT22. J'utilise la version 1.08. Cependant, l'Attiny85 peut avoir des problèmes pour lire un DHT22 avec des versions inférieures de la bibliothèque. Il m'a été confirmé que les 1.08 et 1.14 -bien que fonctionnant sur un Arduino régulier- ont du mal à lire un DHT22 sur l'Attiny85. Si vous souhaitez utiliser un DHT22 sur l'Attiny85, utilisez la version 1.20 de cette librairie. Tout a à voir avec le timing. La version 1.20 de la bibliothèque a une lecture plus rapide. (Merci pour cette expérience utilisateur Jeroen)

Étape 2: Mini station météo avec Attiny85: le récepteur

Mini station météo avec Attiny85: le récepteur
Mini station météo avec Attiny85: le récepteur

Encore une fois, l'Attiny85 est utilisé dans une configuration de base avec la broche de réinitialisation tirée vers le haut avec une résistance de 10 k. Le module récepteur est connecté à la broche numérique 1 (broche 6 sur la puce). L'écran LCD est attaché aux broches numériques 0 et 2. Attachez un fil de 17,2 cm comme antenne. Le code est le suivant:

#comprendre

#include LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 //= configuration void de la broche physique 6 () { lcd.begin (16, 2); lcd.home(); man.setupReceive(RX_PIN, MAN_1200); man.beginReceive(); }boucle vide() { if (man.receiveComplete()) { uint16_t m = man.getMessage(); man.beginReceive(); lcd.print("Humid: "); lcd.print(m/100); lcd.setCursor(0, 1); lcd.print("Temp"); lcd.print(m%100); } }

Le code est assez simple: l'entier transmis est reçu et stocké dans la variable 'm'. Il est divisé par 100 pour donner l'humidité et le modulo de 100 donne la température. Supposons donc que l'entier reçu soit 33253325/100=333325 % 100 =25Ce code se compile en 3380 octets et ne peut donc être utilisé qu'avec un attiny85, pas avec un 45

Étape 3: Mini station météo avec Attiny85/45: l'affichage

Mini station météo avec Attiny85/45: l'affichage
Mini station météo avec Attiny85/45: l'affichage
Mini station météo avec Attiny85/45: l'affichage
Mini station météo avec Attiny85/45: l'affichage

Pour l'affichage, il est préférable que je me réfère à mon instructable sur un affichage à deux fils. En bref, un affichage commun 16x2 utilise un registre à décalage afin qu'il puisse fonctionner avec deux broches numériques. Bien sûr, si vous préférez utiliser un affichage prêt I2C, c'est possible aussi, mais vous devez alors implémenter un protocole I2C sur l'Attiny. Le protocole Tinywire peut le faire. Bien que certaines sources disent que cela attend une horloge à 1 Mhz, je n'ai eu aucun problème (dans un autre projet) à l'utiliser sur 8 Mhz De toute façon, je ne me suis pas soucié ici et j'ai utilisé un registre à décalage.

Étape 4: Mini Station Météo avec Attiny85/45: Possibilités/Conclusions

Mini Station Météo avec Attiny85/45: Possibilités/Conclusions
Mini Station Météo avec Attiny85/45: Possibilités/Conclusions
Mini Station Météo avec Attiny85/45: Possibilités/Conclusions
Mini Station Météo avec Attiny85/45: Possibilités/Conclusions
Mini Station Météo avec Attiny85/45: Possibilités/Conclusions
Mini Station Météo avec Attiny85/45: Possibilités/Conclusions

Comme dit, j'ai fait cette instructable pour montrer que l'on peut faire une mini station météo avec deux attiny85 (même avec un attiny85 + 1 attiny45). Il n'envoie que l'humidité et la température, en utilisant un DHT11. Cependant, l'Attiny a 5 broches numériques à utiliser, 6 même avec quelques ruses. Par conséquent, il est possible d'envoyer des données à partir de plusieurs capteurs. Dans mon projet - comme le montrent les photos sur le stripboard et sur un PCB professionnel (OSHPark) - j'envoie/reçois des données d'un DHT11, d'un LDR et d'un PIR, le tout en utilisant deux attiny85's La limitation de l'utilisation d'un attiny85 comme récepteur est la présentation des données dans un style flashy. Comme la mémoire est limitée: des textes tels que "Température, humidité, niveau de luminosité, sujet en approche" rempliront assez rapidement l'espace mémoire précieux. Néanmoins, aucune raison d'utiliser deux Arduino juste pour envoyer/recevoir la température et l'humidité. De plus, c'est possible pour que l'émetteur s'endorme et qu'il ne se réveille que pour envoyer des données, disons toutes les 10 minutes et ainsi l'alimenter à partir d'une pile bouton. De toute évidence, non seulement les données de température ou d'humidité peuvent être envoyées, mais on peut également envoyer un ensemble de petits émetteurs. également des lectures d'humidité du sol, ou ajoutez un anémomètre, ou un pluviomètre

Étape 5: Mini station météo: l'antenne

Mini Station Météo: l'Antenne
Mini Station Météo: l'Antenne

L'antenne est une partie importante de toute configuration 433Mhz. J'ai expérimenté l'antenne "tige" standard de 17,2 cm et j'ai eu un court flirt avec une antenne à bobine. Ce qui semblait fonctionner le mieux est une antenne à bobine qui est facile à fabriquer. Le design est de Ben Schueler et a apparemment été publié dans le magazine 'Elektor'. Un PDF avec la description de cette 'Antenne 433 MHz refroidie par air' est facile à suivre. (Le lien a disparu, vérifiez ici)

Étape 6: Ajout d'un BMP180

Ajout d'un BMP180
Ajout d'un BMP180

Vous souhaitez ajouter un capteur de pression barométrique comme le BMP180 ? vérifier mon autre instructable à ce sujet.

Conseillé: