Bona tarda, segueixo fent Arduino en el seu temps lliure, i aquesta vegada va escriure instruccions per a la fabricació d'una petita estació meteorològica. Funcionarà com un rellotge amb una data i mostrarà les temperatures dins i fora de la sala. Com a controlador principal, farem servir Arduino UNO, però ho farà una altra placa amb Atmega328p a bord. Per a la visualització utilitzem la pantalla gràfica WG12864B. També connectem dos sensors de temperatura ds18b20. Un a l'interior, el traiem al segon. Comencem
En el procés de fabricació casolans necessitarem:
- Arduino UNO (o qualsevol altra placa compatible Arduino)
- Pantalla gràfica WG12864B
- Sensor de temperatura ds18b20, 2pcs
- Alimentació de 6-12 V
- Resistències 4,7 Kom 0,25 W, 2 peces.
- Resistores de 100 ohms 0,25 W
- Compartiment de bateries per a 4 piles AAA “rosa”
- Caixa del cartutx de la consola SEGA
- cinta elèctrica
- cables de connexió
- placa de circuit
- Botons
- ganivet de papereria
- soldadura
- Soldadura, colofona
- Cinta a doble cara
Pas 1 Preparació del WG12864B3.
Aquells que no hagin treballat amb pantalles abans poden tenir por per un gran nombre de modificacions, que semblen ser les mateixes, de les pantalles. Us explicaré una mica. La majoria de les pantalles d’aquest tipus funcionen en xips ks0107 / ks0108. Totes les pantalles es poden dividir en 4 tipus:
Opció A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Opció B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Visualitza AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J, Q4
Opció C: Shenzhen Jinghua Displays Co Ltd. Jm12864
Opció D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
Semblen gairebé iguals. Però tenen pins diferents de connexió. Vaig triar i us recomano WG12864B3 V2.0, però si la pantalla apareix de manera diferent o no la teniu a la mà, podeu esbrinar-la fàcilment mitjançant la taula:
Característiques breus:
Hi ha molts esquemes de connexió diferents a Internet, i tot sembla funcionar. La cosa és que no només hi ha diferents pantalles, sinó també dues maneres de connectar-les: en sèrie i en paral·lel. Quan utilitzeu una connexió de port sèrie, només necessitem 3 sortides del microcontrolador. Amb un mínim paral·lel de 13. L’elecció en aquest cas és evident, Arduino en té poques conclusions. Per a la connexió paral·lela, el diagrama de connexió és el següent:
Per a una connexió en sèrie, que utilitzarem, l'esquema és el següent:
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - mitjançant una resistència de 100 ohms - + 5V
20 (BLK) - GND
Per ajustar el contrast, hauria de tenir a la pantalla un potenciòmetre. Hi ha pantalles sense, però ara és una raresa:
Es necessita una resistència de 100 ohms de manera que una tensió de 5 volts no cremi accidentalment els díodes de llum de fons.
Pas 2 Realització del cas.
Per al cas, traieu la caixa del prefix del cartutx Sega. Si no trobeu aquest quadre a la vostra disposició, podeu fer servir un altre cas. El més important és que la pantalla i l’Arduino s’hi encaixin.
Talleu la pel·lícula transparent a sobre de la caixa perquè no quedin peces:
A continuació, amb un ganivet clerical, talleu una finestra de mida 37x69 per a la pantalla.
Al revers, al llarg del tall, enganxem una cinta de doble cara, preferiblement de color negre:
Elimineu el paper protector de la cinta adhesiva i enganxeu-hi la pantalla:
Des de fora hauria de quedar així:
A sota de la pantalla, també en cinta a doble cara, fixem l'Arduino, fent retalls preliminars per al port USB i la presa d'alimentació:
Els retalls per als socs Arduino s’han de fer a banda i banda de la caixa perquè es pugui tancar lliurement:
Sensors de temperatura del pas 3
Utilitzarem sensors digitals de temperatura DS18B20. Si usem-los obtenim una gran precisió de mesurament, l'error no és superior a 0,5 ° C, en un ampli rang de temperatura de -55 ... + 125 ° C. A més, el sensor digital realitza tots els propis càlculs i l’Arduino només rep lectures preparades. Quan connecteu aquest sensor, no us oblideu de la resistència de tracció de 4,7 kΩ entre els contactes DQ i VDD. També són possibles diverses opcions de connexió. Amb potència externa, al meu parer la millor opció, la farem servir:
Si voleu, podeu utilitzar el mode de paràsit:
O una opció alimentària paràsida millorada:
Amb qualsevol font d'alimentació, els sensors es connecten en paral·lel:
Col·locarem el sensor de mesura de temperatura a la placa petita juntament amb dos botons, que farem servir per configurar l’hora i la data del rellotge:
El fil comú dels dos botons està connectat a GND, el cable des del primer botó està connectat a A0, des del segon a A1.
Fixeu-lo a una cinta de doble cara al costat de l'Arduino:
El sensor, que se suposa que es troba situat a la sala, és millor escollir-lo en una carcassa a prova de metall, pols i humitat:
Calculeu el filferro de la longitud necessària perquè el sensor es pugui penjar fora de la finestra, el principal és que no hagi de superar els 5 metres; si necessiteu més longitud, haureu de reduir el valor de la resistència de tracció.
El cable del bus de dades DQ d’ambdós sensors està connectat al pin 5 de l’Arduino.
Vdd - +5 Arduino.
GND - GND Arduino.
Pas 4 Potència.
Per a potència, podeu utilitzar una font d’alimentació amb una tensió de 6 a 12 volts. Al final del cable de llamarada elèctrica, solda el connector adequat a la presa d'alimentació Arduino:
O bé, podeu col·locar un compartiment per a piles per a quatre bateries “AAA”, “rosades”. I connecteu el fil positiu del compartiment al Vin Arduino, i menys a GND.
Pas 5 Preparació de l’entorn de programació.
Primer cal descarregar i instal·lar Arduino IDE amb lloc oficial
I afegeix-lo a les dues biblioteques necessàries per a l’esbós. OneWire: necessari per a la comunicació amb sensors ds18b20:
U8glib: usat per mostrar informació a la pantalla:
Descarregueu la biblioteca. A continuació, desempaquetem els arxius i movem el contingut dels arxius a la carpeta "biblioteques" ubicada a la carpeta amb l'ID Arduino instal·lat. També podeu afegir biblioteques mitjançant l’ID Arduino. Per fer-ho, sense desempaquetar els arxius, executeu l’Arduino IDE, seleccioneu Sketch - Connecta la biblioteca al menú Sketch. A la part superior de la llista desplegable, seleccioneu l'element "Afegeix biblioteca .Zip". Indiquem la ubicació dels arxius descarregats. Després de tots els passos, heu de reiniciar l’ID Arduino.
Pas 6 Edició de l'esbós.
Els sensors de temperatura funcionen mitjançant el protocol One Wire i tenen una adreça única per a cada dispositiu: un codi de 64 bits. No és recomanable afegir ordres de cerca de sensors al croquis. No és necessari carregar sensors de singlot Arduino cada vegada.Per tant, primer, ajuntant-ho tot, empleneu l’esbós a Arduino, situat al menú Fitxer - Exemples - Dallas Temperatura - OneWireSearch. A continuació, executeu Eines - Port Monitor. Arduino hauria de trobar els nostres sensors, escriure les adreces i les lectures de temperatura. Aquestes adreces s’han d’escriure o copiar en algun lloc. Ara obriu l'esbós Ard_Tic_Tak_WG12864B_2_x_Term_Serial i busqueu les línies:
byte addr1 [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; // adreça interna
byte addr2 [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // adreça del sensor extern
Substituïm les adreces corresponents a la ubicació dels sensors per les nostres adreces.
Els nostres rellotges no utilitzen el mòdul RTC (rellotge en temps real), de manera que cal ajustar el rellotge. Per a més comoditat, desmarqueu la línia (segons apareixeran a la pantalla):
//u8g.setPrintPos (44, 50); u8g.print (sek); // Imprimeix segons per comprovar la correcció del curs
Definiu l’hora correcta mitjançant el monitor del port. Per fer-ho, obriu el monitor del port, espereu que acabin les mesures inicials de temperatura i introduïu la data i hora actuals en el format "dia, mes, any, hores, minuts, segons". Sense espais, dividiu els números per comes o períodes.
Si el rellotge té pressa, canvieu el valor per un de més gran, us recomano experimentar amb increments de 100 unitats. Si es queda en retard, disminuïu el valor de la línia:
if (micros () - prevmicros & gt; 494000) {// canviar a un altre per ajustar-se a 500.000
Determineu empíricament el número al qual el rellotge va amb molta precisió. Per determinar la precisió del curs i necessitar una conclusió de segons. Després d'haver calibrat amb precisió el número, es poden comentar els segons i eliminar-los de la pantalla.
Omple l’esbós.