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

Kopnięte arduino z aliexpress - problem z pamięcią, a może złe biblioteki?

ken-wawa 29 Sty 2024 00:31 573 14
REKLAMA
  • #1 20934134
    ken-wawa
    Poziom 12  
    Posty: 920
    Pomógł: 1
    Ocena: 139
    Ostatnio postanowiłem pobawić się z Arduino i do tego kupiłem tanie Arduino uno r3 z aliexpress (CH340 Atmega 328p) - od tego gościa: https://pl.aliexpress.com/item/1005006038084112.html Po problemach z instalacją pod Linuksem (chodzi o ten nieszczęsny CH340, który nie dość, że nie jest standardowo rozpoznawany, to daje jeszcze jakiś konflikt z oprogramowaniem do braille'a - ten sam vendor i produkt id dla sterownika) zdecydowałem się skompilować i uruchomić prosty projekt z miganiem diod (jeden z typowych przykładów z sieci). Jednak dioda LED migała nieregularnie (próbowałem zarówno z wbudowaną D13 jak i zewnętrzną podłączoną przez rezystor 330 omów na różnych pinach), więc nie tak, jak się spodziewałem podczas korzystania z funkcji opóźnienia.

    Ostatecznie skompilowałem następujący kod:

    
    int counter = 0;
    
    void setup() {
      Serial.begin(9600);
    
     pinMode(10,OUTPUT);
     pinMode(13,OUTPUT);
    }
    
    void loop() {
       digitalWrite(10, HIGH);
       digitalWrite(13, HIGH);
       delay(500);
       digitalWrite(10, LOW);
       digitalWrite(13, LOW);
       delay(5000);
       Serial.println(counter++);
    }
    


    Spodziewałbym się, że licznik będzie zwiększał się jeden po drugim w regularnych odstępach czasu. Jednakże przedziały czasowe wydają się być częściowo losowe, a kolejność liczników jest następująca (jeden z przykładów):

    
    0
    1
    2
    3
    4
    113
    114
    115
    0
    1
    2
    3
    4
    5
    39
    40
    41
    83
    99
    115
    116
    117
    167
    


    Moim skromnym zdaniem ten moduł nie działa poprawnie. Czy robię coś źle, czy jest to problem z urządzeniem Arduino? Wszelkie resety, rekompilacje itp. nie pomagają. Wybieram Arduino Uno, jako rodzaj sprzętu.

    Dziękuję za sugestie.

    Mój stary nos mówi mi, że albo jest coś nie tak z pamięcią, albo dochodzi do jakiś niekontrolowanych restartów (ale jedna mała dioda nie powinna ciągnąć tyle prądu, by nagle dochodziło do przeciążenia).

    P.S. Szybkość portu szeregowego ustawiana jest na komputerze tak samo jak w programie Arduino.
  • REKLAMA
  • #2 20934345
    gps79
    Poziom 37  
    Posty: 2193
    Pomógł: 495
    Ocena: 794
    Upewnij się, że masz stabilne zasilanie płytki (ładowarka do telefonu, bateria, itp.) i jeśli wtedy LED pulsuje nieregularnie, to niestety płytka Arduino jest uszkodzona.
  • #3 20934381
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38780
    Pomógł: 3174
    Ocena: 6521
    CH340 to układ VCP i jako taki, każde urządzenie w niego wyposażone ma ten sam VID i PID, bo dla systemu to tylko port szeregowy (COM). Jesteś pewien, że masz wersję z ATMega 328P? Pytam, bo ten sprzedawca ma wiele różnych wariantów, z różnymi MCU.

    Spróbuj migania diodą bez wysyłania czegokolwiek przez port szeregowy, jak i wysyłania licznika przez port szeregowy bez migania diodą. Problem jest raczej w konfiguracji wirtualnego portu szeregowego w systemie. Możesz nawet ten program co jest uruchomić bez połączenia z PC, np. podłączając kabel USB do ładowarki od telefonu.
  • REKLAMA
  • #4 20934772
    ken-wawa
    Poziom 12  
    Posty: 920
    Pomógł: 1
    Ocena: 139
    Zasilanie powinno być stabilne (próbowałem na dwa sposoby - z kompa po usb i z zewnętrznego zasilacza bez kompa). Led i tak pulsuje przypadkowo. Cała zabawa zaczęła się od tego, że był programik bez użycia portu szeregowego i proste błyskanie, sekundę on, sekundę off. Chwilę błyskało regularnie, a potem wchodziło w nieregularności. Więc to nie jest kwestia współpracy z portem szeregowy. Raczej dodanie portu szeregowego potwierdza, że tam dzieje się coś dziwnego.

    Co do samego modelu to jest to model z aukcji https://pl.aliexpress.com/item/1005006038084112.html opisany jako "UNO R3 Type-c USB". Opisy na scalaku są mało czytelne niestety. Wygląda to trochę jakby ktoś próbował zetrzeć napisy na scalaku (bardzo płytkie, bez białej farby) - nawet lupa nie pomaga. Jedyne co udało mi się odcyfrować to "Atmel".
  • #5 20937433
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 230
    Jak masz na to czas to po prostu nagraj filmik jak to działa i zgłaszaj spór. Może masz na płytce uC LGT8, one są sprzedawane taniej niż Arduino z Atmega, jednak nie widziałem by ktoś je bezczelnie oznaczał jako Atmel, raczej są w ogóle bez napisów, a płytki po prostu opisane jako zgodne z Arduino. Można to uruchomić, ale to jednak nie jest Atmega328p.
    W pokazanym programie dziwny jest tylko delay 500, a potem 5000.
    Druga opcja to uszkodzony kwarc, możesz wypalić bootloader przełączając na wewnętrzny oscylator. Do tego potrzebny jest programator i instalacja dodatku MINI CORE. Dziwne byłoby jednak, że działa OK na czas wgrywania, a potem zaczyna wariować.
    Kopnięte arduino z aliexpress - problem z pamięcią, a może złe biblioteki?
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #6 20937843
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38780
    Pomógł: 3174
    Ocena: 6521
    ken-wawa napisał:
    Cała zabawa zaczęła się od tego, że był programik bez użycia portu szeregowego i proste błyskanie, sekundę on, sekundę off. Chwilę błyskało regularnie, a potem wchodziło w nieregularności.
    Pierwsze kilka błyśnięć to bootloader, dopiero potem przechodzi do wykonywania programu. W programie masz 0,5s świecenia i 5 s wyłączenia.
  • #7 20938773
    ken-wawa
    Poziom 12  
    Posty: 920
    Pomógł: 1
    Ocena: 139
    Tak wiem, że kilka pierwszych błyśnięć, to bootloader. Ale później też są nieregularności.

    Co do delay, to najpierw był symetryczny, ale później porobiłem próby z innymi wersjami, by lepiej było widać te nieregularne mrugnięcia.

    To się raczej zachowuje, jakby albo system się restartował co jakiś czas, albo miał jakieś problemy z pamięcią i w pamięci zdarzały się losowe dane, albo jedno i drugie. Walnięty kwarc, to mało prawdopodobne, bo to by raczej powodowało tylko jakieś drobne nieregularności mrugnięć, ale counter nadal liczyłby po kolei (ewentualnie za każdym razem wracał do początku, a nie tak, że np. z 4 nagle przeskoczy na 113).

    Założyłem spór na ali i co ciekawe bez problemu zwrócili pieniądze w ciągu kilku godzin (albo przynajmniej napisali, że zwrócą, bo wciąż czekam na faktyczny zwrot na konto). Dwa jak zerknąłem na komentarze u tego sprzedawcy, to widzę, że też pojawiły się inne od ludzi z problemami. Więc coś jest na rzeczy.
  • #8 20938845
    viayner
    Poziom 43  
    Posty: 10628
    Pomógł: 1563
    Ocena: 2049
    Witam,
    czy autor może opisać te "nieregularności mrugnięć"?
    Patrząc na kod, LED nie będzie migać regularnie, bo tak wymaga kod.
    Jeżeli LED pulsuje, to wykonuje się kod. Autor nawet zmieniał piny i układ reaguje.
    Zegar też nie jest zły, bo serial jest inicjalizowany i komunikuje się. Raczej dopatruję się błędów programowych.
    Sprawdź inne proste programy.
    Pozdrawiam
  • #9 20939283
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #10 20942044
    ken-wawa
    Poziom 12  
    Posty: 920
    Pomógł: 1
    Ocena: 139
    Przez nieregularność mrugnięć rozumiem inne przedziały czasowe niż wynika to z delay. I nie chodzi to o dokładne mierzenie co do milisekundy a zgrubne. Masz mruganie typu 0.5 sekundy zaświecenia i 5 sekund zgaśnięcia. Najpierw oczywiście mruga intensywnie, co wynika z bootloadera. Ale później mruga np. 5 razy w tempie 0.5 sek/5 sek, a potem nagle jest o.5 sek zapalenia i jakieś (na oko) 0.5 sek zgaśnięcia i znów 0.5 sek zapalenia i 5 sek zgaśnięcia. Po prostu nagle czas zgaszenia gwałtowanie się skraca i to nawet bez dokładnego mierzenia widać, że jest coś nie tak.

    @emarcus Dzięki! Inżynierskie podejście! Konkretne! To tylko potwierdza, że coś z tym modułem jest nie tak.

    Muszę zamówić kolejny uno r3 najlepiej z usb-c na ali. Macie jakiegoś sprawdzonego dostawcę?
  • Pomocny post
    #11 20943080
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38780
    Pomógł: 3174
    Ocena: 6521
  • Pomocny post
    #13 20943515
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38780
    Pomógł: 3174
    Ocena: 6521
    Nie, ja wolę minimalistyczne moduły, zupełnie się nie interesowałem tymi zintegrowanymi, to bardziej płytki deweloperskie już są i drogo to wychodzi. Do nauki i zabawy niby ok, ale nic praktycznego się na tym nie zrobi.
  • #15 20943754
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 230
    Z tymi NONO gdzie, że jest na odwrocie jakiś moduł CH340, a nie widać przy nim kwarcu to polecam od razu test jak to działa. Mam taki jeden i nie ogarnia 115200, upload działa OK tylko ze starym bootloaderem 57k (i z takim przyleciał, choć inne NANO już przylatują z nowym bootloaderem), tak samo potem z komunikacją. Niektóre mostki USB-UART faktycznie nie wymagają kwarcu, jak 340C, ale mi wpadł jakiś bez oznaczeń i najwyraźniej wymagał, a nie ma. Pewności nie mam, może felerny, może podróbka podróbki, ale radzę choćby przetestować po odebraniu różne prędkości, płytka niby dalej jest użyteczna, ale niesmak pozostał. Inny, który faktycznie ma wyraźny nadruk CH340C działa bez zarzutu. Generalnie jak się nagrywa otwarcie i poprawnie uzasadni niezgodność to Ali zwraca kasę, więc tu przynajmniej jest OK.
    Dwa moduły elektroniczne z układem scalonym na niebieskiej płytce.
    Pomogłem? Kup mi kawę.

Podsumowanie tematu

✨ Użytkownik zakupił tanie Arduino UNO R3 z Aliexpress, napotykając problemy z nieregularnym miganiem diody LED, co sugeruje uszkodzenie płytki lub problemy z pamięcią. Problemy z instalacją związane były z układem CH340, który nie był standardowo rozpoznawany w systemie Linux. Użytkownik próbował różnych metod zasilania oraz testował kod bez użycia portu szeregowego, jednak miganie diody pozostało nieregularne. Inni uczestnicy dyskusji sugerowali, że problem może wynikać z uszkodzonego kwarcu lub błędów w oprogramowaniu. Użytkownik zgłosił spór na Aliexpress, a sprzedawca szybko zwrócił pieniądze. W końcu użytkownik planuje zakup nowego modułu Arduino UNO R3.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA