Table des matières:

Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic : 3 étapes
Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic : 3 étapes

Vidéo: Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic : 3 étapes

Vidéo: Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic : 3 étapes
Vidéo: Как создать БЕСПЛАТНЫЙ текст в речь 🌟🌟🌟🌟🌟 - Audacity Tutorial 2024, Juin
Anonim
Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic
Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic
Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic
Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic
Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic
Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic

Introduction: Bonne journée. Je m'appelle Tod. Je suis un professionnel de l'aérospatiale et de la défense qui est aussi un peu geek dans l'âme.

Inspiration: venant de l'ère des BBS commutés, des microcontrôleurs 8 bits, des ordinateurs personnels Kaypro/Commodore/Tandy/TI-994A, lorsque les magasins Radio Shack étaient abondants (le bon vieux temps), l'un de mes premiers projets embarqués de passe-temps était travailler avec un kit de formation au microprocesseur Motorola MEK6800D2, que j'avais acheté alors que je travaillais en tant que coopérative dans les laboratoires MSU EE (après avoir terminé ma formation High School Electronics VoTech dans le sud du sud du MI). Ce projet impliquait mon prototypage du PROCESSEUR DE PAROLE Radio Shack SP0256 NARRATOR ™ sur le MEK6800D2, le câblage et la programmation du 6800 pour qu'il émette une pseudo-parole (ceux qui ont travaillé avec le HW basé sur SP0256 savent exactement à quoi je fais allusion). Cela a fonctionné à merveille et j'ai progressé dans la voie de la coupe des dents dans les microcontrôleurs intégrés et l'assemblage. Après le lycée, la vie s'est entravée, l'armée, la guerre, les conjoints, les enfants, l'entrée dans le secteur civil, le début d'une carrière, etc. ici aux États-Unis).

Avancez de 20 ans, arrivez à l'heure inévitable où les enfants mûrissent au point que la mariée et moi sommes des distractions, les factures hypothécaires/véhicules/collèges sont lentement remboursées, les revenus s'améliorent avec les progrès et j'ai assez de pièces de rechange Au point où je pouvais commencer à me recentrer sur des efforts égoïstes, j'ai repris le concert de l'électronique de loisir. Quoi qu'il en soit, compte tenu de ma lignée et de mon histoire, j'ai cherché et trouvé un environnement de développement avec lequel je me suis rapidement lié - ARMbasic - BASIC était mon premier amour et cela correspondait non seulement à la réacclimatation à la programmation, mais aussi au travail avec du matériel qui était beaucoup plus puissant que ce avec quoi j'avais commencé des décennies plus tôt, et c'est ainsi que le voyage a commencé.

