Witam
Na imie mam Chris i od niedawna zaczalem bawic sie arduino. Bardzo Ciesze sie ze znalazlem to forum!
Prosze o porade w nastepujacej sprawie:
Otoz mam dwa klony Arduino Nano 1 z chipem FTDI232RL i 1 z chipem CH340C
Obydwa sa dobrze wykrywane i programowane przez Arduino IDE pod Windows10 64 bit..
Na obydwa arduino zaladowalem ten sam sketch, ktory ma za zadanie komunikacje po USB dla pewnej aplikacji na PC i sterowaniem z niej kilkoma pinami na pojedynczej plytce Arduino.
Jesli Arduino Nano z FTDI232RL jest podlaczona przez Windowsy (COM7), aplikacja na PC wykrywa je i dziala z nim prawidlowo.
Gdy uzyje Arduino Nano z CH340C (podlaczone jest ono do COM8). Aplikacja widzi ten port ale nie wkrywa tam arduino i nie moge dojsc co jest tego przyczyna.
Sterowniki, kable na pewno nie wchodza w gre. COM porty maja takie same ustawienia i poza tym (jak wczesniej napisalem) daje sie po nich zaladowac sketch pod IDE wiec COMy musza byc sprawne w obydwie strony. Sketche z programem na pewno sa zaladowane prowidlowo (kod zawierablink led wiec wiem kiedy kod dziala a kiedy nie). Obydwie plytki uzywaja nowego bootloadera.
Problem w mojej ocenie jest gdzies w komunikacji miedzy ta aplikacja i Arduino Nano z chipem CH340. Jedyne co obserwuje, ze gdy aplikacja probuje sie komunikowac z tym Arduino to dioda RX mruga a dioda TX nie reaguje w ogole ( handshake ?).
Pytania:
Czy te chipy FTDI232 and CH340C sa 100% kompatybilne?
Czy moze ktos podopowiedziec co jeszcze moge sprawdzic - jak dalej ugryzc problem ?
Moze moge jakos podejrzec co jest wymieniane miedzy aplikacja a Arduino?
Dziekuje za wszelkie wskazowki i pozdrawiam forumowiczow
(15-09-2019, 02:26)michulus napisał(a): [ -> ]Czy te chipy FTDI232 and CH340C sa 100% kompatybilne?
Zajrzyj do noty katalogowej obu układów to się dowiesz.
FTDI to mercedes wśród mostków USB, CH340 to taka Syrenka czy Trabant - też niemiecka technologia
FTDI najczęściej jest droższy i lepszy. Różnią się np. dostępnymi prędkościami transmisji i to może być problemem w Twoim programie PC lub sam program jeśli się tego nie da modyfikować.
Sprostowanie i prosba o dalsze wskazowki
Przepraszam ale troche niedkoladnie opisalem zachowanie tych klonow Nano z FTDI i CH340 z pliakacja na PC.
Nano FTDI laczy sie prawie za kazdym razem (czasem musze kilknac CONNECT kilkakrotnie zeby USB zalapalo).
Nano z CH340 nie laczy sie wcale.
Wygooglalem, ze podobne zachowanie ma arduino UNO a przyczyna jest autoreset w momencie podlaczania ukladu po USB do PC z aplikacja. Zaladowalem wiec ten sam sketch do klona UNO i przetestowalem z wlaczonym i wylaczonym autoresetem (10uF kond. miedzy pinami RESET i GND). Okazalo sie ze UNO z wyl autoresetem dziala znakomicie i laczy sie kazdorazowo ! Analogicznie probowalem tez wylaczyc autoreset w obydwu plytkach nano. Najpierw przez kond miedzy GND i RESET a potem przez odlutowanie kond smd przy sciezce do DTR. Nic to niestety nie dalo. Byc moze cos zrobilem zle - jesli tak prosze o podpowiedz.
Uno uzywa do USB mikrokontrolera 16u2. Nano moze miec FTDI albo CH340. Czy na podstawie powyzszego moge juz wywnioskowac ze przyczna problemu z nano jest czas z jakim poszczegolne arduina zaglaszaja sie (odpowiadaja) po USB ?
Jesli tak czy jest w ogole dalszy sens aby bawic sie tymi Nano? Moze lepiej przesiasc sie na inny (koniecznie miniaturowy !) mikrokontroler ktory nie ma tych chipow FTDI/CH340 a ktory akceptowalby istniejacy sketch i odpowiadalby rownie szybko jak UNO. Ktore rozwiazanie do testow polecacie ?
(15-09-2019, 16:13)michulus napisał(a): [ -> ]Moze lepiej przesiasc sie na inny (koniecznie miniaturowy !) mikrokontroler ktory nie ma tych chipow FTDI/CH340 a ktory akceptowalby istniejacy sketch.
ATmega32Ux i podobne.
Może to jednostkowy przypadek, może kondensator za mały, możesz tam wsadzić nawet 5000uF (rozładuj wcześniej, nie wyjmuj na włączonym). Problem z szybkością połączenia miewam ale po BT, Arduino IDE wgrywa szkice bezprzewodowo bez problemu, a Sloeber ma wielki ból dziurki, bo czas nawiązania połączenia wynosi 2-5s. Jak program ma problem o tę 0.1-1s przy łączeniu przez CH340 to dla mnie jest to wina programu. Mam mnóstwo płytek z CH340 i nie ma z tym żadnego problemu w normalnym użytkowaniu. Mam kilka niedziałających CP2102, jakiegoś prolinka, CH340 testowane do 1Mbita* działają znakomicie - ale niekoniecznie te które proponuje Arduino, np. 500k, 1M. Sprawdź sobie w datasheet czy może nie korzystasz z jakiejś prędkości, która nie jest obsługiwana przez CH340: 50,75,100,110,134.5,150,300,600,900,1200,1800,2400,3600,4800,9600,14400,19200,28800,
33600,38400, 56000,57600,76800,115200,128000,153600,230400,460800,921600,1500000,2000000.
CH340 są często na płytkach ESP8266 i można wgrywać szkice z prędkością 921k* bez problemu, bo można wybrać dokładnie 921k, ale w monitorze Arduino można wybrać najbliżej 1000k i to już nie zadziała prawidłowo.
Dzieki z podpowiedzi.
Wczoraj dotarlo do mnie Leonardo i co ciekawe tez nie chce sie laczyc z ta aplikacja.
Wiec na chwile obecna sytuacja wyglada nastepujaco.:
Mam ten sam sketch, ta sama applikacje na PC ktora:
- laczy sie bezproblemowo z UNO (z wyl autoresetem)
- z czkawka ale laczy sie z NANO na FTDI
- nie laczy sie wcale z NANO CH340
- nie laczy sie wcale z Leonardo
Sketch ma ustawiona w setupie komunikacje na serialu jako: SerialProtocol.init(9600)
Z tego co pisales obslugiwanych prekosciach wynikaloby ze przy tym samym ustawieniu predkosci w skecthu (9600) aplikacja na PC z jednymi plytkami arduino chce sie laczyc z innymi nie.
Nie mam zrodel do tej aplikacji. Zostala napisana chyba VB i jedyne co moge to ja zaistalowac i probowac dopasowac hardware, z ktorym zechce gadac. Czy mozliwe jest cos takiego, ze aplikacja probuje negocjowac predkosc polaczenia na inna w zaleznosci od tego z jakim plytka arduino sie laczy ?
W trakcie działania programu możliwa jest zmiana prędkości UART, korzystasz ze swojego programu na Arduino czy to jakaś biblioteka? Może biblioteka robi coś, czego nie widzisz. Taka zmiana może być wykonana tylko w kodzie na Arduino, aplikacja zewnętrzna nie zmieni mu prędkości.
Co do Leonardo, to tam jest trochę inaczej, jakiej prędkości nie ustawiłbyś od strony uC i w terminalu na PC, to terminal będzie odbierał prawidłowo (no oczywiście nie sprawdzałem wszystkich możliwości, na pewno jest tak dla 9600-115200), czyli np. w kodzie Leonardo wpisujesz begin z 115200, a potem w terminalu Arduino ustawiasz sobie po kolei różne prędkości i wszystko mimo to przylatuje prawidłowo. A wadą na Leonardo jest to, że kod musi się odpalić po resecie by zacząć obsługiwać komunikację z PC, dlatego jeśli widzisz gdzieś w kodzie linijkę
while (!Serial.available());
to jest to linijka właśnie dla Leonardo/MICRO z wbudowanym USB.
Jak to nie jest kod z NSA to wrzuć tutaj razem z tym programem PC, może komuś się będzie chciało sprawdzić co jest grane. Poza tym możesz wgrać do uC Leonardo jakiś kod typu echo z UART1 (to te piny na płytce TX1/RX1) na UART USB, do tych pinów RX1/TX1 podłączyć konwerter UART-USB (może być zrobiony z UNO/NANO w stanie reset) i przekierować sobie komunikaty z programu PC na okno terminala.
Dzieki
Ponizej link do sketchu Arduino i apliakcji na PC.
Z tego co rozumiem to serial jest aktywowany z boblioteki moonlite.h SerialProtocol.init(9600);
Czy nie powinno byc zamiast tego serial.begin(9600) ; ?
Co do Leoanardo to temat dla mnie zupelnie nowy i nie do konca kumam o co chodzi z tym odpaleniem seriala po restarcie. Myslalem ze moge do Leonardo zaladowac kod z UNO/Nano bez zadnych modyfikacji? Podpytam pewnie jeszcze o to ale na razie chcialbym zorozumiec co robie zle, ze aplikacja nie chce dzialac z NANO jednym czy drugim.
---------------------------------------
Arduino Code z bibliotekami (ZIP w zalaczniku).
Link do zrodla na Githubie:
https://github.com/mdobres/MaxFocuser/find/master
Aplikacja na PC ( po zainstalowaniu wybierarmy COM port i kilkamy CONNECT):
Dziala od kopa z UNO,
z NANO FTDI laczy sie po wielekrotnym kliknieciu CONNECT,
z NANO CH3400 nie laczy sie w cale
https://focuser.com/media/Downloads/Moon...r_v1.4.zip
Problemem jest program, może działać z konwerterem opartym o Atmega16u2 (coś jak na oryginalnym UNO/MEGA), albo z CP2102 - konwerter osobny podłączony do NANO do pinów RX/TX lub do płytki Arduino PRO MINI, sporo płytek ESP8266 i ESP32 też jest z tym mostkiem (działa). Z jakiegoś powodu nie trawi FTDI (u mnie w ogóle nie zadziałał ani razu) ani CH340.
Generalnie kod z UNO można odpalić na Leonardo, ale płytki mocno się różnią, np. w Leonardo nie ma SPI na pinach 11-13, Serial to nie ten wyprowadzony na piny płytki, tu jest Serial1. Funkcje zadziałają tak samo, ale jak się zajrzy do wnętrza bibliotek to jednak są różne wnętrza funkcji dla różnych płytek, magia Arduino polega na tym, że nieważne czy używasz AVR, ESP, STM, ARM od Atmela, wszędzie zadziała ta sama funkcja Serial.println(); - bo ktoś się nad napracował.
W Twoim kodzie w loop ten delay do migania ledem też nie pomaga.