Bonjour mes amis!Je m’appelle Nikolai, je lis depuis longtemps Habr, mais cela n’a pas fonctionné pour écrire des articles. Il est temps de corriger cette situation, d'autant plus qu'il n'y a qu'une raison: je viens de lancer une entreprise sur Kickstarter pour implémenter un appareil open source.

Peu importe - je demande un chat.
Il se trouve que depuis mon enfance, j'ai eu accès aux technologies avancées de mon temps (
Atari 65XE, ZX-Spectrum, EC1841, etc. ), qui prédéterminaient non seulement le choix d'une profession, mais également instillaient un excellent (
à mon avis ) passe-temps - programmation et développer quelque chose.
À l'avenir, le destin m'a présenté une autre surprise - la possibilité d'une émigration vers les États-Unis il y a trois ans. En même temps, j'ai eu deux fois de la chance - j'ai trouvé presque immédiatement un emploi dans le domaine que je voulais: le C ++ et les microcontrôleurs.
A partir de ce moment, mon hobby a reçu un nouveau «
push ». Tout d'abord, j'ai rencontré les excellents microcontrôleurs
STM32 de
ST Microelectronics (
avant cela, j'ai essayé Atmel AVR ). Deuxièmement, dès le premier chèque de paie, j'ai acheté une imprimante 3D. Essentiellement, je suis perfectionniste - d’une part, c’est bien - vous faites les choses honnêtement, et d’autre part ... parfois, il n’est pas possible de mener le projet à son terme juste parce qu’il n’est pas «
parfait ». L'impression de boîtiers et la possibilité de commander des cartes de circuits imprimés ont en fait amené les possibilités de création de projets à un nouveau niveau.
Et une fois, en triant les différents modules commandés pour construire un oscilloscope simple et en essayant de les placer sur une planche à pain, je me suis souvenu d'un jouet que j'avais acheté il y a longtemps quand j'étais à l'université:
GameBoy . Ayant rapidement estimé la disposition possible, j'ai décidé:
je vais le faire! Et aussitôt une idée m'a traversé la tête: "
Mais pas seulement des boutons sont utilisés! Parfois des joysticks sont utilisés, parfois des torsions sont utilisées ... pourquoi ne pas faire des modules amovibles? ". Et le travail a commencé à bouillir: souder le prototype, programmer, développer et imprimer le boîtier, programmer à nouveau ... en conséquence, tenant un prototype fonctionnel, il est venu à la réalisation que l'idée n'était pas mauvaise. Encore une fois, tout a tourné d'une manière nouvelle, seule l'étape de la commande des cartes de circuits imprimés a été ajoutée, non seulement pour la carte mère mais aussi pour tous les modules, car Aucun résultat n'a pu être trouvé. De plus, comme les Chinois fabriquent des planches de 10 pièces, il a été immédiatement décidé de réaliser une petite série. Soit dit en passant, après avoir réalisé cette série, j'ai réalisé que souder plus loin manuellement (
ce qui signifie une petite série de plus de 10 pièces ) n'est pas une option.
En conséquence, il s'est avéré:

Caractéristiques récapitulatives:
- Basé sur le microcontrôleur STM32F415RG, le noyau Cortex-M4 fonctionnant à une fréquence de 168 MHz
- 1024 Ko de ROM et 192 Ko de RAM
- Écran 2,8 "avec une résolution de 320x240 pixels et une couleur 16 bits
- Écran tactile résistif
- Deux emplacements pour modules d'entrée, 4 E / S ( 2 d'entre eux peuvent numériser le signal en utilisant l'ADC ) lignes dans chaque
- Emplacement d'extension avec des lignes d'E / S provenant de presque toutes les broches du microcontrĂ´leur
- Emplacement pour carte SD
- Et bien sûr Open-source
L'appareil lui-même de tous les côtés:

Et voici le brochage du connecteur d'extension:

A l'intérieur, tout ressemble à ceci:

Voici un module avec un microcontrĂ´leur:

Et donc son brochage:

Module d'écran:

Et un chargeur de batterie au lithium:

Et enfin, la dernière partie - le corps:


Les choses orange sont des pousseurs. La suppression du module est toujours une tâche. En conséquence, ces pousseurs ont été inventés. Lorsque le module est inséré, il les pousse et les boutons à l'arrière affleurent au boîtier. Si le module doit être retiré - nous appuyons sur le poussoir et il serre le module. Ensuite, vous pouvez le retirer facilement et simplement.
Le code source mérite un article séparé. Je l'écrirai peut-être plus tard. À partir de logiciels tiers,
System Workbench pour STM32 ,
STM32CubeMX et FreeRTOS sont utilisés. Ce sont tous des projets gratuits. L'encapsuleur C ++ FreeRTOS, les tâches de maintenance de l'écran, l'écran tactile, le son et l'entrée sont écrits pour cela.

La sortie graphique est particulièrement intéressante - le prototype avec le microcontrôleur STM32F103 pourrait afficher un jeu de type Mario avec une fréquence de 15 images par seconde avec une résolution de 320x240 et ayant seulement 20 Ko de RAM à bord (
framebuffer est exclu ), tandis que la limitation était probablement due à la fréquence SPI . Au STM32F415 avec une fréquence SPI de deux fois plus, 30 images par seconde sortent.
Eh bien, en conclusion, je vais laisser les liens:Je vous serais reconnaissant de partager le lien avec le projet avec vos amis - maintenant, l'essentiel est de gagner une masse critique de personnes afin de déclencher une réaction en chaîne - il est nécessaire que le plus de personnes intéressées puissent en apprendre davantage sur le projet.
Si vous me posez des questions sur les plans à long terme, qu'est-ce que je veux à la fin, la réponse sera simple: créer une entreprise avec l'idéologie du logiciel ouvert et du matériel ouvert, faites votre truc préféré et aidez les autres comment
Adafruit et
Sparkfun le font.
Si tout à coup le texte semble chaotique - ne jugez pas strictement, il est déjà presque 1h du matin ... posez des questions dans les commentaires - je vais essayer de répondre.