Comment j'ai développé la tablette russe

Bonjour mes amis!



Dans cet article, il n'y aura pas d'Arduino, de Framboise, d'Olimex, de transfert de l'intérieur de la tablette dans son étui «sur mesure» en carton et adhésif, etc. Seul développement dur, uniquement hardcore ...

Je ne sais pas si j'ai choisi un titre trop gros pour l'article, mais tout semble honnête: le développement russe, le facteur de forme de la tablette, même s'il ressemble à une brique "smiley smile".

Pour mes lecteurs, j'ai décidé de décrire le contour de l'article afin que vous puissiez facilement le parcourir et sauter des points inutiles, mais si vous allez écrire un commentaire, alors lisez tout, «afin que ce ne soit pas atrocement douloureux pendant les années passées sans but ... (c)».

  1. Présentation Idée.
  2. Réponses aux questions.
  3. Ce que je voulais obtenir à la sortie.
  4. Description du fer.
  5. Perspectives. Si cela sera nécessaire.
  6. Conclusions Résumant.

1. Introduction. Idée.


Comme je l'ai écrit plus tôt dans mes articles, je suis très intéressé par le sujet de la sortie d'une image sur une matrice, et tout ce qui y est lié. Maintenant, vous ne surprendrez personne avec des scalers matriciels, sous forme de petites planches pour 10 $ - 15 $, à partir desquelles vous pouvez facilement fabriquer / réparer un moniteur ou un téléviseur, mais j'ai déjà assez joué avec eux et je veux quelque chose de nouveau.

L'idée de créer quelque chose de similaire à une tablette est née il y a longtemps, et je l'ai constamment développée, réfléchissant à la façon de la mettre en œuvre avec moins d'efforts et de coûts avec un bénéfice plus important. Bien sûr, je n'ai pas besoin de la tablette elle-même, elle peut être achetée pour un prix modéré si nécessaire, ou en dernier recours pour fabriquer une caisse en contreplaqué pour framboise, mais pourquoi ai-je besoin de framboise (et vous pouvez même acheter une caisse prête à l'acheter)? C'était intéressant à implémenter sur votre matériel en plein développement, mais ça demande de l'argent, et surtout du temps qui manque toujours (ou dans votre journée plus de 24 heures?).

L'impulsion pour la mise en œuvre a été immédiatement deux événements, le premier - il est soudainement apparu plusieurs matrices inutiles de 7 à 10 pouces, qui oh comment m'a attiré. Certains d'entre eux sont RVB, mais parmi eux se trouvait également la matrice LVDS et un pilote de rétroéclairage intégré et une touche capacitive USB. Deuxièmement, il y avait un faible besoin d'une référence compacte pour le logiciel de débogage pour IMX6, dans lequel il y aurait presque tout et un peu plus. Bien sûr, il était plus facile de jeter les matrices et de prendre une référence toute faite de l'étagère, mais ce n'est pas si simple, nous utilisons dans nos conceptions un certain ensemble de périphériques (codecs, physiciens, contrôleurs de charge, etc.) qui doivent être débogués pour de nouvelles fonctionnalités, et je voulais aussi faire l'expérience de quelque chose de nouveau (et les matrices sont très attrayantes). Vaut-il la peine de passer un mois de vos soirées gratuites, demandez-vous? Bien sûr, ça vaut le coup!

Avec ces pensées et une boîte de matrices, j'ai commencé le développement. Je savais que je pouvais allouer très peu de temps et en même temps, il n'était pas clair s'il atteindrait la deuxième itération.


Fig.1. Photo de la "tablette" sur le côté du circuit imprimé.

2. Réponses aux questions


Pour qu'il n'y ait pas de questions inutiles, j'essaierai d'en prévoir certaines et j'y répondrai immédiatement.

2.1 N'est-il pas plus facile d'acheter une tablette?
- Plus simple, mais moins intéressant.
2.2 Combien cela coûte-t-il et combien coûtera-t-il pour une fête?
- Ça coûte cher, mais notre entreprise a pris tous les frais pour la réalisation de mon petit caprice. Aucune fête n'est prévue, faite pour ainsi dire pour soi.
2.3 Où est l'enceinte? Pourquoi ne l'ont-ils pas imprimé sur l'imprimante, ne l'ont-ils pas vu en contreplaqué, ne l'ont pas aveuglé en pâte à modeler (et ainsi de suite).
- Maintenant, j'ai tout rassemblé et, en principe, vous pouvez trouver quelque chose à propos de l'affaire, mais jusqu'à présent, il n'y a ni temps ni désir. Si, néanmoins, il s'agit de la deuxième itération de la planche, quand il sera possible de réduire l'épaisseur, alors il est prévu de réaliser un étui avec une fine feuille de métal polie par le bas pour évacuer la chaleur.
2.4 Pourquoi ne prennent-ils pas un écran plus petit / plus grand / plus fin?
- L'affichage est devenu gratuit, et comme vous le savez, un cheval cadeau ...
2.5 Pourquoi avez-vous mis un tel codec / chargeur / batterie / physique, etc.
- Le chipset est limité à notre entrepôt et je voulais acheter le moins de composants possible, j'ai donc essayé d'utiliser ce qui est.

Cette liste peut être continuée presque sans fin et vous pouvez la prolonger dans les commentaires, mais je terminerai ici.

3. Ce que je voulais obtenir à la sortie.


Les savoirs traditionnels n'étaient que dans la tête, et ils se sont développés à mesure que de nouvelles feuilles du schéma étaient ajoutées dans l'altium. Bien sûr, je voulais retirer tout ce qui était possible du processeur. À la première étape, et peut-être à la dernière, il a été décidé de tout faire sur notre module, car sa carte est à 8 couches, et pour la carte mère, je n'en aurai pas besoin de plus de 4.

Interfaces:

3.1 LVDS - un canal pour une matrice de 10 pouces + tactile capacitif.
3.2 Ethernet - 1000/100/10 (à venir).
3.3 Audio - codec avec plusieurs canaux d'entrée et de sortie + haut-parleurs et microphone intégrés.
3.4 HDMI - un connecteur standard pour connecter un moniteur.
3.5 SATA - connectez un disque SSD externe.
3.6 Appareil photo - un, de préférence deux + flash.
3.7 E-Ink - un petit écran pour afficher les notifications, l'heure, la batterie, les réseaux, etc.
3.8 GPS - n'importe quel module pour localiser l'emplacement.
3.9 CAN - différentiel, pour connecter des appareils externes.
3.10 Carte SD - logiciel de débogage et de téléchargement. Stockage de données.
3.11 WiFi / BT / 4G - sur USB à l'intérieur du boîtier (ci-dessous, j'expliquerai pourquoi).
3.12 USB - au moins 5pcs + console OTG +.
3.13 Accéléromètre - pour retourner l'écran.
3.14 RTC - une puce séparée pour stocker le temps lorsque l'appareil est complètement hors tension.
3.15 NFC est un lecteur avec lequel jouer.
3.16 Boutons de commande - marche / arrêt / volume / réinitialisation.
3.17 Batterie - 3.7V, 4-6A.
3.18 Puissance 5-18V.
3.19 OS Linux.

