Boa tarde, hoje vou compartilhar instruções sobre como fazer um relógio com um termômetro de sala. O relógio continua Arduino A tela gráfica UNO, WG12864B é usada para exibir tempo e temperatura. Como sensor de temperatura - ds18b20. Diferentemente da maioria dos outros relógios, eu não usarei RTS (Real Time Clock), mas tentarei ficar sem esse módulo adicional.
Para isso caseiro Os seguintes componentes são necessários:
- Arduino UNO (ou qualquer outra placa compatível com Arduino)
- Tela gráfica WG12864B
- sensor de temperatura ds18b20
- Resistor 4,7 Kom 0,25 W
- Resistor 100 ohm 0,25 W
- Compartimento para 4 pilhas AA tipo “dedo”
- caixa adequada
- Arquivo pequeno
- Esmalte (preto ou cor do corpo)
- Um pouco de plástico ou papelão fino
- fita isolante
- fios de conexão
- placa de circuito
- Botões
- ferro de soldar
- Solda, resina
- Fita dupla face
Etapa 1 Preparando o gabinete.
Portanto, nossos relógios devem estar localizados em algum lugar. Você precisa encontrar uma caixa adequada. O principal é que a tela WG12864B, o Arduino e uma pequena placa de circuito para botões se encaixam nela. O tamanho mínimo da caixa é 7 x 7 x 10 cm. Se você usar uma pequena placa Arduino, poderá colocá-la em uma caixa menor ou menor, mas descreverei o processo usando o exemplo do Arduino UNO. O material de que a caixa é feita é de preferência de plástico, se, como o meu, for de ferro, vale a pena cuidar do isolamento, para que não haja nada para "dar a volta" no interior. O plástico é preferível porque é mais fácil de cortar. Com uma caixa, ele é o caso dos nossos relógios, decidiu. Agora é necessário cortar uma janela sob a tela medindo 6,5x4 cm. Se a caixa for de ferro, é extremamente difícil fazê-lo com cuidado. Não importa como você tente, haverá tinta lascada e rugosidade perto do corte. Portanto, primeiro cortamos, para isso você pode usar o “moedor”, uma broca com um bico para cortar ou uma fresa, em geral, de sua escolha, com o que está à mão. Depois disso, limpamos as bordas com um arquivo. Pintamos toda a tinta lascada com esmalte, cor adequada. O resultado deve ser o seguinte:
Etapa 2 Prepare a tela gráfica.
Com a conexão da tela, à primeira vista, muitos problemas e dificuldades surgem. Mas se você primeiro lidar com os tipos deles, ficará muito mais fácil e compreensível. Existem muitas variações e tipos de telas no controlador ks0107 / ks0108.Todas as telas são geralmente divididas em 4 tipos:
Opção A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Opção B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ exibe AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J-1, Q
Opção C: Shenzhen Jinghua Displays Co Ltd. Jm12864
Opção D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
A lista não está completa, existem muitas. O mais comum e, na minha opinião, conveniente WG12864B3 V2.0. O monitor pode ser conectado ao Arduino através de uma porta serial ou paralela. Quando usado com o Arduino UNO, é melhor escolher uma conexão de porta serial - então precisamos de apenas 3 saídas do microcontrolador, em vez de no mínimo 13 linhas quando conectadas por uma porta paralela. Tudo está conectado de maneira simples. Há mais uma nuance, dois tipos de monitores podem ser encontrados à venda, com um potenciômetro embutido (para ajustar o contraste) e sem ele. Eu escolhi e aconselho você a fazer o mesmo com o built-in.
Isso reduz o número de peças e o tempo de solda. Também vale a pena colocar um resistor limitador de corrente de 100 Ohms para a luz de fundo. Ao conectar 5 volts diretamente, existe o risco de queimar a luz de fundo.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (E / S) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - através do resistor - + 5V
20 (BLK) - GND
O mais conveniente é coletar tudo por trás da tela e enviar 5 fios para conectar ao Arduino UNO. O resultado deve ser algo como isto:
Para quem ainda escolhe uma conexão paralela, darei uma tabela de conexão.
E o layout das telas da opção B:
Etapa 3 Conecte o sensor de temperatura.
Como eu disse, usaremos o sensor integrado DS18B20 para medir a temperatura. Eu o escolhi por sua alta precisão de medição, o erro não é superior a 0,5 ° C. O sensor é calibrado no momento da fabricação; não são necessárias configurações adicionais. Faixa de medição de temperatura -55 ... + 125 ° C. Existem dois modos de operação: com uma fonte de energia externa e "energia espúria". Ao operar no modo de energia externa, a conexão é a seguinte:
Ao usar "energia espúria", o sensor recebe energia da linha de comunicação. Nesse modo, dois fios são suficientes para conectar o ds18b20 ao microcontrolador. O capacitor interno do sensor é carregado devido à energia na linha de comunicação em um nível baixo no barramento. O modo "nutrição parasitária" possui muitos recursos e, portanto, não recomendo usá-lo. Mas se você ainda decidir usá-lo, aqui está o diagrama:
Ou você pode usar um diagrama de fiação aprimorado ao usar "energia espúria":
Vários sensores podem ser incluídos em uma linha de comunicação. Para os nossos relógios, basta. Conectamos o fio do pino “DQ” ds18b20 ao “pino 5” Arduino UNO.
Etapa 4 Preparando uma placa com botões.
Para definir a hora e a data no relógio, usaremos três botões. Por conveniência, solde os três botões na placa de circuito e conecte-o.
Nós conectamos da seguinte forma: o fio comum aos três botões é conectado ao Arduino “GND”. O primeiro botão, serve para entrar no modo de ajuste da hora e alternar entre hora e data, conectar ao "Pino 2". O segundo, o botão para aumentar o valor, é o "Pino 3" e o terceiro, o botão para diminuir o valor, é o "Pino 4".
Etapa 5 Reunindo tudo.
Para evitar um curto-circuito, isole a tela. Em um círculo, enrolamos com fita isolante e, na parte de trás, prendemos a uma fita dupla face, cortada no tamanho, uma tira de material isolante. Papelão grosso ou plástico fino é adequado. Eu usei plástico de uma tábua de papel. O resultado foi o seguinte:
Na frente da tela, ao longo da borda, colamos uma fita dupla face com espuma, de preferência preta.
Conectamos a tela ao Arduino:
Além disso, nos conectamos do compartimento da bateria ao Arduino "VIN", menos o "GND". Nós o colocamos atrás do Arduino. Antes de instalar no gabinete, não esqueça de conectar o sensor de temperatura e a placa com os botões.
Etapa 6 Prepare e preencha o esboço.
Um sensor de temperatura precisa da biblioteca OneWire.
A saída para a tela é através da biblioteca U8glib:
Para editar e preencher o esboço, instale essas duas bibliotecas. Existem duas maneiras de fazer isso. Apenas descompacte esses arquivos e coloque os arquivos descompactados na pasta “bibliotecas” localizada na pasta com o IDE do Arduino instalado.Ou a segunda opção é instalar a biblioteca diretamente no ambiente de programação. Sem descompactar os arquivos baixados, no Arduino IDE, selecione o menu Sketch - Connect Library. No topo da lista suspensa, selecione o item "Adicionar .Zip Library". Na caixa de diálogo exibida, selecione a biblioteca que você deseja adicionar. Abra o menu Sketch - Connect Library novamente. Na parte inferior da lista suspensa, você verá uma nova biblioteca. Agora a biblioteca pode ser usada em programas. Não esqueça de reiniciar o Arduino IDE depois de tudo isso.
O sensor de temperatura funciona de acordo com o protocolo One Wire e possui um endereço exclusivo para cada dispositivo - um código de 64 bits. Cada vez, procurar esse código é impraticável. Portanto, você deve primeiro conectar o sensor ao Arduino, preencher o esboço localizado no menu Arquivo - Exemplos - Temperatura Dallas - OneWireSearch. Em seguida, execute Ferramentas - Port Monitor. O Arduino deve encontrar nosso sensor, escrever seu endereço e as leituras atuais de temperatura. Copiamos ou simplesmente anotamos o endereço do nosso sensor. Abra o sketch Arduino_WG12864B_Term, procure a linha:
byte addr [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // endereço do meu sensor
Anotamos o endereço do seu sensor entre chaves, substituindo o endereço do meu sensor.
Estoque:
//u8g.setPrintPos (44, 64); u8g.print (sek); // Imprima segundos para verificar a correção do curso
Exibe segundos ao lado de "Dados". Isso é necessário para definir com precisão o curso do tempo.
Se o relógio estiver com pressa ou atrasado, você deve alterar o valor na linha:
if (micros () - prevmicros> 494000) {// alterar para outro para ajuste foi 500.000
Eu determinei experimentalmente o número em que o relógio vai com bastante precisão. Se o relógio estiver com pressa, você deve aumentar esse número; se eu estiver atrasado, diminua-o. Para determinar a precisão do curso e precisa de uma conclusão segundos. Após calibrar com precisão o número, os segundos podem ser comentados e, portanto, removidos da tela.
Preencha o esboço.