I have connected ESP8266 to my Raspberry Pi's WiFi network and assigned a static IP.
My Arduino code
#include "SoftwareSerial.h"
String ssid = "Rpi";
String password = "raspberry";
SoftwareSerial esp(3, 2);// RX, TX
String server = "192.168.50.1"; //my Host
void setup() {
esp.begin(115200);
Serial.begin(115200);
connectWifi();
httpget();
delay(1000);
}
void connectWifi() {
String cmd = "AT+CWJAP=\"" + ssid + "\",\"" + password + "\"";
esp.println(cmd);
delay(4000);
if (esp.find("OK")) {
Serial.println("Connected!");
}
else {
Serial.println("Cannot connect to wifi ! Connecting again...");
}
connectWifi();
}
/////////////////////////////GET METHOD///////////////////////////////
void httpget() {
esp.println("AT+CIPSTART=\"TCP\",\"" + server + "\",1234");//start a TCP connection.
if ( esp.find("OK")) {
Serial.println("TCP connection ready");
}
delay(1000);
/*
String getRequest =
"GET " + uri + " HTTP/1.0\r\n" +
"Host: " + server + "\r\n" +
"Accept: *" + "/" + "*\r\n" +
"Content-Type: application/json\r\n" +
"\r\n";
*/
String sendCmd = "AT+CIPSEND=";
esp.print(sendCmd);
//esp.println(getRequest.length() );
delay(500);
if (esp.find(">")) {
Serial.println("Sending..");
// esp.print(getRequest);
if ( esp.find("SEND OK")) {
Serial.println("Packet sent");
while (esp.available()) {
String response = esp.readString();
}
esp.println("AT+CIPCLOSE");
}
}
}
void loop() {
httpget();
}
I get this message
Cannot connect to wifi ! Connecting again...
In my Raspberry Pi I am constantly sending a signal to this IP address.
import socket
TCP_IP = '192.168.50.1' #Local Host
TCP_PORT = 1234 #Listening Port
BUFFER_SIZE = 12
SERVER_IP = '192.168.50.18' #Arduino IP
SERVER_PORT = 3007 #Server Port
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((TCP_IP,TCP_PORT))
#s.listen(1)
#(conn,addr) = s.accept()
#print 'Connection address: ',addr
while True:
print 'Sending message'
s.sendto('1',(SERVER_IP,SERVER_PORT))
print 'Waiting for response'
data,addr = s.recvfrom(BUFFER_SIZE)
if not data: break
print 'received data: ',data
print 'data recieved from: ',addr
conn.close()
s.close()
But I can not see it in my Serial Monitor. Do I need to create a separate program for getting from WiFi?
-
you didn't start a server on esp8266 so nothing listens on esp for signals from raspberryJuraj– Juraj ♦12/23/2017 19:21:15Commented Dec 23, 2017 at 19:21
-
did you change the wifi mode in esp? it is in AP mode at defaultJuraj– Juraj ♦12/23/2017 19:22:47Commented Dec 23, 2017 at 19:22
-
softwareserial at 115200 has errorsJuraj– Juraj ♦12/23/2017 19:23:18Commented Dec 23, 2017 at 19:23
1 Answer 1
You are recursively calling connectWifi()
and therefore your setup function results in an infinite loop.
You must not implement loops and for processes, which take some time, you should set and ask a flag.
Btw. why don't you use the official ESP WiFi library?
-
What is official ESP WiFi library?12/23/2017 19:18:40Commented Dec 23, 2017 at 19:18
Explore related questions
See similar questions with these tags.