ESP32 IOT - Code
08/05/2022 | Views: 5770 | Arduino | by: ELECTRONOOBS      

Download the Arduino code from below. Open Arduino IDE. If you don’t have them, download from below the HTTPserver and the WIFI libraries. Go to sketch, include library, add zip file library, and select one by one the downloaded zip files. In the code, on these lines add the name of your home WIFI and the WIFI password. Then, in the http.begin function, you have to change the website from electronoobs-ESP to your own website. As you can see, this code will communicate with a file that is called esp32_update.php. We've uploaded that file to our website in the previous step.

In the Arduino code as you can see, we make a post action with that variable name, check_LED_status. So, the PHP file, each time it detects that someone makes a post action with this variable name, it will read the status of the LED from the database and echo LED_is_off or LED_is_on. In the Arduino code, we get the response from the website. If the response is LED is off, we make a digital write LOW on digital pin 2 which is where our LED is connected. If the response is LED is ON we make a digital write HIGH on that pin.

//Include libraries
#include <HTTPClient.h>               //Download:
#include <WiFi.h>                     //Download:

//Add WIFI data
const char* ssid = "mywifiname";              //Add your WIFI network name 
const char* password =  "12345678";           //Add WIFI password

//Variables used in the code
String LED_id = "1";                  //Just in case you control more than 1 LED
bool toggle_pressed = false;          //Each time we press the push button    
String data_to_send = "";             //Text data to send to the server
unsigned int Actual_Millis, Previous_Millis;
int refresh_time = 200;               //Refresh rate of connection to website (recommended more than 1s)

int button1 = 13;                     //Connect push button on this pin
int LED = 2;                          //Connect LED on this pin (add 150ohm resistor)

//Button press interruption
void IRAM_ATTR isr() {
  toggle_pressed = true; 

void setup() {
  Serial.begin(115200);                   //Start monitor
  pinMode(LED, OUTPUT);                   //Set pin 2 as OUTPUT
  pinMode(button1, INPUT_PULLDOWN);       //Set pin 13 as INPUT with pulldown
  attachInterrupt(button1, isr, RISING);  //Create interruption on pin 13

  WiFi.begin(ssid, password);             //Start wifi connection
  while (WiFi.status() != WL_CONNECTED) { //Check for the connection

  Serial.print("Connected, my IP: ");
  Actual_Millis = millis();               //Save time for refresh loop
  Previous_Millis = Actual_Millis; 

void loop() {  
  //We make the refresh loop using millis() so we don't have to sue delay();
  Actual_Millis = millis();
  if(Actual_Millis - Previous_Millis > refresh_time){
    Previous_Millis = Actual_Millis;  
    if(WiFi.status()== WL_CONNECTED){                   //Check WiFi connection status  
      HTTPClient http;                                  //Create new client
      if(toggle_pressed){                               //If button was pressed we send text: "toggle_LED"
        data_to_send = "toggle_LED=" + LED_id;  
        toggle_pressed = false;                         //Also equal this variable back to false 
        data_to_send = "check_LED_status=" + LED_id;    //If button wasn't pressed we send text: "check_LED_status"
      //Begin new connection to website       
      http.begin("");   //Indicate the destination webpage 
      http.addHeader("Content-Type", "application/x-www-form-urlencoded");         //Prepare the header
      int response_code = http.POST(data_to_send);                                //Send the POST. This will giveg us a response code
      //If the code is higher than 0, it means we received a response
      if(response_code > 0){
        Serial.println("HTTP code " + String(response_code));                     //Print return code
        if(response_code == 200){                                                 //If code is 200, we received a good response and we can read the echo data
          String response_body = http.getString();                                //Save the data comming from the website
          Serial.print("Server reply: ");                                         //Print data to the monitor for debug

          //If the received data is LED_is_off, we set LOW the LED pin
          if(response_body == "LED_is_off"){
            digitalWrite(LED, LOW);
          //If the received data is LED_is_on, we set HIGH the LED pin
          else if(response_body == "LED_is_on"){
            digitalWrite(LED, HIGH);
        }//End of response_code = 200
      }//END of response_code > 0
       Serial.print("Error sending POST, code: ");
      http.end();                                                                 //End the connection
    }//END of WIFI connected
      Serial.println("WIFI connection error");

Last tutorials

Arduino FOC controller PCB for Brushless Motors
Arduino + MCP4725 DAC module
ESP32 IOT and Arduino Database + POST method
Raspberry Pi Voice Recognition + Arduino UART
Bluetooth Motorized Curtain - Homemade 3D Printed



PCBWAY PCB service

Curso Arduino Online nivel bajo