C'était vers 2006-2009. Puis, pour des raisons bien indépendantes de notre volonté, la vie a changé (comme pour beaucoup au cours de ces années). Hobbies mis de côté - se concentrer sur une nouvelle carrière, se remettre de difficultés financières (était fortement investi dans le domaine de l'immobilier et nous l'avons pris dans le short et les jeunes venaient juste d'arriver au point où le financement du Collège était un impératif). Fondamentalement, les problèmes de la vie et du premier monde (nous sommes vraiment bénis, compte tenu des défis et des labeurs auxquels les gens dans d'autres parties du monde luttent quotidiennement) se sont manifestés et… le passe-temps a été abandonné. J'y suis brièvement revenu en 2011-2012, puis j'ai été confronté à un autre changement de carrière - un passe-temps encore une fois mis à l'écart.

Avance rapide d'une autre décennie et… je suis de retour et, bon Dieu le veut, j'espère pour la durée (jusqu'à ce que je fasse cette sieste proverbiale et que je commence à pousser les marguerites d'en bas). Donc nous en sommes là. Wow - Arduino (quel est ce mot bizarre ?) avait pris d'assaut le marché. Fabricants ?? Qu'est-ce qu'ils sont ?! …:) Mes amis de Coridium Corp (propriétaires de cartes de développement de microcontrôleurs ARMbasic et ARM) étaient restés fidèles et fidèles. Maintenant, au lieu de la série de contrôleurs LPC2xxx, il y a cette nouvelle (pour moi) entité d'ARM, et Cortex M0/M3/M4, et Arduino, et… WOW ! La culture s'est beaucoup transformée, et à bien des égards. Les peeps collaborent à distance et, en effet, à l'échelle mondiale. Le matériel devient incroyablement rapide et puissant, et ARMbasic, qui a mûri et s'est solidement durci avec l'emploi dans de nombreuses familles différentes de silicium, est une chose de beauté pour moi et pour beaucoup d'autres.

Donc, en faisant une histoire courte très longue, je suis récemment tombé sur le clic TTS de MikroElectronika et j'ai senti une vague de nostalgie m'envahir. J'en ai commandé un en quelques minutes et j'étais anxieux au cours des jours suivants jusqu'à ce que l'unité arrive en main. Ainsi commence l'histoire…

Fournitures

  • 1 ea MikroElectronika Text To Speech Click, contient l'Epson S1V30120 - l'ASIC TTS du module
  • 1 cible ARMbasic, remplissant le rôle d'hôte TTS
  • 1 ea Uno Breakout Shield (ou planche à pain de prototypage, ou …)
  • 1 haut-parleur ou un ensemble de haut-parleurs suggèrent des haut-parleurs de bureau alimentés par un PC avec une prise TRS 1/8" dessus
  • 1 lot de produits de prototypage fil, soudure, flux, mèche, fer à souder, en-têtes, prises IC et autres.
  • 1 lot d'outils de développement intégrés DMM, sonde logique, analyseur logique, portée, etc. - pour les nouveaux MCU hôtes TTS

Étape 1: Interconnexions matérielles

Interconnexions matérielles
Interconnexions matérielles
Interconnexions matérielles
Interconnexions matérielles
Interconnexions matérielles
Interconnexions matérielles

Pour reproduire cela en utilisant une cible ARMbasic dans un facteur de forme Uno, ou avec un Itaca uChip, il serait probablement préférable d'utiliser un bouclier de prototypage, comme je l'ai fait dans les images ci-dessus (lien amazon simple)

Certains verront le fil enroulé torsadé et se demanderont pourquoi - le rejet du bruit en mode commun est la réponse simple. Oui, nous n'avons pas affaire à des signaux équilibrés ici, mais j'ai pensé que cela ne pouvait pas faire de mal (?) Alors je l'ai fait quand je faisais la construction de la carte.

C'est une conception assez bénigne. Les impressions sont jointes à la présente, sous la forme d'un graphique (AutoCAD 2D est ce à quoi je suis le plus habitué - j'ai travaillé avec pendant des décennies dans mon travail quotidien - je suis toujours en train de couper mes dents KiCAD et c'était un effort trop simple pour justifier la courbe d'apprentissage en tant que premier projet dans KiCAD). Quoi qu'il en soit, j'ai choisi de monter le socket uChip directement sur le shield pour permettre un cas d'utilisation autonome lors de l'utilisation de l'uChip en tant qu'hôte. J'ai ajouté un JST pour l'alimenter via une batterie, si je le souhaite et, comme j'ai quelques extras, j'ai crénelé un Adafruit SWD Breakout pour me permettre d'utiliser ma sonde de débogage Segger J-Link EDU, en cas de besoin. Ce n'est pas le cas, mais je garde le SWD i'face dessus pour une utilisation dans de futurs projets.

Crénelé signifie, dans ce contexte, limer les bords du PCB de sorte que les trous métallisés traversants soient réduits à des demi-cylindres, permettant de souder sur un PCB porteur - dans ce cas la carte de dérivation de blindage. J'ai choisi de le faire car les parties de déploiement à plat du bouclier ne s'alignaient pas tout à fait avec l'espacement des rangées entre les deux rangées d'en-têtes sur le SWD BOB. Sortez un fichier plat et 5 minutes de classement et problème résolu.

Étape 2: Programmation et test

Programmation et test
Programmation et test
Programmation et test
Programmation et test
Programmation et test
Programmation et test

Une fois que le matériel est construit, il faudra une sonnerie complète pour valider que le câblage est bon. Ensuite, je fais toujours une vérification de l'alimentation et des terres. Cela garantit non seulement que l'alimentation et la terre sont là où elles sont censées être, mais que toutes les autres terminaisons qui ne devraient pas avoir d'alimentation / terre ne le sont pas. Ce n'est pas une tâche fastidieuse sur un petit projet comme celui-ci, mais avec des systèmes de systèmes plus importants, il s'agit d'une étape fastidieuse, mais absolument nécessaire pour garantir qu'aucun sous-ensemble ou système connecté ne soit supprimé par une erreur stupide qui aurait pu et aurait dû être pris. Je reçois généralement le strict minimum de biens attachés afin que l'alimentation soit générée sur la carte, puis je vérifie l'alimentation et la terre de chaque broche/borne avant de brancher des sous-ensembles, des puces, etc., en m'assurant que l'alimentation est au bon niveau (compte tenu des périphériques/IO non tolérants à 5 V, des exigences 1v8 et 3v3, etc.) et cette terre est là où elle doit être et uniquement là où elle doit être. J'ai été témoin d'une cascade de pannes sur un avion causées par des personnes n'ayant pas effectué les vérifications de pré-connexion appropriées. Dans un cas, il a fallu plus de 100 000 $ de LRU - ce n'est pas un moment amusant pour être en charge d'un projet et le faire basculer en un instant parce que quelqu'un a court-circuité le processus. Une autre chose dont je suis coupable est de faire des "contrôles de proximité" fastidieux - en m'assurant que les contacts/terminaisons ne sont pas court-circuités avec les contacts/terminaisons adjacents. Cela devient critique si l'on a affaire à des ensembles coaxiaux, des faisceaux multiconducteurs/blindés, etc. Ok, je suis hors de la boîte à savon…

Une fois la sécurité assurée, connectez les éléments, mettez-les sous tension, puis commencez à programmer l'hôte TTS (ARMbasic Target MCU) comme on le ferait avec de nombreuses cibles MCU intégrées. J'ai enregistré une vidéo qui décrit la programmation et l'utilisation simple du TTS Click. Vous pouvez voir ça ici.

Le code source ARMbasic peut être téléchargé à partir d'ici - un message du forum qui contient des détails supplémentaires. Coridium a publié un article de blog sur ces efforts, auquel vous pouvez accéder en cliquant ici.

Étape 3: Modification de la source pour d'autres cibles ARMbasic et diverses réflexions

Modification de la source pour d'autres cibles ARMbasic et diverses réflexions
Modification de la source pour d'autres cibles ARMbasic et diverses réflexions
Modification de la source pour d'autres cibles ARMbasic et diverses réflexions
Modification de la source pour d'autres cibles ARMbasic et diverses réflexions
Modification de la source pour d'autres cibles ARMbasic et diverses réflexions
Modification de la source pour d'autres cibles ARMbasic et diverses réflexions
Modification de la source pour d'autres cibles ARMbasic et diverses réflexions
Modification de la source pour d'autres cibles ARMbasic et diverses réflexions

Je ne vais pas vous expliquer les étapes nécessaires pour modifier le code source pour qu'il fonctionne avec d'autres cibles ARMbasic, sauf pour indiquer que je bourdonne à ce sujet dans une abondance de commentaires sur le code source. Veuillez prendre le temps d'ouvrir le fichier tts.bas et de lire les changements nécessaires si vous choisissez de porter le code sur un autre contrôleur alimenté par ARMbasic.

Vous trouverez ci-joint quelques images que j'ai prises pendant le cycle de développement pour que cela fonctionne.

Leçons apprises:

  1. Si vous avez un analyseur logique avec des entrées inutilisées et que des E/S cibles supplémentaires ne sont pas utilisées pour le travail en cours, n'ayez pas peur d'utiliser ces E/S comme outils de débogage. une aide considérable pour localiser ce qui fonctionne et ne fonctionne pas comme prévu, pour identifier les problèmes de synchronisation loufoques (c'est-à-dire les interruptions affectant les communications série bit-banged) et pour mieux comprendre vos efforts dans leur ensemble.
  2. Tous les contrôleurs ARM ne sont pas identiques. C'est évident. Cependant, j'ai eu un peu de chance en faisant le développement initial sur un LPC1765 Coridium SuperPRO. Avec le recul, ce qui en a fait un mauvais choix, c'est que l'implémentation de ce noyau ARM permettait un accès à la mémoire non aligné sur les mots. Lors du portage du code C sur ARMbasic, les choses se sont plutôt bien passées jusqu'à ce que j'essaie de l'utiliser avec une cible SAMD21 - l'enfer s'est déchaîné et les choses ont été bousculées au-delà de la croyance en raison d'un accès non aligné lors du remplissage des tampons, de la manipulation des drapeaux, du travail avec la version ARMbasic des structures/syndicats que j'ai imaginés, etc. C'était une leçon douloureuse. Le point à retenir ici: si l'on souhaite avoir du code portable, développer sur la cible candidate la plus restrictive, juste pour s'assurer que l'on n'est pas confronté au drame à la fin du projet, quand on est probablement le plus excité d'utiliser les fruits de leurs efforts..:)
  3. Le portage du code C vers ARMbasic n'est PAS impossible. Cet effort était en grande partie une gigantesque évolution de la formation au portage. Si l'on prend le temps de comparer les sources C d'origine avec le code ARMbasic que j'ai créé, on devrait être en mesure de repartir avec quelques idées sur la façon d'implémenter des choses qui pourraient ne pas faire partie de la conception de base d'ARMbasic (c'est-à-dire des structures).
  4. Attaquez-vous à des choses comme celle-ci en morceaux gérables. Par défaut, je suis quelqu'un qui aime voir de la gratification régulièrement. Une entreprise telle que ces efforts de portage et de développement ne sera probablement pas quelque chose à accomplir en une seule nuit. Fixez-vous des objectifs réalistes et travaillez vers les mêmes, en essayant de ne pas vous laisser submerger par « la vue d'ensemble ».
  5. Un analyseur logique était crucial dans cet effort. Oui, j'ai une unité DS-Logic+ de milieu de gamme inférieure, mais je peux affirmer avec insistance qu'un LA de bande passante 24 MHz à 12,50 $ et bon marché d'Amazonie aurait plus que suffi. Ajoutez à cela le PulseView (gratuit) de Sigrok (décodage de protocole) et vous obtiendrez un système très robuste qui devrait fonctionner dans une multitude de scénarios tels que ce que j'ai essayé d'entreprendre avec ce projet. Assurez-vous d'obtenir une unité qui a des clips de test, ou commandez des clips de test séparément, car ils sont extrêmement bénéfiques (comme Trumpfeldian).
  6. Une simple sonde logique est également un outil très utile. Sur la photo d'aperçu de l'espace de travail, vous remarquerez une ancienne sonde logique Archer (Radio Shack) dans le coin inférieur droit de l'image. J'ai été vraiment surpris de constater à quel point quelque chose comme ça est utile au quotidien, même avec un laboratoire bien équipé.

J'ai peut-être lié à ceux-ci plus tôt dans ce document, mais je ne m'en souviens pas et je suis trop paresseux pour regarder. Voici un article de blog qui contient une vidéo du module TTS en action (Itaca uChip l'héberge à ce moment-là), et l'article du forum ARMbasic où l'on peut télécharger le code source ARMbasic porté.

Prenez soin de vous et amusez-vous à pirater !

-MHz

Conseillé: