Olá amigos!Meu nome é Nikolai, sou leitor da Habr há muito tempo, mas de alguma forma não funcionou com a redação de artigos. Está na hora de corrigir esta situação, especialmente porque há apenas uma razão: eu acabei de lançar uma empresa no Kickstarter para implementar um dispositivo de código aberto.

Quem se importa - peço um gato.
Aconteceu que desde a infância eu tive acesso às tecnologias avançadas da minha época (
Atari 65XE, ZX-Spectrum, EC1841 etc. ), que predeterminavam não apenas a escolha de uma profissão, mas também instalavam um excelente (
na minha opinião ) excelente programação de hobby e desenvolvendo algo.
No futuro, o destino me apresentou outra surpresa - a possibilidade de emigração para os Estados Unidos três anos atrás. Ao mesmo tempo, tive sorte duas vezes - quase imediatamente encontrei um emprego exatamente na área que queria: C ++ e microcontroladores.
A partir deste momento, meu hobby recebeu um novo “
empurrão ”. Em primeiro lugar, conheci os excelentes microcontroladores
STM32 da
ST Microelectronics (
antes disso, brinquei com o Atmel AVR ). Em segundo lugar, desde o primeiro salário, comprei uma impressora 3D. Em essência, sou perfeccionista - por um lado, é bom - você faz as coisas com honestidade e, por outro ... às vezes não é possível levar o projeto ao fim apenas porque não sai "
perfeito ". A impressão de caixas e a possibilidade de solicitar placas de circuito impresso trouxeram de fato as possibilidades de criação de projetos para um novo nível.
E uma vez, examinando os vários módulos solicitados para construir um osciloscópio simples e tentar colocá-los em uma tábua de pão, lembrei-me de um brinquedo que havia comprado há muito tempo quando fui para a faculdade:
GameBoy . Tendo estimado rapidamente o layout possível, decidi:
farei isso! E imediatamente surgiu uma idéia na minha cabeça: "
Mas não são apenas botões! Às vezes, são usados joysticks, às vezes são usadas torções ... por que não fazer módulos removíveis? ". E o trabalho começou a ferver: soldar o protótipo, programar, desenvolver e imprimir o estojo, programar novamente ... como resultado, mantendo um protótipo em funcionamento, chegou-se à conclusão de que a idéia não era ruim. Mais uma vez, tudo girou de uma nova maneira, apenas o estágio de pedido das placas de circuito impresso foi adicionado, e não apenas para a placa principal, mas também para todos os módulos, porque Não foi possível encontrar o adequado. Além disso, como os chineses fabricam placas de 10 peças, foi imediatamente decidido fazer uma pequena série. A propósito, depois de fazer esta série, percebi que a soldagem manualmente (
significando pequenas séries de mais de 10 peças ) não é uma opção.
Como resultado, descobriu-se:

Resumo dos Recursos:
- Baseado no microcontrolador STM32F415RG, o núcleo Cortex-M4 operando a uma frequência de 168 MHz
- ROM de 1024 KB e RAM de 192 KB
- Tela de 2,8 "com resolução de 320x240 pixels e cores de 16 bits
- Tela sensível ao toque resistiva
- Dois slots para módulos de entrada, 4 linhas de E / S ( 2 deles podem digitalizar o sinal usando o ADC ) em cada
- Slot de expansão com linhas de E / S de quase todos os pinos do microcontrolador
- Slot para cartão SD
- E, claro, de código aberto
O dispositivo em si por todos os lados:

E aqui está a pinagem do conector de expansão:

Por dentro, tudo se parece com isso:

Aqui está um módulo com um microcontrolador:

E então sua pinagem:

Módulo de tela:

E um carregador de bateria de lítio:

E, finalmente, a última parte - o corpo:


Coisas laranja são empurradores. A remoção do módulo ainda é uma tarefa. Como resultado, esses empurradores foram inventados. Quando o módulo é inserido, ele os pressiona e os botões na parte traseira ficam alinhados com o estojo. Se o módulo precisar ser removido - pressionamos o empurrador e o aperta. Então você pode facilmente e simplesmente retirá-lo.
O código fonte merece um artigo separado. Talvez eu escreva mais tarde. De software de terceiros, o
System Workbench para STM32 ,
STM32CubeMX e FreeRTOS são usados. Todos esses são projetos gratuitos. Wrapper C ++ FreeRTOS, tarefas de manutenção de tela, tela sensível ao toque, som e entrada são escritos para isso.

A saída gráfica é especialmente interessante - o protótipo com o microcontrolador STM32F103 pode exibir um jogo do tipo Mario com uma frequência de 15 quadros por segundo com uma resolução de 320x240 e com apenas 20 KB de RAM a bordo (
framebuffer é excluído ), enquanto a limitação era mais provável devido à frequência do SPI . No STM32F415 com uma frequência SPI duas vezes maior, sai 30 quadros por segundo.
Bem, em conclusão, vou deixar os links:Ficaria grato se você compartilhar o link do projeto com seus amigos - agora o principal é ganhar uma massa crítica de pessoas para iniciar uma reação em cadeia - é necessário que o maior número possível de pessoas interessadas aprenda sobre o projeto.
Se você me perguntar sobre planos de longo prazo, o que eu quero? No final, a resposta será simples: crie uma empresa com a ideologia do software aberto e do hardware aberto, faça o que você mais
gosta e ajude outras pessoas como
Adafruit e
Sparkfun fazem isso.
Se de repente o texto parecer caótico - não julgue rigorosamente, já são quase uma da manhã ... faça perguntas nos comentários - tentarei responder.