Table des matières:
- Étape 1: Conseil à retenir
- Étape 2: MCP23016
- Étape 3: Adresse
- Étape 4: Commandes
- Étape 5: Catégories
- Étape 6: Structure de communication
- Étape 7: programmer
- Étape 8: MCP23016
- Étape 9: ESP-01
- Étape 10: Montage de l'ESP01
- Étape 11: Bibliothèques et variables
- Étape 12: Configuration
- Étape 13: boucle
- Étape 14: ParserData
- Étape 15: Configurer le port
- Étape 16: EcrirePinData
- Étape 17: WriteBlockData & SetupWiFi
- Étape 18: Appli
- Étape 19: Télécharger
Vidéo: Automatisation à faible coût avec ESP01 : 19 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Aujourd'hui, nous allons discuter de l'automatisation à l'aide d'ESP01 avec 16 relais. Il s'agit d'un modèle de conception très bon marché où vous pouvez multiplier les modules et obtenir jusqu'à 128 relais, car il est possible de mettre jusqu'à huit extensions de ports dans ce microcontrôleur.
Dans notre circuit, vous aurez une application sur un smartphone qui communique avec l'ESP01. Il disposera d'un expandeur avec 16 ports, chacun connecté à un relais. Nous avons également une source réglable en 3v3. Nous allons donc piloter un module relais 16 canaux à l'aide d'ESP01 via l'application Android que je mets à votre disposition.
Étape 1: Conseil à retenir
Il est important de noter, mes amis, que j'ai utilisé cette puce dans un circuit appelé MCP23016. Il est également important pour vous de regarder la vidéo EXPANSEUR D'IOS POUR ESP32, ESP8266 ET ARDUINO, dans laquelle je teste l'appareil et montre qu'il fonctionne pour ces trois types de cartes.
Étape 2: MCP23016
Ici, nous avons une image du MCP23016, qui est une puce à 28 broches. Il est important de mentionner qu'il existe également le modèle MCP23017, qui est plus courant et ne nécessite ni résistance ni condensateur, car il possède une horloge interne. Cela facilite les choses, mais son épinglage est différent de ce que nous montrons dans cette vidéo.
Étape 3: Adresse
Pour définir l'adresse du MCP23016, nous utilisons les broches A0, A1 et A2. Vous pouvez simplement les laisser à HIGH ou LOW pour le changement d'adresse.
L'adresse sera formée comme suit:
Adresse_MCP = 20 + (A2 A1 A0)
Où A2 A1 A0 peut prendre des valeurs HAUT/BAS, un nombre binaire de 0 à 7 se forme.
Par exemple:
A2> GND, A1> GND, A0> GND (signifie 000, alors 20 + 0 = 20)
Ou autrement, A2> HIGH, A1> GND, A0> HIGH (signifie 101, alors 20 + 5 = 25)
Étape 4: Commandes
Voici un tableau avec les commandes de communication:
Étape 5: Catégories
GP0 / GP1 - Registres de port de données
Il y a deux registres qui donnent accès aux deux ports GPIO.
La lecture du registre fournit l'état des broches sur ce port.
Bit = 1> HAUT Bit = 0> BAS
IODIR0 / IODIR1
Il y a deux registres qui contrôlent le mode pin. (Entrée ou Sortie)
Bit = 1> ENTREE Bit = 0> SORTIE
Étape 6: Structure de communication
Ici, nous parlons de l'adresse de la puce, et accédons à la commande et aux données, qui est une sorte de protocole qui doit être fait pour envoyer des informations.
Étape 7: programmer
Nous allons faire un programme qui consiste à communiquer l'ESP01 avec le MCP23016 afin d'avoir plus de GPIO à utiliser. Ces 16 nouveaux GPIO que nous aurons vont contrôler un module relais 16 canaux.
Les commandes seront envoyées à ESP01 via une application Android.
Étape 8: MCP23016
Étape 9: ESP-01
Il s'agit d'une carte à 16 relais.
Étape 10: Montage de l'ESP01
Étape 11: Bibliothèques et variables
Nous inclurons les bibliothèques responsables de la communication i2c et de la création du point d'accès et du serveur Web. Nous définissons l'adresse de la puce et des ports. Enfin, nous définissons les variables pour stocker les valeurs des broches MCP.
#include // responsável pela comunicação i2c.#include //responsável por criar o accesspoint eo webserver WiFiServer server(80);//webserver para acessarmos através do aplicativo //endereço I2C do MCP23016 #define MCPaddress 0x20 //ENDEREÇOS DE REGISTRADORES define GP0 0x00 // DATA PORT REGISTER 0 #define GP1 0x01 // DATA PORT REGISTER 1 #define IODIR0 0x06 // I/O DIRECTION REGISTER 0 #define IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos faire MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Étape 12: Configuration
Nous initialisons l'ESP01 et configurons les ports. Nous configurons également le point d'accès et initialisons le serveur.
void setup() { Serial.begin(9600); retard(1000); Fil.begin(0, 2); //ESP01 Wire.setClock(200000); configurePort(IODIR0, SORTIE); configurePort(IODIR1, SORTIE); writeBlockData(GP0, 0x00); writeBlockData(GP1, 0x00); configurationWiFi(); //configuração do Access Point server.begin();//inicializa o server }
Étape 13: boucle
Ici, je vérifie si des clients ont été connectés au serveur. Nous lisons également la première ligne de requête. Nous extrayons les données pour la manipulation, définissons l'en-tête de réponse par défaut et envoyons cette réponse au client.
void loop() { WiFiClient client = server.available(); // Verifica se um cliente fo conectado if (!client) { return; } String req = client.readStringUntil('\r');// Faz a leitura da primeira linha da requisição /* /MR é o header prefixo para saber se a requisição é a esperada para os relés */ if(req.indexOf ("/MR") != -1) { parserData(req); //à partir de la demande supplémentaire pour la manipulation } else{ Serial.println("requête invalide"); revenir; } client.flush(); Chaîne s = "HTTP/1.1 200 OK\r\n"; // cabeçalho padrão de resposta client.print(s); // envia a resposta para o cliente delay(1); } // fin de boucle
Étape 14: ParserData
A partir de la requête, nous recherchons les données liées aux relais. Nous envoyons ensuite les données au MCP23016.
//à partir de la demande d'informations sur les données de référence, ainsi que parserData(String data) { uint8_t relay = -1; uint8_t gp = -1; valeur uint8_t = -1; int index = data.indexOf("/MR"); //busca o index do prefixo MR if(data[index+5] == '/') // /MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO(on/off) { gp = data[index+3]-'0'; relais = données[index+4]-'0'; valeur = données[index+6]-'0'; //envia os dados para o MCP23016 //[relay-1] porque o MCP va de 0-7 os pins writePinData(relay-1, value, gp); } }
Étape 15: Configurer le port
Nous définissons le mode de broche GPIO (GP0 ou GP1).
//configura o modo dos pinos GPIO (GP0 ou GP1)//como parametro passamos: // port: GP0 ou GP1 // INPUT para todos as portas do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // custom um valor de 0-255 indicando o modo das portas (1=INPUT, 0=OUTPUT) // ex: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (port uint8_t, uint8_t personnalisé) { if(personnalisé == INPUT) { writeBlockData(port, 0xFF); } else if(custom == OUTPUT) { writeBlockData(port, 0x00); } else { writeBlockData (port, personnalisé); } }
Étape 16: EcrirePinData
Dans cette partie du code, nous modifions l'état d'une broche souhaitée et envoyons les données au MCP.
//muda o estado de um pino desejado, passando como parametro://pin = pino desejado; valeur = 0/1 (marche/arrêt); gp = 0/1 (PORT do MCP) void writePinData(int pin, int value, uint8_t gp) { uint8_t statusGP = 0; if(gp == GP0) statusGP = currentValueGP0; sinon statusGP = currentValueGP1; if (valeur == 0) { statusGP &= ~(B00000001 << (broche)); // muda o pino para LOW } else if (value == 1) { statusGP |= (B00000001 << (pin)); // muda o pino para HIGH } if(gp == GP0) currentValueGP0 = statusGP; sinon currentValueGP1 = statusGP; //envia les données pour le MCP writeBlockData(gp, statusGP); retard(10); }
Étape 17: WriteBlockData & SetupWiFi
Ici, nous envoyons des données au MCP23016 via le bus i2c. Ensuite, nous configurons les propriétés pour activer le point d'accès. Enfin, nous avons configuré le WiFi pour le mode Point d'accès et créé un AP avec le SSID et le MOT DE PASSE.
//envia dados para o MCP23016 através do barramento i2c//reg: REGISTRADOR //data: dados (0-255) void writeBlockData(uint8_t port, uint8_t data) { Wire.beginTransmission(MCPAddress); Wire.write(port); Wire.write(données); Wire.endTransmission(); retard(10); }
//configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi() { WiFi.mode(WIFI_AP); WiFi.softAP("ESP01_RELAY", "12345678"); }
Étape 18: Appli
Pour créer l'application, nous utilisons MIT App Inventor 2, accessible via le lien:
ai2.appinventor.mit.edu/
L'application se compose de deux écrans contenant chacun huit paires de boutons, indiquant l'état de chaque relais.
Voici quelques-uns des blocs de programmation utilisés:
IMPORTANT: L'adresse IP par défaut de l'ESP, car le point d'accès est 192.168.4.1
1. Lorsque l'écran s'initialise, nous stockons l'IP en mémoire et appelons la procédure pour récupérer l'état des boutons (ON / OFF).
2. Appelez l'autre écran
1. En cliquant sur le bouton ON de l'un des relais, nous apporterons des modifications visuelles au bouton (blocs verts). WebViewer1. GoToUrl fait une demande pour notre ESP01 en liant les données MR01/1 dans l'URL.
2. En cliquant sur le bouton OFF de l'un des relais, nous apporterons des modifications visuelles au bouton (blocs verts). WebViewer1. GoToUrl fait une demande à notre ESP01 en liant les données MR01/0 dans l'URL.
Cette procédure permet de récupérer l'état des boutons (relais), car lors du changement d'écran, on revient au motif de création.
Le bloc jaune se répète pour chacune des paires de boutons.
Étape 19: Télécharger
Voici les fichiers du projet à télécharger:
Fichier de projet MIT App Inventor 2 - télécharger
Application APK à installer sur android - télécharger
Téléchargez les autres fichiers:
INO
Conseillé:
Rhéomètre à faible coût : 11 étapes (avec photos)
Rhéomètre à faible coût : le but de cette instructable est de créer un rhéomètre à faible coût pour trouver expérimentalement la viscosité d'un fluide. Ce projet a été créé par une équipe d'étudiants de premier cycle et des cycles supérieurs de l'Université Brown dans la classe Vibration of Mechanical Systems
Communication sans fil LoRa 3Km à 8Km avec dispositif E32 (sx1278/sx1276) à faible coût pour Arduino, Esp8266 ou Esp32 : 15 étapes
Communication sans fil LoRa 3Km à 8Km avec appareil E32 (sx1278/sx1276) à faible coût pour Arduino, Esp8266 ou Esp32: je crée une bibliothèque pour gérer EBYTE E32 basée sur la série Semtech d'appareil LoRa, appareil très puissant, simple et bon marché.Vous pouvez trouver Version 3Km ici, version 8Km iciIls peuvent fonctionner sur une distance de 3000m à 8000m, et ils ont beaucoup de fonctionnalités et
Bricolage domotique à faible coût avec Esp8266 : 6 étapes
Bricolage domotique à faible coût à l'aide d'Esp8266 : Bonjour à tous, aujourd'hui, dans ces instructables, je vais vous montrer comment j'ai préparé ma propre domotique comme étape vers une maison intelligente à l'aide d'un module ESP 8266 généralement connu sous le nom de nodemcu donc sans perdre de temps Commençons:)
Automatisation bavarde -- Audio d'Arduino -- Automatisation à commande vocale -- Module Bluetooth HC-05 : 9 étapes (avec photos)
Automatisation bavarde || Audio d'Arduino || Automatisation à commande vocale || Module Bluetooth HC - 05 :……………………………. Veuillez vous abonner à ma chaîne YouTube pour plus de vidéos…. …. Dans cette vidéo, nous avons construit une automatisation parlante.. Lorsque vous enverrez une commande vocale via un mobile, il allumera les appareils domestiques et enverra des commentaires i
Créez une piste sensorielle à faible coût en quelques minutes ! : 10 étapes (avec photos)
Faire une piste sensorielle à faible coût en quelques minutes ! : Dans mon précédent Instructable, je vous ai montré comment faire une mise en page de train miniature avec voie d'évitement automatisée. Il utilisait un segment de piste, nommé « piste captée ». C'est une chose très utile à avoir dans une mise en page de chemin de fer modèle. Je peux être utilisé pour ce qui suit : Bloquer