Table des matières:

Projet Iot NodeMCU MQTT - Bouton de commutation : 4 étapes
Projet Iot NodeMCU MQTT - Bouton de commutation : 4 étapes

Vidéo: Projet Iot NodeMCU MQTT - Bouton de commutation : 4 étapes

Vidéo: Projet Iot NodeMCU MQTT - Bouton de commutation : 4 étapes
Vidéo: MQTT in Python | building MQTT dashboard 2024, Juillet
Anonim
Image
Image

Kit de démarrage OSOYOO NodeMCU IOT

Veuillez nous suivre sur facebook, trouver notre nouvel article publié et partager votre idée et vidéo sur la façon d'utiliser nos produits de manière créative. Vous pouvez obtenir une remise en argent ou un cadeau de notre part ! Facebook:

Youtube:

Dans cette leçon, nous allons connecter un bouton de commutation au NodeMCU et envoyer l'état du commutateur à un courtier MQTT. Lorsque le bouton est enfoncé, NodeMCU publiera l'état du bouton « appuyé » sur le courtier MQTT et le client MQTT s'abonnera à ces messages. Lorsque le bouton-poussoir est relâché, « non enfoncé » sera envoyé.

Étape 1: Préparation

Graphique de connexion
Graphique de connexion

Matériel:

Carte NodeMCU x 1

Bouton de commutation x 1

Résistance 1K x 1

Planche à pain x 1

Fils de cavalier

Logiciel:

IDE Arduino (version 1.6.4+)

Paquet de carte ESP8266 et le pilote de port série

Client MQTT (MQTTBox ici)

Bibliothèque Arduino: PubSubClient

Étape 2: Graphique de connexion

Dans cette leçon, nous utilisons D2 (GPIO4) pour contrôler le commutateur, veuillez configurer le matériel en fonction du graphique de connexion.

Remarque: la résistance 1k est utilisée comme résistance de rappel, dans un tel circuit, lorsque le commutateur est fermé, l'entrée NodeMCU est à une valeur logique élevée, mais lorsque le commutateur est ouvert, la résistance de rappel tire la tension d'entrée jusqu'à la terre (valeur zéro logique), évitant un état indéfini à l'entrée.

Étape 3: Coder

Code
Code
Code
Code

Copiez le code ci-dessous dans l'IDE Arduino:

/* _ _ _ _ _ _ _ _ _ _ * / _ / /_)/ _ \| | | |/ _ / / _ / / _) _ \| / *| |_| |_ | |_| | |_| | |_| | |_| ((_| |_| | | | | * \_/(_/ \_/ \_ |\_/ \_(_)_)_/|_|_|_| * (_/ * Utilisez le NodeMCU envoie l'état du bouton de commutation au client MQTT via WiFi * URL du didacticiel: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; //le bouton est connecté à la broche GPIO D1

// Mettez-les à jour avec des valeurs adaptées à votre réseau. const char* ssid = "********";//mettre votre ssid wifi ici const char* mot de passe = "********";//mettre votre mot de passe wifi ici. const char* mqtt_server = "broker.mqttdashboard.com"; //const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

Client PubSubClient (espClient); long lastMsg = 0; char msg[50];

void setup_wifi() {

retard (100); // On commence par se connecter à un réseau WiFi Serial.print("Connexion à "); Serial.println(ssid); WiFi.begin(ssid, mot de passe); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connecté"); Serial.println("Adresse IP: "); Serial.println(WiFi.localIP()); }

void callback(char* topic, byte* payload, unsigned int length)

{ } //fin du rappel

annuler la reconnexion () {

// Boucle jusqu'à ce que nous soyons reconnectés while (!client.connected()) { Serial.print("Tentative de connexion MQTT…"); // Créer une chaîne d'ID client aléatoire clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); // Essayez de vous connecter // si votre courtier MQTT a un ID client, un nom d'utilisateur et un mot de passe // veuillez remplacer la ligne suivante par if (client.connect(clientId, userName, passWord)) if (client.connect(clientId.c_str())) { Serial.println("connecté"); //une fois connecté au courtier MQTT, s'abonner à la commande si un client.subscribe("OsoyooCommand"); } else { Serial.print("échec, rc="); Serial.print(client.state()); Serial.println(" réessayez dans 5 secondes"); // Attendre 5 secondes avant de réessayer delay(5000); } } } //fin de se reconnecter()

void setup() {

Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(rappel); pinMode(BUTTON_PIN, INPUT); }

boucle vide() {

if (!client.connected()) { reconnecter(); } client.loop(); long maintenant = millis(); état entier; //envoyer un message toutes les 2 secondes if (now - lastMsg > 2000) { lastMsg = now; status=digitalRead(BUTTON_PIN); String msg="Statut du bouton: "; if(status==HIGH) { msg= msg+ "Appuyé"; message de caractère[58]; msg.toCharArray(message, 58); Serial.println(message); //publier les données du capteur sur le courtier MQTT client.publish("OsoyooData", message); } else { msg= msg+ " Ne pas appuyer"; message de caractère[58]; msg.toCharArray(message, 58); Serial.println(message); //publier les données du capteur sur le courtier MQTT client.publish("OsoyooData", message); } } }

Modifiez le code pour qu'il corresponde à vos propres paramètres WiFi et MQTT en procédant comme suit: 1) Configuration du point d'accès: trouvez la ligne de code ci-dessous, mettez votre propre ssid et mot de passe là-bas.

const char* ssid = « your_hotspot_ssid »;const char* password = « your_hotspot_password »;

2) Paramètre d'adresse du serveur MQTT: vous pouvez utiliser votre propre URL ou adresse IP de courtier MQTT pour définir la valeur mqtt_server ci-dessus. Vous pouvez également utiliser un célèbre serveur MQTT gratuit pour tester le projet tel que "broker.mqtt-dashboard.com", "iot.eclipse.org" etc.

const char* mqtt_server = « broker.mqtt-dashboard.com »;

3) Paramètres du client MQTT Si votre courtier MQTT nécessite une authentification par ID client, nom d'utilisateur et mot de passe, vous devez modifier

si (client.connect(clientId.c_str()))

À

if (client.connect(clientId, userName, passWord)) //mettre votre clientId/userName/passWord ici

Sinon, conservez-les par défaut. Après cela, choisissez le type de carte et le type de port correspondants comme ci-dessous, puis téléchargez le croquis sur le NodeMCU.

  • Carte: "NodeMCU 0.9 (module ESP-12)"
  • Fréquence du processeur: "80 MHz" Taille du flash: »
  • 4M (3M SPIFFS)”
  • Vitesse de téléchargement: "115200"
  • Port: choisissez votre propre port série pour votre NodeMCU

Étape 4: Paramètres du client MQTT

Paramètres du client MQTT
Paramètres du client MQTT
Paramètres du client MQTT
Paramètres du client MQTT

Si vous ne savez pas comment configurer le client MQTT, veuillez visiter notre dernier article:

Paramètres des sujets: Sujet à publier: OsoyooCommand

Sujet pour s'abonner: OsoyooData

Résultat en cours d'exécution

Une fois le téléchargement terminé, si le nom du point d'accès wifi et le mot de passe sont corrects et que le courtier MQTT est connecté, ouvrez le moniteur série, vous verrez le résultat suivant: Continuez à appuyer sur ce bouton, le moniteur série affichera « État du bouton: Appuyé » toutes les 2 secondes; une fois ce bouton relâché, le moniteur série affichera « État du bouton: non enfoncé » toutes les 2 secondes.

Conseillé: