Inhoudsopgave:

Tekst naar spraak Klik op een ARMbasic Powered UChip en andere ARMbasic Powered SBC's - Ajarnpa
Tekst naar spraak Klik op een ARMbasic Powered UChip en andere ARMbasic Powered SBC's - Ajarnpa

Video: Tekst naar spraak Klik op een ARMbasic Powered UChip en andere ARMbasic Powered SBC's - Ajarnpa

Video: Tekst naar spraak Klik op een ARMbasic Powered UChip en andere ARMbasic Powered SBC's - Ajarnpa
Video: Tekst-naar-spraak-video’s maken met Clipchamp 2024, Juli-
Anonim
Tekst naar spraak Klik op een ARMbasic Powered UChip en andere ARMbasic Powered SBC's
Tekst naar spraak Klik op een ARMbasic Powered UChip en andere ARMbasic Powered SBC's
Tekst naar spraak Klik op een ARMbasic Powered UChip en andere ARMbasic Powered SBC's
Tekst naar spraak Klik op een ARMbasic Powered UChip en andere ARMbasic Powered SBC's
Tekst naar spraak Klik op een ARMbasic Powered UChip en andere ARMbasic Powered SBC's
Tekst naar spraak Klik op een ARMbasic Powered UChip en andere ARMbasic Powered SBC's

Inleiding: Goedendag. Mijn naam is Tod. Ik ben een lucht- en ruimtevaart- en defensieprofessional die ook een beetje een nerd in hart en nieren is.

Inspiratie: Afkomstig uit het tijdperk van dial-up BBS, 8-bit microcontrollers, Kaypro/Commodore/Tandy/TI-994A personal computers, toen Radio Shack-winkels er in overvloed waren (de goede oude tijd), was een van mijn eerste hobby-embedded projecten werken met een MEK6800D2 Motorola Microprocessor Training Kit, die ik had gekocht toen ik als co-op werkte in de MSU EE-labs (na het voltooien van mijn High School Electronics VoTech-training in Southern Lower MI). Dat project omvatte mijn prototyping van de Radio Shack SP0256 NARRATOR™ SPEECH PROCESSOR op de MEK6800D2, het aansluiten en programmeren van de 6800 om het pseudo-spraak te laten uitzenden (degenen die met de op SP0256 gebaseerde HW hebben gewerkt, weten precies waar ik op doel). Het werkte wonderwel en ik ging verder op het pad van het snijden van mijn tanden in embedded microcontrollers en assemblage. Na de middelbare school stond het leven in de weg, leger, oorlog, echtgenoten, kinderen, de civiele sector betreden, een carrière beginnen, enz. Alles droeg bij aan het opschorten van mijn hobby ten gunste van het nastreven van de inspanningen van het leven in een westerse cultuur (hier in de VS).

Spring 20 jaar vooruit, kom naar de onvermijdelijke tijd waarin de kinderen volwassen worden tot het punt dat de bruid en ik afleiding zijn, de hypotheek/voertuigen/schoolrekeningen langzaam worden afbetaald, de inkomsten beter worden met vorderingen, en ik heb genoeg over tijd tot het punt waarop ik me kon heroriënteren op een aantal egoïstische inspanningen, pakte ik het hobby-elektronica-optreden weer op. Hoe dan ook, gezien mijn afkomst en geschiedenis, zocht en vond ik een ontwikkelomgeving waar ik snel een band mee had - ARMbasic - BASIC was mijn eerste liefde en dit paste in het kader van mezelf niet alleen opnieuw acclimatiseren met programmeren, maar ook met hardware werken die veel meer was krachtiger dan waarmee ik decennia eerder was begonnen, en zo begon de reis.

Dit was omstreeks 2006-2009. Toen, om redenen die buiten onze controle liggen, veranderde het leven (zoals voor velen in die jaren). Hobby's opgeschort - focus op een nieuwe carrière, herstellende van financiële problemen (was zwaar gevestigd in het onroerendgoeddomein en we namen het in de korte broek en de youngins kwamen net op het punt waarop universiteitsfinanciering een noodzaak was). Kortom, problemen met het leven en de eerste wereld (we zijn echt gezegend, gezien de uitdagingen en zwoegen waar mensen in andere delen van de wereld dagelijks mee worstelen) manifesteerden zich en … de hobby werd opgeschort. In 2011-2012 pakte ik het weer even op en kreeg toen een nieuwe carrièreverandering te zien - de hobby werd weer opgeschort.

