Índice:

Despertador Oled: 8 etapas (com fotos)
Despertador Oled: 8 etapas (com fotos)

Vídeo: Despertador Oled: 8 etapas (com fotos)

Vídeo: Despertador Oled: 8 etapas (com fotos)
Vídeo: Памяти Андрея Зяблых. Холангиокарцинома 4 стадии 2024, Julho
Anonim
Despertador Oled
Despertador Oled

Existem muitos relógios arduino / ESP32 por aí, mas eles usam aqueles OLEDs bonitos e nítidos?

Eu tenho experimentado com arduinos e ESP32 por um tempo, mas nunca cheguei a um produto acabado. Fiz um despertador com 4 OLEDs monocromáticos de 1,3 polegadas. O relógio também possui uma lâmpada de cabeceira regulável e uma porta de carregamento USB (ninguém tem tomadas extras ao lado de sua cama). Os OLEDs também podem ser regulados, o que foi adicionado no último minuto depois que meu projeto foi ameaçado pela minha namorada. Deveria escurecer não ser - na voz de namoradas - suficientemente escuro, eu também posso fornecer uma versão do código em que 3 monitores são ligados entre certas horas. O objetivo era fazer um relógio de fácil manutenção, com um olhar além do "protótipo". Ao fazer meu relógio, encontrei algumas dificuldades que tive que resolver, por isso acho que vale a pena compartilhar este instrutível. O relógio pode ser feito com pequenas ferramentas, não gosto dos tutoriais "e para o passo seguinte usei os meus 10.000 € / $ usina CNC".

Algumas coisas que serão explicadas neste instrutível (in-structable-ception):

- Como usar / conectar um display I2C OLED com arduino / ESP32

- Como usar vários objetos I2C com um arduino / ESP32

- Como fazer um menu "rolável" usando um codificador rotativo (+ como usar um codificador com um ESP32 / arduino)

- Como projetar e solicitar um PCB personalizado usando fritzing.

- O relógio também usa um RTC (relógio de tempo real), driver de led, módulo de redução de tensão … Não vou entrar nisso porque há muitas informações disponíveis para esses módulos.

Gostaria de observar que não sou um programador profissional. O objetivo do meu instrutível é explicar os pontos que mencionei acima. A maneira como juntei tudo para o meu produto final pode não ser a maneira mais limpa. É a maneira que me permitiu controlar tudo.

Suprimentos

Ao comprar suprimentos, sempre tento pesar a importância da qualidade / documentação em relação ao preço. Meus suprimentos são uma mistura de marcas A e peças chinesas mais baratas. A Mouser é um ótimo fornecedor se a qualidade for importante, eu encomendo da Banggood / Aliexpress as peças mais baratas.

- Uma placa ESP32, usei a Huzzah32 da adafruit, mas há muitas outras opções (mais baratas). Escolhi o Huzzah32 porque é muito bem documentado.

- 4 telas I2C OLED de 1,3 polegadas (128x64, com o driver SH1106), as de 0,96 "são mais comuns, mas para este projeto eu prefiro as de 1,3"

- Driver femtobuck Sparkfun para acionar o LED

- Relógio RTC, usei um com célula de lítio

- Arduino nano

- Porta USB 2.0 fêmea (eu usei: SS-52200-002 do conector Stewart)

- Conector DC fêmea (eu usei: L722A da Switchcraft)

- Adaptador 12V 3A DC (GST36E12-P1J do Poço Médio)

- PCB personalizado, opcional, mas isso torna o projeto muito mais compacto e de fácil manutenção se uma peça morrer + mais confiabilidade devido a menos fios (jlcpcb.com)

- Parafusos e parafusos M3

- Insertos de latão M3

- Módulo abaixador de 12V a 5V da Pololu (DF24V22F5)

- 3 watts alimentados com dissipador de calor

- Fios de ligação

- Buzzer

- Multiplexador I2C (TCA9548A de adafruit)

