Go Down

Topic: Arduino/PHP-MySQL (Read 501 times) previous topic - next topic

Sleepystan

Bonjour à tous,

Je suis étudiant en Système Numérique et j'ai pour projet une poubelle connecté.

J'utilise un télémètre sur mon arduino (ça marche, je reçois les valeurs sur le moniteur série).
J'aimerais envoyer les résultats en bdd via une liason PHP. Le soucis c'est que je n'ai pas de shield ethernet.
Du coup, je me retourne vers vous afin de savoir s'il est possible de recevoir les données en bdd ( phpmyadmin ) que mon télémètre envoie. Si oui, comment? L'idée de la liaison série en C++ a déjà été envisagé mais elle n'avance pas trop.

Merci de l'attention que vous me portez.

hbachetti

Là tu mélanges un peu tout.
MYSQL pour la base de données Ok.
PHP est un langage de programmation, pas une liaison.

Envoyer les données via la ligne série peut s'envisager, il suffit d'envoyer des chaînes du genre identifiant=valeur avec un Serial.print() et de les recevoir côté PC (par le câble USB), comme tu les reçois actuellement avec le moniteur série.
Tu peux très bien te passer d'identifiant si tu n'as qu'une seule variable à transmettre, dans ce cas l'ARDUINO transmet les valeurs, une par ligne, et l'application PC les récupère telles quelles.

Côté PC il te faut un petit logiciel qui écoute sur la ligne série, interprète les données et les enregistre en base de données.
Pour cela, PYTHON et PYSERIAL seront tes amis, car en plus tu pondras du code portable qui fonctionnera sous WINDOWS et LINUX.
Pour que ton application PC puisse ouvrir le port série, il faudra bien entendu fermer l'IDE ARDUINO.

Un petit exemple ?
Code: [Select]
#!/usr/bin/python
import serial


remote = serial.Serial('/dev/ttyUSB1', 115200, timeout=1)

while (1):
line = remote.readline()
if line <> '':
print line
                id, valeur = line.split('=')


Simplissime non ?
Je te déconseille formellement de t'attaquer aux lignes série sous WINDOWS en C/C++. C'est galère. PYSERIAL fait tout pour toi, et bien mieux que personne ne le fera.

Dans le code, la variable remote représente l'objet ligne série.
/dev/ttyUSB1 représente le device série que tu vas utiliser, donc COMX sous WINDOWS.

remote = serial.Serial('COM5', 115200, timeout=1) si tu branches sur COM5

Ensuite il te faudra interpréter les chaînes reçues, de part et d'autre du séparateur, ici "=".
La méthode split partage en deux la chaîne reçue. Tu te retrouve donc avec deux variables id et valeur contenant le nom de la donnée et sa valeur.
Dans le cas où tu transmets les valeurs seules, la méthode split est inutile.

Tu n'as plus qu'à mettre ça en BDD. Là, tout dépend de la base choisie. sqlite, mysql, etc
Si c'est du MYSQL, tu pourras trouver de l'aide ici par exemple :

http://www.mysqltutorial.org/python-mysql-insert/

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Go Up