Partie 2: Modules et AppStore. ESPboy - un gadget pour les jeux rétro et les expériences avec l'IoT

Depuis la publication du premier article sur le dispositif ESPboy que j'ai conçu sur le microcontrôleur ESP8266, beaucoup de temps s'est écoulé.





Cependant, quelque chose a été fait pendant cette période:


  1. Amener l'appareil lui-mĂŞme au stade de la production
  2. Créez des modules d'extension, écrivez des logiciels pour eux et déboguez
  3. WiFi Apple iStore Google play market
  4. Arduboy Arduboy ESPboy
  5. Little Game Engine


Comparaison d'ESPboy avec M5Stack, MeowBit et Dingoo A-320



La soudure elle-même était déjà fatiguée et a réussi à négocier avec les excellents gars chinois de www.makerfabs.com , qui ont réuni une douzaine de kits de kits semi-assemblés pour un assemblage final indépendant. La qualité s'est avérée excellente, merci à eux. Il faut souder seulement 4 pièces pour le faire fonctionner.



Il a rapidement distribué un lot de tests pour ceux qui souhaitent participer au développement du projet, et il serait nécessaire d'en commander plus, mais vous devez comprendre comment gérer le contrôle douanier. Si vous trouvez plusieurs appareils du même type dans un seul emballage, il y a un risque de retard et de long démontage.



Modules d'extension et logiciels pour eux


Ensuite, nous avons réussi à collecter des modules prototypes et à écrire pour chaque logiciel, ce qui transforme ESPboy en un appareil à part entière, comme prévu. Pour ce faire, branchez simplement le module souhaité dans le connecteur d'extension et mettez à jour le micrologiciel. Sources sur github .



Il existe plusieurs autres itérations pour amener tous les modules au stade de la production.

Il est nécessaire de dessiner des cartes de circuits imprimés, de faire des listes vérifiées de composants disponibles et peu coûteux, d'écrire des instructions détaillées, de tout organiser sous forme de baleines, prêtes à être assemblées et sous forme de produits déjà assemblés.

J'espère avoir le temps de faire tout cela avant la fin de cette année.

Pour aujourd'hui, les extensions suivantes sont entièrement préparées et déboguées:

  1. Mini clavier complet
  2. Station météorologique
  3. Lecteur mp3
  4. radio FM
  5. Navigateur GPS
  6. Module DAC pour jouer de la musique
  7. Messager LORA
  8. Téléphone GSM

Il y a aussi dans le travail quelques idées plus intéressantes, j'espère vous les dire bientôt.

Quelques mots sur chaque module


1. Un mini clavier à part entière

Basé sur le clavier du smartphone Blackberry Q10, qui est contrôlé via l'expandeur de port MCP23017.



Il y a beaucoup d' informations sur les signaux sur la boucle du clavier et la tâche consiste à commander un connecteur + adaptateur pour le câble et à souder ce connecteur à l'adaptateur. Étant donné la taille du connecteur en quelques millimètres et la taille des contacts eux-mêmes littéralement des cheveux, la tâche n'est pas facile.

MCP23017 fonctionne sur i2c et il n'y a eu aucun problème dans le plan logiciel. Il est nécessaire d'interroger la matrice du clavier pour la recherche de contacts fermés et d'interpréter correctement les signaux dans la disposition du clavier. Les détails sont visibles dans les codes source .



2. Station

météorologique Quel travailleur arduino n'a pas récupéré la station météorologique. Vous ne trouverez pas une telle chose dans la nature.
Ma version utilise un capteur de pression / humidité / température i2c BME280 et également un capteur de CO2 - SGP30 .

En prime - l' horloge en temps réel DC3231 , qui vous permet également d'afficher l'heure correcte.

On pensait tout de mĂŞme ajouter un capteur foudre / foudre AS3935 , mais un peu cher. Peut-ĂŞtre plus tard.



Le module lui-même s'est avéré être petit, le code est ici .

En tant que version étendue, j'ai fait un plus gros morceau sur le test. Je n'aimais pas ça, mais la vidéo de l'expérience a été conservée.



3. Lecteur MP3

Utilisé DFplayer mini mp3 , de la même manière que celle décrite dans les articles sur ce module .

Le seul problème est que les personnes défectueuses rencontrent souvent et ne fonctionnent pas de manière stable ou ne fonctionnent pas du tout. Code source .

4. Radio FM

Comme base, le module tuner fm SI4703 et une bibliothèque légèrement dopée de mathertel ont été utilisés .



La radio joue assez bien dans les Ă©couteurs, la recherche de stations et mĂŞme les travaux RDS. Le code est ici.



5. Navigateur GPS

Nulle part où aller sans navigation. Par conséquent, bien sûr, j'ai décidé d'assembler un module supplémentaire pour cette tâche.
J'ai utilisé la puce WAVGAT GY-NEO6MV2 avec laquelle il n'y avait absolument aucun problème. Implémentation de deux ekarana. L'un est le mode de navigation libre, le second est le mode de suivi jusqu'au point de la mémoire. Théoriquement, vous pouvez y mettre une carte, mais c'est une tâche longue. Le code source est toujours là .



5. Module DAC pour jouer de la musique

Lors du développement de l' émulateur ZX Spectrum , l'idée est venue d'émuler son coprocesseur musical AY-3-8910. L'émulation logicielle sur la dynamique intégrée s'est avérée, mais les coûts du processeur pour la synthèse sonore et la qualité laissaient beaucoup à désirer. En fin de compte, le Spectrum sur ESPboy a gagné, mais uniquement dans la version 48k sans émulation AY car même suffisamment de mémoire était disponible de bout en bout (il restait littéralement quelques dizaines d'octets par pile).



Cependant, grâce aux efforts de Shiru et à ses expériences avec le son , un module DAC pour ESPboy et un lecteur PT3 AY-3-8910 Musique de spectre sont apparus.

Le module a été utilisé sur PCM5102 avec prise en charge de l'interface I2S (à ne pas confondre avec I2C ). Il y a toujours des codes sources .



7. Messager LORA Il

n'y a pas si longtemps, il est devenu une technologie très populaire LORA - protocole de transmission économe en énergie de petits paquets de données par voie aérienne sur de longues distances. J'ai fouillé et découvert des émetteurs-récepteurs bon marché d' EBYTE .

Et à puissance maximale, ils parcourent jusqu'à 8 km en ligne de mire. Ici, vous devez comprendre que les obstacles sous forme de terrain et de développement urbain réduisent considérablement cet indicateur, ainsi que le bruit urbain aussi. Cependant, dans des conditions suburbaines, ou si des satellites avec des tours GSM, par exemple, tombent, c'est un excellent canal de communication. Les expériences ont abouti à la création d'un module de discussion à part entière sur les ondes. Le module lui-même crypte le paquet, mais je suis également en tête en tant qu’option AES (cette option est désactivée par défaut).

DevaitPour être confondu avec la bibliothèque sous l'émetteur-récepteur parce que les bibliothèques existantes étaient soit boguées, soit je ne comprenais même pas comment elles fonctionnaient.





8. Téléphone pirate GSM

Après être tombé sur le concepteur de téléphone Ringo (anciennement Maker Phone) sur le réseau , j'ai été très surpris du prix et de la complexité. Ayant de l'expérience avec les modules SIM800 bien connus de la société SimCom, il a rapidement lavé son téléphone.

Bien sûr, il n'est pas aussi pratique que les smartphones modernes préférés de tout le monde, mais il n'observe pas et ne vole pas vos contacts.





Le logiciel écrit prend en charge le minimum nécessaire:

  • Affichage de l'heure actuelle
  • RĂ©pondre aux appels et raccrocher
  • Composer un numĂ©ro
  • Recevoir et envoyer des SMS

De plus, l'écran affiche toutes les informations de service sur le fonctionnement de l'émetteur-récepteur GSM. Les demandes et les réponses des stations de base et l'enfer sait quoi d'autre. Je ne suis pas spécial, mais c'est intéressant à regarder.

En prime, vous pouvez entrer des commandes AT de bas niveau pour contrôler l'émetteur-récepteur, comme au bon vieux temps des modems commutés, et ces commandes font 600 pages dans la documentation de SimCom . Bien plus qu'un champ de recherche pour les vrais hackers au chapeau blanc.

ESPboy App Store - Catalogue d'applications en ligne


En étudiant la documentation ESP8266 et en me souvenant du WiFi à bord, j'ai été particulièrement frappé par la possibilité de mettre à jour son firmware via http / https , c'est-à-dire sur le réseau. Étant donné que la programmation des microcontrôleurs est une tâche difficile et que la mise à jour du micrologiciel est presque toujours une hémorroïde, je voulais vraiment changer cela.