- 2 codificadores rotativos (tentei alguns, nem todos funcionam com o meu código. O do "DFrobot" funciona, assim como o do PCB redondo da "DIYmore". Meu código não parece funcionar para o botão de pressão do tipo KY-040. O meu despertador usa o da DIYmore porque são muito fáceis de montar no painel (sem necessidade de parafusos / orifícios extras).

- Variedade de cabeçalhos femininos (opcional)

- Madeira para a moldura: 18 mm x 18 mm x 2400 mm

- Papel vegetal

Usei algumas ferramentas (ferro de soldar, 3ª mão, serra …) também, mas nada realmente exótico.

Etapa 1: usando um Oled

Usando um Oled
Usando um Oled
Usando um Oled
Usando um Oled
Usando um Oled
Usando um Oled

Para usar os OLEDs, você deve instalar uma biblioteca. Eu uso o U8G2lib da Oli Kraus, é muito compreensível e tem um guia de referência com exemplos claros.

Para conectar sua placa (ESP ou arduino), você deve encontrar os pinos SDA e SCL. Esses pinos são os pinos de comunicação I2C. Procure no Google a "pinagem" de sua placa específica, caso não consiga encontrá-los.

Eu adicionei alguns códigos de exemplo. O código funciona para arduino e ESP32, mas é menos provável que o ESP32 fique sem memória. Todos os oleds que experimentei até agora funcionam com 3,3 V (ESP32) e 5 V.

Etapa 2: vários OLEDs

Vários OLEDs
Vários OLEDs

É aqui que meu projeto começa a diferir de muitos outros despertadores. A maioria dos arduinos / ESPs tem apenas um ou dois pinos I2C. Isso limita o uso de peças I2C. E se eu tiver 4 sensores I2C e quiser exibir suas leituras em um monitor I2C? Entre no multiplexador. O multiplexer permite endereçar 7 peças I2C diferentes. Isso permite que meu ESP32 use um relógio de tempo real I2C e exiba a hora usando I2C novamente em 4 telas (ou mais, não me deixe impedi-lo).

Eu adicionei alguns códigos de exemplo para o ESP32, a partir de agora não tenho certeza se o arduino pode acompanhar. O exemplo usa apenas monitores, podem ser outras coisas como sensores I2C, etc. também. O princípio é sempre o mesmo, você chama o canal certo com o "tcaselect (#);" função, então você executa qualquer código necessário para o seu objeto I2C.

Etapa 3: Criação de um menu rolável com um codificador rotativo

Criação de um menu rolável com um codificador rotativo
Criação de um menu rolável com um codificador rotativo
Criação de um menu rolável com um codificador rotativo
Criação de um menu rolável com um codificador rotativo
Criação de um menu rolável com um codificador rotativo
Criação de um menu rolável com um codificador rotativo

Primeiramente, teste seus codificadores. Eu adicionei algum código para testar seus módulos codificadores. Conforme declarado nas fontes: Eu apenas testei com sucesso meu código com os módulos codificadores rotativos do robô DF e o módulo com o PCB redondo da DIYmore. Veja as fotos acima para os codificadores corretos.

A biblioteca que usei é esta:

Espero que o PDF que eu adicionei ajude com a estrutura de menu que usei para o meu relógio.

Fazer o codificador funcionar foi a parte mais difícil para mim neste projeto. Existem muitos codificadores diferentes e muitas bibliotecas diferentes que nem sempre são compatíveis com o ESP32. Mas acho que um codificador rotativo (funcional) é uma solução elegante se você quiser inserir algo. Se eu tivesse usado apenas botões, precisaria de mais de 1 e acertar o tempo levaria muitas vezes.

Etapa 4: Colocando o Código Anterior Alternado

Colocando o Código Anterior Togetther
Colocando o Código Anterior Togetther

O título meio que resume o que eu fiz. Tentei parte por parte e depois juntei tudo. Mas porque nada nunca é fácil, tive que mudar algumas coisas. A comunicação serial é um processo lento. Isso atrapalha a leitura adequada do codificador. Para superar isso, adicionei interrupções aos pinos do codificador. O código para ler o codificador é imediatamente chamado se você pressionar ou girar o codificador.

Depois de entender como os menus são construídos, você descobrirá que é muito fácil adicionar ou remover recursos de acordo com sua preferência. Talvez você queira buscar a previsão do tempo ou hora atual na Internet e exibi-la?

Eu deixei de fora muitas dessas idéias porque eu queria acima de tudo um tempo de paz confiável. Aquele que não faz nada automaticamente. Eu trabalho em horas muito estranhas em uma zona de horário de verão. Cada vez que a hora muda, fico nervoso por dormir demais. Meu telefone mudará a hora automaticamente? Será meu relógio? Bem, meu relógio não vai, a menos que eu mesmo mude. Mas talvez você queira colocar seu relógio na cozinha? Cenário diferente, adicione recursos até que a memória se esgote!

Etapa 5: PCB personalizado com Fritzing + Schematic

PCB personalizado com Fritzing + Schematic
PCB personalizado com Fritzing + Schematic
PCB personalizado com Fritzing + Schematic
PCB personalizado com Fritzing + Schematic
PCB personalizado com Fritzing + Schematic
PCB personalizado com Fritzing + Schematic

Ponto de atenção: Adafruit destaca que, embora você possa alimentar o huzzah32 por meio do pino USB, deve ter cuidado para não usar simultaneamente a entrada de alimentação micro USB. Meu PCB é alimentado pelo step down buck, que então alimenta o huzzah por meio do pino USB. Portanto, sempre desligue a alimentação externa / remova o huzzah da placa ao fazer o upload.

Decidi soldar conectores fêmeas no PCB porque torna mais fácil trocar uma peça ou adicionar, por exemplo, um sensor I2C extra. Isso também me permite remover facilmente o nano ou o ESP32 para carregar os programas.

Eu adicionei o arquivo Frizting, posso digitar um romance aqui, mas acho que o exemplo fala melhor. Comecei com o esquema de toda a configuração. Embora o Fritzing tenha muitas peças em suas caixas, nem tudo está lá. Às vezes você pode encontrar a parte do Fritzing na internet, às vezes não. As partes que não consegui encontrar, simplesmente substituí por uma parte feminina do cabeçalho. Se você clicar com o botão direito, poderá editar o cabeçalho para a quantidade de pinos que deseja e atribuir uma pinagem a ele. Fiz isso com todas as partes que não consegui encontrar. Como quase todos os módulos usam o mesmo passo de 0,1 pol. (2,54 mm), isso fornecerá o espaçamento correto para a peça.

Em seguida, você alterna para a visualização PCB do aplicativo estragado. Um PCB será colocado no lugar, se você clicar nele, você pode definir seu tamanho e escolher um PCB de camada única ou dupla. O meu usa 2 camadas. Fritzing irá sugerir as conexões que você fez na vista esquemática. O programa tem uma opção de autoroute, mas eu nunca uso. Gosto de organizar manualmente minhas conexões. Na visualização do PCB, as conexões amarelas estão na camada superior e as laranja na camada inferior. Novamente, se você clicar na conexão, poderá escolher suas propriedades.

Para fazer o PCB real, você deve exportá-lo como um arquivo gerber. Antes de fazer isso, na guia "roteamento" você pode verificar as regras de design. Se tudo estiver correto, você pode clicar em "exportar para PCB". A maioria dos fabricantes solicitará o arquivo gerber, portanto, selecione exportar para gerber.

Eu encomendei meu PCB da JLCPCB, gosto que eles imediatamente façam um orçamento para você. Claro que existem muitas outras opções.

Sobre o esquema: são utilizadas 2 tensões. O LED e o femtobuck são alimentados diretamente pela fonte de 12V. O resto é alimentado por meio do buck redutor de 5 volts.

Etapa 6: Design + Lasercutter

Design + Lasercutter
Design + Lasercutter
Design + Lasercutter
Design + Lasercutter

Para o meu primeiro projeto, tentei usar carvalho maciço (estou acompanhando aulas de marcenaria), mas rapidamente ficou claro que isso não era o ideal. A madeira é muito grossa, dificultando o encaixe das peças. O multiplex de bétula de 3 mm permite maneiras mais fáceis de prender os codificadores e visores.

Encontrei um serviço lasercut online, snijlab.nl, disponível para amadores localizados em Rotterdam (eles enviam para a Bélgica, Holanda e Alemanha). No site deles você pode fazer upload de seus desenhos e eles imediatamente cotam seu preço. Usei o Autocad, que tenho no trabalho, mas o software não importa muito. Só tem que ser um desenho vetorial (Vectr, Illustrator, Inkscape …). A maioria das lojas usa cores para determinar se você deseja cortar ou gravar.

Algumas coisas para ter em mente:

- Máx. dimensões do lasercutter (desenhei uma moldura em torno das minhas peças)

- Min. distância entre cortes

- Certifique-se de não traçar nenhuma linha dupla, o laser fará uma passagem extra, custando mais caro.

- Ao plotar para PDF, certifique-se de plotar 1: 1. Você não quer diminuir ou ajustar ao papel.

Etapa 7: Montagem

conjunto
conjunto
conjunto
conjunto
conjunto
conjunto

Construí o relógio em torno de uma moldura de madeira, os painéis são mantidos no lugar com parafusos M3 e inserções na moldura. Se algum dia eu construir uma versão 2, usaria perfis de alumínio em "L" para prender os painéis. Era muito difícil fazer os furos com precisão para as inserções de latão. Levei muito tempo, apenas para um resultado aceitável. Isso significaria, é claro, que o desenho do corte a laser teria que ser revisado. Acho que com perfis de alumínio e apenas porcas e parafusos você obteria um resultado melhor.

Para difundir melhor a luz, colei papel vegetal no interior das perfurações. Isso dá à luz um belo brilho.

Etapa 8: não pare aqui

Não pare aqui
Não pare aqui
Não pare aqui
Não pare aqui
Não pare aqui
Não pare aqui

O projeto gira em torno de um ESP32, eu quase não usei. No momento, as luzes do meu quarto podem ser controladas remotamente usando o blynk. Controlá-los com o relógio é apenas um pequeno passo adiante. Talvez você queira alguns visores extras que mostram a temperatura em torno de sua casa? Ou alguns sensores locais (ainda há conexões I2C sobressalentes nesse multiplexador!). Talvez definir a hora / alarme por meio de um aplicativo e bluetooth?

Deixe-me saber o que você mudou, o que você mudaria, o que eu deveria mudar …

Recomendado: