Arduino and esp8266

Hi, I am new to arduino and creating project where i connected arduino uno and esp8266 as follows: UNO --- ESP8266 RX ----- RX TX ----- TX GND --- GND 3.3V --- VCC 3.3V --- CH_PD I power arduino uno and it is working fine. i checked by uploading blink program. when i connect esp8266 to arduino uno and open serial monitor i am getting some garbage text which is shown in below screen shot. also when i connect esp8266 to uno the orange light is continuously blinking. no action on entering AT command in serial monitor. some one please let me know how to get it work.

Topic by sayedfar   |  last reply


Hallo guys I have ESP8266 programmed to operate at MODBUS TCP / IP and PLC (LSIS) connected to router by Ethernet MODBUS. I made connection between them successfully (using P2P service found in PLC) through router, but the connection produce error. P2P service found to make connection between LSIS devices and other devices. This service requires inter the read and write memory address for ESP8266 with condition that the address must has 5 digit. Knowing that I use simple diode connection on GPIO pin-14. The problem is when I search for ESP8266 memory map addresses, I find it (0x60000360) 8 digit and this return error from PLC side. Please can any one help me?

Question by methaq_ali   |  last reply

ESP8266 to PuTTY using telnet

I am working on a project where i want to use an ESP8266 to log data from an arduino uno to a computer using telnet. I'm using PuTTY as my telnetclient but I can't send data from PuTTY to my Arduino and can't find a right code for me anywhere. Can someone please give me some advise?

Question by floris.leirs 

ESP8266 + NRF24L01 + Arduino system?

Hi everyone, So, I'm pretty new to the esp8266, but have some experience with arduino (I'm certainly no master however). I'm working on a project that uses an esp8266 and a nrf24l01 radio module to transmit small packets of data to a 'base' module that is an arduino and another nrf24l01. I'm having some difficulties figuring out how to use the nrf24l01 with the esp8266, so I was wondering if anyone knows of any good libraries or tutorials or anything that might help me. I don't know any Lua at all, so it would need to run through the arduino ide, that's what I've used so far to program the esp8266. Any help at all would be greatly appreciated and I can try to answer any questions you might have. Oh, and it would be great if you could explain stuff in really simple terms, I'm still in highschool and don't have a very expansive technical vocabulary  :D Thank you  ~Dudes

Topic by dudes   |  last reply

ESP8266 version 13 DIP switch

Hi, I bought a kit that uses an ESP8266 Arduino expansion board (shield) that has a version 13 ESP8266 module on it. That expansion board is not a standard ESP8266 board. It has an unusual 2-pole DIP switch on it that can be set to "ON" or "1-2". I need to understand what the 2-pole DP switch does and I need to understand the electrical connections it is connected to. There are many instructables about the standard ESP8266, but I cannot find any details about that DIP switch in a version 13 ESP8266 arduino expansion board. Can you please tell me where the DIP switch connects to and why it is needed. Thank you

Topic by agribot 

Use 12v 1a supply with esp8266

Hi, I'd like to use a 12v 1A supply with an Esp8266 (with usb mode) and a Module Rele 5v. Is it possible? Can you help me? Thank you!

Question by LuigiSet 

WiFi Radio / MP3 Player with ESP8266

Hello everyone, I'd like to make a new project: Reading in an usb stick with .mp3 files, and playing them. Moreover to swtich from mp3 playing to a wifi radio station. Basically I'd like to use a nodemcu ESP8266 for this project. This was my idea (s. Attachment) My questions: Does it work? Is the controller of the ESP8266 powerful enought to fit these requirements? Do you have improvements for this project? Best regards, Julian

Topic by julianpe   |  last reply

Problem using ESP8266-01 wifi module.

I want to make a home automation project using ESP8266-01, but the problem is that my module is not working correctly as I see the videos or articles, It's power light glowing very dim and also gives error while uploading the code(using Arduino IDE). Is that module is burned out or there is a problem with the power supply?Please help me .....

Question by AliR223   |  last reply

ESP8266 wifi module data logger? Answered

​hello everyone, can anybody do a simpler project with this? I just want to collect data using arduino Analog0 input with an LDR photoresistor. collect the data and simply post it on Thingspeak ?!?! . all the examples I find are very complicated and include libraries. I need my project to be much simpler. just read some data from the analog sensor and display the value on the cloud. . can anybody please help me with this? I have updated the firmware on my ESP8266 and I can connect to my house network using the CoolTerm software. . any help is highly appreciated !!! thank you, akin . useful links 1. 2. 3. 4. 5.

Question by Akin Yildiz   |  last reply

esp8266 WiFi module - stand alone?

So I've been looking at this esp8266 wifi module, which seems to be a popular toy for Arduino users.  I myself am one of those Arduino users and so I bought a couple of these to play around with.  So far they work great with the Arduino, but I read somewhere, I think it was, that these modules can actually be programmed to be used without the Arduino or other external microcontrollers.  I simply wondered if this was in fact true, since I can't seem to find any evidence of it being done.  If it is true, does anyone know of any good tutorials or instructions on how to do it?  I just want to be able to turn on and off a single LED via wifi without using an Arduino or other external microcontroller.  Any tips, links, suggestions would be very welcome.   Thanks ~Dudes

Topic by dudes   |  last reply

Write output on registery inside ESP8266

Could any one help me please? I have the following code to make MODBUS tcp/ip(its work good) the other issue in the code is ultrasonic sensor (trig on D1& echo on D2 and output distance on serial port)I want to write distance on one of memory register say (3). I use the command "digitalWrite(distance, MBHoldingRegister[3] )" its fail then I use analogWrite also fail what's the solution?#include #define trigPin D1#define echoPin D2#define analog_output D5float distance;long duration;int dataIn;int m = 0;int h = 0;int t = 0;const char* ssid = "MH_Ext";const char* password = "74375325";int ModbusTCP_port = 502;//////// Required for Modbus TCP / IP /// Requerido para Modbus TCP/IP /////////#define maxInputRegister 20#define maxHoldingRegister 20#define MB_FC_NONE 0#define MB_FC_READ_REGISTERS 3 //implemented#define MB_FC_WRITE_REGISTER 6 //implemented#define MB_FC_WRITE_MULTIPLE_REGISTERS 16 //implemented// MODBUS Error Codes//#define MB_EC_NONE 0#define MB_EC_ILLEGAL_FUNCTION 1#define MB_EC_ILLEGAL_DATA_ADDRESS 2#define MB_EC_ILLEGAL_DATA_VALUE 3#define MB_EC_SLAVE_DEVICE_FAILURE 4// MODBUS MBAP offsets//#define MB_TCP_TID 0#define MB_TCP_PID 2#define MB_TCP_LEN 4#define MB_TCP_UID 6#define MB_TCP_FUNC 7#define MB_TCP_REGISTER_START 8#define MB_TCP_REGISTER_NUMBER 10byte ByteArray[260];unsigned int MBHoldingRegister[maxHoldingRegister];//////////////////////////////////////////////////////////////////////////WiFiServer MBServer(ModbusTCP_port);void setup() {pinMode(14, OUTPUT);pinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);Serial.begin(9600);delay(100) ;WiFi.begin(ssid, password);delay(100) ;Serial.println(".");while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}MBServer.begin();Serial.println("Connected ");Serial.print("ESP8266 Slave Modbus TCP/IP ");Serial.print(WiFi.localIP());Serial.print(":");Serial.println(String(ModbusTCP_port));Serial.println("Modbus TCP/IP Online");}void loop() {distance = getDistance();Serial.println(distance);delay(1000);// Check if a client has connected // Modbus TCP/IPWiFiClient client = MBServer.available();if (!client) {return;}boolean flagClientConnected = 0;byte byteFN = MB_FC_NONE;int Start;int WordDataLength;int ByteDataLength;int MessageLength;// Modbus TCP/IPwhile (client.connected()) {if(client.available()){flagClientConnected = 1;int i = 0;while(client.available()){ByteArray[i] =;i++;}client.flush();///// code here --- codigo aqui///////// Holding Register [0] A [9] = 10 Holding Registers Escritura///////// Holding Register [0] A [9] = 10 Holding Registers Writing/// Enable Output 14digitalWrite(14, MBHoldingRegister[14] );digitalWrite(distance, MBHoldingRegister[12] );//// end code - fin//// rutine Modbus TCPbyteFN = ByteArray[MB_TCP_FUNC];Start = word(ByteArray[MB_TCP_REGISTER_START],ByteArray[MB_TCP_REGISTER_START+1]);WordDataLength = word(ByteArray[MB_TCP_REGISTER_NUMBER],ByteArray[MB_TCP_REGISTER_NUMBER+1]);}// Handle requestswitch(byteFN) {case MB_FC_NONE:break;case MB_FC_READ_REGISTERS: // 03 Read Holding RegistersByteDataLength = WordDataLength * 2;ByteArray[5] = ByteDataLength + 3; //Number of bytes after this one.ByteArray[8] = ByteDataLength; //Number of bytes after this one (or number of bytes of data).for(int i = 0; i < WordDataLength; i++){ByteArray[ 9 + i * 2] = highByte(MBHoldingRegister[Start + i]);ByteArray[10 + i * 2] = lowByte(MBHoldingRegister[Start + i]);}MessageLength = ByteDataLength + 9;client.write((const uint8_t *)ByteArray,MessageLength);byteFN = MB_FC_NONE;break;case MB_FC_WRITE_REGISTER: // 06 Write Holding RegisterMBHoldingRegister[Start] = word(ByteArray[MB_TCP_REGISTER_NUMBER],ByteArray[MB_TCP_REGISTER_NUMBER+1]);ByteArray[5] = 6; //Number of bytes after this one.MessageLength = 12;client.write((const uint8_t *)ByteArray,MessageLength);byteFN = MB_FC_NONE;break;case MB_FC_WRITE_MULTIPLE_REGISTERS: //16 Write Holding RegistersByteDataLength = WordDataLength * 2;ByteArray[5] = ByteDataLength + 3; //Number of bytes after this one.for(int i = 0; i < WordDataLength; i++){MBHoldingRegister[Start + i] = word(ByteArray[ 13 + i * 2],ByteArray[14 + i * 2]);}MessageLength = 12;client.write((const uint8_t *)ByteArray,MessageLength);byteFN = MB_FC_NONE;break;}}}//===== getDistance - Custom Functionint getDistance() {// Clears the trigPindigitalWrite(trigPin, LOW);delayMicroseconds(2);// Sets the trigPin on HIGH state for 10 micro secondsdigitalWrite(trigPin, HIGH);delayMicroseconds(10);digitalWrite(trigPin, LOW);// Reads the echoPin, returns the sound wave travel time in microsecondsduration = pulseIn(echoPin, HIGH);// Calculating the distancedistance = duration * 0.034 / 2; // distance in cmreturn distance;}

Question by methaq_ali 

Using ESP8266-01 WiFi module with Arduino

Hi! Need some help with coding again I'm trying to just eliminate the wire connectivity which used for serial read by PC, by introducing a simple ESP8266-01 module. Can anyone give me some hand with the coding part at where I need to transfer all my serial data to my browser?

Topic by PramithM 

Arduino/ESP8266/servo noise when idle

Hello everyone My project involves a robot with LEDs, servos and an Arduino with a Sparkfun ESP8266 shield on top. Everything else works fine, I send web requests to the robot and LEDs are blinking or the servos are moving. The problem is that when idle I have noise on the servo. I have tried  1. Pull-up and pull-down resistors 2. Providing external power to the servos 3. Putting an aluminium foil between Arduino and the shield and the problem persists Commenting out parts of my code I isolated that the noise appeared upon uncommenting this part of my code void serverDemo(){ ESP8266Client client = server.available(500); } but I cannot understand why.  Could you please propose me any idea? Below I have the entire code #include #include #include const char mySSID[] = "xxxx"; const char myPSK[] = "xxxx"; ESP8266Server server = ESP8266Server(80); Servo myservo1; Servo myservo2; int pos = 0;    // variable to store the servo position int pos2 = 180; int led1 = 12; int led2 = 13; const String html = "HTTP/1.1 200 OK\r\n" "Content-Type: text/html\r\n" "Connection: close\r\n\r\n" "\r\n" "\r\n" "\r\n"; void setup(){ Serial.begin(9600); initializeESP8266(); connectESP8266(); displayConnectInfo(); serverSetup(); myservo1.attach(11);  myservo2.attach(10);  pinMode(led1, OUTPUT);     pinMode(led2, OUTPUT); //testing myservo1.write(45);   delay(15); myservo1.write(80);       } void loop(){ serverDemo(); } void initializeESP8266(){ int test = esp8266.begin(); if (test != true) { Serial.println(F("Error talking to ESP8266.")); errorLoop(test); } Serial.println(F("ESP8266 Shield Present"));} void connectESP8266(){ int retVal = esp8266.getMode(); if (retVal != ESP8266_MODE_STA) { retVal = esp8266.setMode(ESP8266_MODE_STA); if (retVal < 0) { Serial.println(F("Error setting mode.")); errorLoop(retVal); } } Serial.println(F("Mode set to station")); retVal = esp8266.status(); if (retVal <= 0) { Serial.print(F("Connecting to ")); Serial.println(mySSID); retVal = esp8266.connect(mySSID, myPSK); if (retVal < 0) { Serial.println(F("Error connecting")); errorLoop(retVal); } }} void displayConnectInfo(){ char connectedSSID[24]; memset(connectedSSID, 0, 24); int retVal = esp8266.getAP(connectedSSID); if (retVal > 0) { Serial.print(F("Connected to: ")); Serial.println(connectedSSID); } IPAddress myIP = esp8266.localIP(); Serial.print(F("My IP: ")); Serial.println(myIP);} void serverSetup(){ server.begin(); Serial.print(F("Server started! Go to ")); Serial.println(esp8266.localIP()); Serial.println();} void errorLoop(int error){ Serial.print(F("Error: ")); Serial.println(error); Serial.println(F("Looping forever.")); for (;;) ;} void serverDemo(){ ESP8266Client client = server.available(500); if (client) { String req; while (client.connected()) { if (client.available()) { String c = client.readStringUntil('\r'); req += c; Serial.println(req); if (req.indexOf("hands") != -1){ hands_up(); } if (req.indexOf("leds") != -1){ leds_flash(); } } } client.print(html); delay(1); client.stop(); } } void leds_flash(){ digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); delay(200); digitalWrite(led1, LOW); digitalWrite(led2, LOW); delay(200); } void hands_up(){ for (pos = 0; pos <= 30; pos += 1) { pos2 = 180 - pos; myservo1.write(pos2);             myservo2.write(pos);             delay(15);                      } for (pos = 30; pos >= 0; pos -= 1) { pos2 = 180 - pos; myservo1.write(pos2);             myservo2.write(pos);             delay(15);                      } } Thank you!

Topic by ManosZ1   |  last reply

ITEADLIB_Arduino_WeeESP8266 android response

Im planing to do a project that using Arduino+esp8266 with android device, at first my code was something like this. #include #define DEBUG true SoftwareSerial esp8266(9,10); // make RX Arduino line is pin 2, make TX Arduino line is pin 3.                          // This means that you need to connect the TX line from the esp to the Arduino's pin 2                          // and the RX line from the esp to the Arduino's pin 3 void setup() {   Serial.begin(9600);   esp8266.begin(9600); // your esp's baud rate might be different   pinMode(11,OUTPUT);   digitalWrite(11,LOW);   pinMode(12,OUTPUT);   digitalWrite(12,LOW);   pinMode(13,OUTPUT);   digitalWrite(13,LOW);   pinMode(10,OUTPUT);   digitalWrite(10,LOW);   sendCommand("AT+RST\r\n",2000,DEBUG); // reset module   sendCommand("AT+CWMODE=1\r\n",1000,DEBUG); // configure as access point   sendCommand("AT+CWJAP=\"Arsalan Wifi\",\"arsalan123\"\r\n",3000,DEBUG);   delay(10000);   sendCommand("AT+CIFSR\r\n",1000,DEBUG); // get ip address   sendCommand("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections   sendCommand("AT+CIPSERVER=1,8080\r\n",1000,DEBUG); // turn on server on port 80   Serial.println("Server Ready"); } void loop() {   if(esp8266.available()) // check if the esp is sending a message   {     if(esp8266.find("+IPD,"))     {      delay(1000); // wait for the serial buffer to fill up (read all the serial data)      // get the connection id so that we can then disconnect      int connectionId =; // subtract 48 because the read() function returns                                        // the ASCII decimal value and 0 (the first decimal number) starts at 48      esp8266.find("pin="); // advance cursor to "pin="      int pinNumber = (; // get first number i.e. if the pin 13 then the 1st number is 1      int secondNumber = (;      if(secondNumber>=0 && secondNumber<=9)      {       pinNumber*=10;       pinNumber +=secondNumber; // get second number, i.e. if the pin number is 13 then the 2nd number is 3, then add to the first number      }      digitalWrite(pinNumber, !digitalRead(pinNumber)); // toggle pin         String content;      content = "چراغ ";      content += pinNumber;      content += " is ";      if(digitalRead(pinNumber))      {        content += "ON";      }      else      {        content += "OFF";      }      sendHTTPResponse(connectionId,content);      // make close command      String closeCommand = "AT+CIPCLOSE=";      closeCommand+=connectionId; // append connection id      closeCommand+="\r\n";      sendCommand(closeCommand,1000,DEBUG); // close connection      Serial.print(connectionID);     }   } } /* * Name: sendData * Description: Function used to send data to ESP8266. * Params: command - the data/command to send; timeout - the time to wait for a response; debug - print to Serial window?(true = yes, false = no) * Returns: The response from the esp8266 (if there is a reponse) */ String sendData(String command, const int timeout, boolean debug) {     String response = "";     int dataSize = command.length();     char data[dataSize];     command.toCharArray(data,dataSize);     esp8266.write(data,dataSize); // send the read character to the esp8266     if(debug)     {       Serial.println("\r\n====== HTTP Response From Arduino ======");       Serial.write(data,dataSize);       Serial.println("\r\n========================================");     }     long int time = millis();     while( (time+timeout) > millis())     {       while(esp8266.available())       {         // The esp has data so display its output to the serial window         char c =; // read the next character.         response+=c;       }      }     if(debug)     {       Serial.print(response);     }     return response; } /* * Name: sendHTTPResponse * Description: Function that sends HTTP 200, HTML UTF-8 response */ void sendHTTPResponse(int connectionId, String content) {      // build HTTP response      String httpResponse;      String httpHeader;      // HTTP Header      httpHeader = "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\n";      httpHeader += "Content-Length: ";      httpHeader += content.length();      httpHeader += "\r\n";      httpHeader +="Connection: close\r\n\r\n";      httpResponse = httpHeader + content + " "; // There is a bug in this code: the last character of "content" is not sent, I cheated by adding this extra space      sendCIPData(connectionId,httpResponse); } /* * Name: sendCIPDATA * Description: sends a CIPSEND=, command * */ void sendCIPData(int connectionId, String data) {    String cipSend = "AT+CIPSEND=";    cipSend += connectionId;    cipSend += ",";    cipSend +=data.length();    cipSend +="\r\n";    sendCommand(cipSend,1000,DEBUG);    sendData(data,1000,DEBUG); } /* * Name: sendCommand * Description: Function used to send data to ESP8266. * Params: command - the data/command to send; timeout - the time to wait for a response; debug - print to Serial window?(true = yes, false = no) * Returns: The response from the esp8266 (if there is a reponse) */ String sendCommand(String command, const int timeout, boolean debug) {     String response = "";     esp8266.print(command); // send the read character to the esp8266     long int time = millis();     while( (time+timeout) > millis())     {       while(esp8266.available())       {         // The esp has data so display its output to the serial window         char c =; // read the next character.         response+=c;       }      }     if(debug)     {       Serial.print(response);     }     return response; } but then i chose to use library code for esp8266 and i use this link ITEADLIB_Arduino_WeeESP8266 now i have problem that i dont know how can i get a response message back to my android device, also this is my code using library, (i know its really noobish code cuz im new but... it work atleast :D ) #include #include "ESP8266.h" #include #include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //moshakhas kardane pin haye LCD SoftwareSerial mySerial(7, 8); // moshakhas kardane pin haye wifi ESP8266 wifi(mySerial); String msg; #define SSID        "Arsalan Wifi"  //UserName wifi #define PASSWORD    "arsalan123"  //Password wifi String pinnum; int count= 0; void setup() {   lcd.begin(20, 4);       Serial.begin(9600);   pinMode(9,OUTPUT);   digitalWrite(9,HIGH);   String IP;   Serial.print("setup begin\r\n");   lcd.print("Connecting to Wifi");   delay(3000);   Serial.print("FW Version: ");   //  Serial.println(wifi.getVersion().c_str());         if (wifi.setOprToStation()) {         Serial.print("to station ok\r\n");     } else {         Serial.print("to station err\r\n");     }     if (wifi.joinAP(SSID, PASSWORD)) {         Serial.print("Join AP success\r\n");         Serial.print("IP: ");               Serial.println(wifi.getLocalIP().c_str());         IP = wifi.getLocalIP().c_str();         lcd.setCursor(0, 1);         lcd.print("Join AP success");         lcd.setCursor(0, 2);         lcd.print("IP: "+IP);     } else {         Serial.print("Join AP failure\r\n");         lcd.setCursor(0, 1);         lcd.print("Join AP failure");         lcd.setCursor(0, 2);         lcd.print("Contact Administrator");     }      if (wifi.enableMUX()) {         Serial.print("multiple ok\r\n");     } else {         Serial.print("multiple err\r\n");     }     if (wifi.startTCPServer(80)) {         Serial.print("start tcp server ok\r\n");         lcd.setCursor(0, 3);         lcd.print("Server Ready");     } else {         Serial.print("start tcp server err\r\n");         lcd.setCursor(0, 3);         lcd.print("Server Setup Fail");     }     if (wifi.setTCPServerTimeout(10)) {         Serial.print("set tcp server timout 10 seconds\r\n");     } else {         Serial.print("set tcp server timout err\r\n");     }           Serial.print("setup end\r\n"); } void loop() {    uint8_t buffer[128] = {0};     uint8_t mux_id;     uint32_t len = wifi.recv(&mux;_id, buffer, sizeof(buffer), 100);     if (len > 0) {         Serial.print("Status:[");         Serial.print(wifi.getIPStatus().c_str());         Serial.println("]");                 Serial.print("Received from :");         Serial.print(mux_id);         Serial.print("[");         for(uint32_t i = 0; i < len; i++) {             Serial.print((char)buffer[i]);             msg = "";             msg += ((char)buffer[i]);                         if (msg == "p")             {               count=1;                                         }                          if (msg != "p" & count ==1)             {               if(msg =="i")               {                                 count++;               }               else               {                                 count = 0;               }             }             if (msg !="i" & count ==2)             {               if (msg =="n")               {                 count++;               }               else               {                 count = 0;               }             }             if (msg !="n" & count ==3)             {               if(msg=="=")               {                 count++;                               }               else               {                 count = 0;               }             }             if (msg != "=" & count==4)             {               Serial.print(msg);               pinnum =msg;               count = 0;             }                     }         Serial.print(pinnum);         Serial.print("]\r\n");         int pin = pinnum.toInt();         Serial.print(pin);         digitalWrite(pin, !digitalRead(pin)); // toggle pin            String content;      content = "چراغ ";      content += pinnum;      content += " is ";           if(digitalRead(pin))      {        content += "ON";      }      else      {        content += "OFF";      }                 if(wifi.send(mux_id, buffer, len)) {             Serial.print("send back ok\r\n");         } else {             Serial.print("send back err\r\n");         }                 if (wifi.releaseTCP(mux_id)) {             Serial.print("release tcp ");             Serial.print(mux_id);             Serial.println(" ok");         } else {             Serial.print("release tcp");             Serial.print(mux_id);             Serial.println(" err");         }                 Serial.print("Status:[");         Serial.print(wifi.getIPStatus().c_str());         Serial.println("]");     }   }

Question by Arsalan Ahmadi   |  last reply

Stream video from OV7670 18 pins using arduino uno

I purchased OV7670 camera module and i stuck with it that how i connect this module having 18 pins to arduino uno. From last 5 days i am in search of the help but no forum can help me till yet. This is my final sem project and if this module will not work them my project will be considered as incomplete. So please help me out because i dont know even how to connect this ov7670 with 18 pin to arduino uno and to stream video live. modules i purchased are as follows: 1. Arduino Uno 2. Ov7670 Camera Module C4B1 3. esp8266 4. sd card adapter

Topic by AdityaA24   |  last reply

logging ESP8266 data of(BMP180+DHT22+Ublox GPS Neo 6m +hc04 ultrasonic sensor)

Hi instructables , i'm just starter in this filed i just need Sketch for logging ESP8266 data of(BMP180+DHT22+Ublox GPS Neo 6m +hc04 ultrasonic sensor) all data in separeted files  i found in Net GPS neo logging but for the authers no ..please if someone can help me i will be very thankful 

Topic by Slash09   |  last reply

Shield:FAIL problem in ESP8266-01 with Arduino UNO

