Innholdsfortegnelse:

Tekst til tale Klikk på et ARMbasisk drevet UChip og andre ARMbasisk drevne SBC: 3 trinn
Tekst til tale Klikk på et ARMbasisk drevet UChip og andre ARMbasisk drevne SBC: 3 trinn

Video: Tekst til tale Klikk på et ARMbasisk drevet UChip og andre ARMbasisk drevne SBC: 3 trinn

Video: Tekst til tale Klikk på et ARMbasisk drevet UChip og andre ARMbasisk drevne SBC: 3 trinn
Video: Полное руководство по Google Forms - универсальный инструмент для опросов и сбора данных онлайн! 2024, Juli
Anonim
Tekst til tale Klikk på et ARMbasisk drevet UChip og andre ARMbasisk drevne SBCer
Tekst til tale Klikk på et ARMbasisk drevet UChip og andre ARMbasisk drevne SBCer
Tekst til tale Klikk på et ARMbasisk drevet UChip og andre ARMbasisk drevne SBC -er
Tekst til tale Klikk på et ARMbasisk drevet UChip og andre ARMbasisk drevne SBC -er
Tekst til tale Klikk på et ARMbasisk drevet UChip og andre ARMbasisk drevne SBCer
Tekst til tale Klikk på et ARMbasisk drevet UChip og andre ARMbasisk drevne SBCer

Intro: God dag. Jeg heter Tod. Jeg er en luftfarts- og forsvarspersonell som også er litt av en nerd.

Inspirasjon: Fra en epoke med oppringt BBS, 8-biters mikrokontrollere, Kaypro/Commodore/Tandy/TI-994A personlige datamaskiner, da Radio Shack-butikkene var mange (de gode dagene), var et av mine første hobbyintegrerte prosjekter jobbet med et MEK6800D2 Motorola mikroprosessoropplæringssett, som jeg hadde kjøpt mens jeg jobbet som et samarbeid på MSU EE-laboratoriene (etter å ha fullført min High School Electronics VoTech-opplæring i Southern Lower MI). Det prosjektet innebar at jeg prototyper Radio Shack SP0256 NARRATOR ™ TALEPROSESSOR på MEK6800D2, kobler den til og programmerer 6800 for å få den til å avgi pseudo-tale (de som har jobbet med SP0256-baserte HW vet nøyaktig hva jeg henviser til.). Det fungerte fantastisk, og jeg gikk nedover banen for å kutte tennene i innebygde mikrokontrollere og montering. Etter videregående gikk livet i veien, militær, krig, ektefeller, barn, inn i sivilt sektor, en karriere osv., Alt sammen bidro til at jeg hyllet hobbyen min til fordel for å forfølge livets bestrebelser i en vestlig kultur (her i USA).

Hopp fremover i 20 år, og kom til den uunngåelige tiden hvor barna modnes til det punktet at bruden og jeg er distraksjoner, boliglånet/kjøretøyene/høyskolene blir sakte betalt ned, inntektene blir bedre med fremskritt og jeg har nok ekstra tid til det punktet hvor jeg kunne begynne å fokusere på noen egoistiske bestrebelser, tok jeg opp igjen på hobbyelektronikk -konserten. Uansett, gitt min avstamning og historie, søkte jeg og fant et utviklingsmiljø som jeg raskt ble knyttet til - ARMbasic - BASIC var min første kjærlighet, og dette passet regningen om ikke bare å re -klimatisere meg selv til programmering, men å jobbe med maskinvare som var mye mer kraftigere enn det jeg hadde startet med tiår tidligere, og dermed begynte reisen.

Dette var rundt 2006-2009. Da, av grunner langt utenfor vår kontroll, endret livet seg (slik det hadde gjort for mange i løpet av disse årene). Hobbyer skrinlagt - fokus på en ny karriere, gjenoppretting fra økonomiske kamper (var tungt knyttet til eiendomsområdet, og vi tok det i shortsen og ungdommene var akkurat på det punktet hvor høyskolefinansiering var en nødvendighet). I utgangspunktet manifesterte liv og første verden problemer (vi er virkelig velsignet, med tanke på utfordringene og sliten folk i andre deler av verden sliter med daglig) seg … og hobbyen ble skrinlagt. Jeg tok kort opp det på nytt i 2011-2012-da ble jeg møtt med et annet karriereskifte-hobbyen skrinlagt igjen.