À quoi ressemble la mise à jour du firmware du microcontrôleur de la manière habituelle?

  1. Si l'USB-TTL est intégré, considérez-vous comme chanceux. Sinon, vous devez rechercher un convertisseur USB-TTL séparé et découvrir comment vous connecter
  2. Connectez l'appareil avec un fil Ă  l'ordinateur et configurez le pilote
  3. Installer Arduino IDE
  4. Installer l'extension ESP8266 sous Arduino IDE
  5. Télécharger le code source
  6. Pour comprendre quelles bibliothèques y sont utilisées et quelles versions (ce qui n'est jamais évident)
  7. Recherchez et téléchargez toutes les bibliothèques des versions nécessaires et installez-les (et cela, en principe, n'est pas toujours possible)
  8. Traitez les options de compilation, définissez-les (ce qui n'est pas évident non plus)
  9. Si vous avez finalement réussi à arriver à la compilation, obtenez un tas d'erreurs
  10. Effectuer des danses avec des tambourins, résoudre les erreurs de compilation (parfois cela se produit plus d'une journée, et même avec des kalachs râpés parfois avoir des nerfs)

Il est clair qu’il est difficile pour les débutants de maîtriser une telle quête et c’est un obstacle critique lorsqu’on aborde le sujet de la programmation des microcontrôleurs, de la rotobotechnique et autres.

Et comment cela peut-il être changé?

Le catalogue d'applications en ligne lui-même réduit la tâche de mise à jour du micrologiciel aux étapes simples suivantes:

  1. Sélectionnez un réseau WiFi dans la liste
  2. SĂ©lectionnez une application dans la liste
  3. Attendez une demi-minute

Eh bien, n'est-ce pas la beauté et le bonheur!

Voici le code source de la partie client pour se connecter et profiter .



Port de bibliothèque Arduboy2


Il y a environ un an, après avoir conçu ESPboy et testé avec force et puissance, il est tombé sur un projet Arduboy commercialement réussi .

Sous ce merveilleux gadget, il s'est avéré que pas mal de jeux open-source sympas ont été écrits , et une communauté amicale se développe à ce jour.

Le développement de jeux pour Arduboy est basé sur la bibliothèque lib Arduboy2 .

Après avoir porté cette bibliothèque sur ESPboy, il est devenu possible de recompiler des dizaines de grands jeux avec Arduboy avec des ajustements de code minimaux.

Sources de bibliothèque, jeux portés et instructions sur la façon de porter quoi que ce soit d'Arduboy à ESPboy, encore une fois sur github.



Nouveaux jeux sur Little Game Engine


Parallèlement au projet ESPboy, le projet de console fantaisie Little Game Engine se développe intensément .

Le travail des jeux réalisés sur le Little Game Engine est soutenu par ESPboy et Igor, l'auteur du moteur, ne cesse de nous plaire avec de nouvelles versions .

Le développement de ces jeux est simple et direct, et est également accessible à tous ceux qui le souhaitent via l'environnement de développement (IDE), qui s'exécute dans n'importe quel navigateur et dispose d'un compilateur et d'un émulateur intégrés .

Les sources de jeu sont ouvertes, visibles dans l'EDI lors du choix d'un jeu, et sont disponibles pour l'édition et l'expérimentation. Pour jouer, vous devez sélectionner «compiler» au-dessus du code du jeu, puis cliquer sur l'icône «jouer» sur le côté gauche de la fenêtre de l'émulateur. La description «C» d'un tel langage LGE est également très détaillée.

Le code source du moteur lui-mĂŞme est Ă©galement disponible pour examen.



Ainsi, le travail sur le projet se poursuit.

Il y a encore beaucoup de choses intéressantes. Et l'ajout de nouveaux éléments de l'écosystème ESPboy et l'intégration plus approfondie des composants existants pour simplifier le travail avec l'appareil, à la fois pour les utilisateurs et les développeurs.



Merci Ă  tous ceux qui contribuent au projet: Dmitry (Plague) , Alexander (Shiru) , Mikhail G.,
Igor (Corax) , Alex (AlRado) , Mikhail (Torabora), Andrey S. , George P., Roman (orsweb ) , Scott (MLXXXP) , Haroldo (Haroldo-OK) , John E , Marcus de Verdier , Loopingstar , AccidentalRebel et bien d'autres qui jouent, lisent, testent, codent, diffusent, conseillent et tout comme.

Bonne réussite créative!

Cordialement,
RomanS

All Articles