Salut a tous j'ai crée une petite serrure avec un servomoteur , un ecran lcd et un module rfid tout ca relier sur une carte Arduino mega , franchement le système marche bien mais plusieurs question me vienne
j'aimerais connecter en wifi ce système pour le contrôler avec Alexa , j'ai donc penser a l'ESP mais esque c'est vraiment possible de Controller un servomoteur et un module rfid avec ca ?
je débute et je n'est que une carte Arduino et j'aimerais récupérais ma carte sans pour autant retirais ce projet possible de tout connecter a l'ESP ? ( bien sur je sais que je n'aurais pas assez de pin pour mon écran lcd mais au pire il n'est pas indispensable )
Adieu Mega, Une carte avec un ESP32 gérer tout ça en codant sous IDE Arduino, idem pour une carte avec un ESP8266 (NodeMCU, WEMOS ou LOLIN......) mais vieux vaut éviter la préhistorique carte ESP-01
Salut.
Il faudra bien étudier les GPIOs de l'ESP8266 et éviter d'utiliser certaines broches :
L'écran peut être équipé d'un module PCF8574 pour dialoguer en I2C.
Le RC522 fonctionne sans problème avec un ESP8266. Je l'ai fait avec un ESP32.
Reste la broche nécessaire au servo : il reste GPIO2, mais elle empêche le µcontrôleur de démarrer si elle est "pulled LOW". Je ne sais pas si un servo va ramener la GPIO à GND ou au +3.3V au repos.
Un ESP32 serait certainement plus à l'aise.
L'écran devra être alimenté sous 5V, sinon il perd en contraste. Idem pour le servo bien sûr.
Le RC522 fonctionne sous 3.3V.
Je viens de lire une page similaire et ça a l’air une galère de fou , vous avez des conseils a donner pour faire tout ça facilement ? Et esque je peut juste copier -coller mon code et le transfert ou non faut vraiment utiliser un autre langage
Un MG996R a une impédance d'entrée élevée, donc il ne risque pas de ramener la GPIO2 à GND au repos, car une LED avec sa résistance (470 ohms) est connectée entre GPIO2 et +3.3V.
il faut reprendre de 0 je pense , j'ai tester plein de programme mais rien ne marche sauf 1 ou le programme tourner bien le servo mais sans intégration rfid donc esque on pourrais m'aider pour cree mon programme pour l'esp.. j'aimerais qu'il tourne de 90 quand le badge est detecter et si possible le connecter a alexa en second temps , j'ai essayer blynk qui m'a etait conseiller mais je n'y comprend pas grand chose et j'ai aussi essayer jeedom mais j'ai un probleme avec la machine virtuel
Personne n'a de boule de cristal. Il faut ton code. Est-ce que ça affiche bien une adresse sur le moniteur série?
Passer d'un arduino à un ESP peut s'avérer un tantinet plus compliqué qu'il n'y parait.
j'ai un dernier problème ya un moyen d'intégrer blynk dans mon code facilement ?
/**********************************************************************
Contrôle d'un servomoteur au moyen d'une page Web.
ESP32 et ESP8266
https://electroniqueamateur.blogspot.com/2018/09/servomoteur-controle-par-wi-fi-esp8266.html
***********************************************************************/
// inclusion des bibliothèques utiles
#if defined ARDUINO_ARCH_ESP8266 // s'il s'agit d'un ESP8266
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#elif defined ARDUINO_ARCH_ESP32 // s'il s'agit d'un ESP32
#include "WiFi.h"
#include <WebServer.h>
#endif
#include <Servo.h> // s'il s'agit d'un ESP32, il faut installer une version spéciale
// de la bibliothèque servo:
// https://github.com/RoboticsBrno/ESP32-Arduino-Servo-Library
// modifiez ces deux constantes pour qu'elles contiennent les caractéristiques de
// votre réseau Wifi
#define ssid "Livebox-E1FF" // le nom (SSID) de votre réseau WiFi
#define password "..." // votre mot de passe WiFi
// le servomoteur est contrôlé par les GPIO 4 de l'ESP8266
#define pinServo 4
#if defined ARDUINO_ARCH_ESP8266 // s'il s'agit d'un ESP8266
ESP8266WebServer server(80);
#elif defined ARDUINO_ARCH_ESP32 // s'il s'agit d'un ESP32
WebServer server(80);
#endif
Servo monServo; //création de l'objet servo
// La variable qui indique la position désirée pour le servomoteur (dépend du bouton coché sur la page web)
String positionSTR = "1"; // peut prendre les valeurs 1, 2 ou 3.
/* La fonction construitPage retourne un string qui contient toute notre page web */
String construitPage() {
String bouton1Str, bouton2Str;
// pour que le bon bouton demeure coché:
if (positionSTR == "1") {
bouton1Str = "checked";
}
if (positionSTR == "2") {
bouton2Str = "checked";
}
String page = "<html lang=fr-FR><head>";
page += "<title>ESP8266 Servomoteur</title>";
page += "<style> body { background-color: #fffff; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }</style>";
page += "</head><body><h1>ESP8266 Servomoteur</h1>";
page += "<form action='/' method='POST'>";
page += "<h3>Position du servomoteur:</h3>";
page += "<p><INPUT type='radio' name='position' value='1' " + bouton1Str + ">ouvert";
page += "<INPUT type='radio' name='position' value='2' " + bouton2Str + ">fermer";
page += "<INPUT type='submit' value='Appliquer'><br><br>";
page += "</body></html>";
return page;
}
/* La fonction gestionPage modifie les caractéristiques du moteur si le bouton
Appliquer a été cliqué. */
void gestionPage() {
if ( server.hasArg("position") ) {
positionSTR = server.arg("position");
Serial.print("Commande recue. Position: ");
Serial.println(positionSTR);
gestionMoteur();
}
server.send ( 200, "text/html", construitPage() );
}
/* Contrôle du servomoteur */
void gestionMoteur() {
int laPosition;
if (positionSTR == "1") {
laPosition = 90;
}
if (positionSTR == "2") {
laPosition = 0;
}
monServo.write(laPosition);
}
void setup() {
monServo.attach(pinServo);
// pour affichage dans le moniteur série
Serial.begin ( 115200 );
// initialisation de la communication WiFi
WiFi.begin ( ssid, password );
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 ); Serial.print ( "." );
}
Serial.println ( "" );
Serial.print ( "Maintenant connecte a " );
Serial.println ( ssid );
Serial.print ( "Adresse IP: " );
Serial.println ( WiFi.localIP() );
// On indique le nom de la fonction qui gère l'interraction avec la page web
server.on ( "/", gestionPage );
server.begin();
Serial.println ( "Serveur HTTP en fonction" );
}
void loop() {
server.handleClient();
}