- Introdução ao ESP8285
- Diagrama de circuito da placa de desenvolvimento ESP
- Fabricação de nossa placa de desenvolvimento ESP8285
- Solicitando PCB da PCBWay
- Montagem e programação da placa ESP8285
- Teste com um esboço simples de piscar de LED
- Testando Webserver Sketch no ESP8285
Os controladores ESP da Espressif estão se tornando uma escolha amplamente popular para projetos baseados em IoT. Existem muitos tipos de módulos ESP e placas de desenvolvimento já disponíveis no mercado, entre os quais NodeMCU é o mais popular. Além disso, ESP-12E, ESP01 também são escolhas populares. Mas se você quiser tornar seu projeto mais flexível e compacto, é provável que tenhamos que projetar nosso próprio módulo ESP a partir do nível do chip, em vez de usar diretamente um módulo disponível. Neste artigo, aprenderemos como projetar um circuito e PCB para usar os controladores ESP (ESP8285) diretamente sem usar um módulo.
Neste projeto usamos ESP8285 porque é um pequeno chip muito interessante. É um pequeno SoC (System on Chip), com IoT (Internet of Things) e recursos de sono profundo. Ele tem o mesmo poder que seu irmão mais velho ESP8266 e como bônus, ele vem com uma memória flash de 1 MB integrada com muitos GPIOs. Você também pode usar o ESP8266 como alternativa e a maioria das coisas discutidas neste artigo ainda serão as mesmas.
Em um artigo anterior, mostrei como você pode projetar sua própria antena PCB para 2,4 GHz, usando o mesmo chip ESP8285 como exemplo. Você pode ler esse artigo para saber mais sobre o design da antena para ESP8266 / ESP8285.
Portanto, neste artigo, irei cobrir como todos os circuitos funcionam e, finalmente, haverá um vídeo explicando tudo. Também cobri em detalhes o procedimento completo para projetar e solicitar as placas PCB da PCBWay para o projeto do nosso módulo ESP.
Introdução ao ESP8285
Se você não conhece este versátil chip ESP8285, aqui está uma explicação rápida com uma lista de recursos. ESP8285 é um pequeno chip com flash de 1M e ram embutidos, é bastante semelhante ao ESP8286, módulo ESP-01, mas a memória flash interna o torna muito mais compacto e barato.
Este chip hospeda o processador de núcleo L106 Diamond de 32 bits da Tensilica e o mesmo vale para o ESP8266, é por isso que todo o código do ESP8266 pode ser enviado diretamente para este chip sem nenhuma modificação, e tem a mesma pilha de rede que a dose ESp8266.
O ESP8285 integra interruptores de antena, balun RF, amplificador de potência, amplificador de recepção de baixo ruído, filtros e módulos de gerenciamento de energia. O design compacto minimiza o tamanho do PCB e requer circuitos externos mínimos. Se você quiser saber mais sobre este IC, você sempre pode verificar o datasheet do ESP8285 do dispositivo na Espressif Systems.
Diagrama de circuito da placa de desenvolvimento ESP
O circuito é muito simples e divido para melhor compreensão. O esquema ESP abaixo mostra todo o circuito, como você pode ver, são oito blocos funcionais, vou passar por cada um e explicar cada bloco.
ESP8285 SOC:
No coração do projeto está o SoC ESP8285, todos os GPIOs e outras conexões necessárias são definidas aqui.
Filtro de energia: Existem 7 pinos de energia neste IC, primeiro é o pino de energia para o ADC e IOs. Eu os coloquei em curto e usei um capacitor de filtro de potência 47uF e um capacitor de desacoplamento de 0,1uF para filtrar a entrada de 3,3 Vcc.
Filtro PI: O filtro PI é um dos blocos mais importantes deste projeto, pois é o responsável por alimentar o amplificador RF e o LNA, qualquer ruído interno ou externo pode ser descritivo para esta seção, portanto, para isso, a seção RF não funcionará. É por isso que o filtro passa-baixo para a seção LNA é muito importante. Você pode aprender mais sobre os filtros PI seguindo o link.
Oscilador de cristal: O oscilador de cristal de 40 MHz serve como fonte de clock para o ESP8285 SoC, e os capacitores de desacoplamento de 10pF foram adicionados conforme recomendado pela ficha técnica.
Seção LNA: Outra seção mais importante deste circuito é a seção LNA; é aqui que a antena PCB é conectada ao pino físico do ESP. Conforme recomendado pela ficha técnica, um capacitor de 5,6pF é usado e deve funcionar tão bem como o circuito correspondente. Mas eu adicionei dois marcadores de posição para dois indutores, como se no caso de a discordância do circuito coincidente funcionar, eu sempre posso colocar alguns indutores, para ajustar os valores para coincidir com a impedância da antena.
A seção LNA também possui dois jumpers de PCB com um conector UFL. A antena PCB é configurada por padrão, mas se seu aplicativo requer um pouco mais de alcance, você pode dessoldar o jumper do PCB e fazer um curto no jumper do conector UFL, e você pode conectar uma antena externa assim.
Conector de entrada da bateria:
Você pode ver acima, coloquei três tipos de conectores de bateria em paralelo porque se você não conseguiu encontrar um, você sempre pode colocar outro.
Cabeçalhos GPIO e os cabeçalhos de programação:
Os cabeçalhos GPIO estão lá para acessar os pinos GPIO e o cabeçalho de programação está lá para piscar o Soc principal.
Circuito de reinicialização automática:
Neste bloco, dois transistores NPN, MMBT2222A formam o circuito de reinicialização automática quando você pressiona o botão de upload no IDE do Arduino, a ferramenta python recebe uma chamada, esta ferramenta python é a ferramenta flash para os dispositivos ESP, esta ferramenta pi fornece o sinalize ao conversor UART para reinicializar a placa enquanto mantém o pino GPIO no solo. Depois disso, o processo de upload e verificação começa.
LED de energia, LED integrado e divisor de tensão:
LED de energia: O LED de energia tem um jumper de PCB. Se você estiver usando esta placa como uma aplicação alimentada por bateria, você pode soldar DE este jumper para economizar um pouco de energia.
LED integrado : Muitas placas de desenvolvimento no mercado têm um LED integrado e esta placa não é exceção; o GPIO16 do IC está conectado a um led integrado. Além disso, há um espaço reservado para um resistor de 0 OHMs preenchendo o resistor de 0 Ohms, você conecta o GPIO16 ao reset e, como você deve saber, esta é uma etapa muito importante para colocar um ESP no modo de hibernação.
Divisor de tensão: como você deve saber, a tensão máxima de entrada do ADC é 1V. Portanto, para alterar a faixa de entrada para 3,3 V, o divisor de tensão é usado. A configuração é feita de forma que você sempre pode adicionar um resistor em série com o pino para alterar a faixa para 5V.
HT7333 LDO:
Um LDO ou Regulador de baixa tensão de queda é usado para regular a tensão para ESP8285 de uma bateria com perda mínima de energia.
A tensão máxima de entrada do HT7333 LDO é de 12V e é usado para converter a tensão da bateria para 3,3V, eu escolhi este HT7333 LDO porque é um dispositivo com uma corrente quiescente muito baixa. Os capacitores de desacoplamento de 4.7uF são usados para estabilizar o LDO.
Botão para o modo de programação:
O botão de pressão é conectado ao GPIO0, se seu conversor UART não tiver um pino RTS ou DTR, você pode usar este botão para puxar manualmente o GPIO0 para o solo.
Resistores pullup e pulldown:
Os resistores pullup e pulldown estão lá conforme recomendado pela ficha técnica.
Além disso, muitas normas e diretrizes de projeto foram seguidas durante o projeto do PCB. Se você quiser saber mais sobre isso, pode encontrar no guia de design de hardware do ESP8266.
Fabricação de nossa placa de desenvolvimento ESP8285
O esquema está pronto e podemos prosseguir com o layout do PCB. Usamos o software de design Eagle PCB para fazer o PCB, mas você pode projetar o PCB com seu software preferido. Nosso design de PCB fica assim quando é concluído.
Os arquivos BOM e Gerber estão disponíveis para download nos seguintes links:
- Arquivos Gerber ESP8282 Dev-Board
- ESP8282 Dev-Board BOM
Agora que nosso projeto está pronto, é hora de fabricar os PCBs usando. Para fazer isso, basta seguir as etapas abaixo:
Solicitando PCB da PCBWay
Passo 1: Acesse https://www.pcbway.com/, inscreva-se se esta for a sua primeira vez. Em seguida, na guia Protótipo de PCB, insira as dimensões de seu PCB, o número de camadas e o número de PCB que você precisa.
Passo 2: Continue clicando no botão 'Citar Agora'. Você será levado a uma página onde definir alguns parâmetros adicionais como o tipo de placa, camadas, material para PCB, espessura e mais, a maioria deles são selecionados por padrão, se você está optando por quaisquer parâmetros específicos, você pode selecionar em ouvir.
Como você pode ver, precisávamos de nossos PCBs pretos! portanto, selecionei preto na seção de cores da máscara de solda.
Etapa 3: A última etapa é fazer o upload do arquivo Gerber e prosseguir com o pagamento. Para ter certeza de que o processo está tranquilo, a PCBWAY verifica se o seu arquivo Gerber é válido antes de prosseguir com o pagamento. Dessa forma, você pode ter certeza de que sua placa de circuito impresso é de fabricação amigável e chegará até você quando estiver comprometida.
Montagem e programação da placa ESP8285
Depois de alguns dias, recebemos nosso PCB em uma caixa elegante e a qualidade do PCB estava boa como sempre. A camada superior e a inferior da placa são mostradas abaixo:
Depois de receber a placa, comecei imediatamente a soldá-la. Usei uma estação de solda a ar quente e muito fluxo de solda para soldar a CPU principal, e outros componentes do PCB são soldados com um ferro de solda. O módulo montado é mostrado abaixo.
Uma vez feito isso, eu conectei meu confiável módulo FTDI para testar a placa, carregando um esboço, os pinos conectados e uma imagem da placa mostrada abaixo:
Módulo FTDI ESP8285 Dev Board
3,3 V -> 3,3 V
Tx -> Rx
Rx -> Tx
DTR -> DTR
RST -> RST
GND -> GND
Depois que todas as conexões necessárias forem concluídas, configurei o IDE do Arduino selecionando a placa ESP8285 genérica em Ferramentas > Placa > Módulo ESP8285 genérico .
Teste com um esboço simples de piscar de LED
Em seguida, é hora de testar a placa piscando um LED, para isso, usei o seguinte código:
/ * ESP8285 Pisca Pisca o LED azul no módulo ESP828285 * / #define LED_PIN 16 // Define o pino do LED piscando void setup () {pinMode (LED_PIN, OUTPUT); // Inicializa o pino do LED como uma saída} // a função de loop é executada continuamente void loop () {digitalWrite (LED_PIN, LOW); // Liga o LED (Observe que LOW é o nível de tensão) delay (1000); // Aguarde um segundo digitalWrite (LED_PIN, HIGH); // Desligue o LED tornando a tensão HIGH delay (1000); // Aguarde dois segundos}
O código é muito simples, primeiro eu defini o pino do LED para esta placa, e ele está no GPIO 16. Em seguida, eu defini esse pino como uma saída na seção de configuração. E, finalmente, na seção de loop, liguei e desliguei o pino com um atraso de um segundo no meio.
Testando Webserver Sketch no ESP8285
Uma vez que estava funcionando bem, é hora de testar o esboço HelloServer do exemplo ESP8266WebServer. Estou usando um exemplo ESP8266 porque a maior parte do código é compatível com o chip esp8285. O código de exemplo também pode ser encontrado na parte inferior desta página.
Este código também é muito simples, primeiro, precisamos definir todas as bibliotecas necessárias, #incluir
em seguida, precisamos inserir o nome e a senha do hotspot.
#ifndef STASSID #define STASSID "seu-ssid" #define STAPSK "sua-senha" #endif const char * ssid = STASSID; const char * senha = STAPSK;
Em seguida, precisamos definir o objeto ESP8266WebServer. O exemplo aqui o define como um servidor (80) o (80) é o número da porta.
Em seguida, precisamos definir um pino para um LED, no meu caso era o pino nº 16.
const int led = 16;
Em seguida, a função handleRoot () é definida. Esta função será chamada quando a chamada no endereço IP de nosso navegador.
void handleRoot () {digitalWrite (led, 1); server.send (200, "text / plain", "hello from esp8266!"); digitalWrite (led, 0); }
Em seguida, é a função de configuração, ouvi que temos que definir todos os parâmetros necessários como-
pinMode (led, OUTPUT); // definimos o pino do led como saída Serial.begin (115200); // iniciamos uma conexão serial com 115200 baud WiFi.mode (WIFI_STA); // definimos o modo wi-fi como estação WiFi.begin (ssid, senha); então começamos a conexão wi-fi Serial.println (""); // esta linha fornece um espaço adicional while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } / * no loop while estamos testando o status da conexão em que o ESP é capaz de se conectar ao ponto de acesso que o loop travará * / Serial.println (""); Serial.print ("Conectado a"); Serial.println (ssid); Serial.print ("endereço IP:"); Serial.println (WiFi.localIP ());
Em seguida, estamos imprimindo o nome e o endereço IP do SSID conectado na janela do monitor serial.
server.on ("/", handleRoot); // o método on do objeto do servidor é chamado para manipular a função raiz server.on ("/ inline", () {server.send (200, "text / plain", "isso também funciona");}); // novamente chamamos o método on para o / exemplo inline server.begin (); // em seguida, iniciamos o servidor com o método inicial Serial.println ("servidor HTTP iniciado"); // e finalmente imprimimos uma instrução no monitor serial. } // que marca o fim da função de configuração void loop (void) {server.handleClient (); }
Na função de loop, chamamos os métodos handleClient () para operar o esp adequadamente.
Feito isso, a placa ESP8285 demorou um pouco para se conectar ao servidor web e funcionou com sucesso conforme o esperado, o que marcou o fim deste projeto.
O funcionamento completo da placa também pode ser encontrado no vídeo no link abaixo. Espero que tenham gostado deste artigo e aprendido algo novo com ele. Se você tiver alguma dúvida, pode perguntar nos comentários abaixo ou pode usar nossos fóruns para uma discussão detalhada.