Arduide, un IDE alternativo ad Arduino

Sono riuscito a far girare Arduide, purtroppo il pacchetto binario non esiste ancora per le varie distrò GNU/Linux e quindi chi volesse provarlo dovra compilare dai sorgenti.

Arduide è basato sul framework Qt4 e usa altre librerie che svolgere le funzionalità fornite, di seguito provo ad elencare le dipendenze che devono essere installate sul sistema perchè vada a buon fine la compilazione. Con il termine dipendenza si intende qualunque software (pacchetto), sia esso una libreria di funzioni o un pacchetto che contiene dei programmi. Es il programma avrdude è una dipendenza del pacchetto arduino, come pure java.

pacchetti necessari (nota che il nome del pacchetto potrebbe essere leggermente differente da quello visibile qui:

  1. Qt4.x Si tratta del framework che nokia ha acquisito e su cui è basato il noto desktop envinroment KDE4
  2. qscintilla2 è una libreria che mette a disposizione funzioni e classi per implementare un editor con sintassi colorata e altre funzioni tipiche di questi software.
  3. grantle Non ho idea di cosa faccia ma è necessaria
  4. QtDbus è un modulo del framework Qt. Non è necessario se libudev è installato sul sistema.
  5. libudev Richiede una versione recente di udev, ad esempio la mia fedora 12 non ha un pacchetto udev sufficientemente recente, ma la compilazione termina consuccesso perchè non trovando libudev installato sul sistema, il software viene configurato per usare QtDbus.
  6. git Si tratta del gestore di repositor o current version control e vi serve per clonare in locale il ramo di sviluppo di Arduide, in alternativa potete scaricare il pacchetto sorgente presente nel repositor http://gitorious.org/arduide/arduide/trees/master cliccando sul pulsante
    "Download master as tar.gz"

Di ogni pacchetto necessario ho fornito il nome generico che come dicevo varia da distrò a distrò, trovato il pacchetto per la vostra distrò dovete assicurarvi di installare il pacchetto contrassegnato con "devel" o "dev" presente nel nome, es libudev-devel nel caso di fedora.

Queste sono le dipendenze per Ubuntu 12.04:

libqt4-dev
qtwebkit
libqscintilla2-dev
libgrantlee-dev
libudev-dev
cmake
avr-gcc
avr-libc
avr-gdb
avr-binutils
avrdude

Ora dovete spostarvi nella directory principale del progetto, il nome di questa sarà "arduide" se avete clonato il repositor, mentre se scaricate il pacchetto prima dovete scompattarlo.

Arduide usa il build manager cmake, per avviare la compilazione eseguire i seguenti comandi:

cmake -DCMAKE_BUILD_TYPE=debug .

Nota che il punto finale fa parte del comando.

make

Il programma verrà compilato in modalità debug e se avviato da riga di comando vedremo tutti i messagi di debug nella shell.

Per clonare da git scrivere il seguente comando:

git clone git://gitorious.org/arduide/arduide.git

Per finire il programma una volta avviato richiede di specificare il percorso in cui risiede una versione dell'ide Arduino, fatto questo il programma è operativo.

Ciao.

Bene, caro Mauro. Partecipo volentieri.
Innanzi tutto vorrei però alcune info su Arduide, visto che non sono a casa e quindi non posso provarlo. Funziona solo con il core di Arduino o supporta altri core (quindi chip Tiny e simili)?
E' solo un IDE di supporto alla scrittura del codice o permette anche la flashatura del firmware?

PS:
io a casa ho Arch Linux e mi pare di aver visto che esiste un PKGBUILD per compilare Arduide da Git :wink:
http://aur.archlinux.org/packages.php?ID=39927

leo72:
Bene, caro Mauro. Partecipo volentieri.
Innanzi tutto vorrei però alcune info su Arduide, visto che non sono a casa e quindi non posso provarlo. Funziona solo con il core di Arduino o supporta altri core (quindi chip Tiny e simili)?
E' solo un IDE di supporto alla scrittura del codice o permette anche la flashatura del firmware?

PS:
io a casa ho Arch Linux e mi pare di aver visto che esiste un PKGBUILD per compilare Arduide da Git :wink:
http://aur.archlinux.org/packages.php?ID=39927

Ok, rispondo subito.
Probabilmente supporta anche il core tiny, l'unico modo per verificarlo e quello di avere il core e il codice di test che io non ho e non ho neanche un micro della famiglia Attiny, quindi tocca a te fare il test e riportare qui gli eventuali problemi. Per cambiare core si deve scegliere l'opzione Settings-> configure IDE che fa comparire una dialog dove cliccando su "Path" si ha la possibilità di puntare al nuovo core. Purtroppo questo path viene scritto nel file di configurazione che si trova sotto ~/.config/MuPuF.org/Arduino IDE.conf e questo rende impossibile avere più programmi arduide impostati in modo da puntare a diversi core, ma questo dovrebbe essere facilmente risolvibile mettendo mano al codice.

L'ide svolge tutte le funzioni che svolge l'ide attuale di Arduino, quindi anche l'uploader, in più c'è anche un debbugger (avr-gdc) che non so come si attiva, credo che si appoggi ad un software di emulazione.

Ok vada per il PKGBUILD, prova e se non funge scrivi qui cosa non va, forse prima e meglio seguire la procedura che ho descritto e poi passare a PKGBUILD.

Ciao.

MauroTec:
Sono riuscito a far girare Arduide, purtroppo il pacchetto binario non esiste ancora per le varie distrò GNU/Linux e quindi chi volesse provarlo dovra compilare dai sorgenti.

Per il momento non posso provarlo, ho appena fatto tabula rasa sia sul desktop che sul notebook e ho reinstallato solo windows, devo ancora finire di installare la miriade di programmi che uso, Linux lo reinstallo tra qualche giorno dopo di che provo il tuo IDE.

Sto provando la compilazione su Ubuntu 12.04. Poi ti faccio sapere.

astrobeed:

MauroTec:
Sono riuscito a far girare Arduide, purtroppo il pacchetto binario non esiste ancora per le varie distrò GNU/Linux e quindi chi volesse provarlo dovra compilare dai sorgenti.

Per il momento non posso provarlo, ho appena fatto tabula rasa sia sul desktop che sul notebook e ho reinstallato solo windows, devo ancora finire di installare la miriade di programmi che uso, Linux lo reinstallo tra qualche giorno dopo di che provo il tuo IDE.

che per caso non ho detto che gira anche su windows, si non l'ho detto. Come vedi nel sorgente c'è una dir win32 e nel file CMakeList.txt c'è questo pezzo di codice:

# Utils
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
  file(GLOB utils_OS_SOURCES
    "utils/win32/*.cpp" "utils/win32/*.h")
else()
  file(GLOB utils_OS_SOURCES
    "utils/unix/*.cpp" "utils/unix/*.h")
endif()

if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
  file(GLOB utils_SOURCES
    "utils/*.cpp" "utils/*.h"
    "utils/qxt/*.cpp" "utils/qxt/*.h"
    "utils/qxt/win/*.cpp" "utils/qxt/win/*.h"
    "utils/hexview/*.cpp" "utils/hexview/*.h")
else()
  file(GLOB utils_SOURCES
    "utils/*.cpp" "utils/*.h"
    "utils/qxt/*.cpp" "utils/qxt/*.h"
    "utils/qxt/unix/*.cpp" "utils/qxt/unix/*.h"
    "utils/hexview/*.cpp" "utils/hexview/*.h")
endif()

Quindi non ci dovrebbe essere alcun problema a compilarlo su windows, ma io li non posso aiutare perchè anche il compilatore gcc è leggermente diverso e poi ti devi procurare tutte le dipendenze, insomma su windows il lavoro è molto di più che su GNU/Linux, per cui ti consiglio di installare una distrò recente e provare la compilazione e dopo averlo provato puoi pensare di passare a windows, e magari scrivi pure come si procede su windows.

Ciao.

Queste sono le dipendenze per Ubuntu 12.04:

libqt4-dev
libqscintilla2-dev
libgrantlee-dev
libudev-dev
cmake

Alcune di esse si porteranno dietro altre dipendenze, poca roba comunque.
La compilazione l'ho eseguita sul tar.gz, non ho clonato il repo Git.
Avviato ArduIde, mi è stato chiesto se il software doveva scaricarsi l'IDE di Arduino oppure se volevo specificare un percorso: ho scelto la seconda via perché avevo già l'IDE 1.0.1 installato. Ho caricato uno sketch di prova, ho scelto la scheda (Arduino UNO) e poi ho compilato.

Risultato: Errore.
Cannot start program avr-g++
Compilation failed.

Ma allora non usa l'IDE di Arduino per prelevare anche la toolchain? Se è così, la toolchain di molte distro è buggata, è un problema.

MauroTec:
che per caso non ho detto che gira anche su windows, si non l'ho detto. Come vedi nel sorgente c'è una dir win32 e nel file CMakeList.txt c'è questo pezzo di codice:

Forse compila anche per Mac, durante il cmake iniziale ho visto che ha fatto un check sul sistema su cui stava girando (Q_WS_WIN, Q_WS_X11 e Q_WS_MAC)

Sì, serve aggiungere la toolchain a parte. Dall'IDE di Arduino preleva solo il core.
A casa proverò il programma su Arch e poi effettuerò una flashatura, ora non ho con me nessuna scheda.

mmm ma l'ide attuale non vi piace? :grin:
cosa cambia da quello vecchio?è almeno più performante?

Madwriter:
mmm ma l'ide attuale non vi piace? :grin:
cosa cambia da quello vecchio?è almeno più performante?

Questo è tutto da verificare, stando alla frequenza di aggiornamento lo sviluppo è attivo e quindi ci stanno lavorando su. Dovrebbe essere molto più affidabile perchè il codice è C++ con Qt4 e c'è supporto per l'estensione di funzionalità tramite plugin, dovrebbe essere anche più veloce e la GUI è sicuramente più piacevole alla vista, non c'è il problema dei menù strabboccanti e per finire io posso metterci le mani perchè conosco le Qt e il C++.

Staremo a vedere se merita.

Ciao.

Nelle intenzioni dell'autore c'è la volontà di realizzare un ambiente più snello. Effettivamente il caricamento avviene in pochissimo tempo. Mi riservo di dare un giudizio completo dopo il test di flashatura, comunque.

L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

leo72:
L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Questa è una caratteristica abbastanza complessa da implementare, richiede tantissimo lavoro da parte dello sviluppatore.

Ops ho riletto e mi rendo conto che devo chiarire alcuni punti.

@Astrobeed
L'ide non l'ho sviluppato io, non c'è una riga di codice mio.

@leo72
Il fatto che usi solo il core e le lib estese la considero una cosa buona, se vuoi fare in modo che usi la toolchain presente nelle directory dell'ide devi creare dei link simbolici e metterli in una directory che ha il path, ad esempio puoi creare una dir di nome "bin" nella home dell'utente e questa dovrebbe già avere il path attivo, se non lo è devi modificare il file .bash_profile così:

[mauro@localhost anjuta-avr.anjuta-modifications]$ cat ~/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

ora puoi creare i link simbolici nella dir "bin".

Il codice in effetti contiene direttive di configurazione anche per Mac e quindi è pensato per essere multipiattaforma, c'è solo da provare e verificare quello che non va.

L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Putroppo a volere fare bene le cose, l'autocompletamento è roba complessa. Ci vuole un parser che analizza tutti i file sorgente interni ed esterni (inclusi con la direttiva #include) al fine di riempire un database in memoria con i nomi di funzioni, classi ecc. Tutti i file di progetto interni sono monitorati, se modificati dall'esterno il codice si accorge della modifica e il database si aggiorna. In questo modo il terreno è preparato per il completamento e per la lista di funzioni e classi ecc (con un fava due piccioni). Ma tutto questo non si sviluppa in una settimana e la progettazione
può richiedere cambiamento di rotta. L'autocompletamento è a portata di mano in Qt perchè la classe QTextEdit la prevede, manca tutto ciò che ho elencato. Nota l'autocompletamento statico (stupido) non è cosa di cui vantarsi.

Astro mi ha preceduto.
Ciao.

astrobeed:

leo72:
L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Questa è una caratteristica abbastanza complessa da implementare, richiede tantissimo lavoro da parte dello sviluppatore.

Ma per me rimane forse l'unico motivo che mi spingerebbe a cambiare IDE. 8)

PaoloP:

astrobeed:

leo72:
L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Questa è una caratteristica abbastanza complessa da implementare, richiede tantissimo lavoro da parte dello sviluppatore.

Ma per me rimane forse l'unico motivo che mi spingerebbe a cambiare IDE. 8)

Ma sai i punti visti sono molteplici. Ad esempio se questo IDE offre tutte le funzionalità offerte dall'ide Arduino attuale, perchè non provarlo?
Visto che si tratta di codice in fase di sviluppo ci si può aspettare delle migliorie che grazie al framework sono a portata di mano, so che le mie parole rimangono parole perchè bisogna toccare con mano e verificare, ma io lo scrivo lo stesso. Il framework Qt è uno dei più potenti e flessibili in circolazione, semplice da usare e da estendere e rapido e contiene codice ottimizzato anche in asm, è multipiattaforma incluso Avr32 e Arm, queste io le considero buone premesse per un futuro sviluppo di questo IDE, di java non posso dire la stessa cosa causa ignoranza mia, posso solo aggiungere che il framework è disponibile anche in java.

Ciao.

A me ArduIde è piaciuto, di prim'acchitto. Poi magari posso anche ricredermi usandolo però l'avvio è notevolmente più rapido. Ho visto che supporta anche i core aggiuntivi, però non li vede se stanno dentro alla cartella /hardware dell'IDE di Arduino ma li vuole dentro a /sketchbook/hardware.

MauroTec:

PaoloP:

astrobeed:

leo72:
L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Questa è una caratteristica abbastanza complessa da implementare, richiede tantissimo lavoro da parte dello sviluppatore.

Ma per me rimane forse l'unico motivo che mi spingerebbe a cambiare IDE. 8)

Ma sai i punti visti sono molteplici. Ad esempio se questo IDE offre tutte le funzionalità offerte dall'ide Arduino attuale, perchè non provarlo?
Visto che si tratta di codice in fase di sviluppo ci si può aspettare delle migliorie che grazie al framework sono a portata di mano, so che le mie parole rimangono parole perchè bisogna toccare con mano e verificare, ma io lo scrivo lo stesso. Il framework Qt è uno dei più potenti e flessibili in circolazione, semplice da usare e da estendere e rapido e contiene codice ottimizzato anche in asm, è multipiattaforma incluso Avr32 e Arm, queste io le considero buone premesse per un futuro sviluppo di questo IDE, di java non posso dire la stessa cosa causa ignoranza mia, posso solo aggiungere che il framework è disponibile anche in java.

Ciao.

il java è fantastico confermo io :stuck_out_tongue_closed_eyes:

Su Fedora per installare le dipendenze ho usato il comando:

yum install qt-devel qscintilla-devel grantlee-devel libudev-devel cmake avr-gcc avr-libc avr-gdb avr-binutils avrdude qtwebkit-devel

Ho dovuto aggiungere il pacchetto qtwebkit-devel per compilare.

Ho provato ad installare ArduIde usando il pacchetto arduide-git presente nel repo AUR però non riesco a compilare.
Ad esempio, ho cercato di compilare uno degli esempi allegati al leOS ed ecco il risultato:

Compiling for Arduino Uno...
>>>> avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=101 -I/home/leo/Documenti/Arduino/arduino-1.0.1/hardware/arduino/variants/standard -I/home/leo/Documenti/Arduino/arduino-1.0.1/hardware/arduino/cores/arduino -o /tmp/arduino-buildjVG1gc/CDC.cpp.o /home/leo/Documenti/Arduino/arduino-1.0.1/hardware/arduino/cores/arduino/CDC.cpp
/usr/lib/gcc/avr/4.5.3/cc1plus: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory
Compilation failed.

Stesso identico risultato con l'esempio Blink