Além do meu trabalho principal, faço alguns projetos de estimação, mas nunca escrevi sobre eles. Agora decidi corrigir a situação e escrever sobre o projeto que acabei de concluir. Esta criação foi inspirada neste trabalho de George Hilliard.
Objetivo do projeto
Faça a versão mais barata de um cartão de visita USB Flash, que conterá meu currículo, código-fonte e mais alguns arquivos. Ao fazer isso, use os componentes disponíveis que podem ser solicitados no LCSC e JLCPCB.
O que eu preciso fazer para isso?
Pegue componentes baratos, mas não amigáveis ao consumidor, separe a placa de circuito impresso, solde-os e escreva o firmware.
O que meu cartão de visita acaba fazendo?
Como você pode imaginar, meu cartão de visita simula uma pequena unidade Flash USB, que contém um resumo bilíngue, código fonte, firmware, arquivos gerber, circuitos e placas de circuito, além da minha foto.
Nós principais do projeto
Microcontrolador STM32F070F6 - era a versão mais barata do controlador com um dispositivo USB a bordo daqueles que encontrei;
Winbond W25Q32 - memória flash serial de 4 MB;
0805 LEDs - branco e azul para a beleza;
LP3992 - conversor de tensão de 3,3V , potência de microcircuito;
USBLC6-2 - proteção estática do "conector" USB.
Minha abordagem ao desenvolvimento de projetos para animais de estimação
Há uma certa maneira que sigo ao programar microcontroladores:
- Não use SPL, HAL e outras bibliotecas para programar periféricos. Eu aderir a esta regra no trabalho principal;
- Não use o sistema operacional. Acho que meus projetos domésticos não são complexos o suficiente para usar essa ferramenta útil;
- . ( );
- . ( ).
Componentes
Primeiro, eu precisava selecionar os componentes para a minha ideia. além da folga, eu não tinha nada. Para isso, decidi usar o serviço LCSC, como uma opção barata e acessível para o desenvolvimento residencial. Como se viu, em muitos aspectos, entrei na túnica. Por exemplo, usei todas as pernas do microcontrolador, armazenadas em 6kB de RAM, das quais 4kB utilizaram um buffer para transferir dados do USB para o SPI Flash, usei pernas para USB que não estão fisicamente neste controlador, etc.
Como resultado do preço, saiu o seguinte:
Microcontrolador STM32F070F6 -0,64 $
Memória flash serial Winbond W25Q32 - 0,35 $
Conversor descendente LP3992-33B5F - 0,04 $
Proteção estática USBLC6-2SC6 -0,08 $
Quartzo - 0,15 $
Usei resistores e capacitores no fator de forma 0603, LEDs 0805. Eu já tinha tudo isso, portanto não é possível calcular o custo. No entanto, é seguro dizer que, pelo preço, tudo se encaixa em US $ 1,5 com uma margem. Não parece barato comparado ao projeto Billiard, mas meus preços não são por atacado.
Placa de circuito impresso e circuitos I projetou o circuito
e de circuito impresso placa em Altium Designer, eu anexar as imagens.
Todos os componentes são amarrados de acordo com as folhas de dados. O microcircuito de memória flash é iniciado a partir do controlador através do transistor MIS.
O conector USB foi o problema aqui. De acordo com a especificação USB, tem 2 mm de espessura. Uma placa dessa espessura é cara de encomendar e não é muito prática para um cartão de visita. Eu vi uma saída da situação de uma pessoaquem fez um cartão de visita musical. Ele usou uma placa de 1 mm e fez um conector adicional nela, que sai e é selado em cima da placa principal. Eu fiz o mesmo.
Solda A
solda de componentes geralmente não causava problemas. Selei tudo com secador de cabelo e pasta de solda. O único problema para mim foi a solda do microcontrolador. Foram produzidas muitas manchas a partir da pasta de solda, é difícil soldar essas pernas com um ferro de solda. Como resultado, perdi todas as almofadas com solda e depois soldei o microcontrolador com um secador de cabelo.
Programação
Não tenho nada de especial a dizer aqui, programei tudo em um nível baixo, na linguagem C ++. Anexo o código fonte . Acessei os registros de acordo com os artigoslamerok. O USB é implementado usando meios de microcontrolador. O chip de memória flash opera em SPI via DMA na velocidade mais alta. Os diodos piscam alternadamente com a interrupção do temporizador a 250ms.
Conclusão
Sobre isso eu acho tudo, descrevi os pontos principais. Se você precisar divulgar algo com mais detalhes (programação USB, Flash ou circuito), escreva, com certeza o farei.
Muito bem sucedida!