C'est tout ce que je voulais. Ci-dessous, je vais expliquer certains points contradictoires de la raison pour laquelle il en est ainsi.

4. Description du fer


Il est juste de dire pourquoi tout de même sur le module, et pas immédiatement sur la carte à 8 couches. Il est plus correct de tout transférer sur une seule carte après avoir débogué toute la périphérie, le cas échéant. Une itération de la carte (4-6 pièces) sur huit couches (60 mm x 40 mm) coûte environ 50 tr + composants - c'est assez décent, donc c'est plus correct sur la mise en page. Les prots sur le module sont à 4 cœurs, chacun d'eux est à 1 GHz.


Fig.2. Impression des éléments du corps

La première chose à laquelle j'ai beaucoup pensé était les interfaces sans fil. Il devrait y en avoir plusieurs et ils devraient faire partie du conseil d'administration. Avec le GPS, tout a été décidé par lui-même, j'ai utilisé à plusieurs reprises le module SIM33 avec une antenne intégrée, il fonctionne bien, mais pas bon marché, il a une sortie UART et j'ai déjà dessiné une empreinte pour cela).

Le Wi-Fi / BT pourrait également être implémenté en tant que module sur la carte, car il y en a beaucoup, mais pour l'instant nous reportons ce problème. Les modems 4G se présentent sous différents formats et modules sur le connecteur et sur la carte pour le soudage et l'USB. Le logiciel prend Maxim (notre programmeur), qui est toujours un passionné, et il a suggéré d'installer plusieurs USB sur la carte pour coller des clés Wi-Fi / BT (que nous avons utilisées à plusieurs reprises), et également essayer de soulever un modem USB 4G, par exemple, Yota ou quelque chose comme (ce qui se passe). Dans ce cas, nous avons également des appels. Il a donc été décidé de le faire.

À l'intérieur de la carte se trouvent 3 USB, a) Wi-Fi / BT, b) un modem 4G, c) un module pour un clavier / souris sans fil. IMX6 n'a que deux ports USB à bord, tandis que l'un d'eux est OTG et peut être nécessaire pour le débogage, il est donc affiché sur le panneau arrière sous la forme d'un connecteur miniUSB. Le deuxième USB va au concentrateur TUSB2077 de TI, qui a 7 ports sur la sortie, pour lesquels Maxim a déjà levé le pilote plus tôt, donc je l'ai utilisé. Il y a 3 ports USB sur le panneau arrière pour connecter des périphériques externes. Un autre microUSB sur le panneau arrière pour la sortie de la puce uart de la console pour le débogage (via CP2102 sur la carte principale).

L'écran E-Ink a choisi une tricolore (gris / noir / rouge), l'une des plus courantes pour Arduino. Il n'a pas encore été acheté, car il n'est pas encore à la hauteur. J'ai trouvé plutôt intéressant de décider de ne pas allumer l'écran, mais d'afficher certaines informations sur un petit écran et de le mettre à jour de temps en temps. Je veux aussi vraiment jouer avec E-Ink.


Fig.3. Affichage photo E-Ink.

Notre module IMX6 possède un connecteur (il y a trois tensions d'alimentation, I2C, réinitialisation, PWM, etc.) pour connecter la caméra OV5640-M4320, même deux, à la poupe de MIPI_CSI. Une caméra a donc fonctionné (directement sur le connecteur du module), mais avec deux questions. La boucle d'un tel appareil photo est généralement de 3 cm à 12 cm. Sur la carte, j'ai routé MIPI_CSI aux bons endroits sur la carte, mais je ne l'ai pas encore vérifié. Quelque chose me dit que cette interface ne fonctionnera pas à 15-20 cm, ou qu'elle sera à la traîne.


Fig.4. Appareil photo OV5640-M4320.

Ce sont des appareils photo de 5 mégapixels avec autofocus intégré.

Il est prévu de faire un flash pour la caméra à l'arrière de l'appareil, pour cela j'ai fait une écharpe portable (le trou de cette écharpe est visible sur le circuit imprimé, je l'étale directement sur la principale, afin de ne pas commander séparément) sur une boucle avec une LED (MP-3030-1100- 56-95) et placez le pilote ADP1653 sur le flash de la carte principale. Je n'ai jamais pensé que le flash devait être assez clairement synchronisé avec le cadre (bien que cela soit logique), ce pilote peut le faire en utilisant I2C, ce qui n'est probablement pas adapté à une interruption externe. Voyons voir le moment venu, comment c'est arrivé.

IMX6 a un RTC intégré, qui ne fonctionnait pas très bien en termes de consommation d'énergie, ou je n'ai pas regardé quelque chose, j'ai donc décidé d'installer une puce PCF8523 externe, qui a un pilote pleinement fonctionnel pour Linux. La fonction de synchronisation de l'heure elle-même ne m'intéresse pas particulièrement, car elle peut se faire sur des réseaux, mais se réveiller sur un événement est nécessaire. Je mets ce miracle de développement sur la table de chevet et attend que l'alarme se déclenche, tout comme le Nokia 3310 est sorti de l'état éteint.

Lorsqu'une tension externe est appliquée (l'appareil est éteint), les éléments suivants sont alimentés: le contrôleur de charge BQ25895, RTC et le superviseur STM6601, qui contrôle l'alimentation secondaire en appuyant sur un bouton ou doucement (si nous voulons ne pas couper l'alimentation et éteindre correctement le système d'exploitation, puis éteindre le système d'exploitation, puis couper l'alimentation) ) En conséquence, l'alimentation s'est avérée être une conception plutôt intéressante, je n'ai pas eu le temps de prendre des mesures de consommation dans différents modes, mais avec l'arrêt matériel de toute la périphérie, cela devrait plutôt bien se passer. En conséquence, la «tablette» ne dispose pas d'une telle «veille», les STM6601 et PCF8523 sont alimentés directement de la batterie Li-Ion (3,7 V) + à la batterie RTC 2016 ou 2032 (support universel). Une batterie de 2,3A est maintenant connectée (elle est sur le point d'arriver à 6A), en mode d'affichage du bureau, la charge dure environ 30 minutes - c'est bien sûr très faible, mais voyons ce qui se passe avec une batterie pleine.

L'accéléromètre LIS331 n'est nécessaire que pour le suivi de position, pour retourner l'affichage, j'ai donc mis ce que j'avais déjà utilisé. Une bonne puce avec des interfaces et des interrapts I2C / SPI.

Un connecteur SATA à part entière a été fourni avec le type «Je veux, pourquoi pas)». Je comprends que les tablettes utilisent eMMC / NAND, mais comme il existe une interface, pourquoi ne pas l'utiliser? Étant donné que dans cette version, il y a suffisamment d'espace pour SSD 2.5 "- que ce soit.

Maxim a insisté pour installer NFC. Je ne sais toujours pas ce qu'il fera de cette interface, mais que pouvez-vous faire pour les caprices d'un programmeur? Certes, je ne voudrais pas vraiment qu'il essaie de payer à l'épicerie, en appliquant cet appareil à un lecteur sans fil.

CAN est parfois nécessaire dans nos conceptions, j'ai donc installé la physique TJA1040T, nous avons déjà un pilote pour cela, nous pouvons travailler avec, même le connecter à nos voitures et regarder les tableaux. Chose intéressante.

Codec ADAU1761 à nouveau, pour ressentir tous les plaisirs du travail avec le son. Tout d'abord, c'est lui qui a été conçu (et non SGTL5000, qui n'est rien non plus) pour déboguer le firmware du DSP intégré (SigmaStudio). Par conséquent, sur la paroi arrière, il y a deux connecteurs pour les haut-parleurs (via un amplificateur), sur le connecteur latéral pour le microphone interne, ainsi que plusieurs entrées / sorties (restantes) pour des prises 3,5 mm sur le panneau avant.

La sortie HDMI m'a paru très pratique, et sur un connecteur standard. Avant cela, il a mis microHDMI en développement, mais il me semble que cela n'a de sens que lorsque les dimensions sont limitées.

Pour que tout cela vive et ne consomme pas 100500 ampères en même temps, je mets la puce TCA6424 sur la carte - c'est un extenseur GPIO, qui dans ce cas sert de commutateur pour les périphériques. SATA, l'écran (sa puissance et son rétro-éclairage), le son (codec et amplificateur), l'accéléromètre, le GPS et tout le reste sont connectés à l'alimentation via des commutateurs à transistor TPS27081 est un commutateur à double transistor qui peut couper l'alimentation à 8 V et jusqu'à 3 A. Ainsi, en plus des modes de veille logiciels, vous pouvez désactiver les interfaces matérielles. L'extenseur est contrôlé par I2C, vous pouvez donc écrire un programme d'écran qui peut tout désactiver individuellement.

Maintenant, pourquoi tout de même Linux. Selon Maxim, il est beaucoup plus facile de tout exécuter sous Android, mais comme le montre la pratique, nous avons plus de projets pour Linux. Oui, il y aura très probablement du bruit, mais il me semble qu'avec Xubuntu (il est maintenant sur l'appareil) la "tablette" acquiert une certaine originalité et est plus adaptée à nos tâches.


Fig.5. Circuit imprimé.


Fig.6. Carte avec composants installés.


Fig.7. Premier lancement.

5. Perspectives. Si cela sera nécessaire.


Tout d'abord, bien sûr, je veux réduire les dimensions en épaisseur. Il n'y a qu'une seule façon d'y parvenir: transférer le processeur sur la carte et changer sa géométrie. Le rejet de SATA sera justifié, il sera plus correct de mettre eMMC sur 64 / 128Gb (pour le moment ça coûte 8Gb). La batterie ne devrait pas être sur la carte, mais à côté, eh bien, en général, nous connaissons tous l'emplacement des éléments à l'intérieur des tablettes, tout a déjà été inventé pour nous. J'ai déjà écrit sur le cas ci-dessus, je voudrais une plaque de refroidissement, je n'ai pas vraiment réfléchi à la façon de mettre en œuvre les éléments restants.


Fig.8. Dans le cas. Entrée / sortie audio.


Fig.9. Appareil assemblé.


Fig.10. Panneau arrière

6. Conclusions. Résumant.


Depuis que le projet est en cours de développement (devenu logiciel) dans ses temps libres du travail, tout n'a pas été réussi à être soulevé. Maxim scie quelque chose et la «tablette» prend progressivement vie, mais la finale n'est pas encore visible.

À mon avis, l'appareil s'est avéré tout à fait viable pour les tâches décrites ci-dessus. J'ai installé le lecteur VLC et maintenant vous pouvez regarder le film sur le petit écran)). Si, par essence, mon idée a été réalisée presque complètement (la première itération), sans compter le cas. En soudant le module sur la carte, vous pouvez obtenir une épaisseur totale ne dépassant pas 23 mm - ce qui, bien sûr, est dur pour l'électronique étrangère actuelle, mais pour le prototype, c'est tout à fait acceptable.

PS: lien vers la source github.com/boundarydevices/linux-imx6/commits/boundary-imx_4.9.x_1.0.0_ga

Je vous souhaite plein succès dans vos efforts!

Source: https://habr.com/ru/post/fr423279/


All Articles