Innehållsförteckning:

Text till tal Klicka på ett ARMbasic Powered UChip och andra ARMbasic Powered SBC: 3 steg
Text till tal Klicka på ett ARMbasic Powered UChip och andra ARMbasic Powered SBC: 3 steg

Video: Text till tal Klicka på ett ARMbasic Powered UChip och andra ARMbasic Powered SBC: 3 steg

Video: Text till tal Klicka på ett ARMbasic Powered UChip och andra ARMbasic Powered SBC: 3 steg
Video: Hjälpmedelsappar, text till tal 2024, Juli
Anonim
Text till tal Klicka på ett ARMbasic Powered UChip och andra ARMbasic Powered SBC: er
Text till tal Klicka på ett ARMbasic Powered UChip och andra ARMbasic Powered SBC: er
Text till tal Klicka på ett ARMbasic Powered UChip och andra ARMbasic Powered SBC: er
Text till tal Klicka på ett ARMbasic Powered UChip och andra ARMbasic Powered SBC: er
Text till tal Klicka på ett ARMbasic Powered UChip och andra ARMbasic Powered SBC: er
Text till tal Klicka på ett ARMbasic Powered UChip och andra ARMbasic Powered SBC: er

Intro: God dag. Jag heter Tod. Jag är en flyg- och försvarsproffs som också är lite av en nörd i hjärtat.

Inspiration: Kommer från epoken med uppringda BBS, 8-bitars mikrokontroller, Kaypro/Commodore/Tandy/TI-994A persondatorer, när Radio Shack-butikerna var rikliga (de goda ole dagarna), var ett av mina första hobbyinbäddade projekt arbeta med ett MEK6800D2 Motorola Microprocessor Training Kit, som jag hade köpt när jag arbetade som co-op på MSU EE labs (efter att ha avslutat min High School Electronics VoTech-utbildning i södra Lower MI). Det projektet innebar att jag prototypade Radio Shack SP0256 NARRATOR ™ SPEECH PROCESSOR på MEK6800D2, kopplade den och programmerade 6800 för att få den att avge pseudotal (de som har arbetat med SP0256-baserade HW vet exakt vad jag syftar på). Det fungerade fantastiskt och jag gick vidare på vägen för att skära tänderna i inbyggda mikrokontroller och montering. Efter gymnasiet kom livet i vägen, militär, krig, makar, barn, att komma in i den civila sektorn, starta en karriär osv. Allt som gjorde att jag fick hylla min hobby till förmån för att driva livets strävanden i en västerländsk kultur (här i USA).

Hoppa framåt 20 år, kommer till den oundvikliga tiden då barnen mognar till den grad att bruden och jag är distraktioner, inteckningar/fordon/högskoloräkningar sakta betalas ner, intäkterna blir bättre med framsteg och jag har tillräckligt med extra tid till den punkt där jag kunde börja fokusera på några själviska strävanden, tog jag tillbaka på hobbyelektronikspelningen. Hur som helst, med tanke på min härstamning och historia, letade jag efter och hittade en utvecklingsmiljö som jag snabbt band med - ARMbasic - BASIC var min första kärlek och detta passade räkningen att inte bara reaklimera mig själv till programmering, utan att arbeta med hårdvara som var mycket mer kraftfullare än vad jag hade börjat med decennier tidigare, och därmed började resan.

Detta var cirka 2006-2009. Sedan, av skäl långt utanför vår kontroll, förändrades livet (som det hade för många under dessa år). Hobbies hyllas - fokusera på en ny karriär, återhämta sig från finansiella kampar (var starkt tillhörande fastighetsdomänen och vi tog det i shortsen och ungdomarna var precis på väg att College -finansiering var en nödvändighet). I grund och botten manifesterade sig livs- och förstvärldsproblemen (vi är verkligen välsignade, med tanke på de utmaningar och möda som människor i andra delar av världen kämpar med dagligen) och … hobbyen fick skrinläggas. Jag tog kort upp det 2011-2012-då möttes jag av ett nytt karriärbyte-hobbyen stängdes igen.

Snabbspola fram ytterligare ett decennium och … Jag är tillbaka och, Herre villig, förhoppningsvis under hela tiden (tills jag tar den ordspråkliga smutssviten och börjar trycka upp prästkragar uppifrån). Så här är vi. Wow - Arduino (vad är det för konstiga ord?) Hade stormat marknaden. Tillverkare ?? Vad fan är de ?! …:) Mina vänner på Coridium Corp (innehavare av ARMbasic och ARM-baserade mikrokontroller dev-kort) hade förblivit stadiga och sanna. Nu, i stället för LPC2xxx -serien av styrenheter, finns det denna nya (för mig) enhet av ARM, och Cortex M0/M3/M4, och Arduino, och … WOW! Kulturen har förändrats ganska mycket, och på många bra sätt. Peeps samarbetar på distans och faktiskt globalt. Hårdvaran blir förvånansvärt snabb och kraftfull, och ARMbasic, som har mognat och stadigt härdat med sysselsättning i många olika kiselfamiljer, är en skönhet för mig och många andra.

Så när jag gjorde en novell väldigt lång, snubblade jag nyligen över TTS -klicket från MikroElectronika och kände hur en nostalgitvätt flöt över mig. Hade en beställt på ett sätt i minuter och var orolig under de kommande dagarna tills enheten kom till hands. Därför börjar historien …

Tillbehör

  • 1 ea MikroElectronika Text To Speech Click, innehåller Epson S1V30120 - modulens TTS ASIC
  • 1 ea ARMbasic Target, som fyller rollen som TTS Host
  • 1 ea Uno Breakout Shield (eller prototypning av brödbräda, eller …)
  • En högtalare eller en uppsättning högtalare föreslår datorns högtalare med 1/8 "TRS -kontakt på den
  • 1 parti Prototypvaror tråd, lödning, flussmedel, veke, lödkolv, huvud, IC -uttag och liknande..
  • 1 parti Embedded Dev Tools DMM, Logic Probe, Logic Analyzer, Scope, etc. - för nya TTS Host MCU: er

Steg 1: Hårdvaruanslutningar

Hårdvaruanslutningar
Hårdvaruanslutningar
Hårdvaruanslutningar
Hårdvaruanslutningar
Hårdvaruanslutningar
Hårdvaruanslutningar

För att replikera detta med ett ARMbasic -mål i en Uno -formfaktor, eller med ett Itaca uChip, är det troligtvis bäst att använda sig av en prototypsköld, som jag har gjort på ovanstående bilder (vanlig Amazon -länk)

Vissa kommer att se den tvinnade trådtråden och undra varför-brusavvisning i vanligt läge är det enkla svaret. Ja, vi har inte att göra med balanserade signaler här, men jag tänkte att det inte kan skada (?) Så jag gjorde det när jag byggde upp kortet.

Det är en ganska godartad design. Utskrifterna bifogas här, i form av en grafik (AutoCAD 2D är det jag är mest van vid - efter att ha jobbat med det i decennier på mitt dagliga jobb - jag skär fortfarande mina KiCAD -tänder och det var ett för enkelt försök att motivera inlärningskurvan som ett första projekt i KiCAD). Hur som helst valde jag att montera uChip-uttaget direkt på skölden för att möjliggöra ett fristående användningsfall när du använder uChip som värd. Jag lade till en JST för att driva den via batteri, om jag skulle vilja göra det, och eftersom jag har några extrafunktioner, kastellerade jag en Adafruit SWD Breakout för att göra det möjligt för mig att använda min Segger J-Link EDU Debug Probe, om behovet uppstår. Det gjorde det inte, men jag behåller SWD i'face där för användning med framtida projekt.

Castellated innebär i detta sammanhang att fila ner kanterna på kretskortet så att de pläterade genomgående hålen reducerades till halvcylindrar, vilket möjliggör lödning på ett bärande kretskort - i detta fall sköldbrottskortet. Jag valde att göra detta eftersom flat-pack fanout-delar av skölden inte riktigt anpassade sig till radavståndet mellan de två rubrikraderna på SWD BOB. Bröt ut en platt fil och 5 minuters arkivering och problemet löst.

Steg 2: Programmering och testning

Programmering och testning
Programmering och testning
Programmering och testning
Programmering och testning
Programmering och testning
Programmering och testning

När hårdvaran har byggts upp måste det ringas ut fullständigt för att bekräfta att ledningarna är bra. Sedan gör jag alltid en Power and Grounds -kontroll. Detta säkerställer inte bara att Power och Ground är där de ska vara, utan att någon av de andra avslutningarna som inte borde ha kraft/jord där inte gör det. Det är inte en tråkig uppgift för ett litet projekt som detta, men med större system-av-system är det, trots att det verkligen är ett tråkigt steg, absolut nödvändigt för att säkerställa att inga underenheter eller anslutna system tas ut av ett dumt misstag som kunde och borde ha fångats. Jag brukar få det minsta antalet varor kopplade så att det genereras ström på brädet och kontrollera sedan varje stift/avslutning för ström och jord innan jag kopplar in underenheter, chips, etc., så att strömmen är på rätt nivå (med tanke på icke-5V-toleranta enheter/IO, 1v8 och 3v3 krav, etc.) och den marken är där den behöver vara och bara där den behöver vara. Jag har bevittnat en kaskad av misslyckanden på ett flygplan från människor som inte har gjort korrekta förbindelsekontroller. I ett fall tog det ut över 100 000 dollar LRU - inte en rolig tid att vara ansvarig för ett projekt och att få det att gå åt sidan på ett ögonblick eftersom någon kortslutit processen. En annan sak som jag är skyldig till är att göra tråkiga”närhetskontroller” - se till att kontakter/uppsägningar inte kortas till angränsande kontakter/uppsägningar. Detta blir kritiskt om man har att göra med koaxialaggregat, flerledare/skärmade selar etc. Ok, jag är borta från tvålådan …

När säkerheten är säker, koppla ihop saker, slå på den och börja sedan med att programmera TTS -värden (ARMbasic Target MCU) precis som med många inbäddade MCU -mål. Jag spelade in en video som visar programmeringen och enkel användning av TTS Click. Du kan se den här.

ARMbasic -källkoden kan laddas ner härifrån - ett foruminlägg som har ytterligare detaljer. Coridium gjorde ett blogginlägg om dessa insatser, som du kan komma till genom att klicka här.

Steg 3: Ändra källan för andra ARMbasiska mål och olika funderingar

Ändra källan för andra ARMbasiska mål och olika funderingar
Ändra källan för andra ARMbasiska mål och olika funderingar
Ändra källan för andra ARMbasiska mål och olika funderingar
Ändra källan för andra ARMbasiska mål och olika funderingar
Ändra källan för andra ARMbasiska mål och olika funderingar
Ändra källan för andra ARMbasiska mål och olika funderingar
Ändra källan för andra ARMbasiska mål och olika funderingar
Ändra källan för andra ARMbasiska mål och olika funderingar

Jag kommer inte att beskriva dig med de steg som behövs för att ändra källkoden för att fungera med andra ARMbasiska mål, annat än att indikera att jag drönar om att göra det i ett överflöd av källkodskommentarer däri. Ta dig tid att öppna tts.bas-filen och läs om vilka ändringar som behövs om du väljer att överföra koden till en annan ARMbasic-driven styrenhet.

Bifogade här några bilder som jag tog under utvecklingscykeln för att få detta att fungera.

Lärdomar:

  1. Om du har en Logic Analyzer med oanvända ingångar och har extra mål -IO: er som inte används för arbetet, var inte rädd för att använda dessa IO som felsökningsverktyg - sprinkling av en IO på olika punkter i koden kan vara en stor hjälp med att spåra vad som fungerar och inte fungerar som förväntat, för att identifiera fåniga timingproblem (dvs avbrott som påverkar serier som är lite slagna) och att överlag få en bättre förståelse för dina insatser som helhet.
  2. Alla ARM -kontroller är inte desamma. Detta är uppenbart. Jag blev dock lite av att göra den första utvecklingen på en LPC1765 Coridium SuperPRO. I efterhand, vad som gjorde detta till ett dåligt val är att denna ARM-kärns implementering tillät icke-ordinriktad åtkomst till minne. När jag överförde C -koden till ARMbasic gick det ganska smidigt tills jag försökte använda det med ett SAMD21 -mål - allt helvete gick sönder och saker var otänkbara på grund av ojämn åtkomst när man fyllde buffertar, manipulerade flaggor, arbetade med ARMbasic -versionen av strukturer/fackföreningar som jag kom på, etc. Det var en smärtsam lektion. Ta bort här: Om man vill ha bärbar kod, utveckla det mest restriktiva kandidatmålet, bara för att säkerställa att man inte ställs inför drama i slutet av projektet, när man sannolikt är mest upphetsad att använda frukterna av deras ansträngningar..:)
  3. Att överföra C -kod till ARMbasic är INTE omöjligt. Denna ansträngning var till stor del en gigantisk portportträningsutveckling. Om man tar sig tid att jämföra de ursprungliga C -källorna med den ARMbasic -kod jag skapade, borde man kunna komma med några idéer om hur man implementerar saker som kanske inte är en del av ARMbasics kärndesign (dvs. strukturer).
  4. Ta tag i sådana här saker i hanterbara bitar. Som standard är jag en som gillar att se tillfredsställelse regelbundet. En strävan som dessa port- och dev -insatser kommer sannolikt inte att vara något att kunna åstadkomma på en enda natt. Sätt upp realistiska mål och arbeta mot samma sak, försök att inte bli överväldigad av "den stora bilden".
  5. En logisk analysator var avgörande för detta arbete. Ja, jag har en DS-Logic+ -enhet med lägre medelklass, men jag kan med eftertryck konstatera att en billig $ 12,50 24MHz bandbredd LA från Amazonia skulle ha mer än räckt. Koppla ihop det med Sigroks PulseView (gratis) (gör avkodning av protokoll) och ett kommer att ha ett mycket robust system som borde fungera i en mängd olika scenarier, till exempel vad jag försökte göra med detta projekt. Se till att skaffa en enhet som har testklipp, eller beställ testklipp separat, eftersom de är enormt fördelaktiga (hur Trumpfeldian).
  6. En enkel logisk sond är också ett mycket användbart verktyg. På översiktsbilden av arbetsytan kommer du att notera en gammal Archer (Radio Shack) logikprob i bildens nedre högra hörn. Jag blev verkligen förvånad över att hitta hur användbart något sådant är dagligen, även med ett välutrustat labb.

Jag kanske har länkat till dessa tidigare i det här men jag kommer inte ihåg och är för lat för att titta. Här är ett blogginlägg som har en video av TTS -modulen i funktion (Itaca uChip värd den vid den tiden) och ARMbasic Forum -inlägget där man kan ladda ner den portade ARMbasic -källkoden.

Var försiktig och ha kul med att hacka iväg!

-MHz

Rekommenderad: