ESP8266 wifi is garbage

what is with the softAP on the esp8266. the range is straight garbage. useless junk really 10 feet? i can connect to a wifi network 100ft away but the softAP is 10ft? GARBAGE!!!!

you have a wrong antenna, wrong direction of antenna, low RF TX power set or something similar

Juraj:
you have a wrong antenna, wrong direction of antenna, low RF TX power set or something similar

I'm just using the standard builtin antenna. i haven't modified any of the power settings in the code?they are out in the open in a clear line of sight. i tried multiple modules for the softap. even my phone barley gets 1 bar

notsolowki:
I'm just using the standard builtin antenna. i haven't modified any of the power settings in the code?they are out in the open in a clear line of sight. i tried multiple modules for the softap. even my phone barley gets 1 bar

there is no built-in antenna.
you can have PCB trace antenna, ceramic antenna or external antenna connector
what module do you have?

Juraj:
there is no built-in antenna.
you can have PCB trace antenna, ceramic antenna or external antenna connector
what module do you have?

I'm using the NodeMCUv1.0 the standard pcb antenna? should i buy a different module for softAP mode operations?

notsolowki:
I'm using the NodeMCUv1.0 the standard pcb antenna? should i buy a different module for softAP mode operations?

NodeMcu should be good.

Juraj:
NodeMcu should be good.

Well it looks like it will find a wifi AP at a decent range. but the sofAP is not so good. I for real only get about 15ft away from the softAP before i cant even detect it anymore. This is the case with multiple phones/esp’s. i don’t understand i was just about to do a huge project with these esp’s because i didn’t like the range of the NRF24 cards. Here’s my code is there anything i can do in the code? iv’e also tried this experiment if different locations. even at another house outside in a clear line of sight its the same problem

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <LiquidCrystal_I2C.h>
IPAddress local_IP(192, 168, 4, 1);
IPAddress gateway(192, 168, 4, 1);
IPAddress subnet(255, 255, 255, 0);

IPAddress Client1(192, 168, 4, 100);
LiquidCrystal_I2C lcd(0x27, 20, 4);
WiFiUDP Udp;
unsigned long previousMillis = 0;
unsigned long minmaxwait = 0;
unsigned long minmaxwait2 = 0;
int ledState = LOW;
const long interval = 300;
bool running = false;
bool alarm = false;
const char* ssid = "weatherStation";
const char* password = "a1b2c3d4";
unsigned long now = 0;
unsigned long now2 = 0;
unsigned long now3 = 0;
unsigned long now4 = 0;
unsigned int localUdpPort = 4210;  // local port to listen on
unsigned int clientPort = 4220;
char incomingPacket[800];  // buffer for incoming packets
float maxTemp = -99;
float minTemp = 199;
struct packet {
  int local;
  float temp;
};
packet localData;

void setup() {
  pinMode(12, INPUT_PULLUP);
  digitalWrite(12, HIGH);
  pinMode(14, OUTPUT);
  digitalWrite(14, LOW);
  lcd.init();
  lcd.backlight();
  // WiFi.setOutputPower(99.0);
  WiFi.persistent(0);
  Serial.begin(115200);
  Serial.println();
  WiFi.mode(WIFI_AP);
  

  while (!WiFi.softAP(ssid, password, 6, false, 15)) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Ready" : "Failed!");
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("CONNECTING!!");
  Udp.begin(localUdpPort);
  Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.softAPIP().toString().c_str(), localUdpPort);
}

void sendCommand(IPAddress to, char* data,  bool requestResponse) {
  char* packetData = data;
  const char delimiter[] = "NODECM";
  const char delimiter2[] = "CMNODE";
  Udp.beginPacket(to, clientPort);
  if (requestResponse) {
    Udp.write((const uint8_t*)delimiter, sizeof(delimiter) - 1);
    Udp.write((const char*)packetData, sizeof(packetData));
    Udp.write((const uint8_t*)delimiter2, sizeof(delimiter2) - 1);
  } else {
    Udp.write((const char*)packetData, sizeof(packetData));
  }
  Udp.endPacket();
}

void loop()
{
  if (running) {
    if (millis() - now4 >= 1000) {
      if (minTemp < 57) {
        alarm = true;
        lcd.setCursor(0, 3);
        lcd.print("TOO COLD!!");
      }
      if (maxTemp > 91) {
        alarm = true;
        lcd.setCursor(0, 3);
        lcd.print("TOO HOT!!");

      }
      now4 = millis();
    }

  }
  if (alarm) {


    unsigned long currentMillis = millis();

    if (currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
      if (ledState == LOW) {
        ledState = HIGH;
      } else {
        ledState = LOW;
      }
      digitalWrite(14, ledState);

    }
  }
  if (digitalRead(12) == LOW) {
    maxTemp = -99;
    minTemp = 199;
    alarm = false;
    lcd.setCursor(0, 3);
    lcd.print("            ");
    digitalWrite(14, LOW);
  }
  int packetSize = Udp.parsePacket();
  if (packetSize)
  {
    // Serial.println("Message");
    int len = Udp.read(incomingPacket, 800);
    char verifyStart[7];
    char verifyEnd[7];
    Serial.println((char*)incomingPacket);
    strncpy (verifyStart, (char*)incomingPacket, 7 );
    strncpy (verifyEnd, (char *)incomingPacket + len - 6 , 7 );
    if (strcmp(verifyStart, "NODE01") == 0) {
      if (strcmp(verifyEnd, "01NODE") == 0) {
        // Serial.println("Node01");
        memcpy(&localData, incomingPacket + 6, sizeof(localData));
        //Serial.print("Tempature is  ");

        if (localData.temp > -32 && localData.temp < 199) {
          if (localData.temp > maxTemp) {
            if (millis() - minmaxwait >= 3000) {
              running = true;
              maxTemp = localData.temp;
              minmaxwait = millis();
            }
          } else {
            minmaxwait = millis();
          }
          if (localData.temp < minTemp) {
            if (millis() - minmaxwait2 >= 3000) {
              running = true;
              minTemp = localData.temp;
              minmaxwait2 = millis();
            }
          } else {
            minmaxwait2 = millis();
          }
        }
        lcd.setCursor(0, 0);
        lcd.print("Temperature:");
        if (localData.temp > -32 && localData.temp < 199) {
          lcd.setCursor(12, 0);
          lcd.print("      ");
          lcd.setCursor(12, 0);
          lcd.print(localData.temp);

        }

        lcd.setCursor(0, 1);
        lcd.print("Max Temp:");
        lcd.setCursor(9, 1);
        lcd.print("      ");
        lcd.setCursor(9, 1);
        lcd.print(maxTemp);
        lcd.setCursor(0, 2);
        lcd.print("Min Temp:");
        lcd.setCursor(9, 2);
        lcd.print("      ");
        lcd.setCursor(9, 2);
        lcd.print(minTemp);

        //   Serial.println(localData.temp);
        now = millis();
      }
    }
    if (strcmp(verifyStart, "RETURN") == 0) {
      now3 = millis();
    }
    Serial.println("hello");
    Serial.println(len);
    Serial.println(verifyStart);
    Serial.println(verifyEnd);
  }
}

try to play WiFi.setOutputPower