Show Posts
Pages: [1] 2 3
1  International / Software / Re: i2c senza master? on: February 11, 2013, 04:40:44 am
Astro
e' quello che pensavo anche io....ma invece funziona benissimo!
Ho cercato in rete da tutte le parti qualcosa del genere ma non ho trovato nulla.
Il vero gioco lo fa la if (flag_not_local==0) in testa alla receiveEvent che evita che la risposta alla wire.request sia intercetta ed esaurita nella funzione  ed invece ritorna subito nel corpo principale per fare processare i dati dal while (Wire.available()) { nel corpo del loop.
Con questo delay va alla grande, e usando la vecchia lib wire (io ho un ide 023).
Mah, che sia un bel trucco?
2  International / Software / Re: i2c senza master? on: February 11, 2013, 04:16:17 am
Ciao Astro e grazie per la risposta.
probabilmente dopo varie letture di documentazione devo essere arrivato alla configurazione con 2  master pero', di fatto, con il codice che tiallego (e' estrapolato da un codice molto piu' lungo, scusa per qualche inesattezza) faccio lavorare i 2 arduino sia come master che come slave all'occorrenza.
Stesso sketch su entrambi, cambia ovviamente la ID
Code:
#define THIS_ARDUINO_ID 1
#include <Wire.h>
char rets[11],ret_good[14],id[4];
String readString;

void setup()
{
Wire.begin(THIS_ARDUINO_ID);
Wire.onReceive(receiveEvent);
Wire.onRequest(requestEvent);
Serial.begin(115200);
}
void loop()
{
if (Serial.available() > 0)
{
readString="";  
while (Serial.available())
{
/* *****************************************
***  RICEVE LA STRINGA DI COMANDO
***  i primi 3 bytes sono la id di destino
***  il comando e' in readstring
***************************************** */
}
readString+="\0";

/* A chi va? */
String id_station=readString.substring(1,3);
id_station+="\0";
id_station.toCharArray(id, sizeof(id));
id_arduino_to = atoi(id);
readString=readString.substring(3);

/* se la id e' di questo arduino o null esegue il comando in locale */
if((id_arduino_to == THIS_ARDUINO_ID) || (id_arduino_to == NULL))
{
                        flag_not_local=0;
//Serial.println("LOCALE "+readString);
/*  esegue la funzione di elaborazione del comando* /
                        process_it();
                        Serial.println(ret_good);
}
else
{
                         /* E' UN COMANDO CHE VA SU UN'ALTRO ARDUINO */
Serial.println("WIRE "+readString);
/* invia la stringa comnando al target */
wire_send(id_arduino_to);
/* imposta il flag ad 1 in modo che sulla risposta non venga elaborata la wire.onreceive
ma continui su questo branch fino alla fine */
                        flag_not_local=1;
                        /* <-- importantissimo ! e' possibile che su richieste pesanti si debba aumentare il
                        delay per dare tempo all'arduino target di prepare la risposta */
                        delay(5);  
                        // richiedo alla id_targe il risultato del comando
                        Wire.requestFrom(id_arduino_to,31);
                        readString="";
           while (Wire.available())
                          {
                            char c = Wire.receive();
                            readString+= c;
                        }  
           readString+= "\0";
                        Serial.println("Ricevuto "+readString);
}
}
}

void wire_send(int id_arduino_to)
{
char w_send[31];
readString.toCharArray(w_send, sizeof(w_send));
w_send[31]= '\0';
int i;
Wire.beginTransmission(id_arduino_to);
while (w_send[i])
{
Wire.send(w_send[i++]);
}
Wire.endTransmission();
//Serial.println("Inviato "+readString);
}

void receiveEvent(int howMany)
{
  if (flag_not_local==0)
  {
/* qui riceve un stringa (comando) quando fa da pseudo slave */
readString="";
while (Wire.available()>0)
{
char c = Wire.receive();
readString+= c;
}  
readString+= "\0";
Serial.println("Ricevuto "+readString);
/* fa quello che il comando prevede */
    process_it();
  }
}

void requestEvent()
{
/* risponde ad una richiesta dati */
    Serial.println("** REQUEST TO COMMAND ");
     Wire.send(ret_good);
}

void process_it()
{
/* processa il comando */
/* il risultato va nel char ret_good */
 
}

Dimmi cosa ne pensi
Ciao e grazie
3  International / Software / i2c senza master? on: February 11, 2013, 03:45:06 am
Buongiorno a tutti
abbiamo 2 arduino; i2c prevede , in configurazione canonica che 1 faccia da master e 1 da slave.
Corretto?
Attendo la vostra risposta prima di continuare con la domanda.
Grazie
4  Using Arduino / Interfacing w/ Software on the Computer / Re: How to capture serial data and show it in a php webpage? on: January 23, 2013, 04:05:05 pm
If the monitoring is web based you can use Perl with module device:SerialPort or PHP with php_serial_class; there are other options to write what you need  but using Perl or Php you can find many examples on web.
All "todo" is to read the data from serial port, split(Perl)/(explode Php) it using the pipe (|) char and print the resulting array rows (quite similar in both languages).
You might also use bash or Perl to write a simple text console monitor; in this case you don't need Apache
5  Using Arduino / Interfacing w/ Software on the Computer / Re: PHP fread arduino serial com doesn't work. PLEASE Help!!! on: January 23, 2013, 03:08:36 pm
Someone have already answered.
Php can't do that in windows; you need a php extension to have the job done in windows, that means c+zend if you want to use "full" php function.
Php_serial_class works read/write only on linux (casualty?)
If you can, better to use linux or take a look at this project on sourceforce http://sourceforge.net/projects/arduinophp/?source=directory).
Good luck
6  International / Software / Re: Formattazione pagina web con webduino on: December 14, 2012, 06:26:22 am
Se vuoi fare un refresh della pagina ad ogni tot secondi , senza usare script o altre diavolerie, puoi semplicemente usare il tag meta

<meta http-equiv="refresh" content="'60'" />   <-- esempio per 60 secondi


Ciao
7  International / Software / Re: Controllo Arduino con Php (Php+Ext) on: November 29, 2012, 05:43:43 pm
Vai nella cartella dati dell'applicazione e apri il file config.php
Nelle prime righe trovi :
Code:
#COM PORT
$_SESSION['com']="COM1";
$_SESSION['speed']=115200;
$_SESSION['bits']=8;
$_SESSION['stop']=1;
$_SESSION['parity']=0; ##  0.....4 = none,odd,even,mark,space  ##

Cambia la com1 in com4...
8  International / Software / Re: Controllo Arduino con Php (Php+Ext) on: November 29, 2012, 05:33:56 pm
L'errore e' relativo al fatto che e' scritto ide 023 con la vecchia classe string; nella 1  e' stata reimplementata e quindi dovro' fare qualche modifica.
9  International / Software / Re: Controllo Arduino con Php (Php+Ext) on: November 29, 2012, 03:49:34 pm
Ciao Marco
nello zip che hai scaricato c'e anche un file defines.h ; deve stare nella stessa cartella del programma.
Creati una cartella sotto documenti e copiali tutti e 2 li dentro (arduino_php.pde e defines.h).
Poi usa la versione 023(almeno quella che ho io) perche ' con dalla 1 sono cambiate alcune cose e devo riscriverle lo scketch.
Mandami un messaggio , anche in email, che ti invio il pde pulito senza defines.h
Ciao
10  International / Software / Re: Controllo Arduino con Php (Php+Ext) on: November 28, 2012, 06:21:17 pm
Ciao Marco...ottimo!
Mi hai comunque aiutato a sistemare la parte installazione server; ho gia fatto delle modifiche sul sito(in effetti mancava un passaggio che e' scontato per chi ci smanetta su ma non per tutti).
Domani copio la parte installazione in un readme che metto nel file zip che si scarica...me ne ero proprio scordato.

Io non sono un arduinista; questo 2009 usato mi e' stato regalato a settembre ma mi sembra che abbiano gli stessi numeri di pin...per me ti funzia lo stesso.....cosi' mi fai un test con l'UNO!
Comunque nel forum ci sono persone che ne sanno molto ma molto piu' di me in materia.

Ti sarei molto grato se mi riportassi , a parte gli errori CHE SARANNO TANTI, funzioni o cose nuove che vorresti che il programma facesse.
Per il php ...il server lo hai gia,hai i sorgenti dei prorammi (forse un po complicati se parti da zero).
Di tutorial ce ne sono molti in rete; se parti da 0 o quasi quello di html.it http://www.html.it/basic/guide/ ( in italiano) va gia' bene.

Ciao
11  International / Software / Re: Controllo Arduino con Php (Php+Ext) on: November 28, 2012, 04:50:31 pm
Ciao
allora, sui primi 2 sono messaggi informativi...se vai sull'icona wamp, php, impostazioni php dovresti avere display_errors con la spunta; toglila.
La seconda e' invece l'estensione che non c'e; l'hai copiata nella cartella
Code:
wamp\bin\php\php5.3.0\ext
Controlla che nel php.ini ci sia una cosa del genere (ti posto un pezzo del mio)
Code:
; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.
;
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dio.dll
;extension=php_dba.dll
;extension=php_exif.dll
;extension=php_fileinfo.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_ming.dll
;extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll  ; Use with Oracle 11g Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_phar.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll
extension=php_simple_serial.dll

Stessa cosa nel file phpForApache.ini
Ciao e grazie per il supporto ed il feedback
12  International / Software / Re: Controllo Arduino con Php (Php+Ext) on: November 28, 2012, 04:18:41 pm
Ti ringrazio...mandami un messagio privato se vuoi.
Ciao
13  International / Software / Re: Controllo Arduino con Php (Php+Ext) on: November 28, 2012, 03:38:04 pm
Ciao Marco
dimmi gli errori che ti da che vediamo di capire cosa non ti funzia; la versione php non si cancella cosi', forse ti conviene reinstallare.
Altre cosa, dimmi anche che versione di apache hai.
...ho programmato per domenica di scaricarmi l'ultima versione con apache 2.2.22 e php 5.3.13 e ricompilare l'estensione.
La versione che ho io (apache 2.2.11 e php 5.3.0) la puoi scaricare da qui :
http://sourceforge.net/projects/wampserver/files/WampServer%202/WampServer%202.0/ e' la 2.0i (la prima.
14  International / Software / Re: Controllo Arduino con Php (Php+Ext) on: November 27, 2012, 01:27:54 pm
la notte, i vecchietti,  dovrebbero andare a dormire invece che smanettare!!!   a posto..grazie per il feedback
15  International / Software / Re: Controllo Arduino con Php (Php+Ext) on: November 27, 2012, 10:13:47 am
pablos - ciao e grazie
il progetto e opensource quindi, se ti serve qualcosa, "prendila e usala"!
Il mio obbiettivo  era quello di usare la configurazione "minimale" hardware (board, cavo usb e stop) e software (niente serialproxy o altre classi/dll che su windows danno problemi), la "poor-man" tanto per interderci.
Riguardo alla classe php piu' in voga al momento (parlo della php_serial_class), la usero' per la versione linux.Come ho scritto sul sito, su windows funziona solo in uscita ma non in entrata; e poi resetta continuamente la porta!
Ho deciso di scrivere tutto in php per permettere a piu' gente possibile di usare il codice; forse java sarebbe stato piu' idoneo  (o phyton o forse in perl) ma sicuramente avrebbe avuto molta meno platea .
Adesso sto lavorando alla parte di accesso remoto con android e sono circa a meta'; penso di mettere sul sito l'applicazione per il download a fine settimana;non ho grosse potenze di macchina (ho un vecchio nb acer celeron D) e l'emulatore e' un macigno!
Oltre che a provarlo nell'emulatore ho un asus eeepc con installato il porting x86 di android (e' un 7" 800x600, diventa un tablet praticamente) ma non ho un vero dispositivo android....spero che qualcuno lo provi per me, come spero che mi arrivino dei feedback dall'uso dell'applicazione!
Magagne sicuramente ce ne saranno ma, se sviluppi sw, sai bene che la figura del tester non e' mai quella dello sviluppatore!
L'ultimo passo sara quello dello SCADA; ma qui mi aspetta un bel lavoro in quanto dovro cambiare sia l'estesione php per gestire l'overlapped , sia lo schetch di arduino, cominciando ad usare le interruzioni.Studiare!Studiare e ancora studiare!
Altra storia.
Se hai bisogno di qualche delucidazione sull'applicazione contattami pure.
Pages: [1] 2 3