I have been working on a Security System project wherein I should get an email if the PIR sensor detects any human presence. I have used an Arduino UNO, ESP8266-01 WiFi module and a PIR sensor. Power supply: Arduino is powered through the USB connection of desktop and ESP8266-01 is powered through the 3.3V pin of Arduino UNO and I have not faced any problem with that 3.3V connection of Arduino. The connection between Arduino UNO and ESP8266-01 are as follows: Arduino UNO ESP8266-01 Rx  Rx Tx  Tx 3.3V  CH_PD & VCC GND  GND   GPIO0 and GPIO2 left open. After successfully uploading the 'BareMinimum' code as found in 'File>Examples>Basics' of Arduino IDE, the ESP8266 is able to communicate correctly i.e. connecting to a wifi network or serving as an access point via SERIAL MONITOR.The ESP8266-01 displays '0018000902-AI03' as the firware version when I type AT+GMR in the serial monitor of Arduino IDE v1.6.8 Then I created an account on and used the 'SendEmail' choreo as found under 'Google>Gmail>SendEmail'. I selected the 'Arduino' option in one tab and 'Arduino Wifi' option in another tab.I then entered the required details including the 'App specific password' and I was able to successfully run the choreo. Problem: I was able to successfully upload the code  to my Arduino UNO that was generated by Temboo. But after uploading the code, when I'm opening my SERIAL MONITOR window from Arduino IDE a message "Shield:FAIL" is being displayed. I'm not able to communicate with the ESP8266 any further. But if I upload the BareMinimum code again, then ESP8266 works normally. I'm a newbie and dont know much about the programming of Arduino though some basics of C are clear.Please if anyone can help me with this, I would be very grateful. The code has been attached.

Topic by JigarF   |  last reply

ESP8266-01 DTH22 5 minute Delay?

Hi, I want to add a DHT22 sensor node to my Openhab setup. A simple way to do this is by using a ESP8266-01; I have a few around. I use the Arduino 1.6.5 IDE since that is what I have. I am having problems with the timing of the loop: I do not need readings every minute or so, 5-10 minutes is more then enough; I do not need that much data. I also want to run the node on batteries in the future so less transmissions is what I want. However, when I use a delay of more then approx. 24000 mils the ESP stops working, lower values are no problem.  I have tried several approaches, none work. Can anyone help me out? The sketch I use is below, you can see what I tried in the comments: #include #include #include const char* ssid = "Yggdrasil"; const char* password = "XXXXXXXXX"; char* topic_t = "openhab/esp8266-1/temp"; char* topic_h = "openhab/esp8266-1/vocht"; char* server = "192.168.X.X"; String clientName = "esp8266-1"; //time peter, idea taken from const long oneSecond = 1000;  // a second is a thousand milliseconds const long oneMinute = oneSecond * 60; const long fiveMinutes = oneMinute * 5; //time peter #define DHTPIN 2 // what pin we're connected to #define DHTTYPE DHT22 // DHT 11 DHT dht(DHTPIN, DHTTYPE,15); WiFiClient wifiClient; PubSubClient client(server, 1883, callback, wifiClient); void callback(char* topic, byte* payload, unsigned int length) { // handle message arrived } void setup() { Serial.begin(115200); delay(10); dht.begin(); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.print("Connecting to "); Serial.print(server); Serial.print(" as "); Serial.println(clientName); if (client.connect((char*) clientName.c_str())) { Serial.println("Connected to MQTT broker"); Serial.print("Topic is: "); Serial.println(topic_t); Serial.println(topic_h); } else { Serial.println("MQTT connect failed"); Serial.println("Will reset and try again..."); abort(); } } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } static int counter = 0; String payload ; payload += t; //payload += ":"; //payload += h; String payloadh ; payloadh += h; if (client.connected()){ Serial.print("Sending payload: "); Serial.println(payload); if (client.publish(topic_t, (char*) payload.c_str())) { Serial.println("Publish ok"); } else { Serial.println("Publish failed"); } //peter if (client.connected()){ Serial.print("Sending payload: "); Serial.println(payloadh); if (client.publish(topic_h, (char*) payloadh.c_str())) { Serial.println("Publish ok"); } else { Serial.println("Publish failed"); }} //peter } else { if (client.connect((char*) clientName.c_str())) { Serial.println("Connected to MQTT broker"); Serial.print("Topic is: "); Serial.println(topic_t); Serial.println(topic_h); } } // delay (20000); //WORKS FINE // delay(5*60*1000); //STOPS AFTER FIRST READING AT STARTUP delay(fiveMinutes); // STOPS AFTER FIRST READING AT STARTUP }

Topic by PetervdPol   |  last reply

12V one 1 Channel Relay Module With optocoupler ?

Hello, I bought this 12V one 1 Channel Relay Module With optocoupler by mistake. And I can't figure out how to use it : I was supposed to buy a 5v relay to use it with a nodemcu. But on this one I can't understand the pins. Can someone help ? Thanks.

Question by RobinT15   |  last reply

i want want programme to send sensed parameter to cloud by using ardiuno with interfacing esp8266 wifi model plz

Send data like temp. ,air ,humidity parameters which are sensed by sensor by using ardiuno interfacing with esp8266 wifi model 

Question by sachinpatil   |  last reply

How does the 2-Pole DIP switch on version 13 ESP82266 Arduino expansion board work ?

Hi, I bought a kit that uses a version 13 ESP8266 Arduino expansion board (shield). That version 13 is not a standard ESP8266 board. It has an unusual 2-pole DIP switch on it that can be set to "ON" or "1-2". I need to understand what the 2-pole DP switch does and I need to understand the electrical connections it is connected to. The information on the makers web-site is not very clear.  ( see ) There are many instructables about the standard ESP8266, but I cannot find any details about that DIP switch in a version 13 ESP8266 arduino expansion board. Can you please tell me where the DIP switch on the version 13 board connects to  - the pin connections - and why it is needed. Thank you

Question by agribot   |  last reply

servo programming on arduino?

Hi, i need a help on my arduino project. i need to make daily program my servo motor on arduino. for example; 23:00 at night ,it should turn right 90';  8:00 at morning, it should turn left(back) 90' also; when i need; i should turn this servo, left-right manually via internet. how can i make this, which component i should use, which commands i should use?  any tutorial, or samples like this? i found some examples on instructables like using servo via internet, Control a Servo over the Internet etc. but i dont know how make this two option together. ps my arduino level: intermediate  tI appreciate any help that you can provide :)

Question by herneise   |  last reply

Strange behaviour from DS18B20 temperature monitor on ESP8266.

Hi. I have a DS18B20 attached to an ESP8266 which is now feeding temperature info back to a domoticz home automation server hosted on a raspberry pi. I am getting some strange readings and need to work out which part is not working properly. The temperature graph from domoticz is here and the date sheet of ds18b20 I think the lower value is probably accurate as the temperature in my utility room dropped steadily overnight but why does it jump up to over 40 for the majority of the time. Has anyone had this issue with the sensor when it's attached to an ESP8266 or might my problems lie elsewhere? Perhaps easiest to buy another sensor to test and narrow down the options. Thanks for any pointers. Don

Question by DELETED_MakiY2 


Hi, i want to know how to program an esp 01s which is different to an esp 01 upgraded (black). I have looked online but there is nothing telling me how. I know that one difference is that the esp 01s does not have a 'CH_PD' pin, insted it has an 'EN' pin. The first pic is an Esp-01S.The second pic is an Esp-01 (original blue).The third pic is an Esp-01 (upgraded black).If you look carefully there are many re-arrangements.pls reply ASAPthanks---------haadi5584 (the creator).

Question by haadi5584 

IoT server / gateway

Hello Instructables, Like a lot of people lately I'm experimenting with IoT and Home Automation. There are a lot of interesting projects going on, also a lot here at Instructables. But a thing that i run against is the fact of IoT Gateway/server software. On Google I found differed IoT gateways/servers that I wanted to share with you guys. If you have to contribute to my list, please do. All software's have there pros and cons, so more project the better.  - Thingspeak. This is a in the cloud site to witch you can send your sensor data and switch things - Exosite. Pretty similar to Thingspeak - IFTTT. This also a cloud site, with witch you can have your sensor data communicate with other services on the web like google, facebook, twitter - Openhab. Is a open home automation software that runs on the Raspberry Pi, it also has a android app. Unfortunately not that easy to configure. - EasyIoT. Is a pretty new server application, that looks great on the web and phone browser. Still new and in development.  Like I said all projects are have there pros and there cons. If somebody has to contribute to this list, please do. 

Topic by mfaber1   |  last reply

How to power ESP8266 and a circuit that requires 5v, through a single battery?

I am currently working on a wearables project that has an ESP8266 module and a circuit that requires 5v. How can power it through a common battery? I thought of using a 3v coin cell and a HT7750 , but is it right? I want to use minimal components (just to keep its size small) so i would like to use ICs. Also what kind of battery should I use a coin cell/LiPo/one from cell phones(li-ion)?And what kind of recharge system should i use? The schematic is given below.(though it is written 6v but 5v is just fine I tested it with 5v and arduino)  

Question by levelsandstories   |  last reply

to print a text in thingspeak from my arduino using esp8266

Can i print a text in thingspeak by including it as a string in my arduino code ?? Can i use Google doc or some other platform to print this text ?

Question by satrujit.mohanty 

Remote control pool heat pump

I want to interface a esp8266 to my pool heat pump, the heat pumps all show 3 and 2 wire access. But it's not clear if i just put 12vac via a relay on the pins or not? Also the 2 wire connect appears to be digital?Any advice would be appreciated.Ps.. I have already had success controlling the valve actuators with 24vac and of course the pump with 120v relay. Just need advice on the heater.

Question by JimO44   |  last reply

security system (not responding after combining ultrasonic sensor code and esp8266 code )

The base of this project is &http;:// I changed according to my uses from above links I tryed by dividing into two parts one for ultrasonic sensor and other for esp8266 they worked fine while separating ultrasonic and buzzer are working in (Tools and wifi module is working in onlt(Tools when i mix ultrasonic and buzzer nothing happening) any idea here is the code #include #include #include #include #define USE_SERIAL Serial #define trigPin 9 #define echoPin 10 #define piezoPin 8 ESP8266WiFiMulti WiFiMulti; int normalDistance; boolean triggered = false; long duration, distance; void setup() {   USE_SERIAL.begin(115200);   pinMode(trigPin, OUTPUT);   pinMode(echoPin, INPUT);   pinMode(piezoPin, OUTPUT);   long duration, distance; while (millis() < 5000) {   digitalWrite(piezoPin, HIGH);       digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance= duration*0.034/2;         normalDistance = distance;       USE_SERIAL.print("Distance: "); USE_SERIAL.println(distance);         digitalWrite(piezoPin, LOW);    for(uint8_t t = 4; t > 0; t--) {         USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);         USE_SERIAL.flush();         delay(1000); } WiFiMulti.addAP("username", "pass"); } } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance= duration*0.034/2; USE_SERIAL.print("Distance: "); USE_SERIAL.println(distance); if (distance < normalDistance-5) {       triggered = true;     }     else {         triggered = false;     }     if (triggered) {     tone(piezoPin, 635);     delay(500);     tone(piezoPin, 912);     delay(250);     if(( == WL_CONNECTED)) {         HTTPClient http;         USE_SERIAL.print("[HTTP] begin...\n");                 http.begin("iftt link.........................."); //HTTP         USE_SERIAL.print("[HTTP] GET...\n");         // start connection and send HTTP header         int httpCode = http.GET();         // httpCode will be negative on error         if(httpCode > 0) {             // HTTP header has been send and Server response header has been handled             USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);             // file found at server             if(httpCode == HTTP_CODE_OK) {                 String payload = http.getString();                 USE_SERIAL.println(payload);             }         } else {             USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());         }         http.end();     }     } } any idea about whats going on Thanks Hemanth

Topic by hemanth kumar reddy   |  last reply

direct nodeMCU control?

Hi guys this is my first attempt on automation using the nodeMCU lua ESP8266  My goal is to control the gpio via wifi without connecting the node to my home network it should dependent  I have found e bunch of code but it has to be joined to my homework thanks

Question by Conwyn'   |  last reply

Arduino Uno Solar Battery Charger ?

Hello everyone. Newbie here.  My project is to make an environmental monitoring system that will be battery powered and charged using solar energy, when the system is not in use. The components I am using are listed below for reference.  Parts List: 1. Solar Panel  2. Rechargeable 9V Battery 3. Uno Rev 3 4. SD Module 5. Grove Dust Sensor 6. Grove Temp & Humidity Sensor 7. Grove Light Sensor 8. ESP8266 Transceiver 9. Grove Air Quality Sensor All the components operate at 5v with the exception of the ESP8266 which is 3.3v. I have been looking at different methods of powering the system and noticed people using LiPo batteries. I'm aware that you shouldn't let there voltage drop too low and something about voltage regulators and boost converters that might be needed.  Based on my system can anyone recommend the best method of powering everything using batteries and charging it through solar energy.   I'm fairly new to the Arduino Eco system and this kind of work in general, so any help would be greatly appreciated. Thanks in advanced. 

