Arduino e Apache

Salve. Ho una piccolo problema da sottoporvi.... ho arduino connesso usb ad un notebook con apache installato; adesso vorrei utilizzare il server per inviare dati ad arduino, sapete dove posso trovare del materiale a riguardo?

Grazie in anticipo

Se sei sotto linux esistono librerie apposta ma non perfette (cerca su phpclasses.org)
se sei sotto windows ti serve un bridge COM to TCP (Download windows: http://download.berlios.de/arduino/serproxy-0.1.3-3.bin.win32.zip)

grazie della risposta. uso linux quindi provo a vedere su phpclasses.org cosa trovo..

Dopo un pò di ricerche sono riuscito a trovare questo http://pastebin.com/7KTM6UHe.Anche se ancora non sono riuscito a farlo funzionare..(ma penso che ci sia qualche problema di permessi nel mio linux).Provate anche voi...

apache non usa il tuo utente ma l'utente apache. Quindi devi aggiungere l'utente apache al gruppo della seriale, ora non ricordo come si chiama ma se cerchi un attimo lo trovi

In realta' non e' necessario che la comunicazione avvenga direttamente dal server ad Arduino.. potresti per esempio invocare dal server via php un piccolo script o eseguibile che comunichi lui stesso con Arduino, magari con argomenti dati dal server..

In questo modo ti sleghi da dover usare la seriale con PHP e puoi usare altri linguaggi di programmazione.. per esempio con python c'e' la libreria pyserial che rende la comunicazione su seriale semplicissima.

In realta' non e' necessario che la comunicazione avvenga direttamente dal server ad Arduino.. potresti per esempio invocare dal server via php un piccolo script o eseguibile che comunichi lui stesso con Arduino, magari con argomenti dati dal server..

In questo modo ti sleghi da dover usare la seriale con PHP e puoi usare altri linguaggi di programmazione.. per esempio con python c'e' la libreria pyserial che rende la comunicazione su seriale semplicissima.

Penso sia la cosa più semplice da fare anche perchè in php è da un due ore che ci lavoro e non ho ottenuto grandi risultati ;).

apache non usa il tuo utente ma l'utente apache. Quindi devi aggiungere l'utente apache al gruppo della seriale, ora non ricordo come si chiama ma se cerchi un attim

Appena posso provo a smanettarci ancora un pò; perchè anche se penso di optare per la soluzione suggerita da Fabio Varesano l'idea del php mi stuzzica ;D

UPDATE:Come pensavo il problema riguardava il permesso in /dev/ttyUSB0 adesso tutto funziona :D

Hai usato una classe o fopen mettendo l'indirizzo della porta? Su Windows ho sempre usato un programma come "proxy" mentre su linux ho sempre avuto problemi

ho usato una classe.. la puoi trovare qui http://pastebin.com/7KTM6UHe

Grassie!

Hai usato una classe o fopen mettendo l'indirizzo della porta? Su Windows ho sempre usato un programma come "proxy" mentre su linux ho sempre avuto problemi

fopen va bene solo per i file di testo ed è specifica del C ansi. Devi usare una open che è specifica di Unix

Ragazzi… vedendovi parlare di socket, seriale via php o C mi viene da reiterare il mio commento sopra… usate un programma esterno!

Guardate in python:

import time
import serial

# configure the serial connections (the parameters differs on the device you are connecting to)
ser = serial.Serial(
      port='/dev/arduino',
      baudrate=9600,
      parity=serial.PARITY_NONE,
      stopbits=serial.STOPBITS_ONE,
      bytesize=serial.EIGHTBITS
)

time.sleep(5)
ser.flushInput(); # clean input buffer

while 1 :
  print(ser.readline()),

Questo legge tutto quello che arriva dall’arduino riga per riga… cioe’ perche’ andarsi a incasinare quando c’e’ qualcosa di cosi’ semplice?

JM2C

vabbè ma se ci sono già le classi in php perchè usare python? allora usate java e fate un'applet client server che è ancora più fica (intendo come interfaccia grafica) e open, essendo una chiamata di sistema, dovrebbe funzionare su tutti i linguaggi di programmazione/script, si è legati solo allo standard seguito dal SO

Mai provato a programmare con le api java per le porte seriali? Beh.. dire che c'e' da star male e' dir poco.. io lo feci 4 anni fa e quando scoprii python e pyserial mi si semplifico' la vita tantissimo.

Usare la classe PHP mi sembra un bel po' bruttina come soluzione.. il primo motivo potrebbe essere in quanto tutte le chiamate in lettura sulla seriale sono bloccanti e non thread safe.. cosa succede se piu' utenti contemporaneamente attivano una connessione alla seriale?

Cioe'.. se l'obbiettivo e' accendere un led da una pagina web via PHP allora ok ma se si vuole fare qualcosa di gia' un po' complesso (es: domotica) ed avere una interfaccia web per quello allora io scarterei PHP (come linguaggio per usare la seriale, come scripting web va benissimo).

ammetto che in java è un pò un macello, ma gli oggetti servono apposta per questo :-)

Ho appena fino di fare alcuni test usando la libreria pyserial; effettivamente come ha già detto Fabio Varesano in questa maniare le cose si semplificano di molto ;)

Bene, mi fa piacere.. tempo fa scrissi un blog post nel quale facevo un'esempio di una semplice interfaccia a comandi via seriale. Potrebbe esserti utile per muovere i primi passi con Python e PySerial.

Ecco il link: http://www.varesano.net/blog/fabio/serial%20rs232%20connections%20python

con quel tanto mi faccio un programma in C o C++ compilato con gpp su linux che grazie a exec di php vada a richiamare su shell passando parametri voluti e il programma non fa altro che passaggio ;D certo si perde di comodità, il passaggio PHP-Arduino è il prossimo che provo, purtroppo devo farlo girare su un apache già presente :( ma le potenzialità del web al giorno d'oggi con AJAX e HTML5 ne vale la pena ;)

@superlol .. non ho capito il tuo commento

il php ha una funzione che si chiama exec() che fa eseguire un comando da shell, su linux da shell si può dunque richiamare un programma già fatto, passando dei parametri e far si che la comunicazione seriale la faccia il programma