Projets IoT

Lecteur mobile RFID - un projet de kit de créateur utilisant Particle et Ubidots

Maria Hernández
· 9 min de lecture
Envoyer par email

Au cours des dernières années, Ubidots s'est associé à Particle pour réaliser un objectif ultime; Permettre une création rapide, facile et efficace de solutions IoT

Avance rapide jusqu'à nos jours et nous sommes fiers d'affirmer que les deux produits sont utilisés pour accélérer IoT au niveau mondial . Des entrepreneurs et start-ups aux grandes et petites entreprises, nous aidons les entreprises à créer un avenir axé sur les données.

Récemment, Friedl a relevé le défi de créer un IoT à partir de zéro. edge de Friedl sur le sujet était limitée. Cependant, grâce aux recherches qu'il a menées - et à de nombreuses vidéos YouTube - il a eu confiance en utilisant une variété d'outils pour matérialiser son objectif; Création d'un lecteur RFID mobile sans être un IoT .

Après avoir obtenu ce résultat étonnant, nous avons contacté Friedl pour le féliciter de son succès et tirer les leçons de sa réussite. Nous voulions également partager cette histoire avec la communauté Ubidots car nous pensons qu'elle est une source d'inspiration et d'apprentissage.

À la lumière de ces grandes réalisations, mon entretien explorera le processus de développement de Friedl, les techniques qu'il a utilisées pour atteindre son objectif, ainsi que d'autres enseignements précieux.

Le poste d'origine se trouve sur le site de la communauté Particle . Friedl l'a aimablement partagé avec Ubidots .

Écrit par : friedl_1977

Dans le cadre de mon premier projet, j'ai décidé de créer un lecteur RFID mobile publiant des données en direct sur MySQL, Google Sheets ou Ubidots via des Webhooks.

RFID1

Note:

Ce n'est pas un tutoriel en tant que tel, plutôt juste une vitrine du produit. Comme j'ai eu beaucoup d'aide du forum Particle , j'ai décidé de publier mes fichiers et mon code Eagle pour le rendre disponible à tous ceux qui pourraient vouloir l'utiliser.

Je suppose que vous avez uneedge de base de l'environnement Particle , des crochets Web et que vous avez configuré votre compte et vos appareils dans la console Particle . Sinon, veuillez le faire avant d'essayer cette construction.

Le brief :

Construire un scanner RFID véritablement sans fil (mobile) dans le but de numériser les cartes RFID, de capturer les UID de ces cartes et de les publier sur l'un ou l'autre ;

Nomenclature :

  1. Module lecteur de cartes MFRC522 3
  2. Batterie LiPo 1 3,7 V 1
  3. de la batterie 1 module
  4. LM394N1
  5. Faisceau de LED 0603 pour indicateur de batterie
  6. 2 x LED RVB pour l'état du système et l'état de lecture de la carte
  7. Photon Particle
  8. Interrupteur à glissière - Alimentation principale
  9. Incliner 1 interrupteur
  10. PCB de conception personnalisée (de PCBWAY ou similaire )
  11. Boîtier de conception personnalisée
  12. Diverses résistances 0603
  13. Ferrite 2 !!!

Tout d’abord :

Si vous êtes comme moi, le simple boîtier de prototype générique ne suffira pas, alors j'ai mis un peu d'effort supplémentaire, j'ai appris mon chemin autour des rhinocéros et conçu une enceinte simple, mais élégante (ou du moins je le pensais) qui présenterait le photon Particle et d'autres composants.

En plus de cela, j'ai décidé de ne pas opter pour une carte proto générique car je DÉTESTE absolument les fils. J'ai inclus une image de ma tentative initiale de créer une « jolie » carte en utilisant une carte proto et des câbles de liaison, mais après quelques heures, j'ai réalisé que cela ne suffirait tout simplement pas. Encore une autre courbe d'apprentissage, j'ai utilisé Google, j'ai passé quelques heures sur YouTube et j'ai réussi à me repérer dans Autodesk Eagle. Cela vaut chaque minute passée.

