Spisu treści:

Text to Speech Kliknij na UChip z zasilaniem ARMbasic i inne SBC z zasilaniem ARMbasic: 3 kroki
Text to Speech Kliknij na UChip z zasilaniem ARMbasic i inne SBC z zasilaniem ARMbasic: 3 kroki

Wideo: Text to Speech Kliknij na UChip z zasilaniem ARMbasic i inne SBC z zasilaniem ARMbasic: 3 kroki

Wideo: Text to Speech Kliknij na UChip z zasilaniem ARMbasic i inne SBC z zasilaniem ARMbasic: 3 kroki
Wideo: Introduction to M5Stack Core2 ESP32 2" Display Development Module -Robojax 2024, Lipiec
Anonim
Text to Speech Kliknij na UChip z zasilaniem ARMbasic i inne SBC z zasilaniem ARMbasic
Text to Speech Kliknij na UChip z zasilaniem ARMbasic i inne SBC z zasilaniem ARMbasic
Text to Speech Kliknij na UChip z zasilaniem ARMbasic i inne SBC z zasilaniem ARMbasic
Text to Speech Kliknij na UChip z zasilaniem ARMbasic i inne SBC z zasilaniem ARMbasic
Text to Speech Kliknij na UChip z zasilaniem ARMbasic i inne SBC z zasilaniem ARMbasic
Text to Speech Kliknij na UChip z zasilaniem ARMbasic i inne SBC z zasilaniem ARMbasic

Wstęp: Dzień dobry. Nazywam się Tod. Jestem specjalistą z branży lotniczej i obronnej, który w głębi serca jest też trochę maniakiem.

Inspiracja: Pochodzący z ery dial-up BBS, 8-bitowych mikrokontrolerów, komputerów osobistych Kaypro/Commodore/Tandy/TI-994A, kiedy sklepy Radio Shack były obfite (stare dobre czasy), jednym z moich pierwszych hobbystycznych projektów osadzonych był praca z zestawem szkoleniowym Motorola Microprocessor Training Kit MEK6800D2, który kupiłem podczas pracy jako kooperacja w laboratoriach MSU EE (po ukończeniu szkolenia VoTech High School Electronics w Southern Lower MI). Ten projekt obejmował mój prototyp Radio Shack SP0256 NARRATOR™ SPEECH PROCESSOR na MEK6800D2, okablowanie go i zaprogramowanie 6800, aby emitował pseudomowę (ci, którzy pracowali z HW opartym na SP0256, wiedzą dokładnie, do czego mam na myśli). Zadziałało to cudownie i poszedłem dalej ścieżką wycinania zębów we wbudowanych mikrokontrolerach i montażu. Po ukończeniu szkoły średniej życie stanęło na przeszkodzie, wojsko, wojna, małżonkowie, dzieci, wejście do sektora cywilnego, rozpoczęcie kariery itp. Wszystko to złożyło się na moje odłożenie hobby na półkę na rzecz realizacji przedsięwzięć życia w kulturze zachodniej (tutaj w USA).

Przeskocz o 20 lat do przodu, dochodząc do nieuniknionego czasu, w którym dzieci dojrzewają do tego stopnia, że Panna Młoda i ja jesteśmy rozproszeni, kredyty hipoteczne/pojazdy/uczelnie są powoli spłacane, zarobki rosną wraz z postępami, a ja mam wystarczająco dużo wolnego do momentu, w którym mogłem ponownie skupić się na niektórych samolubnych przedsięwzięciach, wróciłem na koncert hobbystycznej elektroniki. W każdym razie, biorąc pod uwagę mój rodowód i historię, odszukałem i znalazłem środowisko deweloperskie, z którym szybko się związałem - ARMbasic - BASIC był moją pierwszą miłością i to pasowało nie tylko do ponownego przystosowania się do programowania, ale także do pracy ze sprzętem, który był szalenie większy potężny niż to, z czym zacząłem kilkadziesiąt lat wcześniej, i tak rozpoczęła się podróż.

To było około 2006-2009. Potem, z przyczyn od nas niezależnych, życie się zmieniło (jak przez wiele lat). Hobby odłożone na półkę – skup się na nowej karierze, odbudowując się po trudnościach finansowych (było mocno zaangażowane w sferę nieruchomości i wzięliśmy to w szorty, a młodzi ludzie dopiero dochodzili do punktu, w którym finansowanie College'u było imperatywem). Zasadniczo problemy z życiem i pierwszym światem (jesteśmy naprawdę błogosławieni, biorąc pod uwagę wyzwania i trudy, z którymi ludzie w innych częściach świata zmagają się na co dzień) ujawniły się i … hobby zostało odłożone na półkę. Wróciłem do tego na krótko w latach 2011-2012 - wtedy spotkała się z kolejną zmianą kariery - hobby ponownie odłożone na półkę.

Szybko do przodu o kolejną dekadę i… Wróciłem i, Dobry Boże Woli, mam nadzieję, że przez cały czas (dopóki nie wezmę tej przysłowiowej drzemki i zacznę pchać stokrotki od dołu). A więc jesteśmy. Wow – Arduino (co to za dziwne słowo?) zaatakowało rynek. Twórcy?? Co oni do cholery są?! …:) Moi przyjaciele z Coridium Corp (właściciele płyt deweloperskich opartych na ARMbasic i ARM) pozostali niezłomni i wierni. Teraz zamiast serii kontrolerów LPC2xxx pojawiła się nowa (dla mnie) jednostka ARM, Cortex M0/M3/M4, Arduino i… WOW! Kultura bardzo się zmieniła i to na wiele wspaniałych sposobów. Peeps współpracują zdalnie, a nawet globalnie. Sprzęt staje się zadziwiająco szybki i potężny, a ARMbasic, który dojrzał i wytrwale stwardniał dzięki pracy w wielu różnych rodzinach krzemów, jest dla mnie i wielu innych rzeczą piękną.

Tak więc, tworząc bardzo długą historię, niedawno natknąłem się na kliknięcie TTS MikroElectroniki i poczułem, jak przepływa przeze mnie nostalgia. Zamówiłem jedną w ciągu kilku minut i niepokoiłem się o kolejne dni, dopóki jednostka nie dotarła do ręki. Stąd zaczyna się historia…

Kieszonkowe dzieci

  • 1 sztuka MikroElectronika Text To Speech Click, zawiera Epson S1V30120 - moduł TTS ASIC
  • 1 szt. ARMbasic Target, pełniący rolę hosta TTS
  • 1 szt. Uno Breakout Shield (lub prototypowa płytka do chleba, lub…)
  • 1 głośnik lub zestaw głośników sugeruje głośniki stacjonarne z wtyczką 1/8" TRS
  • 1 partia prototypowania drutu, lutu, topnika, knota, lutownicy, nagłówków, gniazd IC i tym podobnych..
  • 1 partia wbudowanych narzędzi programistycznych DMM, sonda logiczna, analizator stanów logicznych, zakres itp.-dla nowych MCU hosta TTS

Krok 1: Połączenia sprzętowe

Połączenia sprzętowe
Połączenia sprzętowe
Połączenia sprzętowe
Połączenia sprzętowe
Połączenia sprzętowe
Połączenia sprzętowe

Aby powtórzyć to za pomocą celu ARMbasic w formacie Uno lub z uChipem Itaca, najlepiej byłoby użyć tarczy prototypowej, jak to zrobiłem na powyższych zdjęciach (zwykły link amazon)

Niektórzy zobaczą skręcony ze sobą drut do owijania i będą się zastanawiać, dlaczego - tłumienie szumów w trybie wspólnym jest prostą odpowiedzią. Tak, nie mamy tutaj do czynienia ze zrównoważonymi sygnałami, ale pomyślałem, że to nie zaszkodzi(?), więc zrobiłem to, kiedy robiłem budowanie planszy.

To całkiem łagodny projekt. Wydruki są załączone w formie grafiki (AutoCAD 2D jest tym, do czego jestem najbardziej przyzwyczajony - pracowałem z nim przez dziesięciolecia w mojej codziennej pracy - nadal wycinam zęby KiCADa i było to zbyt proste przedsięwzięcie, aby uzasadnić krzywą uczenia się jako pierwszy projekt w KiCAD). W każdym razie zdecydowałem się zamontować gniazdo uChip bezpośrednio do osłony, aby umożliwić samodzielny przypadek użycia podczas korzystania z uChip jako hosta. Dodałem JST do zasilania z baterii, gdybym chciał to zrobić, a ponieważ mam kilka dodatków, założyłem Adafruit SWD Breakout, aby umożliwić mi użycie mojej sondy debugowania Segger J-Link EDU, jeśli zajdzie taka potrzeba. Tak się nie stało, ale trzymam SWD i'face na nim do wykorzystania w przyszłych projektach.

Kasztelowy oznacza w tym kontekście spiłowanie krawędzi PCB tak, aby platerowane otwory przelotowe zostały zredukowane do półcylindra, umożliwiającego przylutowanie do płytki nośnej - w tym przypadku płytki zaciskowej ekranu. Zdecydowałem się to zrobić, ponieważ płaskie części osłony w postaci płaskiego opakowania nie do końca pokrywały się z odstępami między rzędami między dwoma rzędami nagłówków na SWD BOB. Wyłamał płaski plik i 5 minut na pilnikowanie i rozwiązanie problemu.

Krok 2: Programowanie i testowanie

Programowanie i testowanie
Programowanie i testowanie
Programowanie i testowanie
Programowanie i testowanie
Programowanie i testowanie
Programowanie i testowanie

Po zbudowaniu sprzętu konieczne będzie wykonanie pełnego połączenia, aby sprawdzić, czy okablowanie jest dobre. Następnie zawsze przeprowadzam test Mocy i Podstaw. Zapewnia to nie tylko to, że zasilanie i uziemienie są tam, gdzie powinny być, ale także że żadne inne zakończenia, które nie powinny mieć zasilania / uziemienia, nie mają. Nie jest to żmudne zadanie przy tak małym projekcie, ale przy większych systemach-systemów jest to żmudny krok, ale jest absolutnie konieczne, aby żadne podzespoły lub połączone systemy nie zostały usunięte przez głupi błąd, który mógł i powinien był zostać złapany. Zwykle dostaję absolutne minimum podłączonych towarów, aby energia była generowana na płycie, a następnie sprawdzam każdy pin/zakończenie pod kątem zasilania i uziemienia przed podłączeniem podzespołów, chipów itp., upewniając się, że moc jest na odpowiednim poziomie (biorąc pod uwagę urządzenia/IO nie tolerujące 5V, wymagania 1v8 i 3v3 itp.), a uziemienie jest tam, gdzie powinno być i tylko tam, gdzie powinno być. Byłem świadkiem kaskady awarii w samolocie od ludzi, którzy nie wykonali odpowiednich kontroli przed połączeniem. W jednym przypadku zajęło to ponad 100 tys. Inną rzeczą, za którą jestem winny, jest żmudne „sprawdzanie bliskości” – upewnianie się, że kontakty/zakończenia nie są zwarte z sąsiednimi kontaktami/zakończeniami. Staje się to krytyczne, jeśli mamy do czynienia z zespołami współosiowymi, wiązkami wieloprzewodowymi/ekranowanymi itp. Ok, nie mam już pudełka na mydło…

Gdy bezpieczeństwo jest zapewnione, podłącz rzeczy, włącz je, a następnie zabierz się do programowania hosta TTS (ARMbasic Target MCU), tak jak w przypadku wielu wbudowanych celów MCU. Nagrałem film, który przedstawia programowanie i proste użycie TTS Click. Możesz zobaczyć to tutaj.

Kod źródłowy ARMbasic można pobrać stąd - post na forum zawierający dodatkowe szczegóły. Coridium opublikowało wpis na blogu na temat tych wysiłków, do którego można się dostać, klikając tutaj.

Krok 3: Modyfikacja źródła dla innych celów ARMbasic i różnych przemyśleń

Modyfikowanie źródła dla innych celów ARMbasic i różnych zadumy
Modyfikowanie źródła dla innych celów ARMbasic i różnych zadumy
Modyfikowanie źródła dla innych celów ARMbasic i różnych przemyśleń
Modyfikowanie źródła dla innych celów ARMbasic i różnych przemyśleń
Modyfikowanie źródła dla innych celów ARMbasic i różnych zadumy
Modyfikowanie źródła dla innych celów ARMbasic i różnych zadumy
Modyfikowanie źródła dla innych celów ARMbasic i różnych zadumy
Modyfikowanie źródła dla innych celów ARMbasic i różnych zadumy

Nie będę cię zagłębiał w kroki potrzebne do zmodyfikowania kodu źródłowego, aby działał z innymi celami ARMbasic, poza wskazaniem, że dręczę o tym w mnóstwie komentarzy do kodu źródłowego. Poświęć trochę czasu na złamanie pliku tts.bas i przeczytaj, jakie zmiany są potrzebne, jeśli zdecydujesz się przenieść kod do innego kontrolera opartego na ARMbasic.

Załączam tutaj kilka zdjęć, które zrobiłem podczas cyklu tworzenia, aby to zadziałało.

Zdobyta wiedza:

  1. Jeśli masz Logic Analyzer z nieużywanymi danymi wejściowymi i masz dodatkowe docelowe IO, które nie są używane do pracy, nie bój się używać tych IO jako narzędzi do debugowania - spryskiwanie IO w różnych punktach kodu może być Ogromna pomoc w śledzeniu tego, co działa, a co nie działa zgodnie z oczekiwaniami, w identyfikowaniu głupkowatych problemów z synchronizacją (tj. przerwań wpływających na komunikację szeregową z bitami) i ogólnie w lepszym zrozumieniu twoich wysiłków jako całości.
  2. Nie wszystkie kontrolery ARM są takie same. To oczywiste. Jednak trochę się dostałem, robiąc początkowe dev na LPC1765 Coridium SuperPRO. Z perspektywy czasu to, co sprawiło, że był to zły wybór, to fakt, że implementacja tego rdzenia ARM umożliwiała dostęp do pamięci bez wyrównania słów. Podczas przenoszenia kodu C do ARMbasic wszystko szło całkiem gładko, dopóki nie spróbowałem użyć go z celem SAMD21 – rozpętało się piekło i wszystko zepsuło się nie do uwierzenia z powodu niewyrównanego dostępu podczas wypełniania buforów, manipulowania flagami, pracy z wersją ARMbasic struktur/związków, które wymyśliłem itp. To była bolesna lekcja. Wniosek: jeśli ktoś chce mieć przenośny kod, twórz program na najbardziej restrykcyjnym celu kandydowania, aby upewnić się, że nie stanie w obliczu dramatu na końcu projektu, kiedy jest się najbardziej podekscytowanym wykorzystaniem owoców ich wysiłki…:)
  3. Przeniesienie kodu C do ARMbasic NIE jest niemożliwe. Ten wysiłek był w dużej mierze jedną gigantyczną ewolucją treningu portowania. Jeśli ktoś poświęci trochę czasu na porównanie oryginalnych źródeł C z kodem ARMbasic, który stworzyłem, powinien być w stanie wymyślić kilka pomysłów, jak zaimplementować rzeczy, które mogą nie być częścią głównego projektu ARMbasic (tj. Struktury).
  4. Zajmij się takimi rzeczami w łatwych do opanowania porcjach. Domyślnie jestem osobą, która lubi regularnie widzieć gratyfikację. Takie przedsięwzięcie, jak te wysiłki związane z przeniesieniem i programowaniem, prawdopodobnie nie będzie czymś, co można osiągnąć w ciągu jednej nocy. Wyznaczaj realistyczne cele i dąż do nich, starając się nie dać się przytłoczyć „pełnym obrazem”.
  5. Analizator logiczny był kluczowy w tych wysiłkach. Tak, mam jednostkę DS-Logic+ niższej średniej klasy, ale mogę z całą stanowczością stwierdzić, że tania 12,50 USD z pasmem 24 MHz LA z Amazonii byłaby więcej niż wystarczająca. Połącz to z PulseView firmy Sigrok (bezpłatny) (dekoduje protokół), a otrzymasz bardzo solidny system, który powinien działać w ogromnej liczbie scenariuszy, takich jak to, co starałem się podjąć w tym projekcie. Upewnij się, że kupiłeś jednostkę z klipami testowymi lub zamów klipy testowe osobno, ponieważ są one bardzo (jakże Trumpfeldowskie) korzystne.
  6. Bardzo przydatnym narzędziem jest również prosta sonda logiczna. Na zdjęciu poglądowym obszaru roboczego zauważysz starożytną sondę logiczną Archer (Radio Shack) w prawym dolnym rogu obrazu. Byłem naprawdę zaskoczony tym, jak przydatne jest coś takiego na co dzień, nawet w dobrze wyposażonym laboratorium.

Być może połączyłem się z nimi wcześniej, ale nie pamiętam i jestem zbyt leniwy, żeby patrzeć. Oto wpis na blogu, w którym znajduje się film przedstawiający działanie modułu TTS (w tym czasie hostujący go Itaca uChip) oraz wpis na forum ARMbasic, z którego można pobrać przeniesiony kod źródłowy ARMbasic.

Uważaj i baw się dobrze, hakując!

-MHz

Zalecana: