Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: ZAJDAN 19. 11. 2018, 16:25:33
-
Ahoj,
začínám experimentovat s Arduinem, které jsem k počítači připojil přes USB:
# ls -l /dev/ttyACM*
crw-rw---- 1 root dialout 166, 3 Nov 19 15:58 /dev/ttyACM3
k psaní a nahrání kódu používám Arduino 2:1.0.5 (Debian)
1) všiml jsem si, že každým uploadnutím kódu inkrementalne narustá /dev/tty/ACM3 , /dev/tty/ACM4. /dev/tty/ACM5, /dev/tty/ACM6.....
je to běžné?
2) i když použiju originální šablonu pro nějaký modul, uploadnu ji a chci se podívat přes konzoli zda maká, co vypisuje....Serial Monitor je stále prázdnej
musím tty dodatečně nakonfigurovat?
-
S arduinom som uz dlhsie nerobil, ale:
1. neviem
2. nic som dodatocne nekonfiguroval.
Serial.begin(9600);
Serial.println(premenna);
a fungovalo.
Pripadne checkni co Ti pise dmesg, niekedy sa stalo ze sa mi arduino "zaseklo".
-
a fungovalo.
Pripadne checkni co Ti pise dmesg, niekedy sa stalo ze sa mi arduino "zaseklo".
problém je ten,že každým uploadem se přečísluje /dev/ttyACM
kód jsem uploadnul ve stavu, kdy /dev/ttyACM bylo /dev/ttyACM0
po uloadu se změnilo na /dev/ttyACM1 a tak stále dokola
proto je hluchej ten Serial Monitor
-
Když se ti změní název zařízení, logicky musíš změnit jeho nastavení v arduino IDE, aby jej serial monitor použil.
Lze nastavit pravidlo do udevu, aby byl název fixní.
-
Když se ti změní název zařízení, logicky musíš změnit jeho nastavení v arduino IDE, aby jej serial monitor použil.
Lze nastavit pravidlo do udevu, aby byl název fixní.
ano, to jsem udělal,
uploadnu kod -> kliknu Serial Monitor -> Serial port '/dev/ttyACM10' not found. Did you select the right one from the Tools > Serial Port menu?
jdu tedy do Tools->Serial Port ->zvolim /dev/ttyACM11
spustím Serial Monitor a nic se neděje
-
pro testování jsem teď zkusil primitiv:
void setup() {
Serial.begin(9600);
Serial.println("Hello World");
}
void loop() {
Serial.println(" Hello World ");
delay(2000);
}
ale, serial monitor je stale hluchej
-
Když se ti změní název zařízení, logicky musíš změnit jeho nastavení v arduino IDE, aby jej serial monitor použil.
Lze nastavit pravidlo do udevu, aby byl název fixní.
Sériák by se vůbec neměl při uploadování reinicializovat pokud to není Arduino Leonardo. Tohle vypadá na nějaký HW problém (napájení?), vypiš si dmesg kde je ta reinicializace vidět.
-
Co vím z Windows, tak serial port z Arduina je "hluchý" dokud se správně nenastaví RTS/CTS piny (i když je to VCP).
-
Sériák by se vůbec neměl při uploadování reinicializovat pokud to není Arduino Leonardo. Tohle vypadá na nějaký HW problém (napájení?), vypiš si dmesg kde je ta reinicializace vidět.
je to Leonardo
kus z dmesg:
[13209.043772] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[13209.043775] usb 5-2: Product: Arduino Leonardo
[13209.043778] usb 5-2: Manufacturer: Arduino LLC
[13209.045788] cdc_acm 5-2:1.0: This device cannot do calls on its own. It is not a modem.
[13209.045812] cdc_acm 5-2:1.0: ttyACM17: USB ACM device
[13569.686572] usb 5-2: USB disconnect, device number 23
[13578.794418] usb 5-2: new full-speed USB device number 24 using uhci_hcd
[13578.973481] usb 5-2: New USB device found, idVendor=2341, idProduct=8036
[13578.973487] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[13578.973490] usb 5-2: Product: Arduino Leonardo
[13578.973493] usb 5-2: Manufacturer: Arduino LLC
[13578.976565] cdc_acm 5-2:1.0: This device cannot do calls on its own. It is not a modem.
[13578.976590] cdc_acm 5-2:1.0: ttyACM17: USB ACM device
[13624.247746] usb 5-2: USB disconnect, device number 24
[13629.103621] usb 5-2: new full-speed USB device number 25 using uhci_hcd
[13629.282678] usb 5-2: New USB device found, idVendor=2341, idProduct=8036
[13629.282684] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[13629.282687] usb 5-2: Product: Arduino Leonardo
[13629.282691] usb 5-2: Manufacturer: Arduino LLC
[13629.284744] cdc_acm 5-2:1.0: This device cannot do calls on its own. It is not a modem.
[13629.284769] cdc_acm 5-2:1.0: ttyACM17: USB ACM device
[13920.862855] usb 5-2: USB disconnect, device number 25
[13926.830665] usb 5-2: new full-speed USB device number 26 using uhci_hcd
[13927.013768] usb 5-2: New USB device found, idVendor=2341, idProduct=8036
[13927.013774] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[13927.013778] usb 5-2: Product: Arduino Leonardo
[13927.013781] usb 5-2: Manufacturer: Arduino LLC
[13927.015853] cdc_acm 5-2:1.0: This device cannot do calls on its own. It is not a modem.
[13927.015877] cdc_acm 5-2:1.0: ttyACM17: USB ACM device
[14124.411355] usb 5-2: reset full-speed USB device number 26 using uhci_hcd
[14124.559863] cdc_acm 5-2:1.0: This device cannot do calls on its own. It is not a modem.
[14124.559893] cdc_acm 5-2:1.0: ttyACM17: USB ACM device
-
zkusil jsem to na virtual Windows7 a pri verbose modu vidim:
Found upload port: COM3
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -PCOM3 -b57600 -D -Uflash:w:C:\Users\ZDENEK~1.ERK\AppData\Local\Temp\arduino_build_552769/sketch_nov19a.ino.hex:i
avrdude: Version 6.3-20171130
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"
Using Port : COM3
Using Programmer : avr109
Overriding Baud Rate : 57600
AVR Part : ATmega32U4
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 9000 9000 0x00 0x00
flash 65 6 128 0 yes 32768 128 256 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : butterfly
Description : Atmel AppNote AVR109 Boot Loader
Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding
Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding
hmmmm
-
Sériák by se vůbec neměl při uploadování reinicializovat pokud to není Arduino Leonardo.
CDC device (ACM) se mi objevilo vždy jen u Leonarda, takže to je - jak již bylo potvrzeno.
-
Vypadá to, jako by se po nahrání odpojil a znovu připojil nebo nějak reinicializoval.
Mě se pouze po odpojení kabelu a opětném připojení náhodně připojuje jako ttyUSB0 nebo ttyUSB1 ( Lubuntu ).
Možná by i ve vašem případě pomohlo tohle řešení:
https://unix.stackexchange.com/questions/66901/how-to-bind-usb-device-under-a-static-name (https://unix.stackexchange.com/questions/66901/how-to-bind-usb-device-under-a-static-name)
-
To ze ma Leonardo problém se píše na mnoho webech. Docitam se ze někomu pomohlo zmáčknout během uploadu reset.
https://stackoverflow.com/questions/49283074/arduino-leonardo-avrdude-butterfly-recv-programmer-is-not-responding
-
Když se ti změní název zařízení, logicky musíš změnit jeho nastavení v arduino IDE, aby jej serial monitor použil.
Lze nastavit pravidlo do udevu, aby byl název fixní.
ano, to jsem udělal,
uploadnu kod -> kliknu Serial Monitor -> Serial port '/dev/ttyACM10' not found. Did you select the right one from the Tools > Serial Port menu?
jdu tedy do Tools->Serial Port ->zvolim /dev/ttyACM11
spustím Serial Monitor a nic se neděje
Z toho jsem pochopil, ze se ti dev stale meni.
Ja v udevu mam
## Arduino
# QinHeng Electronics HL-340 USB-Serial adapter
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", \
PROGRAM="/usr/bin/whoami", SYMLINK+="ttyUSB99Arduino", MODE:="0666", OWNER="%c", GROUP="USBdev"
takze serial monitor povesim na /dev/ttyUSB99Arduino a cislo /dev/ttyACM je mi jedno :-)
-
U Leonarda se musí v setup() počkat na inicializaci Serialu. U ostatních Arduin ne.
void setup()
{
Serial.begin(9600);
while (!Serial) {}
}
void loop()
{
....
}
-
Sériák by se vůbec neměl při uploadování reinicializovat pokud to není Arduino Leonardo.
CDC device (ACM) se mi objevilo vždy jen u Leonarda, takže to je - jak již bylo potvrzeno.
I u klasického Arduina se to může stát - některá Arduina mají „hardwarový“ převodník a některá (minimálně Arduino Mega) mají jako převodník z USB na sériák AtMegu 8U, která sériák emuluje.
-
Díky za info. Mám všechny čínské, kde je buď CH340, nebo nano a pak používám klasiku PL2302.
V poslední době se objevily nano s CH340 na spodní straně a usb portem, což je super užitečné.
-
díky hoši...
zkusil jsem doplnit zmíněný while (!Serial) {} ,ale stále je to stejné,
Je možné že by byl poškozený loader?
-
Daří se uploadnout sketch? Funguje nějaký blink na ledce 13?
-
Daří se uploadnout sketch? Funguje nějaký blink na ledce 13?
právě že nedaří, nedaří se ani Blink
vše končí:
Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding
-
pokud linuxu jakýkoli program drží otevřenej sériovej port následně při novém připojení toho usb sériáku vytváří nové zařízení s novým jménem. což se někdy děje i třeba při resetu usb periferie.
můj typický problém s embedded periferiema, co mají sériák na usb je, že když si otevřu sériovej port třeba v minicomu a pak odpojím a připojím usb periferii, tak se mi namapuje namapuje na nějaké jiné jméno a teprve až když ukončím minicom a znovu připojím danou periferii, tak se mi namapuje na to staré jméno.
na první pohled tohle chování vypadá náhodně.
-
přešíslování seriáku ve skutečnosti není můj problém, to spíš byla úvodní nejasnost jak ta věc funguje
teď je problém, že se nedaří ani uploadovat sketch/kod/program
-
teď je problém, že se nedaří ani uploadovat sketch/kod/program
mě většina problémů s arduinem a avr zmizela poté, co jsem si koupil programátor avr dragon. tím se obejdou všechny ty bootloadery, chybné nastavení fuses a další problémy. teda, používám ho na windows s avr studiem, protože na linuxu to před těma rokama bylo utrpení avrko debugovat. ne, že by bylo dneska avr studio jednoduché na používání, od doby, co to prostředí postavili na visual studiu to není úplně dobré.
samozřejmě to pak všechno programuju v céčku a nepoužívám sketche.
-
mě většina problémů s arduinem a avr zmizela poté, co jsem si koupil programátor avr dragon. tím se obejdou všechny ty bootloadery, chybné nastavení fuses a další problémy. teda, používám ho na windows s avr studiem, protože na linuxu to před těma rokama bylo utrpení avrko debugovat. ne, že by bylo dneska avr studio jednoduché na používání, od doby, co to prostředí postavili na visual studiu to není úplně dobré.
samozřejmě to pak všechno programuju v céčku a nepoužívám sketche.
díky za tip, já se vytrestal s chinesse model :_) na hraní ok, ale když už člověk potřebuje úderně nasadit nějakou věč, tak raději originál od talošů
-
Jaké jsi měl konkrétně problémy? Jednou se mi stalo, že bylo AVR špatně přiletované, ale bylo to pod mikroskopem vidět, takže snadná oprava. Jinak zatím vždy zcela bez problémů. Tak mě zajímá, v čem bývá problém, abych se tomu když tak vyhnul. Díky.
-
díky za tip, já se vytrestal s chinesse model :_) na hraní ok, ale když už člověk potřebuje úderně nasadit nějakou věč, tak raději originál od talošů
Tak to jses asi prvni, o kom vim, ze pouziva original. V cem byl u cinske verze problem? Mam v terenu nejaka ProMini a nezaznamenal jsem problem.
-
No, možná by trochu pomohlo vypnout službu ModemManager. Ta je opravdu dost otravná při práci s ttyACM (a i jinými sériovými porty). Ono to někdy nějak funguje i s ní, ale dost dlouho trvá (cca 10 s) než služba port pustí a dá se s ním uživatelsky nějak pracovat. Příkaz najdete na webu, je to něco jako systemctl disable ModemManager.service.
-
dustin: jestli je to dotaz na mě.. co se hw týká:
asi nejvíc mě číňani naštvali když jsem chtěl stavět herní ovladač. existuje arduino s dvěma avr, jedním na usb, co se normálně používá jako usb seriák a druhým, které se programuje. a já potřebovat upravit firmware v tom usbčkovém, abych z něj udělal usb hid. jenže číňani na tu desku dali místo toho usb avr úplně jinou součástku, takže to nešlo.
a taková druhá nepříjemná věc bylo rozchozování debugwire na arduinu nano, měli tam špatně zapojený reset (debugwire komunikuje skrz reset), ale to člověku na první pohled nedojde.
-
dustin: jestli je to dotaz na mě.. co se hw týká:
asi nejvíc mě číňani naštvali když jsem chtěl stavět herní ovladač. existuje arduino s dvěma avr, jedním na usb, co se normálně používá jako usb seriák a druhým, které se programuje. a já potřebovat upravit firmware v tom usbčkovém, abych z něj udělal usb hid. jenže číňani na tu desku dali místo toho usb avr úplně jinou součástku, takže to nešlo.
a taková druhá nepříjemná věc bylo rozchozování debugwire na arduinu nano, měli tam špatně zapojený reset (debugwire komunikuje skrz reset), ale to člověku na první pohled nedojde.
Ti cinani to tam casto pisu v popise vyrobku, ze je tam CH340G.
-
asi nejvíc mě číňani naštvali když jsem chtěl stavět herní ovladač. existuje arduino s dvěma avr, jedním na usb, co se normálně používá jako usb seriák a druhým, které se programuje. a já potřebovat upravit firmware v tom usbčkovém, abych z něj udělal usb hid. jenže číňani na tu desku dali místo toho usb avr úplně jinou součástku, takže to nešlo.
Tomu nerozumím. Chci-li USB HID (třeba do DIY herní myši), použiju leonardo pro micro za dva dolary, které je na to přímo určené. Pokud USB HID nepotřebuju, použiji standardní arduino, které z Číny má snad téměř vždy klasiku CH340 - usb-serial. Že někdo místo usb-serial osadil naprogramované AVR, to bych viděl jako "nezdokumentovaný feature", privátní metoda.
-
Tomu nerozumím. Chci-li USB HID (třeba do DIY herní myši), použiju leonardo pro micro za dva dolary, které je na to přímo určené. Pokud USB HID nepotřebuju, použiji standardní arduino, které z Číny má snad téměř vždy klasiku CH340 - usb-serial. Že někdo místo usb-serial osadil naprogramované AVR, to bych viděl jako "nezdokumentovaný feature", privátní metoda.
Já todle tehdy řešil přes uno, které má v originální verzi to naprogramované avr v roli usb-serial konvertoru. A čínský prodejce se tvářil, že tam to druhé avr má taky.
Později jsem koupil leonardo, to dost dobře nemůžou ošidit bez ztráty základní funkcionality.
-
Mně použití CH340 nepřijde jako ošizení, naopak splňuje to specifikace - usb serial pro hlavní AVR. Snad vždycky jsem tam to CH340 viděl uvedené, ale je klidně možné, že to v tomto konkrétním případě měli popsané blbě.