3ENGINE

Programación y otros cachivaches

Tecnologia

Agrupar metodos en clases de Python.


Imaginemos que tienes una clase Class1 con una buena colección de métodos. Para facilitar su uso quieres agrupar los métodos, de modo que tendrias esto:

c = Class1(param1, param2)
c.colors.green()
c.colors.yellow()
c.animals.bird()
c.animals.mouse()
etc..

Ademas necesitas que los metodos tengan acceso a los datos de la clase padre.

Para agrupar métodos en clases de Python, puedes utilizar clases internas (o anidadas). Estas clases se definen dentro del cuerpo de otra clase. Si se crea un objeto utilizando una clase, el objeto dentro de la clase raíz puede ser utilizado. Una clase puede tener una o más clases internas. Si quieres que los métodos de las clases internas tengan acceso a los datos de la clase padre, puedes hacerlo pasando self a la clase interna.

Aquí un ejemplo de cómo hacerlo:

class Class1:
   def __init__(self, param1, param2):
       self.param1 = param1
       self.param2 = param2
       self.colors = self.Colors(self)
       self.animals= self.Animals(self)

   class Colors:
       def __init__(self, parent):
           self.parent = parent

       def green(self):
           print("green")
           print(self.parent.param1)

       def yellow(self):
           print("yellow")
           print(self.parent.param2)

   class Animals:
       def __init__(self, parent):
           self.parent = parent

       def bird(self):
           print("bird")
           print(self.parent.param1)

       def mouse(self):
           print("mouse")
           print(self.parent.param2)



Tecnologia

Cómo instalar CP2102 USB to UART Bridge


Para qué sirve un controlador CP2102

El controlador CP2102 es un chip que proporciona un puente entre el USB y el UART (Universal Asynchronous Receiver/Transmitter). El chip es usado en las placas de desarrollo ESP32 y permite la comunicación entre la placa y el ordenador del usuario. Hay otros controladores como por ejemplo el CH340C, pero en mi caso me centraré en el CP2102 porque es el que me llego de Aliexpress. Mientras que el CH340C tiene forma alargada, el CP2102 tiene forma cuadrada:

Una vez que el controlador CP2102 está instalado correctamente, tu ordenador será capaz de comunicarse con la ESP32 a través del USB. Básicamente, el controlador permite que tu computadora vea a la placa ESP32 como un puerto COM virtual. Esto es útil en el desarrollo de aplicaciones de IoT, donde necesitas programar y depurar el código en la placa ESP32.

Cómo instalar el controlador CP2102 USB a UART Bridge en tu ESP32

Descarga el controlador CP2102 de la página oficial del fabricante, Silicon Labs y sigue estos pasos:

  • En la página de los controladores, haz clic en la pestaña Downloads.
  • En la categoría Software, encontrarás una lista de controladores. Haz clic en los controladores individuales que deseas descargar. Comunmente, si tienes Windows, haz clic en CP210x Windows Drivers
  • Se descargará un archivo .zip en tu PC. Extrae el archivo y luego instala el controlador.

Si conectas tu placa de desarrollo ESP32 por USB deberia aparecer algo como esto:




Tecnologia

PlatformIO: cómo cambiar la versión del compilador


Para cambiar la versión del compilador de C++11 a C++17 en PlatformIO, necesitas modificar la sección build_flags en tu archivo de configuración de PlatformIO. Aquí un ejemplo de cómo quedaria tu archivo de configuración:

[platformio]
default_envs = az-delivery-devkit-v4

[common]
build_flags =
    -std=gnu++17
build_unflags =
    -std=gnu++11

[env:az-delivery-devkit-v4]
    monitor_speed = 115200
    platform = espressif32
    board = az-delivery-devkit-v4
    framework = arduino
lib_deps =
    olikraus/U8g2@^2.35.4
    igorantolic/Ai Esp32 Rotary Encoder@^1.6
    esphome/ESP32-audioI2S@^2.0.7
build_flags =
    ${common.build_flags}
build_unflags =
    ${common.build_unflags}

En el fragmento anterior, -std=gnu++17 le indica al compilador que utilice la versión C++17 del estándar de C++. Por otro lado, -std=gnu++11 se utiliza para desactivar el uso de C++11. Estos flags se aplican a tu entorno de compilación az-delivery-devkit-v4

Cambiar a una versión más reciente del lenguaje C++, como por ejemplo C++17, tiene ventajas:

  • Nuevas características del lenguaje: Cada nueva versión de C++ introduce nuevas características del lenguaje que pueden hacer que tu código sea más eficiente, fácil de entender y robusto. Por ejemplo, C++17 introdujo características como std::optional y std::variant que pueden ayudar a manejar mejor los casos en los que una variable puede o no tener un valor.
  • Mejoras del compilador: A medida que se desarrolla una nueva versión del estándar de C++, los compiladores también mejoran, tu código se compila más rápido y se ejecuta más eficientemente.
  • Compatibilidad con bibliotecas más recientes: Algunas bibliotecas solo son compatibles con versiones más recientes.
  • Estandarización: Te aseguras de que estás utilizando un estándar que ha sido revisado y aprobado por la comunidad de C++. Esto puede hacer que tu código sea más confiable y fácil de entender para otros desarrolladores.



Tecnologia

Copia de seguridad de una tarjeta SD


Cómo hacer una copia de seguridad

Cuando tenemos creado en una tarjeta SD el sistema operativo para una Raspberry Pi o una Orange Pi (entre otras) es conveniente realizar copias de seguridad de la tarjeta SD para evitarnos futuros problemas, como por ejemplo que la tarjeta SD falle.

Una de la aplicaciones mas utilizadas es Win32 Disk Imager. Esta aplicación crea una copia de seguridad completa de la tarjeta SD a un fichero .img. Una vez instalada, insertamos la tarjeta SD en el ordenador. Indicamos donde queremos guardar la imagen, la letra de la unidad que identifica la tarjeta SD y click en el boton read.

Cómo restaurar la copia de seguridad de una tarjeta SD

Para hacer esto, necesitamos una aplicación como etcher. Esta aplicación permite grabar imagenes en una tarjeta SD. Una vez instalada abrimos la aplicación, seleccionamos la imagen, la unidad donde hemos insertado la tarjeta SD y flasheamos.

Tambien puedes utilizar Win32 Disk Imager para restaurar tu copia de seguridad: