So i reflashed the firmware and its the same result. i flashed the firmware from here ESP8266_AT/bin at master · espressif/ESP8266_AT · GitHub
i think i just need a better module or something. not setting the power to high resulted in a weaker connection.
Heres my code for the SoftAP.
//extern "C"{
// #include "user_interface.h"
//}
#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() {
WiFi.setPhyMode(WIFI_PHY_MODE_11B);
pinMode(12, INPUT_PULLUP);
digitalWrite(12, HIGH);
pinMode(14, OUTPUT);
digitalWrite(14, LOW);
lcd.init();
lcd.backlight();
//WiFi.setOutputPower(20.5);
WiFi.persistent(0);
Serial.begin(115200);
Serial.println();
WiFi.mode(WIFI_AP);
while (!WiFi.softAP(ssid, password, 9, 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);
}
}