Table des matières:
- Étape 1: Logique logicielle: Architecture du système
- Étape 2: Étape 1: Câblage matériel
- Étape 3: Étape 2: Arduino
- Étape 4: Étape 3: NodeJS
- Étape 5: Étape 4: l'Interface Web
- Étape 6: Résultat
Vidéo: Projet Arduino : Contrôlez l'électronique sur Internet à l'aide de Nodejs + Base de données SQL et site Web : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Projet par: Mahmed.tech
Date de création: 14 juillet 2017
Niveau de difficulté: Débutant avec quelques connaissances en programmation.
Configuration matérielle requise:
- Arduino Uno, Nano, Mega (je pense que la plupart des MCU avec la connexion série fonctionneront)
- Une seule LED et une résistance de limitation de courant. Utilisez cette calculatrice si vous n'êtes pas sûr: Calculatrice de la loi d'Ohm
- Potentiomètre 10K.
Configuration logicielle requise:
- IDE Arduino
- Node. JS (c'est un logiciel sur ordinateur, très simple à installer)
- MySQL Server (le moyen le plus simple que j'ai trouvé est d'utiliser un hébergement Web bon marché. Vous pouvez également obtenir des noms de domaine gratuits)
Langage de programmation et de script utilisé:
Arduino (C/C++ modifié), JavaScript (Nodejs), PHP, HTML & CSS
IntroductionCe projet en bref: contrôler un microcontrôleur Arduino à partir d'une interface Web. Par conséquent, contrôlez n'importe quel appareil électrique de n'importe où avec Internet. Je voulais étendre ma compréhension de la programmation et du développement Web et quelle meilleure façon de le faire que de faire un projet simple mais efficace. Le matériel est réduit au minimum afin que je puisse me concentrer davantage sur le logiciel. Par conséquent, je suis allé avec une simple LED, une configuration de pot. Le pot enverra des données et la led recevra (luminosité PWM). En utilisant NodeJS, les données série ont été lues (valeur du potentiomètre) et écrites (luminosité de la LED). La partie difficile de ce projet était d'obtenir des données d'entrée à partir d'un emplacement distant (serveur Web)
Étape 1: Logique logicielle: Architecture du système
Données du potentiomètre:
Cela commence à l'Arduino, la valeur du pot de lecture est une impression en série. Cependant, cette fois, nous utiliserons Node. JS pour lire la valeur. NodeJS ouvrira la communication série sur le même port auquel l'Arduino est connecté et lira la valeur du pot imprimée. NodeJS téléchargera ensuite les données dans une base de données SQL distante, cela se produira chaque fois qu'une nouvelle valeur de pot est imprimée. Une page Web se connectera à l'intervalle défini dans la base de données SQL et récupérera la valeur du potentiomètre. Celui-ci sera alors affiché sur la page Web.
Données menées:
Pour la led, la luminosité PWM sera définie par l'utilisateur sur une page Web distante, de sorte que son voyage commence à l'extrémité opposée du spectre. Les données d'entrée sont enregistrées dans une base de données SQL, à chaque intervalle défini, la base de données est vérifiée pour un changement de led PWM, cela est fait par NodeJS. Si la valeur est différente de la valeur précédente, la nouvelle valeur sera envoyée à l'Arduino via un bus série. L'Arduino modifie la valeur PWM de sortie de la led pour modifier sa luminosité.
La calculatrice de la loi d'Ohm utilise la formule V = IR et P = IV = I²R = V²/R Pour ce projet, j'utiliserai une led bleue. Ceci est important car à mesure que la fréquence de la lumière augmente, la chute de tension augmente également. Étant donné que la lumière bleue a une fréquence plus élevée par rapport à quelque chose comme une led rouge. Cela signifie une tension directe plus élevée. Selon la marque, le type et la taille, la plage de travail peut varier. Pour ma configuration, j'ai utilisé une résistance de 220 Ω en série, négative à la terre et positive à une broche PWM sur un Arduino. Le pot était connecté à une broche analogique. Avec 5VCC une extrémité GND l'autre et la broche du milieu connectée à une broche analogique (A0 dans mon cas).
Étape 2: Étape 1: Câblage matériel
C'est très simple: connectez simplement votre résistance de limitation de courant en série avec la LED, assurez-vous que la LED est dans le bon sens. Un point ira à GND tandis qu'une autre extrémité ira à la broche Arduino. Pour ma configuration, j'ai utilisé la broche 12 pour la led et A7 pour le pot. Je n'ai pas de schéma car son circuit est très simple. Cependant, j'ai trouvé cela en ligne (image)
Étape 3: Étape 2: Arduino
Tout d'abord, la led et le pot ont été vérifiés s'ils fonctionnaient comme prévu. Cela a été réduit par un programme simple où la valeur du pot contrôle la led. J'ai utilisé la fonction de contrainte pour changer la plage de potentiomètre de 0 à 1023 à 0 à 255, mais un simple /4 fonctionne également. La valeur du pot a été lissée en prenant la moyenne moyenne de 10 lectures consécutives, ceci afin d'éliminer les pointes. (Cependant, ce lissage a causé des problèmes avec NodeJS, il a donc été supprimé plus tard dans le projet - plus à ce sujet)
Code Arduino
Lire / écrire en série L'étape suivante consiste à saisir l'entrée de l'utilisateur via les fenêtres de moniteur série fournies par l'ide Arduino pour régler la luminosité. Pour ce faire, le serial.parseInt() est utilisé qui prend une valeur entière et ignore la chaîne. De plus, une vérification d'erreur est ajoutée au code. La plage valide d'une valeur PWM est de 0 à 255, lorsqu'un utilisateur entre > 255, il attribue la valeur 255 et si l'utilisateur entre une valeur ou < +/-5, je l'ai fait pour rendre la lecture plus stable car il s'agissait d'une fluctuation. Pourquoi c'est un gros problème lié à la mise à jour SQL, plus à ce sujet plus tard.
Étape 4: Étape 3: NodeJS
Je ne vais pas vous montrer comment obtenir ou configurer un serveur SQL. Il existe des tonnes de tutoriels.
Il y a 3 aspects principaux au programme NodeJS:
Lire les données série
Écrire des données série
Mettre à jour la base de données SQL
Pour établir une connexion série dans NodeJS, un module appelé port série doit être téléchargé, ce qui peut être fait à l'aide de la commande npm. Ouvrez CMD sur le dossier où sera conservé le programme NodeJS, installez en tapant: npm install serialport Aussi le module SQL doit être installé pour pouvoir se connecter à la base de données sql: npm install mysql NodeJS - Serial Port Ma première étape avec le NodeJS programme était de lire les données imprimées et d'envoyer la luminosité pwm à l'Arduino. Cela a été fait en ouvrant la connexion série au même débit et au même port. Une fois la connexion établie, j'ai lu les messages entrants et je les ai imprimés sur la fenêtre de la console. Problème soulevé lorsque j'ai essayé d'écrire la valeur pwm pour contrôler la luminosité.
Il n'arrêtait pas de lancer des erreurs: Port non ouvert, ma solution initiale consistait à appeler la fonction d'écriture lorsqu'il y avait des données entrantes. Cependant, c'était une mauvaise solution et j'étais assez insatisfait de la solution, même si cela fonctionnait, elle ne serait envoyée que lorsque la valeur du pot était modifiée. L'exemple de code pour le module série ne fonctionnerait pas non plus en lançant la même erreur. J'ai découvert plus tard que le programme essayait d'exécuter la fonction d'écriture sans ouvrir le port, ce qui a entraîné cette erreur. J'ai contourné ce problème en utilisant la fonction setInterval()
NodeJS - MySQLLa bibliothèque MySQL a été utilisée (npm install MySQL) pour se connecter à la base de données SQL puisque le serveur dans un emplacement distant l'adresse IP du serveur a été utilisée à la place de localhost.
var con contient les informations de connexion au format JSON, une fois la connexion établie avec succès, la base de données peut être interrogée. 2 fonctions ont été créées l'une pour mettre à jour la table l'autre en sélectionnant avec des paramètres prenant en compte la requête SQL. La table de mise à jour est appelée lorsqu'une nouvelle valeur de pot est reçue et la requête de contrôle de luminosité s'exécutera périodiquement.
Lien NodeJSCode
Étape 5: Étape 4: l'Interface Web
Interface Web
La page Web principale a été écrite en PHP car j'avais déjà une certaine expérience de mes bases de données CO323 et du module Web à l'université. La table et le formulaire HTML ont été utilisés pour afficher les données SQL.
Code d'accès PHP SQL: Lien Faites défiler jusqu'à la section de l'interface Web.
HTML & CSS * Javascript Webapage Code: Lien Faites défiler vers le bas
Page Web finale
Conseillé:
Comment créer un site Web de base à l'aide du Bloc-notes : 4 étapes
Comment créer un site Web de base à l'aide du Bloc-notes : Est-ce que quelqu'un s'est demandé » comment créer un site Web à partir d'un programme d'écriture de base ? site Web utilisant uniquement le bloc-notes
Système de présence basé sur les empreintes digitales et RFID utilisant Raspberry Pi et la base de données MySQL : 5 étapes
Système de présence basé sur les empreintes digitales et RFID utilisant Raspberry Pi et la base de données MySQL : vidéo de ce projet
LED contrôlée par Internet à l'aide d'un serveur Web basé sur ESP32 : 10 étapes
LED contrôlée par Internet à l'aide d'un serveur Web basé sur ESP32 : aperçu du projet Dans cet exemple, nous allons découvrir comment créer un serveur Web basé sur ESP32 pour contrôler l'état de la LED, accessible de n'importe où dans le monde. Vous aurez besoin d'un ordinateur Mac pour ce projet, mais vous pouvez exécuter ce logiciel même sur un i
Comment récupérer des données à partir d'une base de données Firebase sur NodeMCU : 7 étapes
Comment récupérer des données à partir d'une base de données Firebase sur NodeMCU : pour cette instruction, nous allons récupérer les données d'une base de données dans Google Firebase et les récupérer à l'aide d'un NodeMCU pour une analyse ultérieure. EXIGENCES DU PROJET : 1) NodeMCU ou ESP8266 Controller2) G-Mail compte pour créer une base de données Firebase.3) Téléchargez le
Les bases d'un site Web basé sur Div : 7 étapes
The Very Basics of a Div-based Website: Cette instructable vous montrera les bases de la création d'un site Web avec des divs. Parce que les tableaux utilisés pour la mise en page sont mauvais ! :pPour comprendre cette instructable, vous aurez besoin de connaître les bases html et css. Si vous ne comprenez pas quelque chose, n'hésitez pas à