Spol fremover et tiår til og jeg er tilbake og, Herre villig, forhåpentligvis så lenge jeg tar den ordspråklige smussluken og begynner å skyve tusenfryd opp nedenfra. Så, her er vi. Wow - Arduino (hva er det rare ordet?) Hadde stormet markedet. Skapere ?? Hva faen er de ?! …:) Mine venner i Coridium Corp (innehaverne av ARMbasic og ARM-baserte mikrokontrollerutviklingskort) hadde holdt seg faste og sanne. Nå, i stedet for LPC2xxx -serien med kontrollere, er det denne nye (for meg) enheten til ARM, og Cortex M0/M3/M4, og Arduino, og … WOW! Kulturen har forandret seg ganske mye, og på mange flotte måter. Peeps samarbeider eksternt og faktisk globalt. Maskinvare blir utrolig rask og kraftig, og ARMbasic, etter å ha modnet og hardt forherdet med sysselsetting på tvers av mange forskjellige silisiumfamilier, er en skjønnhet for meg og mange andre.

Så da jeg gjorde en novelle veldig lang, snublet jeg nylig over TTS -klikket av MikroElectronika og kjente en vask av nostalgi flyte over meg. Hadde en bestilt på en måte i minutter, og var engstelig de neste dagene til enheten kom i hånden. Derfor begynner historien …

Rekvisita

  • 1 ea MikroElectronika Text To Speech Click, inneholder Epson S1V30120 - modulens TTS ASIC
  • 1 ea ARMbasic Target, som fyller rollen som TTS Host
  • 1 ea Uno Breakout Shield (eller prototyping av brødbrett, eller …)
  • En høyttaler eller et sett med høyttalere foreslår PC -stasjonære høyttalere med 1/8 "TRS -plugg på den
  • 1 parti Prototyping av varer wire, loddetinn, fluss, veke, loddejern, overskrifter, IC -stikkontakter og lignende.
  • 1 parti Embedded Dev Tools DMM, Logic Probe, Logic Analyzer, Scope, etc. - for nye TTS Host MCUer

Trinn 1: Maskinvarekoblinger

Maskinvarekoblinger
Maskinvarekoblinger
Maskinvarekoblinger
Maskinvarekoblinger
Maskinvarekoblinger
Maskinvarekoblinger

For å replikere dette ved hjelp av et ARMbasisk mål i en Uno -formfaktor, eller med et Itaca uChip, vil en sannsynligvis være best tjent med å bruke et prototypeskjold, som jeg har gjort på bildene ovenfor (vanlig Amazon -lenke)

Noen vil se den sammenviklede trådtråden og lure på hvorfor-støyavvisning i vanlig modus er det enkle svaret. Ja, vi har ikke å gjøre med balanserte signaler her, men jeg skjønte at det ikke kunne skade (?) Så jeg gjorde det da jeg gjorde oppbyggingen av brettet.

Det er en ganske godartet design. Utskriftene er vedlagt her, i form av en grafikk (AutoCAD 2D er det jeg er mest vant til - etter å ha jobbet med det i flere tiår på min daglige jobb - jeg kutter fortsatt KiCAD -tennene mine, og dette var et for enkelt forsøk på å begrunn læringskurven som et første prosjekt i KiCAD). Uansett, jeg valgte å montere uChip-kontakten direkte på skjoldet for å muliggjøre en frittstående brukstilfelle når du bruker uChip som vert. Jeg la til en JST for å drive den via batteri, skulle jeg ønske å gjøre det, og fordi jeg har noen få tillegg, kastellerte jeg en Adafruit SWD Breakout slik at jeg kunne bruke min Segger J-Link EDU Debug Probe, hvis behovet skulle oppstå. Det gjorde det ikke, men jeg beholder SWD i'face for bruk med fremtidige prosjekter.

Castellated betyr i denne sammenheng å fille ned kantene på PCB slik at de belagte hullene ble redusert til halvsylindere, noe som muliggjorde lodding på et bærende PCB - i dette tilfellet skjoldet. Jeg valgte å gjøre dette ettersom flat-pack fanout-delene av skjoldet ikke helt stemte overens med radavstanden mellom de to topptekstene på SWD BOB. Brøt ut en flat fil og 5 minutter med arkivering og problemet løst.

Trinn 2: Programmering og testing

Programmering og testing
Programmering og testing
Programmering og testing
Programmering og testing
Programmering og testing
Programmering og testing

Når maskinvaren er bygget opp, må det foretas en full ring-out for å bekrefte at ledningene er gode. Deretter gjør jeg alltid en Power and Grounds -sjekk. Dette sikrer ikke bare at makt og grunn er der de skal være, men at noen av de andre avslutningene som ikke burde ha kraft/jord der ikke gjør det. Det er ikke en kjedelig oppgave på et lite prosjekt som dette, men med større systemer-av-systemer er det, selv om det faktisk er et kjedelig skritt, absolutt nødvendig for å sikre at ingen underenheter eller tilkoblede systemer blir tatt ut av en dum feil at kunne og burde blitt fanget. Jeg får vanligvis det minste minimumet av varer festet slik at det genereres strøm på brettet og kontrollerer deretter hver pinne/avslutning for strøm og jord før jeg kobler til underenheter, chips, etc., og sørger for at strømmen er på riktig nivå (med tanke på ikke-5V-tolerante enheter/IO, 1v8 og 3v3 krav, etc.) og den bakken er der den trenger å være og bare der den trenger å være. Jeg har vært vitne til en kaskade av feil på et fly fra mennesker som ikke klarer å gjøre ordentlig forhåndskontroll. I ett tilfelle tok det over $ 100 000 LRUer - ikke en morsom tid å ha ansvaret for et prosjekt og få det til å gå sidelengs på et øyeblikk fordi noen kortsluttet prosessen. En annen ting jeg er skyldig i er å gjøre kjedelige 'nærhetskontroller' - sørge for at kontakter/avslutninger ikke blir kortsluttet til tilstøtende kontakter/avslutninger. Dette blir kritisk hvis man har å gjøre med koaksialaggregater, flerledere/skjermede seler, etc. Ok, jeg er utenfor såpeboksen …

Når sikkerheten er garantert, kobler du til ting, slår på den og starter deretter programmeringen av TTS Host (ARMbasic Target MCU) akkurat som med mange innebygde MCU -mål. Jeg tok opp en video som viser programmeringen og enkel bruk av TTS Click. Du kan se den her.

Den ARMbasiske kildekoden kan lastes ned herfra - et foruminnlegg som har ytterligere detaljer. Coridium skrev et blogginnlegg om denne innsatsen, som du kan komme til ved å klikke her.

Trinn 3: Endring av kilden for andre ARMbasiske mål og ulike musings

Endring av kilden for andre ARMbasiske mål og forskjellige tanker
Endring av kilden for andre ARMbasiske mål og forskjellige tanker
Endring av kilden for andre ARMbasiske mål og forskjellige tanker
Endring av kilden for andre ARMbasiske mål og forskjellige tanker
Endring av kilden for andre ARMbasiske mål og forskjellige tanker
Endring av kilden for andre ARMbasiske mål og forskjellige tanker
Endring av kilden for andre ARMbasiske mål og forskjellige tanker
Endring av kilden for andre ARMbasiske mål og forskjellige tanker

Jeg vil ikke forklare deg trinnene som er nødvendige for å endre kildekoden for å fungere med andre ARMbasiske mål, annet enn å indikere at jeg droner om å gjøre det i en overflod av kildekodkommentarer der. Ta deg tid til å åpne tts.bas-filen og les om hvilke endringer som er nødvendige hvis du velger å overføre koden til en annen ARMbasic-drevet kontroller.

Vedlagt her er noen bilder jeg tok under utviklingssyklusen for å få dette til å fungere.

Lærdommer:

  1. Hvis du har en Logic Analyzer med ubrukte innganger og har ekstra mål -IOer som ikke brukes til arbeidet, ikke vær redd for å bruke disse IO -ene som feilsøkingsverktøy - sprinkling av en IO på forskjellige punkter i koden kan være en enorm hjelp til å spore opp hva som fungerer og ikke fungerer som forventet, for å identifisere tøffe timingproblemer (dvs. avbrudd som påvirker serier som er litt slående), og for å få en bedre forståelse av din innsats som helhet.
  2. Ikke alle ARM -kontrollere er like. Dette er åpenbart. Imidlertid ble jeg litt ved å gjøre den første utviklingen på en LPC1765 Coridium SuperPRO. I ettertid er det som gjorde dette til et dårlig valg at implementeringen av denne ARM-kjernen tillot ikke-ordjustert tilgang til minne. Da jeg overførte C -koden til ARMbasic, gikk ting ganske greit til jeg prøvde å bruke den med et SAMD21 -mål - alt helvete brøt løs og ting ble borte utover tro på grunn av ujustert tilgang ved fylling av buffere, manipulering av flagg, arbeid med ARMbasic -versjonen av strukturer/fagforeninger som jeg fant på osv. Det var en smertefull leksjon. Ta bort her: Hvis man ønsker å ha bærbar kode, utvikle seg på det mest restriktive kandidatmålet, bare for å sikre at man ikke blir møtt med drama i slutten av prosjektet, når man sannsynligvis er mest spent på å bruke fruktene av innsatsen deres..:)
  3. Portering av C -kode til ARMbasic er IKKE umulig. Denne innsatsen var i stor grad en gigantisk porting trening evolusjon. Hvis man tar seg tid til å sammenligne de originale C -kildene med ARMbasic -koden jeg laget, bør man kunne komme med noen ideer om hvordan man implementerer ting som kanskje ikke er en del av ARMbasics kjernedesign (dvs. strukturer).
  4. Ta tak i slike ting i håndterbare biter. Som standard er jeg en som liker å se tilfredsstillelse med jevne mellomrom. Et forsøk som disse porting- og dev -innsatsene er sannsynligvis ikke noe å være i stand til å oppnå på en enkelt natt. Sett deg realistiske mål og arbeid mot det samme, og prøv å ikke bli overveldet av "det store bildet".
  5. En logisk analysator var avgjørende i denne innsatsen. Ja, jeg har en DS-Logic+ -enhet med lavere mellomtoner, men jeg kan med sikkerhet si at en billig $ 12,50 24MHz båndbredde LA fra Amazonia ville ha mer enn nok. Koble det til Sigroks PulseView (gratis) (gjør protokolldekoding), og ett vil ha et veldig robust system som burde fungere i en lang rekke scenarier, for eksempel det jeg prøvde å gjøre med dette prosjektet. Sørg for å få en enhet som har testklipp, eller bestill testklipp separat, ettersom de er enormt (hvor Trumpfeldian) fordelaktig.
  6. En enkel logisk sonde er også et veldig nyttig verktøy. På oversiktsbildet av arbeidsområdet vil du merke en gammel Archer (Radio Shack) logikkprobe i nedre høyre hjørne av bildet. Jeg ble oppriktig overrasket over å finne ut hvor nyttig noe slikt er daglig, selv med et velutstyrt laboratorium.

Jeg kan ha koblet til disse tidligere i dette, men jeg kan ikke huske det og er for lat til å se. Her er et blogginnlegg som har en video av TTS -modulen i bruk (Itaca uChip var vert for den på det tidspunktet), og ARMbasic Forum -innlegget hvor man kan laste ned den portede ARMbasiske kildekoden.

Ta vare på deg og ha det gøy å hacke vekk!

-MHz

Anbefalt: