Go Down

Topic: Arduino duemilanove e simulink su UBUNTU (Read 2086 times) previous topic - next topic

cld05

Salve a tutti

Sono abbastnza inesperto riguardo arduino, elettronica ed informatica.

Quello che vorrei fare è controllare dei servo motori con arduino per muovere un robot antropomorfo che ho costruito io.

La mia idea iniziale è usare simulink ma se non ho capito male il pacchetto Arduino Target per simulink è utilizzabile solo con Windows. E sempre se non ho capito male una volta installato il pacchetto si necessiata di un compilatore (coder) che generi un file in codice C# dal modello simulink e che deve poi essere inviato alla scheda arduino. Il mio problema con Windows sta nel trovare compilatori gratuiti da poter usare. In pratica esiste un'alternativa al compilatore dato come versione trial dal sito ufficiale MathWorks? Intendo un'alternativa gratuita  :)

Inoltre io uso Matlab anche su Ubuntu, in questo ho un compilatore installato (Ubuntu ha un suo proprio compilatore già presente, GCC). Ma non è assolutamente possibile arduino target con Ubuntu?

In alternativa al simulink stavo provando a gestire la comunicazione tra arduino e uno script matlab con la comunicazione seriale, in pratica avrei letto i motori da Arduino, inviato tramite porta seriale i dati ad uno script matlab, elaborato i dati e di nuovo reinviati ad arduino tramite porta seriale per inviarli ai motori. La cosa però mi sembra al quanto macchinosa poiché non avevo capito che la porta seriale invia dati uno la volta (in serie), ma questo significa che se io prendo il valore 100 ciò che viene inviato è il carattere 1 che viene però trasmesso in codice ASCII, quindi per inviare tutto il numero 100 devo inviare uno ad uno tutte e tre le cifre, ricomporle e trasformarle da stringhe a valore numerico... cercavo qualcosa di più immediato se fosse possibile.

leo72

Non conosco né Mathlab né questo Simulink né Arduino Target.
Però uso da un bel pò Linux (non Ubuntu). Gcc è il compilatore standard di Linux, ma non è l'unico, ce ne sono altri.

Tornando ad Arduino Target, come detto non so cos'è ma se è un eseguibile per Windows non hai molte alternative: devi farlo girare su Windows oppure su una macchina virtuale hostata su Linux che virtualizza un client Windows su cui poi metti Arduino Target.

cld05

Provo a spiegarti rapidamente...
Matlab è un software di calcolo numerico e statistico. Simulink è una sorta di toolbox per scrivere modelli in schemi a blocchi. Con Simulink costruisco un modello costituito da una serie di blocchi in successione, collegati in un certo ordine logico e matematico per eseguire dei calcoli. Adesso vorrei appunto che tale schema sia convertito in codice C# al fine di caricarlo su arduino per far eseguire quella sequenza di calcoli su arduino stesso. Per fare questo si necessita di un compilatore...
Grazie della risposta :) vediamo se qualche altra anima gentile che conosce questi strumenti può aiutarmi :)

astrobeed


Adesso vorrei appunto che tale schema sia convertito in codice C# al fine di caricarlo su arduino per far eseguire quella sequenza di calcoli su arduino stesso. Per fare questo si necessita di un compilatore...


Arduino non si programma in C#, si programma tramite wiring che è un framework per C++, semmai ti serve un compilatore per Simulink in grado di convertire verso wiring, mi pare che qualcosa c'è però solo per Windows.
Scientia potentia est

leo72

TI dico la mia, togliti dalla testa l'idea di convertire un programma scritto in C# per una misera MCU ad 8 bit con 32 K di flash e 2K di RAM!  ;)
C# è un linguaggio nato per i computer, non per i microcontrollori. Già l'uso del C++ porta ad uno spreco di risorse in più rispetto all'uso del più semplice C, il C# sarebbe come cercare di far entrare un elefante in una 500.  :P
Riporta il codice in C/C++ che è meglio  :smiley-sweat:

Per gestire progetti in C# devi usare MCU dedicato (esiste il netDuino, mi pare, che programmi da Visual Studio) oppure comunque sistemi più performanti. Potresti anche pensare all'uso di un Linux embedded con sopra l'ambiente di sviluppo Mono, che contiene un compilatore capace di gestire il codice in C#.


cld05

Si forse hai ragione sono un po impreciso su quello che è il linguaggio di arduino, tuttavia leggendo quello che si fa con simulink su windows si utilizzano quelli che si chiamano "simulink coder" e "embedded coder" per generare dallo schema a blocchi un codice "caricabile" su arduino,
il link è il seguente, c'è scritto che ciò vale solo su windows ma quello che mi chiedo è... perché vale solo su windows se posso generare lo stesso tipo di codice usando matlab da Ubuntu?

http://www.mathworks.com/matlabcentral/fileexchange/30277-embedded-coder-support-package-for-arduino

cld05


TI dico la mia, togliti dalla testa l'idea di convertire un programma scritto in C# per una misera MCU ad 8 bit con 32 K di flash e 2K di RAM!  ;)
C# è un linguaggio nato per i computer, non per i microcontrollori. Già l'uso del C++ porta ad uno spreco di risorse in più rispetto all'uso del più semplice C, il C# sarebbe come cercare di far entrare un elefante in una 500.  :P
Riporta il codice in C/C++ che è meglio  :smiley-sweat:

Per gestire progetti in C# devi usare MCU dedicato (esiste il netDuino, mi pare, che programmi da Visual Studio) oppure comunque sistemi più performanti. Potresti anche pensare all'uso di un Linux embedded con sopra l'ambiente di sviluppo Mono, che contiene un compilatore capace di gestire il codice in C#.




Grazie mille dei consigli mi chiarirò meglio le idee sulla differenza tra C# e C++ per capire i limiti e i benefici di entrambi :)

astrobeed


sarebbe come cercare di far entrare un elefante in una 500.  :P


Dov'è il problema ?
Ce ne entrano quattro, due davanti e due di dietro  :smiley-mr-green:
Scientia potentia est

astrobeed


il link è il seguente, c'è scritto che ciò vale solo su windows ma quello che mi chiedo è... perché vale solo su windows se posso generare lo stesso tipo di codice usando matlab da Ubuntu?
http://www.mathworks.com/matlabcentral/fileexchange/30277-embedded-coder-support-package-for-arduino


Prima di tutto avrai sicuramente grossi limiti per la generazione del codice verso Arduino per via delle sue ridotte risorse e potenza di calcolo, inoltre è solo per Windows perché il software da utilizzare è stato scritto e compilato per Windows e non per Linux.
Scientia potentia est

cld05

Ho capito quindi a meno di non trovare dei compilatori free per windows non posso ambire a molto...  :smiley-roll-sweat:

astrobeed


Ho capito quindi a meno di non trovare dei compilatori free per windows non posso ambire a molto...  :smiley-roll-sweat:


Per Windows esistono una marea di compilatori free per tutti i linguaggi, se la tua applicazione per Matlab/Simulink genera uno sketch per Arduino non devi fare altro che compilarlo tramite l'ide di Arduino, se invece genera un codice C/C++ per AVR puoi compilarlo tramite AVR Studio e la sua toolchain basata su gcc, tutti e due free.
Scientia potentia est

gpb01


Ho capito quindi a meno di non trovare dei compilatori free per windows non posso ambire a molto...  :smiley-roll-sweat:


Bah ... tutto questo perché non vuoi dedicarti 15 minuti a scrivere, come ti ho già spiegato anche in un altro thread, una banale routine che legge dei caratteri dalla seriale, li mette in un array e alla fine fa un atoi() per convertirli in un numero intero ...  :smiley-roll:

Guglielmo
Search is Your friend ... or I am Your enemy !

astrobeed



Sono abbastnza inesperto riguardo arduino, elettronica ed informatica.

muovere un robot antropomorfo che ho costruito io.



Dimenticavo, queste due affermazioni sono in netto contrasto tra di loro, l'una esclude l'altra
Scientia potentia est

Go Up