Bonjour, je continue de faire Arduino dans ses temps libres, et cette fois il a écrit des instructions pour la fabrication d'une petite station météo. Il agira comme une horloge avec une date et affichera les températures à l'intérieur et à l'extérieur de la pièce. En tant que contrôleur principal, nous utiliserons Arduino UNO, mais une autre carte avec Atmega328p à bord fera l'affaire. Pour l'affichage, nous utilisons l'écran graphique WG12864B. Nous connectons également deux capteurs de température DS18B20. Un à l'intérieur, nous sortons le second à l'extérieur. Commençons.
Dans le processus de fabrication fait maison nous aurons besoin de:
- Arduino UNO (ou toute autre carte compatible Arduino)
- Écran graphique WG12864B
- Capteur de température DS18B20, 2 pièces
- Alimentation 6 - 12 V
- Résistances 4,7 Kom 0,25 W, 2 pcs.
- Résistances 100 ohms 0,25 W
- Compartiment à piles pour 4 piles AAA "pinky"
- Boîte de la cartouche de la console SEGA
- ruban électrique
- fils de connexion
- circuit imprimé
- Boutons
- couteau de papeterie
- fer à souder
- Soudure, colophane
- Ruban adhésif double face
Étape 1 Préparation du WG12864B3.
Ceux qui n'ont pas travaillé avec des écrans auparavant peuvent être effrayés par un grand nombre de modifications, qui semblent être les mêmes, des écrans. Je vais vous expliquer un peu. La plupart des écrans de ce type fonctionnent sur les puces ks0107 / ks0108. Tous les écrans peuvent être divisés en 4 types:
Option A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Option B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Displays AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J-1, QY128
Option C: Shenzhen Jinghua Displays Co Ltd. Jm12864
Option D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
Ils se ressemblent presque. Mais ils ont des broches de connexion différentes. J'ai choisi, et je vous recommande, WG12864B3 V2.0, mais si l'écran est apparu différemment, ou si vous ne l'avez pas à portée de main, vous pouvez facilement le comprendre à l'aide du tableau:
Brève caractéristiques:
Il existe de nombreux schémas de connexion différents sur Internet, et tout semble fonctionner. Le fait est qu'il existe non seulement différents écrans, mais aussi deux façons de les connecter: série et parallèle. Lorsque vous utilisez une connexion de port série, nous n'avons besoin que de 3 sorties du microcontrôleur. Avec un minimum parallèle de 13. Le choix dans ce cas est évident, Arduino a peu de conclusions. Pour une connexion parallèle, le schéma de connexion est le suivant:
Pour une connexion série, que nous utiliserons, le schéma est le suivant:
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - via une résistance de 100 Ohms - + 5V
20 (BLK) - GND
Pour régler le contraste, un potentiomètre doit être sur l'écran. Il y a des écrans sans, mais maintenant c'est une rareté:
Une résistance de 100 ohms est nécessaire pour qu'une tension de 5 volts ne brûle pas accidentellement les diodes de rétroéclairage.
Étape 2 Faire le cas.
Pour le cas, prenez la boîte du préfixe de cartouche Sega. Si vous ne trouvez pas cette boîte à portée de main, vous pouvez utiliser un autre étui. L'essentiel est que l'écran et l'Arduino y tiennent.
Coupez le film transparent sur le dessus de la boîte afin qu'il ne reste plus de morceaux:
Ensuite, à l'aide d'un couteau de bureau, découpez une fenêtre de 37 x 69 pour l'écran.
Au verso, le long du bord de la coupe, on colle un ruban double face, de préférence noir:
Retirez le papier protecteur du ruban adhésif et collez notre écran dessus:
De l'extérieur, cela devrait ressembler à ceci:
Sous l'écran, également sur du ruban adhésif double face, nous fixons l'Arduino, en effectuant des découpes préliminaires pour le port USB et la prise d'alimentation:
Les découpes pour les prises Arduino doivent être effectuées des deux côtés de la boîte afin qu'elle puisse être fermée librement:
Étape 3 Capteurs de température.
Nous utiliserons des capteurs de température numériques DS18B20. En les utilisant, nous obtenons une grande précision de mesure, l'erreur n'est pas supérieure à 0,5 ° C, dans une large plage de température -55 ... + 125 ° C. De plus, le capteur numérique effectue lui-même tous les calculs et l'Arduino reçoit simplement des lectures prêtes à l'emploi. Lors de la connexion de ce capteur, n'oubliez pas la résistance de rappel, 4,7 kΩ, entre les contacts DQ et VDD. Plusieurs options de connexion sont également possibles. Avec une alimentation externe, à mon avis la meilleure option, nous l'utiliserons:
Si vous le souhaitez, vous pouvez utiliser le mode d'alimentation parasite:
Ou une option alimentaire parasitaire améliorée:
Avec n'importe quelle alimentation, les capteurs sont connectés en parallèle:
Nous placerons le capteur de mesure de température sur la petite planche avec deux boutons, que nous utiliserons pour régler l'heure et la date de l'horloge:
Le fil commun des deux boutons est connecté à GND, le fil du premier bouton est connecté à A0, du second à A1.
Fixez à une bande double face à côté de l'Arduino:
Le capteur, qui est censé être placé à l'extérieur de la pièce, est préférable de choisir dans un boîtier métallique, étanche à la poussière et à l'humidité:
Calculez le fil de la longueur requise pour que le capteur puisse être accroché à l'extérieur de la fenêtre, l'essentiel est qu'il ne devrait pas dépasser 5 mètres, si vous avez besoin de plus de longueur, vous devrez réduire la valeur de la résistance de rappel.
Le fil du bus de données DQ des deux capteurs est connecté à la broche 5 de l'Arduino.
Vdd - +5 Arduino.
GND - GND Arduino.
Étape 4 Alimentation.
Pour l'alimentation, vous pouvez utiliser une alimentation avec une tension de 6 à 12 volts. À la fin du fil de puissance, soudez la fiche adaptée à la prise de courant Arduino:
Ou vous pouvez mettre un compartiment à piles pour quatre piles "AAA", "pinky" dans le boîtier. Et connectez le fil positif du compartiment au Vin Arduino et le moins au GND.
Étape 5 Préparation de l'environnement de programmation.
Vous devez d'abord télécharger et installer Arduino IDE avec site officiel
Et ajoutez également aux deux bibliothèques nécessaires pour l'esquisse. OneWire - requis pour la communication avec les capteurs ds18b20:
U8glib - utilisé pour afficher des informations à l'écran:
Téléchargez la bibliothèque. Ensuite, nous décompressons les archives et déplaçons le contenu des archives dans le dossier «bibliothèques» situé dans le dossier avec l'IDE Arduino installé. Vous pouvez également ajouter des bibliothèques via l'IDE Arduino. Pour ce faire, sans déballer les archives, lancez l'IDE Arduino, sélectionnez Sketch - Connect Library dans le menu Sketch. En haut de la liste déroulante, sélectionnez l'élément "Ajouter une bibliothèque .Zip". Nous indiquons l'emplacement des archives téléchargées. Après toutes les étapes, vous devez redémarrer l'IDE Arduino.
Étape 6 Modification de l'esquisse.
Les capteurs de température fonctionnent en utilisant le protocole One Wire et ont une adresse unique pour chaque appareil - un code 64 bits. Il n'est pas recommandé d'ajouter des commandes de recherche de capteur à l'esquisse. Il n'est pas nécessaire de charger les capteurs de hoquet Arduino à chaque fois.Par conséquent, tout d'abord, tout assembler, remplissez le croquis dans Arduino, situé dans le menu Fichier - Exemples - Dallas Temperature - OneWireSearch. Exécutez ensuite Tools - Port Monitor. Arduino devrait trouver nos capteurs, écrire les adresses et les relevés de température. Ces adresses doivent être écrites ou simplement copiées quelque part. Ouvrez maintenant l'esquisse Ard_Tic_Tak_WG12864B_2_x_Term_Serial et recherchez les lignes:
octet addr1 [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; // adresse interne
byte addr2 [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // adresse du capteur externe
Nous remplaçons les adresses correspondant à l'emplacement des capteurs par nos adresses.
Nos montres n'utilisent pas le module RTC (horloge en temps réel), vous devez donc régler l'horloge. Pour plus de commodité, décommentez la ligne (les secondes apparaîtront à l'écran):
//u8g.setPrintPos (44, 50); u8g.print (sek); // Imprimer les secondes pour vérifier l'exactitude du cours
Réglez l'heure correcte via le moniteur de port. Pour ce faire, ouvrez le moniteur de port, attendez que les mesures de température initiales soient terminées et entrez la date et l'heure actuelles au format "jour, mois, année, heures, minutes, secondes". Sans espaces, divisez les nombres par des virgules ou des points.
Si l'horloge est pressée, changez la valeur pour une plus grande, je recommande d'expérimenter avec des incréments de 100 unités. En cas de retard, diminuez la valeur de la ligne:
if (micros () - prevmicros & gt; 494000) {// passer à un autre pour l'ajustement était de 500 000
Déterminez empiriquement le nombre auquel l'horloge fonctionne assez précisément. Pour déterminer la précision du cours et besoin d'une conclusion secondes. Après avoir calibré avec précision le nombre, les secondes peuvent être commentées et ainsi supprimées de l'écran.
Remplissez l'esquisse.