WiFi Extender avec ESP8266 et ESP32
Ils se tiennent debout dans la cour avant, quelque chose de construction, de toute urgence besoin d'un tutoriel parce qu'ils ne savent pas et veulent chercher cela sur Internet. Il suffit de trouver une information avec le moteur de recherche de votre confiance. Exactement dans cet endroit sont bien sûr la connexion de données mobiles au niveau le plus bas et le Wi-Fi domestique, à l'exception de la plage. Vous savez que, alors REE est venu à l'esprit que vous pouvez utiliser comme accespoint. Le problème et la solution ne sont pas nécessairement nouveaux. Je voudrais partager mes expériences avec vous à ce moment. Nous y voilà.
Ce dont nous avons besoin
1 |
|
1 |
PC avec connexion Internet |
1 |
Câble de connexion USB |
Moritz Spranger avait dans sa contribution "maille plus de 4 nœuds ESP8266 Wi-Fi«Il y a quelques années précédemment rapporté par un tel projet similaire. Pour cette solution, l'ESP est flashé avec un firmware via un outil externe. Je vais vous montrer le processus plus tard de plus près.
Je suppose que vous avez l'IDE Arduino, ainsi que les sources d'ESP8266 et ESP32 installées. Sinon, regardez dans le blog AZ. Là, il sera décrit. Je vous recommande de mettre à jour les bibliothèques sur le dernier stand.
Esp8266
Tout d'abord, j'ai commencé à secouer l'exemple des esquisses de l'Ide Arduino (il doit être défini dans l'IDE Arduino sous Outils, le tableau utilisé). Vous recherchez des acspoints et des points chauds peuvent être trouvés sous ESP8266WIFI le programme RangeExtender NAPT. Il vous suffit d'entrer les données d'accès à votre réseau WLAN:
Puis chargez le croquis sur le microcontrôleur. Dans la vue d'ensemble de vos réseaux WLAN, l'ESP devrait sortir maintenant avec le nom de votre réseau domestique et à l'arrière émis « Extender » [Yourwarlame] Extender
Pour vous connecter, vous devez entrer la même clé Wi-Fi, quant à votre propre réseau. Je devais effectuer quelques tentatives dans le navigateur jusqu'à ce que la connexion Internet a fonctionné. Mais cela fait. En fait assez simple.
Connexion via un portail captif
C'est un peu gênant si vous devez entrer les données d'accès dans le code source. C'est un personnellement trop inflexible pour moi. Alors je pensais à mettre en place un serveur web qui affiche une forme d'entrée dans le navigateur Internet. Je voudrais saisir les données d'accès. Comme il n'existe pas sur Internet qu'il n'y a pas déjà, je Cette solution ici trouvé. Je trouve cela très confortable. Il convient de noter que les données d'accès, y compris le mot de passe seront affichés dans le Moniteur série. Ce croquis peut être téléchargé directement sur l'ESP8266 sans changer quelque chose au code source. Ensuite, vous verrez un périphérique appelé ESP dans la vue d'ensemble de vos réseaux WLAN suivis d'une chaîne. Connectez-le (sans mot de passe) et appelez l'adresse IP dans le navigateur 192.168.4.1 (Vous pouvez également voir ces données dans le moniteur série de l'IDE Arduino). Vous verrez ensuite un formulaire d'entrée dans lequel vous pouvez entrer les données d'accès à votre réseau Wi-Fi. Vous pouvez également modifier le nom du réseau ESP et un mot de passe (qui est fortement recommandé). J'utilise aussi le même mot de passe que pour mon réseau domestique. Si les données sont entrées, connectez-vous à l'ESP (si vous avez recréé le nom et le mot de passe) et vous devez déjà avoir une connexion à Internet.
C'est un peu plus confortable
Comme vous pouvez le voir, vous devez entrer le nom de votre réseau sous la forme d'entrée. Malheureusement, ceux-ci sont généralement formulés par le fabricant un peu long. Donc, je veux changer l'esquisse maintenant que les réseaux disponibles sont affichés dans une liste. Là, je veux choisir mon réseau, au lieu de taper le nom. A cet effet, je me suis adapté le code source ci-dessus et changé le formulaire HTML afin que les réseaux WLAN sont répertoriés à proximité et pourvus d'un Radiocheckbox. Ainsi, vous pouvez simplement frapper la sélection, entrez votre mot de passe et de connexion. Voici le code source:
annuler décharger(int Netif_idx, CONTAM Char * dateness, size_t len, int dehors, int Succès) {
(annuler)Succès;
En série.imprimer(dehors ? F("Dehors") : F(" dans "));
En série.printf("%d ", Netif_idx);
// Filtre optionnel Exemple: IF (Netdump_is_Arp (données))
{
netdump(En série, dateness, len);
// Netdumphex (série, données, Len);
}
}
// MES FONCTIONS
botte testwifi() {
En série.printf("\ NTESTING CONNEXION avec '% s' \ n", Wifi.SSID().c_str());
int compter = 0;
digitalWrite(2,Meugler);
Tandis que (compter < 20) {
SI (Wifi.statut() == Wl_connected) {
En série.printf("\ Nwifi Connected \ NSt.:% S (DNS:% s /% s)! \ N \ n",
Wifi.localip().tostring().c_str(),
Wifi.dnsip(0).tostring().c_str(),
Wifi.dnsip(1).tostring().c_str());
// Donner des serveurs DNS à côté AP
DHCPSOFTAP.DHCPS_SET_DNS(0, Wifi.dnsip(0));
DHCPSOFTAP.DHCPS_SET_DNS(1, Wifi.dnsip(1));
digitalWrite(2,HAUTE);
revenir vrai;
}
En série.imprimer(".");
retard(1000);
compter++;
}
En série.printf("\ Ncan't se connecter au wifi, se connecter à ap '% s' et configure ... \ n \ n", Wifi.SoftaSSID());
revenir faux;
}
// serveur
ESP8266Webserver serveur(80);
Chaîne de caractères Contenu;
Chaîne de caractères réseaux[40];
annuler serverconfig() {
serveur.Commencer();
int n = Wifi.ScanNetworks();
Contenu = " ";
Contenu += " Configuration ESP8266 page title> head>" ;
Contenu += "";
SI (Wifi.statut() != Wl_connected) {
Contenu += " Actuellement non connecté div>";
}
Autre {
Contenu += " Connecté à:";
Contenu += Wifi.SSID();
Contenu += "IP:";
Contenu += Wifi.localip().tostring();
Contenu += " Div>";
}
Contenu += "";
SI (n == 0) {
Contenu += " Aucun réseau sans fil Trouvé h1>"
;
}
Autre {
Contenu += " Station sans fil Réglages h1>"
;
Contenu += ";
pour (int je = 0; je < n; ++je) {
réseaux[je] = Wifi.SSID(je);
Contenu += "";
Contenu += ";
Contenu += Chaîne de caractères(je);
Contenu += "\" ";
Contenu += "Name = \" SSIDs \ "Value = \" ";
Contenu += Chaîne de caractères(je);
Contenu += "\">";
Contenu += "
Contenu += Chaîne de caractères(je);
Contenu += "\"";
Contenu += ">";
Contenu += Chaîne de caractères(je + 1);
Contenu += ": ";
Contenu += Wifi.SSID(je);
Contenu += " (";
Contenu += Chaîne de caractères(Wifi.RSSI(je));
Contenu += ")";
Contenu += (Wifi.Type de chiffrement(je) == Enc_type_none) ? " " : "*";
Contenu += " Label>";
Contenu += " Div>";
retard(10);
}
Contenu += « ;
Contenu += " Enregistrer de façon permanente Bouton> Enregistrer temporairement (jusqu'au redémarrage) Button>" ;
Contenu += " Form>";
Contenu += " Paramètres du point d'accès sans fil h1>"
;
Contenu += ";
Contenu += "
Contenu += Wifi.SoftaSSID();
Contenu += "" longueur = 32>
";
teneur += "
teneur += Wifi.softappsk();
teneur += "'Nom =' Appsk 'minlength = 8 maxlength = 63>
doit avoir au moins 8 caractères ou en blanc! Small>
" ;
teneur += " Enregistrer en permanence Button> Enregistrer temporairement (jusqu'à redémarrer) Button>" ;
teneur += " forme>";
}
teneur += " Divers h1>"
;
teneur += " Form>" ;
teneur += "";
serveur.au("/", []() {
serveur.envoyer(200, "Texte / HTML", teneur);
});
serveur.surnotculer([]() {
serveur.envoyer(404, "texte simple", "Comment diable êtes-vous arrivé ici?");
});
serveur.au("/ Stasettings", []() {
Chaîne de caractères tempêter = serveur.argument("SSIDS");
int numéro = tempêter.tint();
Chaîne de caractères stasside = réseaux[numéro];
Chaîne de caractères svpsk = serveur.argument("stapsk");
si (stasside.longueur() > 0) {
serveur.envoyer(200, "texte simple", "Paramètres reçus");
En série.printf("\ N \ N \ N auttant de se connecter à"% s "à l'aide du mot de passe '% s' \ n", stasside.c_str(), svpsk.c_str());
Wifi.persistant(vrai);
Wifi.commencer(stasside, svpsk);
Testwifi();
}
});
serveur.au("/ tempstastastings", []() {
Chaîne de caractères tempêter = serveur.argument("SSIDS");
int numéro = tempêter.tint();
Chaîne de caractères stasside = réseaux[numéro];
Chaîne de caractères svpsk = serveur.argument("stapsk");
si (stasside.longueur() > 0) {
serveur.envoyer(200, "texte simple", "Paramètres reçus");
En série.printf("\ N \ N \ N auttant de se connecter à"% s "à l'aide du mot de passe '% s' \ n", stasside.c_str(), svpsk.c_str());
Wifi.persistant(faux);
Wifi.commencer(stasside, svpsk);
Testwifi();
}
});
serveur.au("/ apsettings", []() {
Chaîne de caractères apysid = serveur.argument("APSSID");
Chaîne de caractères appsk = serveur.argument("Appsk");
si (apysid.longueur() > 0) {
serveur.envoyer(200, "texte simple", "Paramètres reçus");
En série.printf("\ N \ N \ NSsetting AP Credentials \ nssid:% s \ npassword:% s \ n", apysid.c_str(), appsk.c_str());
Wifi.persistant(vrai);
Wifi.sonnable(apysid, appsk);
}
});
serveur.au("/ TEMPAPPAPSETTATIONS", []() {
Chaîne de caractères apysid = serveur.argument("APSSID");
Chaîne de caractères appsk = serveur.argument("Appsk");
si (apysid.longueur() > 0) {
serveur.envoyer(200, "texte simple", "Paramètres reçus");
En série.printf("\ N \ N \ N \ N \ NSsetting AP temporaire des informations d'identification \ nssid:% s \ npassword:% s \ n", apysid.c_str(), appsk.c_str());
Wifi.persistant(faux);
Wifi.sonnable(apysid, appsk);
}
});
serveur.au("/ redémarrer", []() {
serveur.envoyer(200, "texte simple", "Redémarrage en cours...");
retard(5000);
Espiègler.réinitialiser();
});
}
annuler mettre en place() {
En série.commencer(115200);
punaise(2, SORTIR);
retard(1000);
En série.printf("\ n \ nnapt gamme Extender \ n");
En série.printf("Tas au début:% d \ n", Espiègler.getfreeheap());
phy_capture = décharger;
Wifi.sothymode(Wifi_phy_mode_11n); // Définissez le type de radio sur n
Wifi.mode(Wifi_ap_sta);
Wifi.persistant(faux);
Wifi.commencer(); // Utiliser des informations d'identification stockées pour se connecter au réseau
Testwifi();
Wifi.softapconfig( // Définissez l'adresse IP, la passerelle et le sous-réseau
Adresse IP(192, 168, 4, 1),
Adresse IP(192, 168, 4, 1),
Adresse IP(255, 255, 255, 0));
Wifi.sonnable(Wifi.softapssid(), Wifi.softappsk()); // Utilise des informations d'identification stockées pour créer AP
En série.printf("Tas avant:% d \ n", Espiègler.getfreeheap());
err_t retenir = IP_NAPT_INIT(Napt, Napt_port);
En série.printf("IP_NAPT_INIT (% D,% D): RET =% D (OK =% D) \ n", Napt, Napt_port, (int)retenir, (int)Err_ok);
si (retenir == Err_ok) {
retenir = IP_NAPT_ENABLE_NO(Softap_if, 1);
En série.printf("IP_NAPT_ENABLE_NO (softap_if): ret =% d (ok =% d) \ n", (int)retenir, (int)Err_ok);
si (retenir == Err_ok) {
En série.printf("\ NWIFI Network '% s' avec Passowrd '% S' et IP '% s' est maintenant configuré \ n", Wifi.softapssid(), Wifi.softappsk().c_str(), Wifi.sofapip().tostring().c_str());
}
}
En série.printf("Heap après NAPT INIT:% D \ N", Espiègler.getfreeheap());
si (Retenir != Err_ok) {
En série.Printf("Initialisation NAPT a échoué \ n");
}
serverconfig();
}
annuler d'installation() {
En série.Commencer(115200);
En série.Printf("\ n \ nnapt non pris en charge dans cette configuration \ n");
}
annuler boucle() {
serveur.policière();
SI (Wifi.statut() != Wl_connected) {
denadewrite(2, Meugler);
retard(1000);
denadewrite(2, HAUTE);
retard(1000);
}
Autre {
denadewrite(2, HAUTE);
}
}
Intermédiaire
Pour finalement, que j'ai investi beaucoup de temps ici, cela fonctionne plus mal comme juste. J'ai mesuré la vitesse et je suis venu un peu plus de 1 Mbps. Cela semble être un problème général, car il a également été discuté sur Github et dans le forum de espressif. Malheureusement, il n'y a pas de solution pour cela.
ESP32 ou comment tout fonctionne mieux
D'après mes recherches, il ne vise pas les pages espressifs (le fabricant de la puce ESP) d'utiliser un ESP32 comme WiFi Extender (routeur WiFi de NAT). En conséquence, il n'y a pas de portage de la chaîne d'échantillons d'extension pour le ESP32. Cependant, il y a le projet de Martin-ger sur githubqui a déjà été utilisé fréquemment. Aussi dans notre poteau de blog ESP8266 Mesh Wi-Fi sur 4 nœuds (de Moritz Spranger) Cette variante est utilisée.
Le projet est également disponible pour l'ESP8266. Depuis que je cherche également une solution appropriée pour cela, je montre les deux possibilités ici.
Sous Windows:
- L'outil de téléchargement de flash ESP est nécessaire. Vous pouvez le faire ici
- Sur le site GitHub (ESP8266 et ESP32), cliquez sur le bouton vert bouton « Code » en haut à droite et tout comme zip il téléchargement.
- Démarrez Flash Download Tool et sélectionnez le ESP8266 ou ESP32.
- Définissez ensuite tout comme celui-ci sur la capture d'écran ci-dessous.
ESP8266:
ESP32:
- Connectez l'ESP à l'ordinateur via USB
- En cliquant sur le bouton "...", vous pouvez sélectionner les fichiers bin. Les données dont vous avez besoin peuvent être trouvées dans le zip téléchargé dans le sous-répertoire "Firmware" (ESP8266) ou "Build" (ESP32).
- Dans le champ à côté de celui-ci, entrez les adresses de mémoire. Dans ce cas, "0x00000" et "0x02000" (ESP8266) ou "0x1000", "0x10000" et "0x8000" (ESP32). Ce sont les adresses de départ de la mémoire de l'ESP, où le programme est stocké.
- Si aucun port COM n'est affiché, vous devez installer le pilote approprié (si vous avez déjà programmé l'ESP via l'IDE Arduino, elle doit également être reconnue ici). Le numéro du port COM peut être un autre pour vous.
- Pour une utilisation ESP-01 pour la taille de flash "8MBIT" au lieu de "32MBIT" (ESP8266)
- Démarrer le processus flash
Esp8266:
ESP32:
Remarque: Comme dans l'IDE Arduino, vous devez apporter l'ESP32 en mode Flash en appuyant sur le bouton de démarrage. Maintenez et puis appuyez sur le bouton Démarrer.
ESP8266:
ESP32:
Après avoir flashé avec succès, débranchez la connexion USB à l'ESP, puis redémarrez-le en vous connectant à nouveau le bouchon (peut-être d'une simple remise à zéro est suffisante).
Après quelques instants, vous devriez voir un nouveau réseau Wi-Fi nommé "MYAP" (ESP8266) ou "ESP32_NAT_Router" (ESP32).
Connectez-vous à ce réseau puis appeler le navigateur Internet l'adresse http://192.168.4.1/ au. Vous devriez alors voir cette vue d'ensemble:
Esp8266:
ESP32:
- Les paramètres AP sont toujours les données d'accès pour l'ESP32. Au début, aucun mot de passe n'est défini ici. Vous devriez changer cela. J'utilise à ce stade (comme déjà mentionné précédemment) le même mot de passe, qui est également défini dans mon routeur Internet.
- Les paramètres STA sont les données d'accès à votre routeur WLAN.
- Si vous utilisez un PC, un clic droit sur les propriétés du réseau et entrez le mot de passe par copier et coller sur le site. Elle enregistre ensuite les mots de passe à distance. Il suffit de le faire qu'une fois. Après cela, l'ESP fonctionne autonome. (Le mot de passe est alors dans la mémoire volatile. Si tel est un problème touchant à la sécurité pour vous, vous devez taper le collecteur de mot de passe.)
- Pour le ESP8266, définissez l'entrée pour la sécurité sur WPA2!
- Pour l'ESP32 vous pouvez entrer l'adresse IP une statique supplémentaire.
Il ne peut pas nuire à redémarrer l'ESP après avoir entré tous les paramètres. Dans le cas où aucune connexion est établie. Rappelez-vous que vous avez (probablement) un mot de passe pour le point d'accès ESP. Vous devez le reconnecter.
sous Linux
Sur les sites Github de Martin-Ger est également montré comment flasher les programmes respectifs sous Linux sur l'ESP:
Vous devez installer le ESPTool.py (des informations plus détaillées ici).
Démarrez le terminal et entrez la commande suivante:
$ pip installer EspaTool
Esp8266
Dans le terminal, entrez la commande suivante:
$ ESPTOOL.py --Port / Dev / ttyUSB0 write_flash fs 4Mo -ff 80m -F Dio 0x00000 Firmware / 0x00000.bin 0x02000 Firmware / 0x02000.bin"
Si vous n'utilisez pas le ESP8266 commun comme Mini NODEMCU ou D1, modifiez les entrées suivantes dans la ligne de commande:
-
ESP-01: fs 1Mo
-
ESP8285: fs 1Mo et FM Dout
ESP32
Rappelez-vous aussi ici pour amener le ESP32 en mode flash (clé de démarrage)!
Dans le terminal, entrez la commande suivante:
$ ESPTOOL.py --ébrécher ESP32 --Port / Dev / ttyUSB0 \
--baud 115200 --avant Default_Reset --nach hard_reset write_flash \
-Z --Mode flash dio --FLASH_FREQ 40m --Flash_size détecter \
0x1000 build / bootloader / bootloader.bin \
0x10000 build / ESP32_NAT_ROUTER.BIN \
0x8000 build / partitions_example.bin
Si les chemins ne seront pas valides, l'ESPTOOL ne peut pas être saisi comme une variable PATH globale, ou vous n'êtes pas dans le dossier principal des fichiers téléchargés. Vous pouvez également spécifier le dossier source tout à fait en spécifiant le chemin complet au lieu de seulement « firmware » ou « build ».
Sous Mac OS
Malheureusement, je ne pouvais pas tester cela. Le clignotement d'un ESP8266 sera u.ä. ici décrit. Les paramètres du ESPTOOL devraient alors être les mêmes que sous Linux
Conclusion
Après avoir essayé quelques croquis de l'IDE Arduino, seuls les programmes de Martin-Ger travaux satisfaisants (grâce à ce point pour ce travail). L'étape sur l'ESP flash Télécharger l'outil semble un peu plus lourd, mais il ne coûte que quelques minutes de plus que sur l'Arduino IDE. Si je trouve le temps que je l'ai appliqué à la programmation précédente dans l'Arduino IDE, la dernière variante a certainement été le plus rapide.
La connexion Internet du ESP8266 était sur le point 5Mbit / s, pour lesquels il était ESP32 environ 16 Mbits / s. Ce dernier, bien sûr aussi des bottes plus rapidement. Le ESP8266 avait des interruptions de temps en temps.
En ce qui concerne la gamme est concerné, il dépend fortement de l'environnement dans lequel vous utilisez l'ESP comme un routeur NAT. Dans mon cas, il suffisait de la cour avant, où le routeur Internet est mis en place à l'arrière de la maison. A travers des murs épais, ou sur plusieurs étages, la gamme est réduite et la vitesse de transmission est alors en train de couler fortement. Testez vous-même.
Si vous avez d'autres possibilités, ou même fonctionnement croquis Arduino, je serais heureux si vous les partagez avec nous.
Comment fournir l'ESP avec l'électricité en tant que point d'accès mobile d'une batterie, vous pouvez vous. Ce poteau de blog supprimer. Cela comme une pointe finale.
Amusez-vous avec votre Extender WiFi (bon marché).
Andreas Wolter
Pour Blog AZ-Livraison
34 commentaires
Joe
Ich habe mal einen weiteren D1 R32 programmiert und die RSSI-Werte der beiden Boards verglichen. Das neue Board liefert bedeutend bessere RSSI-Werte. Das erste Board hatte schon nach wenigen Metern Abstand zum Router Verbindungsabrisse. Mit dem neuen Board funktioniert die Verbindung auch durch Wände, über Stockwerke und auch nach draussen ohne Verbindungsabrisse. Und das Ganze mit einer alles andere als idealen Printantenne. Das vermeidet das leidige Problem mit einem Extender zwischen Sensorboard und Heimrouter. Offensichtlich gibt es erhebliche Qualitätsunterschiede bei diesen Modulen.
Ich habe im Übrigen auch verschiedene Tipps, die so im Netz kursieren ausprobiert. Hat aber alles nichts gebracht.
Vielleicht hilft diese Info Anderen weiter, bevor sie verzweifeln.
Schade ist, dass es das D1 R32-Board im Arduino-Format nicht mit einem Anschluß für eine externe Antenne gibt.
Gruß Joe.
Joe
Ich hab mir die Website von Reichelt auch mal angesehen. Die beschreiben praktisch die gleiche Vorgehensweise, wie Sie hier auf der Seite. Schade, dass das so nicht funktioniert. Ich wollte eigentlich vermeiden, einen kommerziellen WIFI-Extender einzusetzen. Vermutlich bleibt aber keine andere Möglichkeit.
Vielen Dank für die Info.
Gruß Joe
Andreas Wolter
@Joe: das ist ein interessanter Fall. Ich hatte den NAT als Extender verwendet. Also hatte ich mich mit dem NAT verbunden, der seinerseits mit dem Router verbunden war.
Die Kette war also Router → NAT → PC.
Ihre Kette ist PC → Router → NAT → D1 R32
Wenn sich alle Geräte verbinden können, vermute ich, dass ein Forwarder nicht korrekt eingerichtet ist, der die Daten weiterleitet. Es könnte auch an den unterschiedlichen IP-Adressräumen liegen, aber genau das soll der NAT ja überbrücken.
Ich befürchte, dass ich nicht weiterhelfen kann, da es sich um ein geschlossenes System handelt, dass man von Github runterladen kann.
Sie könnten aber mal versuchen, im Router einen Forwarder einzurichten. Normalerweise ist der jedoch dafür gedacht, von außen über das Internet in das Intranet weiterzuleiten.
Grüße,
Andreas Wolter
AZ-Delivery Blog
Joe
Hallo nochmal.
Ich habe die ESP32 Software von martin-ger und das Flash-Tool von der Expressif website unter Windows verwendet und die Daten entsprechend in die NAT-Config-Maske eingetragen. Es funktioniert alles so, wie auf der Website hier beschrieben, ausser dass ich mit dem PC via Fritzbox und NAT nicht auf das D1 R32 zugreifen kann. Der Zugriff funktioniert nur, wenn ich mich per WLAN direkt am NAT anmelde.
Gruß Joe
Andreas Wolter
@Joe Kilo: welche der oben aufgeführten Varianten haben Sie verwendet?
Grüße,
Andreas Wolter
AZ-Delivery Blog
Joe Kilo
Hallo,
Habe den NAT Router nach obiger Anweisung auf einem ESP32 DEV-Kit V1 eingerichtet. Damit versuche ich ein D1 R32-Modul zu erreichen, dass die Globalstrahlung misst und ausserhalb der Reichweite der Fritzbox ist. Der NAT ist an der Fritzbox angemeldet, eingerichtet und auch erreichbar. Der D1 R32 kommuniziert mit der NAT und ich erreiche ihn auch direkt über die Fritzbox, wenn er angemeldet ist. Nur über den NAT ist er nicht zu erreichen.
Es sind meine ersten Versuche mit den ESP32-Modulen und weiß nicht, was da nicht passt. Hat jemand eine Idee?
Vielen Dank, Joe
Mark
Hi everyone. thank you for share.
I tested the router function through Arduino IDE using martin-ger github repository and it work fine. But… Im trying to connect the same ESP8266 (as router) to SinricPro o conrol one light at same time that NAT routing. Routing work fine but SinricPro client no connect, but oher ESP8266 connected to this ESP (on AP network) connect fine to cloud SinricPro. So… look like some NAT rule to itself (ESP8266 NAT Router) is missing or something like that. Do you know something about it? Im searching everywere but dont find nothing.
Konrad
Hallo nochmal,
Bitte mein Kommentar von gestern löschen.. Ich habe das Problem gefunden. Man muss im Flash download tool den ESP32 (und nicht die c2, s2, c3…) Versionen anklicken und den Hinweis auf UART einfach übersehen, da man den USB danach noch eingeben kann.
Trotzdem Danke.
Übrigens hat die Verbindung mit der Garage nun perfekt geklappt mit dem ESP32.
Jetzt stellt sich bei mir nur die Frage wie ich über VPN auf den ESP32 extender komme. Aber das ist hier ja nicht der Punkt.
Grüße
Konrad
Konrad
Konrad
Hallo,
Die ESP8266 Version mit Arduino IDE hat geklappt. Leider um 2 Meter zu kurz.
Habe dann versucht mit dem ESP32 und dem Flash download Tool Version 3.9.5 die oben genannten Daten von Github hochzuladen. Ich bekomme die Fehlermeldung:
2-sync fail und ich soll die Daten vom ESP32 mit irgendwelchen strapping pins prüfen. (Habe auch den boot / EN Knopf in unterschiedlichen Varianten gedrückt)
Ich verstehe gerade nur Bahnhof.
Kann mir da jemand helfen, was ich falsch mache?
Der ESP32 ist ein Produkt von AZ (ESP32 Dev Kit C V4)
DAnke schon mal im Voraus.
Konrad
Andreas Wolter
@Richi: ich bezweifle, dass man daran etwas ändern kann. Es handelt sich um externe Projekte, von denen man nur fertige BINs herunterladen und flashen kann. Ich muss daher also auf die verlinkten Github-Seiten verweisen.
Grüße,
Andreas Wolter
AZ-Delivery Blog
Richi
Wie ist die WiFi-Power eingestellt und wie kann man diese ändern?
Andreas Wolter
@Mr. T: Danke für den Hinweis. Das schaue ich mir an und werde es eventuell als Update hier in den Beitrag einfügen.
Grüße,
Andreas Wolter
AZ-Delivery Blog
Mr.T
Sehr schöner Beitrag, ich bin während des Auspobierens und der Recherche anscheinend auf ein Folgeprojekt für den ESP32 gestoßen:
https://github.com/dchristl/esp32_nat_router_extended
Das sieht hübscher aus, hat mehr Features und wird auch imho besser gepflegt, zumindest kommen regelmäßig Releases.
Matze
Also es tut mir wirklich leid. Ich habe alle kombinationen durchprobiert. Einmal mit nen ESP32-S und einmal mit nem ESP32 Wroover-D. Etweder fehlermeldunf 5 mit nem chip error oder fehlermeldung 2 Sync error. Zudem ist in der zip keine “partition_examble.bin” ebensowenig wie eine “esp32_nat_router.bin” vorhanden dafür eine Partition und eine firmware .bin. Ebenso lässt sich bei dem Flasher keine flashzize einstellen. Es tut mir wirklich leid für all die Mühe die ihr euch gemacht habt, aber es funktioniert nicht. Und ja, ich war im Flash mode.
Andreas Wolter
@Ronald: dazu würde ich erst einmal auf diesen Beitrag verweisen:
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/esp-als-w-lan-router
Theoretisch sollte es gehen, da man sich über das Captive Portal mit dem jeweiligen Access Point verbindet.
Grüße,
Andreas Wolter
AZ-Delivery Blog
Ronald
hallo, die Sache mit dem NAT-Router funktioniert einwandfrei. ist es damit auch möglich mehrere Router hintereinander zu schalten um grössere Entfernung (bei sehr dicken Wänden) zu erreichen ? meiner Vorstellung nach musste dann Router 1 mit der Cam 1 bei Router 2 angemeldet sein und Router 2 an Router 3 an welchen ich dann meinen Monitor für die Cam ( an Router 1 ) sehen kann ?… und auch noch Cam an Router 2.. etc.. ??sind meine Vorstellungen sinnvoll und möglich ?
Eine Cam und ein Router geht jedenfalls sehr gut
Andreas Wolter
@irgendjemand: ich habe versucht, das im Entwicklerrepository zu recherchieren. Ich konnte keine konkrete Lösung finden. Es scheint allerdings generell Probleme mit VOIP in Verbindung mit NAT Routern zu geben: https://www.voip-information.de/nat-und-voip.php
irgendjemand
Moin,
ich wollte den Verstärker für meine VoIP-ESP Klingel benutzten… geht nur nicht :(. Kann man über einen ESP Verstärker kein VoIP nutzten oder mache ich etwas falsch, weil ohne den Verstärker geht es.
Andreas Wolter
@Tino: mein Kollege hat die Repeater Firmware auf der ESP32 Cam getestet (siehe Kommentar weiter unten). In die Firmware kann man leider nicht so einfach weiteren Code hineinschreiben. Sie ist wirklich nur als Repeater gedacht.
Leider gibt es keine brauchbaren Codes für den Repeater, den man über die Arduino IDE programmiert. Dann könnte man da etwas zusammenfügen.
Grüße,
Andreas Wolter
AZ-Delivery Blog
Tino
Hi.. ich bin Anfänger..
Ist es möglich das Board gleichzeitig mit dem Kamera Code und gleichzeitig dem WiFi repeater Code (mit Kamera Modul) zu betreiben.. also zwei Fliegen mit einer Klappe.. also die Integration von zwei Scripten. wäre halt effizient.. ???!!
Andreas Wolter
@keinProfi: mein Kollege Gerald Lechner hat das für Sie getestet:
Ich habe die Firmware am ESP32-Cam getestet. Hat problemlos funktioniert. Ein Seed-Test direkt neben dem ESP32 ergab Download 5Mbit/s upload 400kbit/s. In einem anderen Raum etwa 15m entfernt vom ESP32 mit Wänden dazwischen Download 250kbit/s Upload 70kbit/s.
KeinProfi
Kann das ganze eigentlich auch für das esp 32 ai thinker board funktionieren (esp32 cam)?
Andreas Wolter
@GeSe: da es ein fertiges BIN ist, dass auf den MC geladen wird, kann man das selbst leider nicht auf dem MC anzeigen lassen (also eine Liste mit connected clients).
So bleibt erst einmal nur die Möglichkeit, auf den Geräten selbst die IP anzuzeigen. Auf dem Smartphone müsste das über die WLAN-Einstellungn gehen. Im Betriebssystem geht das entweder in der Taskleiste über das WLAN-Symbol in den Eigenschaften oder in der Commandozeile mit dem Befehl ifconfig (Linux) oder ipconfig (Windows).
GeSe
Tolle Anleitung, mein erster repeater ist eingerichtet und alles hat mit wenigen Versuchen funktioniert.
Gibt es eine Möglichkeit herauszufinden, welche IP Adresse die mit dem repeater verbundenen Geräte erhalten haben?
Gruß Gerd
Robert
@ Andreas Wolter
Danke für die Antwort.
Noch etwas genauer zu meiner Config.
Ich benutze einen ESP32 und hab es nach eurer Anleitung durchgeführt.
Sollte es da also mit %5F funktionieren, bis jetzt hatte ich _ und %5f versucht, leider kein Erfolg. Werde es nun mit %5F demnächst versuchen.
Danke!
Andreas Wolter
@Robert:
Das hängt davon ab, welchen Repeater (Arduino Sketch oder Binary) und auf welchem ESP Sie es verwenden. Sie können versuchen, den HTML Platzhalter zu setzen: “_” (ohne Anführungszeichen). Eine komplette Liste finden Sie hier: https://www.nationalfinder.com/html/char-asc.htm
Ansonsten müsste Ihre Methode mit %b eigentlich %2B sein, denn das ist der Hex Code für ein Plus. Dementsprechend müsste %5F den Unterstrich ersetzen.
Grüße,
Andreas Wolter
Robert
Eine super Sache der repeater.
Ein Problem hab ich aber, in der SSID ist das underline _ Zeichen vorhanden. Das + muss mit %b ersetz werden, womit das _?
Ich finde leider nichts. Mit %5f wird die SSID nicht erkannt.
HaJo
Soeben habe ich einen ESP32 Devkit C V2 geflasht. Hat alles von Anfang an alles, wie erwartet, funktioniert. Sogar das Einbinden in die Fritzbox war ein Kinderspiel. Vielleicht liegen die Probleme (s. u.) in der Architektur des “D1 Mini NodeMcu mit ESP8266-12F WLAN Modul” sowie der Programmierung dieses µP. Das zu prüfen bin ich noch nicht in der Lage (Anfänger, obwohl pensioniert ;-) ). Aber ich habe nun für meinen Garten (2000 m²) einen (oder mehrere) Router, so dass ich mein neues Gewächshaus steuern kann. Übrigens war ich erstaunt über die Wlan-Reichweite des D1 Mini NodeMCU. Auf der Hälfte des Weges streiken unsere ( und die unserer Enkel und Kinder ebenso) Smartphones (WLAN) während der D1 Mini am Ende des Gartens (ca. 60 m) noch mit einer Geschwindigkeit von 2 Mbit per WLAN ohne einen Router sendete.
HaJo
Ich muss mich für den Kommentar vom 30.09.2021 entschuldigen. In dem Stress hatte ich vor dem beschriebenen Flashen vergessen, vor dem Flashen den Erase-Button zu drücken. Somit war natürlich beim Flashen der 0×02000-bin und der 0×82000-bin noch die 0×00000-bin vorhanden. Werden nur die beiden ersten Bins nach Erase geflasht, funktioniert die Configuration nicht!
Obwohl ich einmalig meinen ESP8266-Natrouter zum Laufen gebracht habe, war der Vorgang nicht reproduzierbar, da auf der Configurationsseite es mir nicht gelang, erneut die Daten dauerhaft einzutragen. Um die beiden D1 Mini NodeMcu mit ESP8266-12F WLAN Module zu testen, ob sie fehlerhaft sind, habe ich diese mit ESPEasy geflasht. Zunächst hatte ich ebenfalls keinen Erfolg (getestet mit einer Version aus 2019). Nach dem ich die aktuelle Version vom 15.10.2021 geflasht hatte, lief alles wie am Schnürchen. Ich habe zwar jetzt keinen Router :-(( dafür aber einen AP, den meine Fritzbox nach der Configuration sofort erkannte und mit dem ich nun wunderbar nach allen Regeln der Kunst spielen kann. Wer ESPEasy selber ausprobieren möchte, empfehle ich:
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/esp-easy
und ff. Die aktuelle Zip-Datei kann unter:
https://github.com/letscontrolit/ESPEasy/releases/tag/mega-20211005
heruntergeladen werden.
Nochmals Entschuldigung für meinem Kommentar vom 30.09.2021. Aber ich war so happy, dass es nun – leider nur einmalig – funktionierte, dass ich es an der notwendigen Sorgfalt fehlen ließ.
HaJo
Fast wäre ich verzweifelt – nach dem ich meinen ESP8266Mod-12F (AZ-Delivery D1 Mini) geflasht hatte, konnte ich wie beschrieben das WLAN-Netz MyApp aktivieren, ich konnte die AP-SSID und das Passwort ändern nur die Einbindung ins heimische Netz war nicht möglich (auch erkennbar in der ESP-Konfigurationsseite). Nach der Aufforderung Connect wurde der Inhalt in den Feldern SSID und Passwort des heimischen Netzes gelöscht. In meiner Fritzbox 7590 wurde auch nur unter “Kanälen” das neue WLAN-Netz angezeigt aber mit der korrekten Mac-Adresse. Alle Anstrengungen den ESP in das Netz der Fritzbox einzubinden schlug fehl.
Bei der Internetrecherche fand ich ein Tutorial für den Raspi, das sich mit dem ESP8266 als Repeater befasste. Der Autor hatte ähnliche Probleme. Als Lösung fand er folgenden Weg: Nur die Bindateien 0×02000 und 0×82000 flashen und den SPI-Mode DIO einstellen und siehe da, ich konnte endlich meinen ESP als Gerät in der Fritzbox registrieren: Gerätename ESP-xxxxxx (die letzten 6 Stellen der Mac-Adresse). Nun noch in der Konfigurationsseite die Checkbox “automesh” anklicken und erneut den Connect-Button anklicken (fehlt in der aktualisierten Seite der Haken, Haken erneut setzen und den Connect-Button erneut anklicken). Nun funktioniert auch der Repeater und wird in der Fritz!Box angezeigt. Der Name des neuen Repeaters kann beliebig gewählt werden. Die merkwürdige Darstellung in der Fritz!Box soll man ruhig übersehen, Hauptsache es funktioniert.
Andreas Wolter
@Tester: genau das war das Problem. Es gibt keine .ino für den ESP32. Der Beitrag fasst sämtliche Erfahrungen zusammen, die ich gemacht habe, um die ESP32 bzw. ESP8266 als Extender zu nutzen. Ich hatte dabei massive Probleme und es funktionierte nichts so wie es sollte. Ich wollte versuchen, es nicht mit einem fertigen BIN zu lösen. Aber es ist aktuell die einzige brauchbare Möglichkeit. Der Quellcode ist offen, den finden Sie bei Github (Link im Beitrag).
Andreas Wolter
@Norbert: Danke für den Hinweis. Ich habe das im Beitrag geändert und nun zur Downloadseite, statt zum Download selbst verlinkt.
Norbert
Der Link für den ESP Flash Download hat sich geändert (neue Version)
https://www.espressif.com/sites/default/files/tools/flash_download_tool_3.9.0_0.zip
Tester
Das „einzige brauchbare“ ist das untere Programm, aber wo finde ich die .ino – Datei ? Fertige .bin Dateien helfen beim Testen/Weiterentwickeln nicht. Gute Zusammenfassung, aber das Programm ist seit 2 Jahren im Internet abrufbar.