Go Down

Topic: Arduino / Mysql / RFID (Read 369 times) previous topic - next topic

Wizzi14

Salut tout le monde !
Alors voilà, j'ai crée un système de sécurité avec RFID mais c'est assez gênant de devoir à chaque fois rajouter les membres autorisés 1 à 1 dans le script, alors j'ai fait ma propre base de donnée, dans la table il n'y a que 3 colonnes " ID-RFID / NOM / RANG ", maintenant je ne sais pas comment relier ma BDD à l'arduino, après avoir fait quelques recherches les seuls résultats que j'ai trouvé étaient l'utilisation d'un Shield Ethernet & le PHP " que je ne connais pas malheureusement ".
Alors j'aimerais savoir si il était possible de relier directement l'arduino à la BDD ?
Merci d'avance ! :D

hbachetti

Avec MysqlConnectorArduino.

Il faut un shield Ethernet bien entendu.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

#2
May 19, 2019, 08:46 am Last Edit: May 19, 2019, 08:47 am by hbachetti
Si l'ARDUINO est connecté à un PC par USB (je n'y crois pas trop mais on ne sais jamais), il y a une autre solution :

Save-Arduino-Sensor-Data-to-MYsql-Using-Processing

J'ai supposé bien sûr qu'il s'agit d'un ARDUINO.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

supercc

Bonjour,

qu'est ce que tu as comme carte Arduino ? Sur quelle machine (réseau local, Internet) est situé ta base de données ?


Wizzi14

Bonjour,

qu'est ce que tu as comme carte Arduino ? Sur quelle machine (réseau local, Internet) est situé ta base de données ?


J'ai une arduino UNO et ma BDD est très simple et petite et se trouve sur mon ordinateur.

supercc

Il y a quelques jours un forumeur qui avait un problème similaire de connexion arduino<->mysql à trouvé une piste qui peux peut-être te convenir :

https://platformio.org/lib/show/588/MySQL%20Connector%20Arduino

La version sur git : https://github.com/ChuckBell/MySQL_Connector_Arduino

La doc (pdf) du développeur est dans le répertoire extras.

Dans la partie hardware il indique l'occupation mémoire de sa bibliothèque. Je pense que cela passe sur une UNO mais il faut que ta partie de code soit légère.

Je n'ai pas testé.

J'aimerai connaître une solution plus simple et légère mais comme il n'y a pas de php sur arduino...

supercc

#6
May 19, 2019, 11:03 am Last Edit: May 19, 2019, 11:08 am by supercc
Sinon, si c'est juste des identificateurs/nom/rang il y a une solution (théorique pour moi) plus simple je pense.

Ne pas utiliser mysql mais mettre les données dans un simple fichier texte sur le PC et écrire (ou récupérer) un petit serveur répondant aux requêtes du genre "getNom(id)", "getRand(id)".

Tu lances le serveur sur ton PC et après par de simples requêtes TCP (bien couvert sur Internet) tu récupères les infos sur ton arduino.

C'est une solution très légère coté arduino mais nécessite un petit serveur ad hoc.

Je n'ai pas testé.

EDIT : dans cette solution les informations circulent en clair sur le réseau. Dans la solution précédente aussi je pense mais je te laisse vérifier.

hbachetti

Comme j'avais une MEGA avec une carte Ethernet W5100 sur mon bureau, je viens d'installer MysqlConnectorArduino.

J'ai essayé l'exemple basic_select de la librairie.

La base de données : https://dev.mysql.com/doc/index-other.html (world database)

Après exécution du script world.sql :
- autorisation accès par le réseau :
      Commenter bind-address dans msqld.conf
- privilèges d'accès à la database :
      GRANT ALL ON world.* TO 'riton'@'%' IDENTIFIED BY 'password';
      FLUSH PRIVILEGES;

Pas de problème particulier. Mise en œuvre très simple.
Un peu de doc ici : https://devdocs.magento.com/guides/v2.3/install-gde/prereq/mysql_remote.html

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

supercc

Ça c'est fait !  Je n'avais pas capté que je proposai aussi MysqlConnectorArduino, désolé. C'est bien de savoir que ça marche. Cette bibliothèque à l'air très propre et c'est tant mieux car perso je ne vois pas d'autres alternatives pour discuter avec mysql. Après il ne reste pas beaucoup de place pour le programme dans le cas de petites cartes...


hbachetti

C'est vrai que c'est gourmand :
Le croquis utilise 20476 octets (8%) de l'espace de stockage de programmes. Le maximum est de 253952 octets.
Les variables globales utilisent 1280 octets (15%) de mémoire dynamique, ce qui laisse 6912 octets pour les variables locales. Le maximum est de 8192 octets.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

supercc

Ce qui fait dans le cas de la UNO qu'il reste pour l'appli environ 10 Ko pour le  code (bootloader 2 Ko ?) et 768 octets de mémoire.

A voir si ça passe...



hbachetti

Avec le code de la librairie RFID + l'application ... pas sûr.
A voir
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

supercc

Si jamais cela bloque voici un exemple de serveur TCP qui pourra peut-être remplacé mysql dans le cas d'un "petit répertoire". C'est en Ruby (je ne connais pas plus concis).

Code: [Select]

#!/usr/bin/env ruby
 
require 'socket'

db={
"23"   => "Pierre Dupont, pdg",
"1221" => "Paul Durant, dev"
}

server = TCPServer.new "1234" # Port
loop do # boucle infinie
    client = server.accept    # attente d'une connexion
    begin
        while id=client.gets.chomp do # pour toutes les lignes reçues
            client.puts db[id]
        end
    rescue
    end
    client.close # fermeture de la connexion
end



hbachetti

Oui c'est vrai que pour une base de données RFID mysql semble disproportionné.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Wizzi14

Merci beaucoup pour vos réponses je vais essayer avec MysqlConnectorArduino.

Oui c'est vrai que pour une base de données RFID mysql semble disproportionné.

Je commence à y penser aussi, j'ai trouvé sur le net la méthode de macro " Fichier Excel dans lequel se trouvent les informations ID/NOM/RANG " mais je n'ai trouvé que l'envoi des données de l'arduino vers le fichier, par exemple la température en fonction du temps, alors j'aimerais savoir si possible comment faire l'inverse & permettre à mon arduino de lire directement ces informations & si c'est une meilleure option.

Go Up