Buonasera sono su un pc win 10 con macchina virtuale su cui è installato UBUNTU. Se da UBUNTO utilizzo il comando PlatformIo Upload per scaricare il software sulla scheda Arduino uno, funziona correttamente . Se lo faccio con un programma scritto in python dove , con le opportune modifiche nei percorsi che emulano il comando platformIo upload, lo faccio girare su WIN 10 funziona ma su ubuntu mi restituisce il seguente errore:
System wide configuration file is "/usr/share/arduino/hardware/tools/avrdude.conf"
User configuration file is "/home/sky70/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyS0
Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
il programma è il seguente
import time
import subprocess
import serial
import sys
import binascii
import os
import tkinter as tk
window = tk.Tk()
window.geometry("600x200")
window.title("Robotic Arm")
window.resizable(False, False)
window.configure(background="yellow")
def str_arm():
from subprocess import run
run(["/usr/share/arduino/hardware/tools/avr/bin/avrdude", '-C/usr/share/arduino/hardware/tools/avrdude.conf', "-v", "-patmega328p", "-carduino", "ttyACM0", "-b115200", "-D", "-Uflash:w:/home/sky70/Documents/PlatformIO/Projects/MOV_ARM/.pio/build/uno/firmware.hex:i"])
first_button=tk.Button(text="Start Robotic Arm", command=str_arm)
first_button.place(x=220, y=60)
second_button=tk.Button(text="End Robotic Arm" , command=fine_arm)
second_button.place(x=220, y=100)
if __name__== "__main__":
window.mainloop()
Vorrei un aiuto a risolvere il problema . Ho provato anche a staccare e reinserire il cavo USB , resettare la scheda Arduino uno ma, non ho risolto. grazie mile
Il codice non c'entra nulla, non va bene lo script che stai usando sotto ubuntu dove, probabilmente, i percorsi sono diversi tanto è vero che di indica che NON riesce a trovare un file:
User configuration file does not exist or is not a regular file, skipping
... che, guarda caso, è proprio il file di configurazione di avrdude. Devi vedere sulla tua macchina ubuntu dove si trova il file di configurazione richiesto e correggere il percorso.
Buonasera Sig. Guglielmo c'è una cosa che non mi è chiara e , premetto , non sono espertissimo pertanto, mi perdoni se commetto delle banalita'. Ho installato Arduino Ide sulla macchina virtuale e ho provato a trasferire uno sketch tra gli esempi . Le espongo il risultato:
System wide configuration file is "/usr/share/arduino/hardware/tools/avrdude.conf"
User configuration file is "/home/sky70/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyS0
Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
------------------------------------------------------------------------------
Processing uno (platform: atmelavr; board: uno; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (3.4.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:
- framework-arduino-avr 5.1.0
- tool-avrdude 1.60300.200527 (6.3.0)
- toolchain-atmelavr 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 8 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <HCSR04> 1.1.0
|-- <LiquidCrystal_I2C>
| |-- <Wire> 1.0
|-- <Octopus> 7.5.0
| |-- <Wire> 1.0
|-- <Wire> 1.0
Building in release mode
Checking size .pio/build/uno/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 12.3% (used 252 bytes from 2048 bytes)
Flash: [== ] 20.6% (used 6650 bytes from 32256 bytes)
Warning! Please install `99-platformio-udev.rules`.
More details: https://docs.platformio.org/page/faq.html#platformio-udev-rules
Configuring upload protocol...
AVAILABLE: arduino
CURRENT: upload_protocol = arduino
Looking for upload port...
Auto-detected: /dev/ttyACM0
Uploading .pio/build/uno/firmware.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file ".pio/build/uno/firmware.hex"
avrdude: writing flash (6650 bytes):
Writing | ################################################## | 100% 1.28s
avrdude: 6650 bytes of flash written
avrdude: verifying flash memory against .pio/build/uno/firmware.hex:
avrdude: load data flash data from input file .pio/build/uno/firmware.hex:
avrdude: input file .pio/build/uno/firmware.hex contains 6650 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 1.04s
avrdude: verifying ...
avrdude: 6650 bytes of flash verified
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
avrdude done. Thank you.
====================================================== [SUCCESS] Took 6.15 seconds ======================================================
Terminale verrà riutilizzato dalle attività, premere un tasto qualsiasi per chiuderlo.
Come vede l'indicazione del file di configurazione lo da comunque solo che poi trasferisce correttamente lo sketch sulla scheda . Dalle opzioni di Arduino Ide ho attivato il dettaglio della sequenza e ho provato ad inserire, i percorsi indicati, nel programma ma l'errore è identico e non trasferisce nulla. Francamente non voglio arrendermi ma, ho esaurito i test da effettuare . Grazie mille in ogni caso.
Mmm ... mi sa che ti ci vuole qualcuno esperto di Linux ... io lavoro sotto macOS e NON ho mai visto che non trovi il file di configurazione di avrdude ...
Magari se @Maurotec passa da queste parti forse ti potrà aiutare ...
PS: anche gli altri percorsi dovresti verificarli dal terminale e da questo provare ad eseguire avrdude anche senza comandi.
Poi c'è questo warning che indica la mancanza di un file delle regole di udev tramite le quali si può o meno concedere l'accesso a file da parte del tuo utente. Cioè se il tuo utente non può accedere a /dev/ttyAMC0 il comando non andrà a buon fine.
Warning! Please install `99-platformio-udev.rules`.
More details: https://docs.platformio.org/page/faq.html#platformio-udev-rules
Buonasera ho eseguito quanto indicato e ho anche reinstallato Arduino IDE . I percorsi sono , chiaramente cambiati ma, l'errore è lo stesso . Ho notato anche che nel codice io indico /dev/ttyACM0, ma quando parte il software , da VS CODE, utilizza la ttyS0. Non capisco anche perchè se lo trasferisco utilizzando Arduino IDE , la porta utilizzata è la ttyACM0. Puo' essere questa la causa?.. Grazie
Non so darti spiegazioni dettagliate circa VS CODE, poi vedo platformio, in sostanza c'è troppa carne a fuoco. Ora io posso immaginare che i vari tools usati da VS CODE come pure arduino IDE effettuano il parser del risultato dato in shell da avrdude e poi stampano un output formattato, quindi ci sta che indichino ttyACM0 al posto di /dev/ttyACM0. Se notte tempo mi hanno sovvertito linux non lo ma non credo, su linux e uinix tutto (ma proprio tutto) è fatto attraverso file, alcuni sono speciali come appunto i device file che si trovano tutti sotto /dev è sotto questa directory ci può scrivere solo l'utente che ha i permessi e normalmente da utente semplice non si può aprire alcun device file. Poi parliamo di virtualizzazione e io non ho mai virtualizzato e quindi non so. Quello che è certo che con python che con C++ ho avviato di tutto incluso avrdude senza questi problemi. Quindi ci sarà il motivo, non resta altro da fare che scoprirlo.
Hai provato dal terminale di comando ad avviare avrdude?
Buonasera chiedo un aiuto . Causa un errore commesso , ho dovuto disinstallare VM WARE ( Macchina virtuale ) e reinstallarla. Ho reinstallato ubuntu . Tutto bene . Installo Arduino IDE e come porte seriali non mi propone ttyACM0 ma solo la ttyS0 e S1. Se provo , da terminale, mi dice /dev/ttyACM0': File o directory non esistente
Cosa devo fare?..Grazie
Buonasera mi faceva piacere comunicare che ho risolto entrambi i problemi segnalati . Reinstallando ubuntu , e arduino mi ha riconosciuto la porta ttyACM0. Inoltre nel programma python la porta non veniva riconosciuta perchè , mancava nell'istruzione run l'indicazione di -P prima di /dev/ttyACM0. Grazie infinite in ogni caso . Saluti