Objetivos

 

  • Vamos a montar una bascula con ESP32 y HX711.
  • Montaremos un servidor web.
  • Usaremos el servidor para publicar el peso.
  • Haremos algunas pruebas
  •  

    Material requerido.

     

      Tienda España
     Vision panoramica Una plataforma de balanza
     vista lateral del esp32 Un ESP32
     cables M-F Cables macho-hembra

     

    Este tutorial es parte de una serie sobre galgas y células de carga para hacer una balanza. Tal vez te interese revisarlas:

  • Galgas y células de carga
  • Balanza con célula de carga
  • Balanza HX711: Programa final
  • Balanza WIFI con ESP32.
  •  

    ¿Otra vez la báscula?

     

    Si. Reconozco que el tema puede ser cansino, pero un amigo me llamó la atención sobre el hecho de el programa de báscula que pusimos en la sesión previa, solo funcionaba en una determinada subred IP, la 192.168.1.xx, y que él necesitaba la báscula, pero la subred de su router era diferente.

    Vale, pues reprograma el ESP32 con tu subred y listo, dije yo. «Ni sé, ni quiero aprender a hacer eso, que ya tengo bastantes líos», respondió el. Y me pregunto «¿No puedes hacer algo para que me conecte desde cualquier sitio por la WIFI?»

    Y como tenía toda la razón, he modificado el programa de la báscula para que haga exactamente eso. Es decir, nuestro ESP32 interno lee la báscula y lo publica en un servidor web, pero además le hemos puesto en modo Access Point, para que desde fuera te puedas conectar a su red WIFI como si fuera tu router y listo.

    El, muy agradecido, había diseñado una carcasa 3D para contener la báscula y me ha autorizado a publicar su diseño, así que todos contentos. Esta sesión va de modificar el programa en la dirección de permitir la conexión WIFI a la báscula y veremos el diseño de Carlos para contener la electrónica

     

    Modificando el programa de bascula

     

    En la sesión correspondiente ya vimos el programa de la báscula, así que vamos a ir un poco rápido hoy por aquí.  Si queréis comprobar las conexiones y detalles más específicos del programa, revisar la sesión de la báscula WIFI, aquí nos vamos a centrar en las variaciones

    Vamos a repasar rápidamente el programa:

    #include "HX711.h"
    #include <WiFi.h>
    #include <WebServer.h>
    
    const int LOADCELL_DOUT_PIN = 19;
    const int LOADCELL_SCK_PIN = 18;

    Las librerías necesarias y la definición de los pines al convertidor ADC. Como queremos que nuestro ESP32 sea un punto de acceso WIFI, vamos a definir las características necesarias.

    const char* ssid = "Balanza";     // Este es el SSID
    const char* password = "12345678"; // Esta es la contraseña
    
    IPAddress local_ip(mralejandroquiros@gmail.com);    // Asignara direcciones en 192.168.5.xx
    IPAddress gateway(192,168,5,1);
    IPAddress subnet(255,255,255,0);
    
    WebServer server(80);
    HX711 balanza;

    Definimos Balanza como el nombre que publicaremos en la WIFI y marcamos la contraseña que tendremos que dar para ser aceptados en las dos primeras líneas. Luego definimos nuestra dirección IP y el Gateway por defecto (Nuestra báscula también, mientras estemos conectados) y por último la subred a la que nos asociamos. Las dos últimas líneas arrancan el servidor web en el puerto 80 pero recordad que podéis cambiarlo a vuestro gusto, y creamos la instancia de la balanza. En el setup definimos el modo SoftAP (Acces Point) con los valores que hemos definido antes:

    void setup()
    { Serial.begin(115200);
      WiFi.softAP(ssid, password);  //Start Acces point mode
      WiFi.softAPConfig(local_ip, gateway, subnet);

    Ahora arrancamos la balanza y pasamos los datos de calibración. Recordad que necesitáis calibrar la balanza por el procedimiento que definimos aquí, si queréis una cierta precisión. Si utilizas el valor de 396 que uso aquí para la escala, funcionara, pero deberías calibrar tu propia balanza.

      balanza.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
      delay(250);
      balanza.set_scale(396    );
      balanza.tare(20);  // Hacer 20 lecturas, el promedio es la tara

    Y por último enganchamos las funciones CallBack que atenderán las conexiones al servidor, como siempre:

      server.on("/", handle_OnConnect);
      server.onNotFound(handle_NotFound);
      server.begin();
      Serial.println("HTTP server started: 192.168.5.1");
    }

    Las funciones restantes son casi iguales que la última vez:

    void loop()
    { server.handleClient(); }
    
    void handle_OnConnect()
    {  if (balanza.is_ready())
        {   float reading = balanza.get_units(10);              // Peso sin tara y corregido    
            Serial.println(reading  );
            server.send(200, "text/html", SendHTML(reading));
         }
       else
          Serial.println("HX711 no encontrado.");
    }
    
    void handle_NotFound()
    {  server.send(404, "text/plain", "No hay respuesta");}

    Aquí os dejo el programa completo: Bascula

     

    Imprimiendo las piezas

     

    Nuestro buen amigo y colaborador, Carlos, que tiene mucho tiempo libre, ha diseñado con sorprendente velocidad una carcasa para contener toda la electrónica de la báscula, que es a la vez funcional y discreta, lo que no es poco.

    Os dejo aquí los diseños de las piezas necesarias en formato STL, para que los que tengáis impresora 3D podáis imprimirlas y montar el proyecto completo:  Bascula WIFI HX711

    Una vez impresas las piezas podéis ver la guía de montaje en video aquí:

    Insertar video

     

    Y aquí tenéis una foto del resultado final, una vez montado todo:

    bascula impresa en 3d

     

    Conectando a la báscula

     

    Bueno, como esta vez hemos definido nuestro ESP32 como punto de acceso WIFI, para acceder a la báscula tenemos que empezar conectándonos a la WIFI “Báscula” con la contraseña «12345678».

    Una vez conectados, podemos ir con el navegador del móvil a la dirección IP 192.168.5.1 y veremos la página web con los datos. Aquí os dejo un pequeño video de mi móvil mientras hago la conexión:

       

    Deja una respuesta