Nog een decennium vooruitspoelen en … ik ben terug en, God wil, hopelijk voor de duur (totdat ik dat spreekwoordelijke dutje doe en madeliefjes van onderaf omhoog duw). Dus, hier zijn we dan. Wow - Arduino (wat is dat rare woord?) had de markt bestormd. Makers?? Wat zijn ze in godsnaam?! …:) Mijn vrienden bij Coridium Corp (eigenaren van ARMbasic en ARM-gebaseerde microcontroller-ontwikkelborden) waren standvastig en trouw gebleven. Nu, in plaats van de LPC2xxx-reeks controllers, is er deze nieuwe (voor mij) entiteit van ARM, en Cortex M0/M3/M4, en Arduino, en … WOW! De cultuur is behoorlijk veranderd, en in veel opzichten. Peeps werken op afstand en zelfs wereldwijd samen. Hardware wordt verbazingwekkend snel en krachtig, en ARMbasic, gerijpt en standvastig gehard met werkgelegenheid in veel verschillende families van silicium, is iets moois voor mij en vele anderen.

Dus, een kort verhaal heel lang makend, kwam ik onlangs de TTS-klik van MikroElectronika tegen en voelde een vleugje nostalgie over me heen stromen. Had er een besteld binnen een paar minuten, en was de volgende dagen angstig totdat het apparaat in de hand arriveerde. Zo begint het verhaal…

Benodigdheden

  • 1 stuk MikroElectronika Text To Speech Click, bevat de Epson S1V30120 - de TTS ASIC van de module
  • 1 ea ARMbasic Target, vervult de rol van TTS Host
  • 1 stuk Uno Breakout Shield (of prototyping breadboard, of …)
  • 1 luidspreker per stuk, of een set luidsprekers suggereert pc-desktopluidsprekers met 1/8" TRS-stekker erop
  • 1 partij Prototyping waren draad, soldeer, flux, lont, soldeerbout, headers, IC sockets en dergelijke..
  • 1 partij Embedded Dev Tools DMM, Logic Probe, Logic Analyzer, Scope, etc. - voor nieuwe TTS Host MCU's

Stap 1: Hardware-interconnects

Hardware-interconnecties
Hardware-interconnecties
Hardware-interconnecties
Hardware-interconnecties
Hardware-interconnecties
Hardware-interconnecties

Om dit te repliceren met behulp van een ARMbasic-doel in een Uno-vormfactor, of met een Itaca uChip, zou men waarschijnlijk het beste gediend zijn door gebruik te maken van een prototype-schild, zoals ik heb gedaan in de bovenstaande afbeeldingen (gewone amazon-link)

Sommigen zullen de in elkaar gedraaide wire-wrap-draad zien en vragen zich af waarom - common-mode ruisonderdrukking is het eenvoudige antwoord. Ja, we hebben hier niet te maken met gebalanceerde signalen, maar ik dacht dat het geen kwaad kon (?) Dus deed ik dat toen ik de opbouw van het bord aan het doen was.

Het is een vrij goedaardig ontwerp. De afdrukken zijn hieraan gehecht, in de vorm van een afbeelding (AutoCAD 2D is wat ik het meest gewend ben - ik heb er tientallen jaren mee gewerkt in mijn dagelijkse werk - ik ben nog steeds mijn KiCAD-tanden aan het knippen en dit was een te eenvoudige poging om rechtvaardigen de leercurve als een eerste project in KiCAD). Hoe dan ook, ik heb ervoor gekozen om de uChip-socket rechtstreeks op het schild te monteren om een stand-alone use-case mogelijk te maken bij het gebruik van de uChip als host. Ik heb een JST toegevoegd om hem via de batterij van stroom te voorzien, mocht ik dat willen, en omdat ik een paar extra's heb, heb ik een Adafruit SWD Breakout gemaakt om me in staat te stellen mijn Segger J-Link EDU Debug Probe te gebruiken, mocht dat nodig zijn. Dat deed het niet, maar ik bewaar de SWD i'face erop voor gebruik bij toekomstige projecten.

Castellated betekent in deze context het afvijlen van de randen van de PCB, zodat de geplateerde doorgaande gaten werden gereduceerd tot halve cilinders, waardoor solderen op een dragende PCB mogelijk werd - in dit geval de shield breakout board. Ik heb ervoor gekozen om dit te doen omdat de platte fanout-gedeelten van het schild niet helemaal in lijn waren met de rijafstand tussen de twee koprijen op de SWD BOB. Een plat bestand uitgebroken en 5 minuten archiveren en probleem opgelost.

Stap 2: Programmeren en testen

Programmeren en testen
Programmeren en testen
Programmeren en testen
Programmeren en testen
Programmeren en testen
Programmeren en testen

Zodra de hardware is opgebouwd, moet er een volledige ring-out zijn om te valideren dat de bedrading goed is. Dan doe ik altijd een Power and Grounds check. Dit zorgt er niet alleen voor dat stroom en aarde zijn waar ze horen te zijn, maar dat alle andere aansluitingen die daar geen stroom/aarde zouden moeten hebben, dat ook niet doen. Het is geen vervelende taak bij een klein project als dit, maar bij grotere systemen-van-systemen is het, hoewel het inderdaad een vervelende stap is, absoluut noodzakelijk om ervoor te zorgen dat er geen sub-assemblages of aangesloten systemen worden uitgeschakeld door een domme fout die had kunnen en moeten worden gepakt. Ik krijg meestal het absolute minimum aan goederen bevestigd, zodat er stroom op het bord wordt gegenereerd en controleer vervolgens elke pin / aansluiting op stroom en aarde voordat ik subassemblages, chips, enz. Sluit, om ervoor te zorgen dat de stroom van het juiste niveau is (rekening houdend met niet-5V-tolerante apparaten/IO, 1v8- en 3v3-vereisten, enz.) en die aarde is waar het moet zijn en alleen waar het moet zijn. Ik ben getuige geweest van een cascade van storingen in een vliegtuig door mensen die er niet in slaagden de juiste pre-connect-controles uit te voeren. In één geval kostte het meer dan $ 100K aan LRU's - geen leuke tijd om de leiding te hebben over een project en om het in een oogwenk zijwaarts te laten gaan omdat iemand het proces heeft kortgesloten. Een ander ding waar ik me schuldig aan maak, is het doen van vervelende 'omgevingscontroles' - ervoor zorgen dat contacten/beëindigingen niet worden kortgesloten naar aangrenzende contacten/beëindigingen. Dit wordt van cruciaal belang als men te maken heeft met coaxiale assemblages, meeraderige/afgeschermde harnassen, enz. Ok, ik ben van de zeepkist af …

Zodra de veiligheid is verzekerd, sluit u dingen aan, zet u hem aan en begint u met het programmeren van de TTS Host (ARMbasic Target MCU) net zoals men zou doen met veel ingebouwde MCU-doelen. Ik heb een video opgenomen die de programmering en het eenvoudige gebruik van de TTS Click laat zien. Je kunt het hier bekijken.

De ARMbasic-broncode kan hier worden gedownload - een forumbericht met aanvullende details. Coridium heeft een blogpost over deze inspanningen geschreven, die u kunt bekijken door hier te klikken.

Stap 3: De bron wijzigen voor andere ARMbasic-doelen en verschillende overpeinzingen

De bron wijzigen voor andere ARMbasic-doelen en verschillende overpeinzingen
De bron wijzigen voor andere ARMbasic-doelen en verschillende overpeinzingen
De bron wijzigen voor andere ARMbasic-doelen en verschillende overpeinzingen
De bron wijzigen voor andere ARMbasic-doelen en verschillende overpeinzingen
De bron wijzigen voor andere ARMbasic-doelen en verschillende overpeinzingen
De bron wijzigen voor andere ARMbasic-doelen en verschillende overpeinzingen
De bron wijzigen voor andere ARMbasic-doelen en verschillende overpeinzingen
De bron wijzigen voor andere ARMbasic-doelen en verschillende overpeinzingen

Ik zal je niet lastigvallen met de stappen die nodig zijn om de broncode aan te passen om met andere ARMbasic-doelen te werken, behalve om aan te geven dat ik erover blijf doorzeuren in een overvloed aan broncode-opmerkingen daarin. Neem de tijd om het tts.bas-bestand te openen en lees welke wijzigingen nodig zijn als u ervoor kiest om de code over te zetten naar een andere ARMbasic-aangedreven controller.

Bijgevoegd zijn enkele afbeeldingen die ik heb gemaakt tijdens de ontwikkelcyclus om dit te laten werken.

Les geleerd:

  1. Als je een Logic Analyzer hebt met ongebruikte ingangen en extra doel-IO's hebt die niet worden gebruikt voor het werk dat voorhanden is, wees dan niet bang om die IO's te gebruiken als foutopsporingstools - een wiebelende IO op verschillende punten in de code kan zijn een enorme hulp bij het opsporen van wat wel en niet werkt zoals verwacht, om gekke timingproblemen te identificeren (dwz onderbrekingen die van invloed zijn op bit-banged seriële comms), en om in het algemeen een beter begrip te krijgen van uw inspanningen als geheel.
  2. Niet alle ARM-controllers zijn hetzelfde. Dit is duidelijk. Ik werd echter gebeten door de eerste ontwikkelaar te doen op een LPC1765 Coridium SuperPRO. Wat dit achteraf een slechte keuze maakte, is dat de implementatie van deze ARM-kern niet-woord-uitgelijnde toegang tot geheugen toestond. Bij het overzetten van de C-code naar ARMbasic ging het redelijk soepel totdat ik het probeerde te gebruiken met een SAMD21-doelwit - de hel brak los en de dingen waren ongelooflijk borked vanwege niet-uitgelijnde toegang bij het vullen van buffers, het manipuleren van vlaggen, het werken met de ARMbasic-versie van structuren/vakbonden die ik bedacht, enz. Het was een pijnlijke les. De take-away hier: als men draagbare code wil hebben, ontwikkelaar op het meest beperkende kandidaat-doel, alleen om ervoor te zorgen dat men niet wordt geconfronteerd met drama aan het einde van het project, wanneer men waarschijnlijk het meest opgewonden is om de vruchten van te gebruiken hun inspanningen..:)
  3. Het overzetten van C-code naar ARMbasic is NIET onmogelijk. Deze inspanning was grotendeels één gigantische evolutie van de porteringstraining. Als je de tijd neemt om de originele C-bronnen te vergelijken met de ARMbasic-code die ik heb gemaakt, zou je enkele ideeën moeten kunnen bedenken over het implementeren van dingen die mogelijk geen deel uitmaken van het kernontwerp van ARMbasic (d.w.z. structuren).
  4. Pak dit soort dingen aan in behapbare brokken. Standaard ben ik iemand die graag regelmatig bevrediging ziet. Het is niet waarschijnlijk dat een onderneming zoals deze porterings- en dev-inspanningen iets is dat in één nacht kan worden bereikt. Stel realistische doelen en werk daar naartoe, waarbij je probeert niet overweldigd te raken door 'het grote geheel'.
  5. Een Logic Analyzer was daarbij cruciaal. Ja, ik heb een DS-Logic+-eenheid voor het lagere middenbereik, maar ik kan met nadruk stellen dat een goedkope $ 12,50 24 MHz Bandwidth LA van Amazonia meer dan voldoende zou zijn geweest. Koppel dat aan Sigrok's PulseView (gratis) (decodeert protocol) en je hebt een zeer robuust systeem dat zou moeten werken in een groot aantal scenario's, zoals ik met dit project heb geprobeerd te ondernemen. Zorg ervoor dat u een apparaat koopt met testclips, of bestel testclips afzonderlijk, want ze zijn enorm (hoe Trumpfeldiaans) gunstig.
  6. Een eenvoudige logische sonde is ook een zeer nuttig hulpmiddel. Op de overzichtsfoto van de werkruimte zie je een oude Archer (Radio Shack) logische sonde in de rechter benedenhoek van de afbeelding. Ik was oprecht verrast om te ontdekken hoe nuttig zoiets is op een dagelijkse basis, zelfs met een goed uitgerust lab.

Ik heb hier misschien eerder naar gelinkt, maar ik kan het me niet herinneren en ben te lui om te kijken. Hier is een blogpost met een video van de TTS-module in actie (Itaca uChip die hem op dat moment host), en de ARMbasic Forum-post waar men de geporteerde ARMbasic-broncode kan downloaden.

Wees voorzichtig en veel plezier met hacken!

-MHz

Aanbevolen: