Indholdsfortegnelse:

Tekst til tale Klik på et ARMbasic Powered UChip og andre ARMbasic Powered SBC'er: 3 trin
Tekst til tale Klik på et ARMbasic Powered UChip og andre ARMbasic Powered SBC'er: 3 trin

Video: Tekst til tale Klik på et ARMbasic Powered UChip og andre ARMbasic Powered SBC'er: 3 trin

Video: Tekst til tale Klik på et ARMbasic Powered UChip og andre ARMbasic Powered SBC'er: 3 trin
Video: Oplæsning / Tekst til tale på iPhone og iPad - Ordtavlen 2024, Juli
Anonim
Tekst til tale Klik på et ARMbasic Powered UChip og andre ARMbasic Powered SBC'er
Tekst til tale Klik på et ARMbasic Powered UChip og andre ARMbasic Powered SBC'er
Tekst til tale Klik på et ARMbasic Powered UChip og andre ARMbasic Powered SBC'er
Tekst til tale Klik på et ARMbasic Powered UChip og andre ARMbasic Powered SBC'er
Tekst til tale Klik på et ARMbasic Powered UChip og andre ARMbasic Powered SBC'er
Tekst til tale Klik på et ARMbasic Powered UChip og andre ARMbasic Powered SBC'er

Intro: God dag. Jeg hedder Tod. Jeg er en luftfarts- og forsvarsprofessionel, der også er lidt af en nørde.

Inspiration: Fra en epoke med opkalds-BBS, 8-bit mikrokontroller, Kaypro/Commodore/Tandy/TI-994A personlige computere, da Radio Shack-butikkerne var rigelige (de gode dage), var et af mine første hobbyindlejrede projekter arbejder med et MEK6800D2 Motorola Microprocessor Training Kit, som jeg havde købt, mens jeg arbejdede som co-op på MSU EE labs (efter at have afsluttet min High School Electronics VoTech-uddannelse i Southern Lower MI). Dette projekt involverede min prototyping af Radio Shack SP0256 NARRATOR ™ TALEPROCESSOR på MEK6800D2, tilslutning og programmering af 6800 for at få den til at udsende pseudo-tale (dem, der har arbejdet med SP0256-baserede HW ved præcis, hvad jeg hentyder til). Det fungerede fantastisk, og jeg skred ned ad stien til at skære tænder i indlejrede mikrokontroller og samling. Efter gymnasiet kom livet i vejen, Militær, Krig, Ægtefæller, Børn, at komme ind i den civile sektor, starte en karriere osv. Tilføjede alle mine hylder min hobby til fordel for at forfølge livets bestræbelser i en vestlig kultur (her i USA).

Spring 20 år fremad og kommer til den uundgåelige tid, hvor børnene modnes til det punkt, at bruden og jeg er distraktioner, realkreditlån/køretøjer/kollegieregninger langsomt bliver betalt ned, indtjeningen bliver bedre med fremskridt og jeg har nok ekstra tid til det punkt, hvor jeg kunne begynde at fokusere på nogle egoistiske bestræbelser, tog jeg tilbage til hobbyelektronik -koncerten. Alligevel, i betragtning af min slægt og historie, søgte jeg og fandt et udviklingsmiljø, som jeg hurtigt bandt med - ARMbasic - BASIC var min første kærlighed, og dette passede regningen om ikke kun at genklamme mig selv til programmering, men at arbejde med hardware, der var vildt mere stærkere end det, jeg havde startet med årtier tidligere, og dermed begyndte rejsen.

Det var omkring 2006-2009. Så af årsager langt uden for vores kontrol ændrede livet sig (som det havde gjort for mange i disse år). Hobbyer blev lagt på hylden - fokus på en ny karriere, der kom sig efter finansielle kampe (var stærkt tilhørende ejendomsdomænet, og vi tog det i shortsene, og de unge var lige ved at nå det punkt, hvor college -finansiering var en nødvendighed). Grundlæggende manifesterede Life og First World-problemer (vi er virkelig velsignede, i betragtning af de udfordringer og slid, som folk i andre dele af verden kæmper med dagligt) sig selv og … hobbyen blev skrinlagt. Jeg tog kort tid op om det i 2011-2012-da blev jeg mødt med et andet karriereskift-hobby skrinlagt endnu engang.

Spol frem endnu et årti og … Jeg er tilbage og, Good Lord Willing, forhåbentlig i varigheden (indtil jeg tager den ordsprogede snavs lur og begynder at skubbe tusindfryd op fra neden). Så her er vi. Wow - Arduino (hvad er det for et underligt ord?) Havde stormet markedet. Skabere ?? Hvad pokker er de ?! …:) Mine venner hos Coridium Corp (indehavere af ARMbasic og ARM-baserede mikrokontroller dev boards) var forblevet faste og sande. Nu, i stedet for LPC2xxx -serien af controllere, er der denne nye (for mig) enhed af ARM og Cortex M0/M3/M4 og Arduino, og … WOW! Kulturen har ændret sig ganske lidt, og på mange måder en fantastisk måde. Peeps samarbejder eksternt og faktisk globalt. Hardware bliver forbløffende hurtig og kraftfuld, og ARMbasic, der er modnet og standhaftigt hærdet med beskæftigelse på tværs af mange forskellige familier af silicium, er en skønhed for mig og mange andre.

Så da jeg gjorde en novelle meget lang, faldt jeg for nylig over TTS -klikket af MikroElectronika og følte en vask af nostalgi flyde over mig. Havde en bestilt på få minutter, og var bekymret i løbet af de næste dage, indtil enheden kom i hånden. Derfor begynder historien …

Forbrugsvarer

  • 1 stk MikroElectronika Text To Speech Click, indeholder Epson S1V30120 - modulets TTS ASIC
  • 1 ea ARMbasic Target, der opfylder rollen som TTS Host
  • 1 ea Uno Breakout Shield (eller prototyper brødbræt, eller …)
  • 1 højttaler eller et sæt højttalere foreslår pc -stationære højttalere med 1/8 "TRS -stik derpå
  • 1 parti Prototypevarer tråd, lodning, flux, væge, loddejern, overskrifter, IC -stik og lignende..
  • 1 parti Embedded Dev Tools DMM, Logic Probe, Logic Analyzer, Scope osv. - til nye TTS Host MCU'er

Trin 1: Hardware -forbindelser

Hardware -forbindelser
Hardware -forbindelser
Hardware -forbindelser
Hardware -forbindelser
Hardware -forbindelser
Hardware -forbindelser

For at replikere dette ved hjælp af et ARMbasic -mål i en Uno -formfaktor eller med et Itaca uChip ville man sandsynligvis blive bedst tjent med at bruge et prototypeskærm, som jeg har gjort på ovenstående billeder (almindeligt amazon -link)

Nogle vil se den snoede trådtråd og spekulere på hvorfor-støjafvisning i almindelig tilstand er det enkle svar. Ja, vi har ikke at gøre med balancerede signaler her, men jeg regnede med, at det ikke kunne skade (?), Så jeg gjorde det, da jeg lavede opbygningen af tavlen.

Det er et temmelig godartet design. Udskrifterne er vedhæftet her i form af en grafik (AutoCAD 2D er det, jeg er mest vant til - efter at have arbejdet med det i årtier på mit daglige arbejde - jeg klipper stadig mine KiCAD -tænder, og dette var en for simpel indsats for at begrund læringskurven som et første projekt i KiCAD). Anyways, jeg valgte at montere uChip-stikket direkte på skjoldet for at muliggøre en enkeltstående case, når du bruger uChip som vært. Jeg tilføjede en JST til at drive den via batteri, hvis jeg skulle ønske det, og fordi jeg har et par ekstraudstyr, kastellerede jeg en Adafruit SWD Breakout, så jeg kunne bruge min Segger J-Link EDU Debug Probe, hvis behovet skulle opstå. Det gjorde det ikke, men jeg beholder SWD i'face derpå til brug med fremtidige projekter.

Castelleret betyder i denne sammenhæng at filme kanterne af PCB'et ned, så de belagte huller blev reduceret til halvcylindere, hvilket muliggjorde lodning på et bærende PCB - i dette tilfælde skjoldets udbrudskort. Jeg valgte at gøre dette, da flade-pack fanout-dele af skjoldet ikke var helt i overensstemmelse med rækkeafstanden mellem de to header-rækker på SWD BOB. Udbrud en flad fil og 5 minutters arkivering og problem løst.

Trin 2: Programmering og test

Programmering og test
Programmering og test
Programmering og test
Programmering og test
Programmering og test
Programmering og test

Når hardwaren er opbygget, skal der foretages en fuld ring-out for at validere, at ledningerne er gode. Derefter foretager jeg altid en kontrol af strøm og grunde. Dette sikrer ikke kun, at magt og jord er, hvor de skal være, men at nogen af de andre afslutninger, der ikke burde have strøm/jord der, ikke gør det. Det er ikke en kedelig opgave på et lille projekt som dette, men med større systemer-af-systemer er det, selv om det faktisk er et kedeligt trin, absolut nødvendigt for at sikre, at ingen underenheder eller tilsluttede systemer tages ud af en fjollet fejl, at kunne og burde have været fanget. Jeg får normalt det nøjeste minimum af varer tilsluttet, så der genereres strøm på tavlen, og kontrollerer derefter hver pin/termination for strøm og jord før tilslutning af undersamlinger, chips osv., Sørg for, at strømmen er på det korrekte niveau (i betragtning af ikke-5V-tolerante enheder/IO, 1v8 og 3v3 krav osv.), og den jord er, hvor den skal være, og kun hvor den skal være. Jeg har været vidne til en kaskade af fejl på et fly fra folk, der ikke har foretaget ordentlige forhåndstilslutninger. I et tilfælde tog det over $ 100K LRU'er - ikke en sjov tid at have ansvaret for et projekt og få det til at gå sidelæns på et øjeblik, fordi nogen kortsluttede processen. En anden ting, jeg er skyldig i, er at lave kedelige 'nærhedskontroller' - sørge for, at kontakter/afslutninger ikke er korte til tilstødende kontakter/afslutninger. Dette bliver kritisk, hvis man har at gøre med koaksialaggregater, multileder/afskærmede seler osv. Ok, jeg er væk fra sæbekassen …

Når sikkerheden er garanteret, skal du forbinde tingene, tænde den og derefter komme i gang med at programmere TTS -værten (ARMbasic Target MCU), ligesom man ville med mange indlejrede MCU -mål. Jeg optog en video, der viser programmeringen og enkel brug af TTS Click. Du kan se det her.

ARMbasic -kildekoden kan downloades herfra - et forumindlæg, der har yderligere detaljer. Coridium lavede et blogindlæg om disse bestræbelser, som du kan komme til ved at klikke her.

Trin 3: Ændring af kilden for andre ARMbasiske mål og forskellige overvejelser

Ændring af kilden for andre ARMbasiske mål og forskellige overvejelser
Ændring af kilden for andre ARMbasiske mål og forskellige overvejelser
Ændring af kilden for andre ARMbasiske mål og forskellige overvejelser
Ændring af kilden for andre ARMbasiske mål og forskellige overvejelser
Ændring af kilden for andre ARMbasiske mål og forskellige overvejelser
Ændring af kilden for andre ARMbasiske mål og forskellige overvejelser
Ændring af kilden for andre ARMbasiske mål og forskellige overvejelser
Ændring af kilden for andre ARMbasiske mål og forskellige overvejelser

Jeg vil ikke forklare dig de trin, der er nødvendige for at ændre kildekoden til at arbejde med andre ARMbasiske mål, bortset fra at angive, at jeg droner om at gøre det i en overflod af kildekodkommentarer deri. Tag dig tid til at åbne tts.bas-filen og læs om, hvilke ændringer der er nødvendige, hvis du vælger at overføre koden til en anden ARMbasic-drevet controller.

Vedhæftet her er nogle billeder, som jeg tog under udviklingscyklussen for at få dette til at fungere.

Erfaringer:

  1. Hvis du har en Logic Analyzer med ubrugte input og har ekstra mål -IO'er, der ikke bruges til arbejdet, skal du ikke være bange for at bruge disse IO'er som fejlfindingsværktøjer - sprinkling af en IO på forskellige punkter i koden kan være en kæmpe hjælp til at spore, hvad der fungerer og ikke fungerer som forventet, til at identificere fjollede timingproblemer (dvs. afbrydelser, der påvirker bit-banged serielle kommoder), og for generelt at få en bedre forståelse af din indsats som helhed.
  2. Ikke alle ARM -controllere er ens. Dette er indlysende. Jeg blev dog lidt ved at lave den første dev på en LPC1765 Coridium SuperPRO. Set i bakspejlet er det, der gjorde dette til et dårligt valg, at implementeringen af denne ARM-kerne tillod ikke-ordjusteret adgang til hukommelse. Da jeg overførte C -koden til ARMbasic, gik det ret problemfrit, indtil jeg forsøgte at bruge det med et SAMD21 -mål - alt helvede brød løs, og tingene blev boret ud af tro på grund af ujævn adgang, når man fyldte buffere, manipulerede flag, arbejdede med ARMbasic -versionen af strukturer/fagforeninger, som jeg fandt på osv. Det var en smertefuld lektion. Take away her: Hvis man ønsker at have en bærbar kode, skal man have det mest restriktive kandidatmål, bare for at sikre, at man ikke står over for drama i slutningen af projektet, når man sandsynligvis er mest begejstret for at anvende frugterne af deres indsats..:)
  3. At overføre C -kode til ARMbasic er IKKE umuligt. Denne indsats var stort set en gigantisk porting -træningsudvikling. Hvis man tager sig tid til at sammenligne de originale C -kilder med den ARMbasic -kode, jeg lavede, skulle man kunne komme væk med nogle ideer om, hvordan man implementerer ting, som måske ikke er en del af ARMbasics kernedesign (dvs. strukturer).
  4. Tag tingene som denne i håndterbare bidder. Som standard er jeg en, der gerne ser tilfredsstillelse regelmæssigt. En indsats som disse porting- og dev -bestræbelser vil sandsynligvis ikke være noget at være i stand til at opnå på en enkelt nat. Sæt realistiske mål og arbejd mod det samme, og prøv ikke at blive overvældet af 'det store billede'.
  5. En logisk analysator var afgørende i denne indsats. Ja, jeg har en DS-Logic+ -enhed med lavere mellemklasse, men jeg kan med eftertryk konstatere, at en billig $ 12,50 24MHz båndbredde LA fra Amazonia ville have mere end tilstrækkeligt. Par det med Sigroks PulseView (gratis) (udfører afkodning af protokoller), og man vil have et meget robust system, der bør fungere i en lang række scenarier, f.eks. Hvad jeg forsøgte at foretage med dette projekt. Sørg for at få en enhed, der har testklip, eller bestil testklip separat, da de er enormt (hvor Trumpfeldiansk) gavnlig.
  6. En simpel logisk sonde er også et meget nyttigt værktøj. På oversigtsbilledet af arbejdsområdet vil du bemærke en gammel Archer (Radio Shack) logikprobe i nederste højre hjørne af billedet. Jeg blev virkelig overrasket over at finde ud af, hvor nyttigt sådan noget er til daglig, selv med et veludstyret laboratorium.

Jeg har muligvis linket til disse tidligere i dette, men jeg kan ikke huske det og er for doven til at se. Her er et blogindlæg, der har en video af TTS -modulet i aktion (Itaca uChip var vært for det på det tidspunkt), og ARMbasic Forum -indlægget, hvor man kan downloade den portede ARMbasic -kildekode.

Pas på og have det sjovt med at hacke væk!

-MHz

Anbefalede: