I am doing some experiments with nodemcu 12 (which has built in esp8266). There most of the tutorials I found by internet describe how to connect to home wifi connection using it.
But when I power on nodemcu, I can see wifi network called "ESPXXX" in my laptop's wifi connection list.
So is there a way to directly connect to the wifi nw of esp8266 by my laptop or via another esp8266 (so I don't have to switch on my home wifi router)?
If it is possible, is there is way to change ssid of esp8266's wifi connection and add password (again this is not about connecting to home wifi and this is about the wifi connection on esp8266 it self)? So we can make one esp8266 as a wifi host and connect other esp8266s as slave to it.
I am using arduino IDE to upload program into esp8266 and not Lua.
Thanks.
-
If you are programming in Lua then we do not know. I do know that it is possible to program (using the Arduino IDE plugins) the NodeMCU as a WiFi access point, and the SSID etc are up to you to select when you write the sketch.Majenko– Majenko08/28/2016 10:45:23Commented Aug 28, 2016 at 10:45
-
Why did you tag your question "arduino-uno"? I see no Arduino UNO involved here, not even any Arduino at all. Could you describe your circuit? If there is no Arduino, then this is not a question for this site.jfpoilpret– jfpoilpret08/28/2016 13:16:24Commented Aug 28, 2016 at 13:16
-
Sorry it seems my question is not clear. I will modify it.lsc– lsc08/29/2016 05:55:29Commented Aug 29, 2016 at 5:55
-
That's a little better. But you should provide the details of the sketch you loaded, and what you expect it to do, especially network wise. If you have not loaded one yet, then that should be the obvious first step.Chris Stratton– Chris Stratton08/29/2016 06:09:37Commented Aug 29, 2016 at 6:09
1 Answer 1
Here you are the working code allowing you to choose SSID
, password
, network name
and IP address
of your ESP8266 acting as an access point. In addition, you can specify wifi channel
to avoid interference with other devices. A password must be at least 8 characters long or it wouldn't work.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
IPAddress ip(192,168,1,81); // choose IP address
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(80);
void handleRoot() {
String page = "<!DOCTYPE html>\n";
page += "<html>\n<body>\n<h1>Some heading</h1><br>Generated by ESP8266\n</body>\n</html>";
server.send(200, "text/html", page);
}
// what to do when accessed through http://ip_address/something_undefined
void handleNotFound(){
String message = "File not found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET)?"GET":"POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i=0; i<server.args(); i++){
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
}
void setup(void){
Serial.begin(74880); // so you can see debug messages automatically sent by ESP8266
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(ip, ip, subnet); // declared as: bool softAPConfig (IPAddress local_ip, IPAddress gateway, IPAddress subnet)
WiFi.softAP("SOME_NAME", "password", 7); // network name, network password, wifi channel
IPAddress myIP = WiFi.softAPIP();
Serial.println();
Serial.print("AP IP address: ");
Serial.println(myIP);
server.on("/", handleRoot); // what to do when accessed through browser using http://IP_address
// what to do when accessed through http://ip_address/test
server.on("/test", [](){
server.send(200, "text/plain", "This is another page");
});
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started...");
}
void loop(void){
server.handleClient();
}
You can write something like:
server.on("/open_door", [](){
// the code to switch on the relay to open the door
// ... <-- put here the code
server.send(200, "text/html", "Door: opened");
});
so you can open the door with http://ip_address/open_door
.
You can try http://ip_address/something_undefined?a=24&b=25
to get an idea how to process the parameters.