Question by hymcode   |  last reply

Review of my first PCB design for a current meter shield?

I am completely new in designing circuits and PCBs and would appreciate your feedback on my first project. I want to measure the current flowing through an AC line using the ACS712 current sensor (IC1). The analog output (which is a proportional voltage between 0V and 5V) is converted using an ADS1115 (IC2). The digital signal is passed to an underlying Wemos D1 mini board via I2C, which contains an ESP8266 to process and send the data to a server. Furthermore, an AC/DC module (HLK-PM01) is mounted on the bottom side of the PCB to power the components.

Question by DELETED_MakiY2 

Mechanical parts for automated curtain control

Hi guys,I am building an automated curtain control, based on an ESP8266, to be controlled by the sun comming up (or going down) or by time or by smartphone. The electronics and software are all but complete, but I do have a problem...First, how can I open and close the curtains? I was thinking about a fishing wire in a loop, but how do I get enough traction from a pulley to move the curtains?Second, how can I make sure that the curtains can be opened and closed manualy, without frying the motor? Third, how do I detect the position of the curtain?Alex

Question by alex452   |  last reply

Need coding to handle multiple relays with multiple touch sensor (TTP223), IR remote and from web for nodemcu ESP12E?

Hey friends! Can anyone help me in designing a switch board which can be operated with touch sensors (TTP223), IR Remote and also with web application (like android / ios app) or with http:// . Coding for the same is my basic requirement. Basically i am looking for the coding. The things which i am having with me : 1) 5v - 8 ch Relay, 2) TTP 223 Touch sensor (6 nos) 3) V1.0 NodeMcu LUA WiFi Networking ESP8266 Development Board and  4) DS3231 AT24C32 IIC Precision RTC Real Time Clock Memory Module any comments are welcome!!!

Question by KrishnaV35   |  last reply

arduino wifi time-lapse camera

Hello everyone, I am trying to build a cheap arduino controlled time-lapse camera system. parts I chose so far are; camera; OV7670 wifi; ESP8266 board; nano here is an amazing instructable on how to use the wifi module; WiFi temp logger. Unfortunately I can't find a simple and well written instructions on how to connect the camera module mentioned above. I don't need to save the file on the board, I just need it uploaded to a web page, cloud etc. the picture will be taken 2 times a day with 10hr delay in between (one morning, one afternoon). here is the closest example I can find on instructables to what I want to accomplish, although this is over bluetooth and a different camera module. 1. arduino time-lapse camera 2. image capturing bird feeder thank you for your help. this is very important for me, I am very new in the field and don't have much experience. I am sure many other people will find such an instructable useful as these modules are extremely cheap. . love & peace akin,

Topic by Akin Yildiz   |  last reply

How to call an api with nodemcu from this wesite:http: (//

Http:// The website above offers free Timezone APIs. I have been trying to request the API with my esp8266 NodeMCU, but still, i get no response. Can anyone please demonstrate to me with a code sample how it's supposed to be done? I will be posting my code soon. The following is my code (In arduino IDE) for my NodeMCU #include String result; char host[]=""; WiFiClient client; void setup() { // put your setup code here, to run once: Serial.begin(9600); WiFi.begin("Faiz", "hautepackard"); while(WiFi.status() != WL_CONNECTED){ Serial.print("."); delay(500); } Serial.println("Connected!"); Serial.println(WiFi.localIP()); } void loop() { Time(); delay(3000); } String url = "/macros/s/AKfycbyd5AcbAnWi2Yn0xhFRbyzS4qMq1VucMVgVvhul5XqS9HkAyJY/exec"; void Time(){ if (client.connect(host, 443)) { //starts client connection, checks for connection client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); Serial.println("Server is accessible"); } else { Serial.println("connection failed"); //error message if no client connect Serial.println(); } result = ""; while (client.available()) { //connected or data available char c =; //gets byte from ethernet buffer result = result+c; } Serial.println(result); client.stop(); //stop client Serial.println("end of function"); } And this is what i get in the Serial monitor: ........Connected! Server is accessible end of function Am i going wrong anywhere in the code? Please help this burning question.

Question by Techovator0819   |  last reply


Hello, I'm using ESP8266 WIFI module and GPS module. I have connected to ARDUINO UNO R3 board to read the GPS coordinates and transmit them to webpage using ESP8266 WiFi module connected to router. In my code the page change only when I press F5 (refresh) , and so I can see the change of Coordinates. I want to see the changing results dynamically with out refreshing the webpage. what to I need to do /change in order that it will change automatically? please check my code here or in the attachment  and suggest me the changes. Thanks in advance. CODE: // code starts #include #include SoftwareSerial Serial1(2,3);     //   ESP8266 RX pin 2, TX pin 3. SoftwareSerial gps(11, 10);       //   GPS RX pin 10, TX pin 11.   boolean No_IP=false; String IP=""; String webpage=""; int i=0,k=0; int  gps_status=0; String name=" Name: XXXXXXXX ";   //22 String date="DATE: DD MM YYYY";     //21 String number=" Vehicle No.: ABC 0000";//29 String cordinat="Coordinates:";          //17 String latitude=""; String logitude="";                       String gpsString=""; char *test="$GPGGA"; void check4IP(int t1) {   int t2=millis();   while(t2+t1>millis())   {     while(Serial1.available()>0)     {       if(Serial1.find("WIFI GOT IP"))       {         No_IP=true;       }     }   } } void get_ip() {   IP="";   char ch=0;   while(1)   {     Serial1.println("AT+CIFSR");     while(Serial1.available()>0)     {       if(Serial1.find("STAIP,"))       {         delay(1000);         Serial.print("IP Address:");         while(Serial1.available()>0)         { ;           if(ch=='+')           break;           IP+=ch;         }       }       if(ch=='+')       break;     }     if(ch=='+')     break;     delay(1000);   }   Serial.print(IP);   Serial.print("Port:");   Serial.println(80);   delay(1000); } void connect_wifi(String cmd, int t) {   int temp=0,i=0;   while(1)   {     Serial.println(cmd);     Serial1.println(cmd);     while(Serial1.available()>0)     {       if(Serial1.find("OK"))       {       i=8;       }     }     delay(t);     if(i>5)     break;     i++;   }   if(i==8)   {     Serial.println("OK");   }   else   {   Serial.println("Error");   }   delay(1000); } void setup() {   Serial1.begin(9600);   Serial.begin(9600);   delay(1000);   connect_wifi("AT",1000);   connect_wifi("AT+CWMODE=3",1000);   connect_wifi("AT+CWQAP",1000);    connect_wifi("AT+RST",5000);   check4IP(5000);   if(!No_IP)       {         Serial.println("Connecting Wifi....");         connect_wifi("AT+CWJAP=\"MountPointTech\",\"MpTl2013\"",7000);   //AT+CWJAP="wifi_username","wifi_password"       }       else         {         }       Serial.println("Wifi Connected");       get_ip();       delay(2000);       connect_wifi("AT+CIPMUX=1",100);       connect_wifi("AT+CIPSERVER=1,80",100);       Serial1.end();       Serial.println("Waiting For GPS");       Serial.println("     Signal    ");       delay(2000);       gps.begin(9600);       get_gps();       show_coordinate();       gps.end();       Serial1.begin(9600);       delay(2000);      Serial.println("GPS is Ready");       delay(1000);       Serial.println("System Ready.."); } void loop() {   k=0;   Serial.println("Please Refresh Ur Page");   while(k<1000)   {     k++;    while(Serial1.available())    {     if(Serial1.find("0,CONNECT"))     {       Serial1.end();         gps.begin(9600);       get_gps();       gps.end();       Serial1.begin(9600);       Serial1.flush();       Serial.println("Start Printing");       Send();       show_coordinate();       Serial.println("Done Printing");       delay(5000);       //delay(1000);       k=1200;       break;     }   }   delay(1); } } void gpsEvent() {   gpsString="";   while(1)   {    while (gps.available()>0)                //Serial incoming data from GPS    {     char inChar = (char);      gpsString+= inChar;                    //store incoming data from GPS to temporary string str[]      i++;      if (i < 7)                           {       if(gpsString[i-1] != test[i-1])       //check for right string       {         i=0;         gpsString="";       }      }     if(inChar=='\r')     {      if(i>65)      {        gps_status=1;        break;      }      else      {        i=0;      }     }   }    if(gps_status)     break;   } } void get_gps() {    gps_status=0;    int x=0;    while(gps_status==0)    {     gpsEvent();     int str_lenth=i;     latitude="";     logitude="";     coordinate2dec();         i=0;x=0;     str_lenth=0;    } } void show_coordinate() {         Serial.print("Latitude:");     Serial.println(latitude);     Serial.print("Longitude:");     Serial.println(logitude); } void coordinate2dec() {         //j=0;     String lat_degree="";     for(i=18;i<20;i++)          //extract latitude from string       lat_degree+=gpsString;         String lat_minut="";     for(i=20;i<28;i++)       lat_minut+=gpsString;         String long_degree="";     for(i=30;i<33;i++)          //extract longitude from string       long_degree+=gpsString;           String long_minut="";     for(i=33;i<41;i++)       long_minut+=gpsString;            float minut= lat_minut.toFloat();      minut=minut/60;      float degree=lat_degree.toFloat();      latitude=degree+minut;           minut= long_minut.toFloat();      minut=minut/60;      degree=long_degree.toFloat();      logitude=degree+minut; } void Send() {            webpage = "Welcome to MountPoint Technologies Pvt Ltd";       webpage+=name;       webpage+=date;       webpage+=number;       webpage+=cordinat;       webpage+="Latitude:";       webpage+=latitude;       webpage+="";       webpage+="Longitude:";       webpage+=logitude;       webpage+="";       webpage+= "       webpage+=latitude;       webpage+='+';              //28.612953, 77.231545   //28.612953,77.2293563       webpage+=logitude;       webpage+="\">Click Here for google map ";       sendwebdata();       webpage="";        while(1)          {       Serial.println("AT+CIPCLOSE=0");       Serial1.println("AT+CIPCLOSE=0");       while(Serial1.available())       {         //Serial.print(;         if(Serial1.find("0,CLOSE"))         {           return;         }       }       delay(500);       i++;       if(i>5)       {         i=0;       }       if(i==0)       break;      } } void sendwebdata() {      i=0;      while(1)      {       unsigned int l=webpage.length();       Serial1.print("AT+CIPSEND=0,");       Serial1.println(l+2);       Serial.println(l+2);       Serial.println(webpage);       Serial1.println(webpage);       while(Serial1.available())       {         if(Serial1.find("OK"))         {          return;         }       }             i++;       if(i>5)         i=0;         if(i==0)         break;       delay(200);      } } // end of code.

Topic by shivendrareddy 

Automatic Irrigation using d1 mini

Hi Everyone, I reviewed different automatic irrigation system projects here in instructables and other sites as well and i decided to gather parts to do a simple small project myself. One thing that comes hard is the programming part as I don't know any programming language. I'm looking for some help with code merging, explanation and some general guidance. Could you please let me know, point me to right direction and tell me what you think and if requirements are actually achievable? What I would like to achieve: Intention of this project is to have manual and auto irrigation system which will: 1. Measure soil moisture and dependently on the value activate the usb pump which will water the plant (preferably analog output that will show the measurements in %) 2. Manual activating the pump via hardware button and via mobile phone with internet connection 3. Distance sensor which should measure how much water is left in the tank 4. Email notification with info when to water the plants and soil sensor data regardless of the automatic process that has already started 5. Email notification with info about the water in the tank when it’s near empty 6. Dashboard preferably inside the network (not using third party like blynk or others) with access from the internet (I have QNAP that I think can be used). 7. If possible – have amazon echo (Alexa) read the sensor data to tell me the values and comment if the plant should or shouldn’t be watered or the tank should be refiled or not as well as ability to ask Alexa to start or stop the irrigation Hardware: D1 mini: Wemos V2 Relay shield: My relay is slightly modified: 2 small wires soldered to the vcc and ground so that when it receives the signal on d1 pin it opens and current flows to female usb connector supposedly activating the usb water pump. All this can be stacked together even with soldered wires YL-69 sensor: Ultrasonic Distance Sensor (HC-SR04): USB mini water pump: Button x4 if needed: Board x4 if needed: sample codes used in other projects: Alexa enabled homemade cat feeder example: Thank you very much in advance for your help and support.

Topic by wube   |  last reply