IMG_3200
nouveau_case
RFID2jpg

***La dernière image indiquant le PCB entièrement assemblé avec LED d'état indiquant « OK » ainsi que le LM3914N en action indiquant une batterie chargée à ± 90 %. (7 sur 8 LED)

J'ai soumis les fichiers Gerber à PCBWAY et en moins d'une semaine, mes tout nouveaux PCB personnalisés étaient prêts à être assemblés.

Les choses importantes :

Maintenant, le codage, c'est la partie avec laquelle je lutte le plus, mais grâce à un gentleman utile sur les forums Particle et des hackster, j'ai proposé le code ci-dessous. Maintenant, ce n'est probablement pas le code le plus propre jamais écrit, mais cela fonctionne, alors n'hésitez pas à utiliser et à vous améliorer si vous le souhaitez.

// Projet: Mobile RFID Assistance Register // Un projet de Firefli (Pty) Ltd // Date: juillet 2019 // Compilé par: Friedl Basson // Détails: SCAN FOR FROM CARTES RFID et publication via les webhooks à, UbiDots, MySQL DB ou Google Sheets // Crédits: spécial grâce à la communauté Particle pour l'assistance et la réalisation de ce projet! // firmware: v2.1.1 // mode système // - commentez si vous configurez le wifi via l'application Particle et que vous n'avez pas besoin de vous connecter à un autre réseau sans fil après le fait // System_Mode (semi_automatic); // Cette instruction #include a été automatiquement ajoutée par l'IDE Particle . #include "rfid.h" #include <Ubidots.h> / * Définissez les broches utilisées pour les broches SS (SDA) et RST (réinitialiser) pour le matériel et le logiciel SPI * / #Define SS_PIN A2 #Define RST_PIN D2 / * Définir les pins utilisés pour les données (MOSI), les données dans (Miso) et le SCK) et les données de Software), les données sur (Miso) et Corloge) et Corloge) et Sck) pour les données (MOSI), les données dans (Miso) et Corloge) et Corlow) #define mosi_pin d3 #define misto_pin d4 #define sck_pin d5 // initialisation rgb start - led rgb et le buzzer est utilisé comme indicateur d'état du système int redpin = d6; int greenpin = d1; int bluepin = d0; int buzzpin = d7; // Initialisation RVB end / * Créez une instance de la bibliothèque RFID * / #if définie (_use_soft_spi_) RFID RC522 (SS_PIN, RST_PIN, MOSI_PIN, MISO_PIN, SCK_PIN); // logiciel SPI #ELSE RFID RC522 (SS_PIN, RST_PIN); // matériel spi #endif // const char * webhook_name = "rfid_uid"; const char * webhook_name = "Ubidots"; Ubidots ubidots("webhook", ubi_PARTICLE); void setup () {serial.begin (9600); // wifi.Listen (); PinMode (Redpin, sortie); PinMode (Greenpin, sortie); PinMode (Bluepin, sortie); PinMode (buzzpin, sortie); // Définition des informations d'identification pour une nouvelle connexion WiFi / * Cette section n'est nécessaire que si vous souhaitez vous connecter à un nouveau réseau WiFi après la configuration initiale, cela ne fonctionnera que si les informations d'identification WiFi actuelles ont été effacées. Le code ne s'exécutera qu'une seule fois au démarrage et définit les nouvelles informations d'identification spécifiées. Une fois les nouvelles informations d'identification définies, ce code ne s'exécutera plus. * / Wifi.on (); if (! wifi.hascredentials ()) {wifi.setCredentials ("ssid", "mot de passe", wpa2, wlan_cipher_aes); } Wifi.connect (); Waittuntil (wifi.ready); Particle.connect (); #if! défini (_use_soft_spi_) / * activer l'interface HW SPI * / spi.setDatamode (SPI_MODE0); Spi.setBitOrder (msbFirst); Spi.setClockDivider (SPI_CLOCK_DIV8); Spi.begin (); #endif / * Initialiser le lecteur RFID * / rc522.init (); retard (5000); DigitalWrite (Bluepin, High); DigitalWrite (Greenpin, High); DigitalWrite (Redpin, Low); } void loop () {/ * Counter de boucle temporaire * / uint8_t i; / * Une carte a-t-elle été détectée? * / if (rc522.iscard ()) {/ * Si c'est le cas, obtenez son numéro de série * / rc522.readcardSerial (); Char Str [16]; snprintf (str, sizeof (str), "% 02x% 02x% 02x% 02x", rc522.sernum [0], rc522.sernum [1], rc522.sernum [2], rc522.sernum [3]); // webhooks // / * rfid_wp = votre nom de webhook str = vos données Vous souhaitez publier privé ou public * / // Particle.publish ("rfid_wp", str, private); // Publier des données sur WordPress DB // Particle.Publish ("xls", Str, Private); // Publier des données sur Google Sheets Serial.print (STR); / * Ajoute des paires de valeurs de clé de contexte * / ubidots.addContext ("uid", str); char * context = (char *) malloc (sizeof (char) * 60); / * Construit le contexte avec le tableau ci-dessus pour envoyer à Ubidots * / ubidots.getContext (contexte); ubidots.add ("uid", 1, contexte); // Changez pour votre nom de variable bool buffersent = false; Buffersent = ubidots.send (webhook_name, public); // utilisera les webhooks particle pour envoyer des données //} // - essayez Ubidots - // // digitalwrite (buzzpin, high); retard (500); DigitalWrite (Buzzpin, Low); DigitalWrite (Bluepin, Low); retard (750); DigitalWrite (Bluepin, High); } else if (rc522.iscard ()) {rc522.readCardErial (); Char Str [16]; snprintf (str, sizeof (str), "% 02x% 02x% 02x% 02x", rc522.sernum [0], rc522.sernum [1], rc522.sernum [2], rc522.sernum [3]); DigitalWrite (Bluepin, Low); DigitalWrite (Greenpin, Low); DigitalWrite (Redpin, High); // DigitalWrite (Buzzpin, High); retard (1000); DigitalWrite (Bluepin, High); DigitalWrite (Greenpin, High); DigitalWrite (Redpin, Low); DigitalWrite (Buzzpin, Low); } délai (500); }

Frontaux :

Grâce à la fonction WebHook dans la console Particle , j'ai pu publier de manière transparente le code à peu près n'importe où. Maintenant, si vous connaissez PHP et MySQL, vous pourrez peut-être écrire votre propre script côté serveur, mais pour ceux qui sont nouveaux dans ce domaine comme moi, je recommanderais les deux services suivants;

Ils diffèrent considérablement, vous devez donc examiner les deux pour déterminer lequel est le plus adapté à votre utilisation. En fin de compte, si vous souhaitez que les données soient publiées en direct vers un emplacement de votre choix, Zapier (ou quelque chose de similaire) est la voie à suivre. Si cela ne vous dérange pas de stocker des données sur le serveur de quelqu'un d'autre, Ubidots est une solution beaucoup plus rentable (coût par point de données) et présente l'avantage supplémentaire de quelques widgets astucieux pour présenter vos données de manière graphique. J'ai joint une capture d'écran d'un exemple Dashboard que j'ai créé dans Ubidots .

18
RFID3

Avec le recul :

Au départ, je pensais que construire un indicateur de batterie qui fonctionne en dehors du microcontrôleur était la meilleure idée car il fonctionnerait indépendamment et libérerait des broches numériques indispensables, mais le compromis est que sans qu'une entrée analogique ne soit envoyée au MC. , vous n'êtes pas en mesure d'afficher l'autonomie de la batterie sur un dashboard. Le LM3914N nécessite également quelques calculs pour définir les volutes de référence et déterminer les résistances à utiliser en fonction de votre différence de tension entre l'état « complètement chargé » et « épuisé ». Gardez à l'esprit que pour toutes les raisons pratiques, vous devez travailler avec 3,1 V sur la batterie aussi épuisée que la plupart des composants ne fonctionneront pas en dessous de 3 V ou commenceront à se comporter sporadiquement. Six d'entre eux, je suppose.

Je n'utiliserais pas non plus l'interrupteur d'inclinaison pour déclencher l'indicateur de batterie car il est trop sensible et provoque un « scintillement ». Un simple interrupteur tactile semble être une bien meilleure idée… juste une réflexion.

Un incontournable :

La plus grande courbe d'apprentissage ici pour moi a été l'effet qu'aurait tout métal ou circuit et un lecteur RFID. J'ai conçu, construit et testé l'ensemble de l'unité d'abord connectée à une alimentation constante. En raison de la conception compacte de l'unité, la batterie a été installée à proximité immédiate du module lecteur RFID. La conséquence…. Aucun scan 😲 À titre temporaire, j'ai enveloppé la batterie dans du ruban isolant électrique qui a fait un « bon » travail. J'ai commandé de la ferrite sur Amazon en guise de Je vous salue Marie et, comme par magie, l'interférence appartenait au passé.

Merci à tous ceux qui ont aidé au projet d'une manière ou d'une autre, @Scruffr pour avoir compris que nous avons tous dû commencer quelque part et faire preuve d'une patience extrême 🙂 Un grand merci à @joe chez Particle pour les kits de fabricants impressionnants. Dans l'attente de plus de projets !!!

Fichiers :

Schéma Eagle - TÉLÉCHARGER

Fichier de tableau Eagle - TÉLÉCHARGER


Génial, non ? Maintenant, comme promis... Vous trouverez ici quelques-unes des questions auxquelles Friedl a aimablement répondu.

Q/ Qu’est-ce qui vous a poussé à vous lancer dans l’écosystème IoT ?

A/ J'ai toujours été passionné de technologie et mon envie de créer de nouvelles choses s'inscrit parfaitement dans le secteur de IoT . Développer de nouvelles choses qui peuvent améliorer la vie est ce que j'aime le plus.

Q/ Pourquoi avez-vous essayé plusieurs plateformes ?

A/ Comme je suis complètement nouveau dans IoT et que je n'aime pas particulièrement le codage, je recherchais une plateforme facile à utiliser et également rentable plutôt que d'écrire la mienne. J'ai trouvé que la plupart des plates-formes étaient conçues en gardant à l'esprit les utilisateurs expérimentés, ce qui rend la tâche très difficile pour quelqu'un qui découvre IoT. Même certains utilisateurs expérimentés risquent de passer trop de temps à configurer un système inutilement compliqué. Comme je me concentre principalement sur le développement de produits, la conception de produits et de PCB, il était impératif que je trouve une solution que je puisse rapidement comprendre et commencer à utiliser.

Q/ Qu’avez-vous appris de chacun d’eux ?

A/ La plupart des plateformes semblent intimidantes à apprendre et très coûteuses si l’on n’y prend pas garde. De faibles coûts initiaux ou des versions « gratuites » peuvent facilement vous inciter à utiliser le produit, mais dès que vous commencerez à diffuser des données en direct, cela s'avérera assez coûteux.

Q/ Pourquoi avez-vous décidé de partir avec Ubidots?

A/ Ubidots s'est avéré être le meilleur des deux, facile à apprendre, assez peu coûteux et avec une politique d'utilisation équitable des données. En plus de cela, le soutien a été formidable ! L'interface graphique est assez simple à comprendre et l'option d'étiquette personnalisée est intéressante, même si elle est un peu chère.


J'espère vraiment que cette histoire vous incitera à commencer à construire et à bricoler vos propres projets IoT Ubidots pour tirer parti de vos meilleurs efforts pour activer votre processus.