logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Dobór taniego/małego mikrokontrolera pod proste aplikacje

Kaktus2019 23 Kwi 2019 23:16 1443 9
  • #1 17922947
    Kaktus2019
    Poziom 6  
    Dzień dobry wszystkim. To mój pierwszy post na forum. Przez ostatnie dobrych ileś dni, w wolnym czasie poczytałem to (i inne) fora i dokumentacje, ale mam ciągle totalny mętlik w głowie. Problem w tym, że z mikrokontrolerami miałem dotychczas niewiele do czynienia. Jakieś 20 lat temu hobbystycznie w asemblerze na AT89C2051 kilka projektów zrobiłem , potem zdarzył mi się epizod w C na ADuC821, no i ostatnio pobawiłem się trochę z Digisparc-iem (ATTiny85) w Arduino IDE (kilka prostych urządzeń do domu i samochodu). W pracy zawodowej tylko FPGA i analogówka od 15 lat, stąd prosiłbym o rady/wskazówki od doświadczonych forumowiczów żebym trochę się nakierował na właściwe rozwiązania.

    Chciałbym jako dodatkowe zajęcie zrobić małoseryjne (typu 100szt na rok danego urządzenia) projektowanie/produkcję prostych urządzeń, spróbować wypełnić jakieś tam nisze których nie brakuje w domu/samochodzie. W związku z tym potrzebuję dobrać sobie odpowiedni mikrokontroler pod te aplikacje, taki który w łatwy sposób (często razem z PCB), przeszczepiałbym do nowych projektów. Postaram się wypisać w punktach moje główne potrzeby:

    1.Mikrokontroler względnie tani (chętniej 5zł niż 15 przy np ~100szt), bo ceny detaliczne urządzeń raczej będą zawierać się w przedziale 100-200zł w zależności które, ale to już z wtykami, kablami, testowaniem, dokumentacją, PCB, montażem, pudełkiem, obudową, fakturą vat, utrzymaniem sklepu internetowego itp itd.
    2.Mikrokontroler względnie mały (max 100mm2 na płytce uwzględniając jakieś tam kondensatory czy minimum do USB)
    3.Mikrokontroler SMD ale nie za dużo pinów - tak naprawdę potrzebuję kilka portów pod większość pomysłów które mam narazie w głowie.
    4.Nie potrzebuję mocy obliczeniowej, naprawdę raczej proste aplikacje.
    5.Łatwa/tania ścieżka do updatowania firmwaru przez USB (bez zewnętrznych chipów typu FTDI/programatorów itp) którym w bezpieczny sposób będę mógł oferować klientom poprawki bądź nowe funkcje jeśli zajdzie taka potrzeba, a blokował możliwość np odczytu wsadu (np robię to jako jakiś zaszyfrowany program/exe pod Windows, coś sie skomunikuje z urządzeniem, sprawdzi że siedzi tam kompatybilne urządzenie i zrobi update/weryfikację). USB nie musi być szybkie, wystarczy low speed - byle by to łatwo ogarnąć a u klienta nic poza kabelkiem USB i kompem z Windowsem (na początek) nie było potrzebne. Tu mam na myśli i mój wysiłek w stworzenie tego (brak doświadcznia) jak i banalną sprawę dla zwykłych klientów którzy w łatwy sposób mogliby podpiąć się do komputera i zrobić update (np jakieś wbudowane drivery w system najchętniej, albo przynajmniej łatwe i bezproblemowe w instalacji)
    6.Jakieś gotowe drivery (np od producenta uC) czy bootloader (jeśli będzie coś do skompilowania samemu), musi nadawać sie do użytku komercyjnego bez wymogu udostępniania własnych kodów/schematów czy możliwości kompilowania samemu czegokolwiek - już naszukałem się różnych rozwiązań i wiecznie gdzieś na końcu są jakieś licencje (czasem w bibliotekach) ograniczające taki użytek lub warianty komercyjne zabijające ceną na dzień dobry pomysł (choćby biblioteki V-USB na procki bez sprzętowego USB).
    7.Fajnie by było gdyby uC miał CAN lub miał odpowiednik (np ciut droższy, z kompatybilnymi wyprowadzeniami) zeby łatwo zrobić CAN do podłączenia się do samochodu. Samochody z reguły mają kilka odseparowanych linii CAN (różne moduły siedzą na różnych), fajnie by było gdyby można podczas działania programu sobie to przekonfigurować które linie CAN łączymy z wbudowanym CAN-em (nie wiem czy są dedykowane czy w miarę swobodnie można przydzielać). A moze jednak polecacie stosowanie czegoś zewnętrznego (rozumiem że TRX bo reszta softwarowo? sorry, ale jeszcze nie miałem czasu zgłębić co w CAN tak naprawdę taki ATMEGA oferuje)
    8.Nie chciałbym trafić w uC który ma dużą szansę że np za rok/dwa albo choćby i 5 lat może zostać wycofany z oferty bo jest niepopularny czy już z przestarzałej rodziny (bo świat już tylko idzie w bardzo proste 8bit a jak nie to w 32bitowe ARMy i nie ma nic pomiędzy).

    Czy tu faktycznie AVRy się sprawdzą? Jeśli tak to myślałem o czymś w stylu max ATMEGA8/16/32U2 w TQFP32. Ewewntualnie coś z nowych ATTINY (ale wtedy chyba USB programowo trzeba realizować i jest jednak poza specyfikacją USB?). A może jednak powinno być droższe i większe ATXMEGA?

    Rozumiem że Atmel Studio 7 i jakiś USBasp 2.0 wystarczą? Czy jakieś jeszcze software jest potrzebny (avrdude itp)?

    Dziękuję za wszelkie sugestie, wytknięcie błędów czy pominięć.
  • Pomocny post
    #2 17923525
    kaczakat
    Poziom 34  
    Co do wgrywania, jeśli nie potrzebujesz USB do innych celów to można zrobić gniazdo pod moduł BT HC-05, akurat ten ma możliwość zrobienia autoreset a'la Arduino z kondensatorem pod RST, potem już dowolnym bootloaderem nawiązujesz komunikację i program można wgrać choćby z telefonu z Androidem. Jak będzie wyprowadzony przycisk reset to można wgrać właściwie każdym modułem BT czy mostkiem Wifi-UART. Używam tego z Arduino, ale oczywiście jak to ma być jakaś szyfrowana komunikacja to soft z obu stron i tak musi być Twój, o licencjach tez więc nie warto myśleć.
    W Atmel Studio 7 nie przyda się USBASP ani AVRDUDE, chyba że spoza tego środowiska wgrywać będziesz ręcznie. Najtańszy obsługiwany programator w AS7 to klon MKII zrobiony samodzielnie, jak kupiony gdzieś w sklepie to niewiele droższy może okazać się Atmel ICE z wieloma dodatkowymi funkcjami.
    AVR nas wszystkich jeszcze przeżyją, dopóki ludzie to będą kupować to Chińczycy będą je tłukli.
    Z ARM, USB i CAN możesz zerknąć na STM32F103C8T6, z tego co tu czytałem na forum te egzemplarze dostępne na Ali za 2$ jako gotowa płytka prototypowa Blue Pill to też klony, skoro są tak popularne (bo obsługuje je Arduino) i tanie to też pewnie szybko nie znikną.
    BluePill ma bootloader przez USB lub UART, więc i swój można taki zrobić. Programator/debugger do kompletu to kolejne 2$.
    Pomogłem? Kup mi kawę.
  • Pomocny post
    #3 17923619
    tmf
    VIP Zasłużony dla elektroda
    kaczakat napisał:
    W Atmel Studio 7 nie przyda się USBASP ani AVRDUDE, chyba że spoza tego środowiska wgrywać będziesz ręcznie.

    Te programy można zintegrowac z AS, nie trzeba probramować z zewnątrz.
    kaczakat napisał:
    Najtańszy obsługiwany programator w AS7 to klon MKII zrobiony samodzielnie, jak kupiony gdzieś w sklepie to niewiele droższy może okazać się Atmel ICE z wieloma dodatkowymi funkcjami.

    Najtańsze są płytki XPlained z programatorem/debuggerem na pokładzie. Jako, że autor będzie posługiwał sie ograniczoną pulą typów procesorów, jest to dobre rozwiązanie. BTW, niedawno w naszym DIY był klon debuggera/programatora z obsługą większości AVR, wyglądało na groszowe sprawy.
    @Kaktus2019 Jeśli AVR to niektóre warunki spełniają. TQFP jest ok, ale jeśli ma być mała powierzchnia to raczej obudowa QFN. Problematyczne kryteria dla AVR to USB i CAN. O ile USB mają ATMega serii U i wiele z XMEGA (niestety w obudowach min,. 64 i chyba 48 pinowych), o tyle z CAN jest w AVR problem. Popularne i tanie go nie mają. Zewnętrzny kontroler to z kolei cena i miejsce.
    Warto też rozglądnąć sie za ARM, tu może z CAN będzie lepiej. USB też raczej występuje w większych prockach. Przełączenie magistral CAN można prosto zrobić sterując transceiverami CAN.
  • #4 17923922
    Kaktus2019
    Poziom 6  
    @kaczakat
    HC-05 to nawet kupiłem parę dni temu (nie bawiłem się jeszcze), ale to nie pod zastosowania w każdym produkcjie - za bardzo podroży urządzenie bo każdemu klientowi musiałbym taki dać (i obudować, i napiać instrukcję jak to podłączyć/sparować). Wole proste USB. NIe wykluczam, że jakieś tam produkty będą miały BT, ale w tej chwili to tylko ogólny pomysł, pierwsze urządzenia które mam w głowie nic z faktu posiadania BT nie zyskają.

    Co do produktów/płytek z Ali (też tego HC-05), tej drogi się trochę obawiam jako bazy do produkcji. Ani pewność dostaw (no chyba żebym kupił sobie zapas duży), ani ceny, coś zmienią i same problemy. I tak do swoich urządzeń musiałbym dodać np sandwitch - jakieś drugie PCB (np, regulator napięcia, tranzystory czy jakieś układy skalujące (zastosowania do większych napięć niż uC)).
    Sam ST32F103C8T6 jest trochę drogawy u dostawców (16zl @ 100pcs w Farnellu) , czy np taki STM32F042F4P6 byłby OK? Tylko teraz widzę że ten CAN to osobno TX i RX, czyli rozumiem że na to jeszcze dochodzi TRX na płytkę (a są takie uC z wbudowanym TRXem?)

    @tmf
    Dzięki za rady odnośnie programatora/debuggera -do takiego Xplained wgrywam sobie jakiegoś gotowca i używam jako fajny interfejs do pracy, czy to w ogóle od razu jest gotowy programator/debugger?

    QFN trochę odrzuciłem ze względu na ręczny montaż i łatwą inspekcję wizualną (przynajmniej na początku będzie raczej skromnie - stacje lutownicze, heat-gun, lampa, lupa).

    Skoro TRXy do CAN i tak nie są w uC, to faktycznie można bez problemu przełączać się pomiędzy TRXami.

    A jak sprawa bootloadera dla STM32 z USB? to jest jakos fajnie zorganizowane (drivery, jakiś gotowiec od STM któy mogę np skonfigurować pod siebie)?

    Dziękuję, przetrawię temat trochę przez najbliższe dni (akurat jadę na 4 dni na wyprawę rowerową), pozwolę sobie najwyżej jeszcze tu dopytać. W międzyczasie jeśli macie jakieś dodatkowe uwagi/pomysły piszcie proszę.
  • #5 17923965
    tmf
    VIP Zasłużony dla elektroda
    Kaktus2019 napisał:
    Dzięki za rady odnośnie programatora/debuggera -do takiego Xplained wgrywam sobie jakiegoś gotowca i używam jako fajny interfejs do pracy, czy to w ogóle od razu jest gotowy programator/debugger?

    To gotowy programator/debugger + płytka rozwojowa (prosta), do prototypowania. Fajna i tania zabawka.
    Kaktus2019 napisał:
    QFN trochę odrzuciłem ze względu na ręczny montaż i łatwą inspekcję wizualną (przynajmniej na początku będzie raczej skromnie - stacje lutownicze, heat-gun, lampa, lupa).

    Doprowadzenia są na brzegu obudowy i da się to wizualnie sprawdzić. To co masz wystarczy, aby sobie poradzić z tymi obudowami.
    Kaktus2019 napisał:
    A jak sprawa bootloadera dla STM32 z USB? to jest jakos fajnie zorganizowane (drivery, jakiś gotowiec od STM któy mogę np skonfigurować pod siebie)?

    Te ukłądy są tak popularne, że z pewnością znajdziesz gotowca, lub coś po niewielkim dostosowaniu spełni twoje oczekiwania. Tylko pamiętaj o standardowych problemach z USB - konieczność posiadania VID/PID i spęłnienia innych warunków, o ile to ma być oficjalnie USB.
  • #6 17924178
    kaczakat
    Poziom 34  
    Nie analizowałem jak wygląda bootloader USB BluePill od strony licencji bo używam go do własnych niekomercyjnych zastosowań. Możesz o nim poczytać tutaj: Link. Po wgraniu bootloadera przez adapter USB-UART i STMflasher lub ST-link z St-link Utility i zainstalowaniu driverów na stałe podłączony STM zgłasza się jako MAPLE MINI na porcie COM. Oba programy można pobrać z STM, nikt nie wrzuca ich na swoje strony, STM wymaga jedynie rejestracji. Przez bootloader gotowy program użytkowy wgrywam z Arduino, nie trzeba przestawiać zworek jak na wbudowanym bootloaderze w UART1, Ty potrzebowałbyś swojego, wykorzystać jakiś zewnętrzny program lub ten z pakietu STM dla Arduino w Java, są do niego źródła. By to ładnie wyglądało może być też nakładka GUI, Arduino po prostu odpala plik *.bat ze ścieżką do gotowego *.bin. Oczywiście Arduino to notatnik do pisania programów, można użyć innych narzędzi, na pewno jest STM32 do Eclipse.
    Pomogłem? Kup mi kawę.
  • #7 17924248
    Kaktus2019
    Poziom 6  
    tmf napisał:
    o gotowy programator/debugger + płytka rozwojowa (prosta), do prototypowania. Fajna i tania zabawka.

    OK, dzięki
    tmf napisał:
    Doprowadzenia są na brzegu obudowy i da się to wizualnie sprawdzić. To co masz wystarczy, aby sobie poradzić z tymi obudowami.

    tak, nie raz tego typu rzeczy sam lutowałem (większe obudowy z tym pitchem), choć nie jest to moje codzienne zajęcie (raczej raz na kilka miesięcy coś musze na szybko sobie sam naprawić). wolałbym jednak uniknąć lutowania takich - jakoś TSSOP (np 20pin) lub TQFP32 wydaje mi się przyjaźniejsze.
    tmf napisał:
    Te ukłądy są tak popularne, że z pewnością znajdziesz gotowca, lub coś po niewielkim dostosowaniu spełni twoje oczekiwania.

    Będę szukał
    tmf napisał:
    ylko pamiętaj o standardowych problemach z USB - konieczność posiadania VID/PID i spęłnienia innych warunków, o ile to ma być oficjalnie USB.

    Dzięki, poczytam
    kaczakat napisał:
    Po wgraniu bootloadera przez adapter USB-UART i STMflasher lub ST-link z St-link Utility i zainstalowaniu driverów na stałe podłączony STM zgłasza się jako MAPLE MINI na porcie COM. Oba programy można pobrać z STM, nikt nie wrzuca ich na swoje strony, STM wymaga jedynie rejestracji. Przez bootloader gotowy program użytkowy wgrywam z Arduino, nie trzeba przestawiać zworek jak na wbudowanym bootloaderze w UART1, Ty potrzebowałbyś swojego, wykorzystać jakiś zewnętrzny program lub ten z pakietu STM dla Arduino w Java, są do niego źródła. By to ładnie wyglądało może być też nakładka GUI, Arduino po prostu odpala plik *.bat ze ścieżką do gotowego *.bin. Oczywiście Arduino to notatnik do pisania programów, można użyć innych narzędzi, na pewno jest STM32 do Eclipse.

    Zgadza się, miałem to w głowie pisząc pierwszego posta, ale potem nie wspomniałem o tym wyraźnie. Najchętniej skorzystałbym z jakiegoś gotowca (bootloadera z obsługą USB), który jest już zarejestrowany (np przez ST czy Microchipa), robi jakiś standardowy port COM. Natomiast ja bym oczekiwał że mogę sobie go trochę pokonfigurować - choćby ustawić jakieś hasło dostępu - nie tak że każdy kto weźmie moje urządzenie, nawet bez otwierania zaczyna mieć dostęp do zawartości itp - jak to jest - tu jakoś mało informacji na ten temat znalazłem.

    kaczakat napisał:

    Nie analizowałem jak wygląda bootloader USB BluePill od strony licencji bo używam go do własnych niekomercyjnych zastosowań. Możesz o nim poczytać tutaj: Link

    dzięki, będę czytał
    kaczakat napisał:
    Po wgraniu bootloadera przez adapter USB-UART i STMflasher lub ST-link z St-link Utility i zainstalowaniu driverów na stałe podłączony STM zgłasza się jako MAPLE MINI na porcie COM. Oba programy można pobrać z STM, nikt nie wrzuca ich na swoje strony, STM wymaga jedynie rejestracji. Przez bootloader gotowy program użytkowy wgrywam z Arduino, nie trzeba przestawiać zworek jak na wbudowanym bootloaderze w UART1, Ty potrzebowałbyś swojego, wykorzystać jakiś zewnętrzny program lub ten z pakietu STM dla Arduino w Java, są do niego źródła. By to ładnie wyglądało może być też nakładka GUI, Arduino po prostu odpala plik *.bat ze ścieżką do gotowego *.bin. Oczywiście Arduino to notatnik do pisania programów, można użyć innych narzędzi, na pewno jest STM32 do Eclipse.

    muszę to przejść najpierw sam, czyli kupić Bluepill zrobić sobie jakiś program i update, zobaczyć na świeżym kompie (bez żadnych środowisk/driverów itp) uda sie zupdatować -musi to być łatwe bo będą to robić przypatkowi klienci - najlepiej jakby korzystało z wbudowanego w windows drivera, a mój program by tylko sprawdził listę portów COM, znalazł które są zajęte przez oczekiwany VID/PID a klientowi tylko wyskoczył z informacją żeby zaakceptował update.
  • #9 17924638
    -XantiO-
    Poziom 21  
    Nie warto iść w STM32F1 gdy mamy dostępne STM32G0. Podobna wydajność a mamy nowy rdzeń.
  • #10 17924932
    Kaktus2019
    Poziom 6  
    Freddie Chopin napisał:
    Kaktus2019 napisał:
    muszę to przejść najpierw sam, czyli kupić Bluepill...

    Poczytaj najpierw https://www.elektroda.pl/rtvforum/topic3565269.html

    no właśnie, zanim jeszcze przeczytałem Twojego posta, przyszło mi na myśl że przecież tak tanie płytki z czegoś się biorą - może podróbki czy podrasowane wolniejsze wersje itp. itd. jeśli mam coś robić (mało produkcyjnie, ale jednak) to nie chcę tracić czasu na druciarstwo - komponenty planuję brać tylko ze sprawdzonego/oficjalnego źródła, pewność przechowywania odpowiedniego, większa pewność co do deklarowanego terminu dostawy itp itd.

    Dodano po 9 [minuty]:

    -XantiO- napisał:
    Nie warto iść w STM32F1 gdy mamy dostępne STM32G0. Podobna wydajność a mamy nowy rdzeń.

    wydajności akurat w ogóle nie potrzebuję, to naprawdę będą proste projekty (przynajmniej pierwsze urządzenia). Ja wiem, najnowszy, ale jaka jest korzyść dla mnie np zamiast STM32F042F4P6 którego mogę mieć w prostej do lutowania obudowie TSSOP20 i taniej?
REKLAMA