Cannot assess the webpage through IP address

#include <SPI.h>
#include <WiFiNINA.h>
 
/////// Wifi Settings ///////
char ssid[] = "Xavier";
char pass[] = "19970926";
int keyIndex = 0;                 // your network key Index number (needed only for WEP)
int trigPin=2;
int echoPin=3;

long duration;
int distance=500;

// the IP address for the shield:
IPAddress ip(192, 168, 122, 122); 

int status = WL_IDLE_STATUS;

WiFiServer server(80);

String readString;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  
  Serial.begin(9600);

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while (true);
  }

  WiFi.config(ip);


  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }
  // you're connected now, so print out the status:
  printWiFiStatus();

  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  server.begin();
}

When my device and my computer is connected to the same WIFi, I still cannot access the webpage through 198.168.122.122. Is there sth wrong with the code? Also, there is no status shown on my computer.

Thanks

Is your computer on the 192.168.122 subnet?

If you don't know your subnet, you are most likely not on 198.168.122. Try using the IP 198.168.1.122. It is common for household routers to use this subnet.

Thee_Captain:
If you don’t know your subnet, you are most likely not on 198.168.122. Try using the IP 198.168.1.122. It is common for household routers to use this subnet.

I used to use 192.168.1.177, still cannot open the webpage

You need to know what your subnet is !

ieee488: You need to know what your subnet is !

He's definitely not making this up.

Try: 192.168.0.22 this is another common default.

After that you're going to have to lookup your subnet. If you are on windows you can open a command prompt and type in ipconfig.

Linux I believe it's ifconfig.

show the rest of the sketch. loop() is missing in post

Thee_Captain: He's definitely not making this up.

Try: 192.168.0.22 this is another common default.

After that you're going to have to lookup your subnet. If you are on windows you can open a command prompt and type in ipconfig.

Linux I believe it's ifconfig.

subnet mask is 255.255.255.240. So should I set the address as 255.255.255.XXX?

Juraj:
show the rest of the sketch. loop() is missing in post

#include <SPI.h>
#include <WiFiNINA.h>
 
/////// Wifi Settings ///////
char ssid[] = "Xavier";
char pass[] = "19970926";
int keyIndex = 0;                 // your network key Index number (needed only for WEP)
int trigPin=2;
int echoPin=3;

long duration;
int distance=500;

// the IP address for the shield:
IPAddress ip(192, 168, 122, 122); 

int status = WL_IDLE_STATUS;

WiFiServer server(80);

String readString;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  
  Serial.begin(9600);

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while (true);
  }

  WiFi.config(ip);


  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }
  // you're connected now, so print out the status:
  printWiFiStatus();

  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  server.begin();
}


void loop() {

  // listen for incoming clients
  WiFiClient client = server.available();

  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();// Read char by char HTTP request
        readString += c;
        Serial.write(c);

        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<head><title>WiFi Sensor</title></head>");
          client.println("<center><hr/><p> Click the Buttons to view the charge point. <p/><hr/></center>");
          client.println("<center><input type=button value='Detect' onmousedown=location.href='/?DETECT'></center><hr/>");
          if (distance<= 200) {
            client.println("<center><hr/><p> Occupied. <p/><hr/></center>");
          } else {
            client.println("<center><hr/><p> Unoccupied. <p/><hr/></center>");
          }
          client.println("<hr/>");
          client.println("</body>");
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);

    // close the connection:
    client.stop();
    if (readString.indexOf("/?DETECT") > 0) {
      Serial.println();
      Serial.println("DETECT");
      Serial.println();
      detect();
    }
    readString = "";// Clearing string for next read
    Serial.println("client disconnected");
  }
}


void printWiFiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

void detect(void) {
  distance=calculateDistance();
  delay(5);
  Serial.print("Distance:");
  Serial.print(distance);
  Serial.println(" cm");
}

int calculateDistance()
{
  digitalWrite(trigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin,LOW);
  
  duration=pulseIn(echoPin,HIGH);
  distance=duration*0.034/2;
  return distance;
}

Here it is.

xaviergao:
Here it is.

still with IPAddress ip(192, 168, 122, 122);?

Juraj: still with IPAddress ip(192, 168, 122, 122);?

I tried 192.168.1.122, still noting.

what does the sketch print to Serial Monitor? what does it print if you comment out the line WiFi.config(ip)?

when I have network problems, I go straight to the IP scanner. see what is actually available on the net. you can’t go from what you know if you don’t know.

Note that I specified an IP scanner, not a port scanner. port scanners scan for open ports. IP scanners scan for IPs, and report IPs found regardless of port status.

netscan in that Micro$oft operating system. zenmap or AngryIPScanner in linux.

Juraj: what does the sketch print to Serial Monitor? what does it print if you comment out the line WiFi.config(ip)?

Also serial print show nothing on my computer. It is designed to print network status, but not working.

xaviergao: Also serial print show nothing on my computer. It is designed to print network status, but not working.

the solve this first