Boa tarde eu continuo fazendo Arduino em seu tempo livre, e desta vez ele escreveu instruções para a fabricação de uma pequena estação meteorológica. Ele funcionará como um relógio com uma data e mostrará as temperaturas dentro e fora da sala. Como controlador principal, usaremos o Arduino UNO, mas outra placa com o Atmega328p a bordo. Para exibição, usamos a tela gráfica WG12864B. Também conectamos dois sensores de temperatura ds18b20. Um dentro de casa, tiramos o segundo do lado de fora. Vamos começar.
No processo de fabricação caseiro vamos precisar de:
- Arduino UNO (ou qualquer outra placa compatível com Arduino)
- Tela gráfica WG12864B
- sensor de temperatura ds18b20, 2pcs
- Fonte de alimentação 6 - 12 V
- Resistores 4,7 Kom 0,25 W, 2 peças.
- Resistores 100 ohms 0,25 W
- Compartimento de bateria para 4 pilhas "pinky" AAA
- Caixa do cartucho do console SEGA
- fita isolante
- fios de conexão
- placa de circuito
- Botões
- faca de papelaria
- ferro de soldar
- Solda, resina
- Fita dupla face
Etapa 1 Preparando o WG12864B3.
Aqueles que não trabalharam com telas antes podem ficar assustados com um grande número de modificações, que parecem iguais, das telas. Eu vou explicar um pouco A maioria das telas desse tipo funciona com chips ks0107 / ks0108. Todas as telas podem ser 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
Eles parecem quase o mesmo. Mas eles têm pinos de conexão diferentes. Escolhi e recomendo o WG12864B3 V2.0, mas se a tela aparecer de forma diferente ou se você não a tiver, poderá facilmente descobrir isso usando a tabela:
Breves características:
Existem muitos esquemas de conexão diferentes na Internet e tudo parece estar funcionando. O problema é que não existem apenas telas diferentes, mas também duas maneiras de conectá-las: serial e paralela. Ao usar uma conexão de porta serial, precisamos de apenas 3 saídas do microcontrolador. Com um mínimo paralelo de 13. A escolha neste caso é óbvia, o Arduino tem poucas conclusões. Para conexão paralela, o diagrama de conexão é o seguinte:
Para uma conexão serial, que usaremos, o esquema é o seguinte:
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 de um resistor de 100 Ohm - + 5V
20 (BLK) - GND
Para ajustar o contraste, um potenciômetro deve estar na tela. Existem telas sem ele, mas agora é uma raridade:
É necessário um resistor de 100 ohm para que uma tensão de 5 volts não queime acidentalmente diodos de luz de fundo.
Etapa 2 Fazendo o caso.
Para o caso, pegue a caixa no prefixo do cartucho Sega. Se você não encontrar esta caixa em mãos, poderá usar outro caso. O principal é que a tela e o Arduino se encaixam nela.
Corte o filme transparente em cima da caixa para que não haja mais pedaços:
Em seguida, usando uma faca de escritório, corte uma janela de 37x69 no tamanho da tela.
No verso, ao longo da borda do corte, colamos uma fita dupla face, de preferência preta:
Remova o papel protetor da fita adesiva e cole nossa tela:
Do lado de fora, deve ficar assim:
Abaixo da tela, também em fita dupla face, prendemos o Arduino, fazendo recortes preliminares para a porta USB e a tomada:
Recortes para soquetes do Arduino devem ser feitos nos dois lados da caixa para que possam ser fechados livremente:
Etapa 3 Sensores de temperatura.
Usaremos sensores digitais de temperatura DS18B20. Utilizando-os, obtemos grande precisão de medição, o erro não é superior a 0,5 ° C, em uma ampla faixa de temperatura de -55 ... + 125 ° C. Além disso, o sensor digital realiza todos os cálculos em si e o Arduino simplesmente recebe leituras prontas. Ao conectar este sensor, não se esqueça do resistor de pull-up de 4,7 kΩ entre os contatos DQ e VDD. Várias opções de conexão também são possíveis. Com energia externa, na minha opinião, a melhor opção, vamos usá-la:
Se desejar, você pode usar o modo de energia parasita:
Ou uma opção melhorada de alimento parasita:
Com qualquer fonte de alimentação, os sensores são conectados em paralelo:
Colocaremos o sensor de medição de temperatura na prancheta junto com dois botões, que usaremos para definir a hora e a data do relógio:
O fio comum dos dois botões está conectado ao GND, o fio do primeiro botão está conectado ao A0, do segundo ao A1.
Prenda uma fita dupla face ao lado do Arduino:
O sensor, que deve ser colocado fora da sala, é melhor escolher em uma caixa à prova de metal, poeira e umidade:
Calcule o fio do comprimento necessário para que o sensor possa ser pendurado do lado de fora da janela; o principal é que ele não deve exceder 5 metros; se você precisar de mais comprimento, precisará reduzir o valor do resistor de pull-up.
O fio do barramento de dados DQ dos dois sensores está conectado ao pino 5 do Arduino.
Vdd - +5 Arduino.
GND - GND Arduino.
Etapa 4 Potência.
Para energia, você pode usar uma fonte de alimentação com uma voltagem de 6 a 12 volts. No final do fio de energia, solde o plugue adequado à tomada do Arduino:
Ou você pode colocar um compartimento para quatro pilhas “AAA” e “pinky” no estojo. E conecte o fio positivo do compartimento ao Vin Arduino e o menos ao GND.
Etapa 5 Preparando o ambiente de programação.
Primeiro, você precisa baixar e instalar o Arduino IDE com site oficial
E também adicione às duas bibliotecas necessárias para o esboço. OneWire - necessário para comunicação com sensores ds18b20:
U8glib - usado para exibir informações na tela:
Faça o download da biblioteca. Em seguida, descompactamos os arquivos e movemos o conteúdo dos arquivos para a pasta “bibliotecas” localizada na pasta com o IDE do Arduino instalado. Você também pode adicionar bibliotecas através do IDE do Arduino. Para fazer isso, sem descompactar os arquivos, execute o Arduino IDE, selecione Sketch - Connect Library no menu Sketch. No topo da lista suspensa, selecione o item "Adicionar biblioteca .Zip". Indicamos a localização dos arquivos baixados. Após todas as etapas, você precisa reiniciar o IDE do Arduino.
Etapa 6 Editando o esboço.
Os sensores de temperatura operam usando o protocolo One Wire e têm um endereço exclusivo para cada dispositivo - um código de 64 bits. Não é recomendável adicionar comandos de pesquisa de sensor ao esboço. Não é necessário carregar sempre os sensores do soluço do Arduino.Portanto, primeiro, juntando tudo, preencha o esboço no Arduino, localizado no menu Arquivo - Exemplos - Temperatura Dallas - OneWireSearch. Em seguida, execute Ferramentas - Port Monitor. O Arduino deve encontrar nossos sensores, escrever os endereços e as leituras de temperatura. Esses endereços precisam ser anotados ou apenas copiados em algum lugar. Agora abra o esboço Ard_Tic_Tak_WG12864B_2_x_Term_Serial e procure as linhas:
byte addr1 [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; // endereço interno
byte addr2 [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // endereço do sensor externo
Substituímos os endereços correspondentes à localização dos sensores pelos nossos endereços.
Nossos relógios não usam o módulo RTC (relógio em tempo real), portanto você precisa ajustar o relógio. Por conveniência, remova o comentário da linha (os segundos aparecerão na tela):
//u8g.setPrintPos (44, 50); u8g.print (sek); // Imprima segundos para verificar a correção do curso
Defina a hora correta através do monitor da porta. Para fazer isso, abra o monitor da porta, aguarde o término das medições iniciais de temperatura e insira a data e hora atuais no formato "dia, mês, ano, horas, minutos, segundos". Sem espaços, divida os números por vírgulas ou pontos.
Se o relógio estiver com pressa, altere o valor para um valor maior, recomendo experimentar incrementos de 100 unidades. Se estiver atrasado, diminua o valor na linha:
if (micros () - prevmicros & gt; 494000) {// alterar para outro para ajuste foi 500.000
Determine empiricamente o número no qual o relógio vai com bastante precisã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.