es es en es es gl es es en es hbs_lat es es es es es es es es es en en es en es es it es en es en en es es es es es tr it es es es en es en en en es en es es es en es es en es es es es es es es es es pt en es en es es en es it es it es en es es es es es es es es it es es es es es es es en es en es es es en es es es en es es es es es es es es en es en es en es en en es es en es en es en es es en es en en es es en es en en es es es es es es en es es es zh es fr es es es es es es gl es es gl es es es en es en es en es es es en es es es es es es es en ko es es es es en es es en es es es es es es en en zh en es es es en es es es es es es gl en en en en en es es es es es es es es en es es en es es es es es es es es es es es es es es es pt es es es es es es es es es es es es es es es es es en es en es en es en es en gl es es es es it en es en en en en en es es pt it es es es pt it es pt it es es es es es pt es es es es pt it es es es es es es es en es es es es es es gl es es hbs_lat es es es
Si se considera una reluctancia nula, es decir, un transformador ideal, la relación de corrientes es:
\[N_1 \cdot i_1 – N_2 \cdot i_2 = 0 \]
Si por el contrario la reluctancia no es nula y se tiene en cuenta el fenómeno de saturación:
La inductancia magnetizante vista desde el primario es:
Ejemplo signos análisis de mallas
13 septiembre 201625 septiembre 2016 rubensm
En el análisis de mallas no importa qué criterio se utilice a la hora de definir la polaridad de las tensiones mientras se haga en todo el circuito con el mismo.
Por ejemplo, considerando que si la flecha entra por (-), la tensión es negativa:
\[ -V_1 – V_2 = 0 \]
\[ V_1 = -V_2 \]
Corriente y tensión en una bobina en función del tiempo
13 septiembre 201616 diciembre 2016 rubensm
\[V_L(t) = L \frac{di(t)}{dt} \]
Si despejamos el diferencial e integramos:
\[\int{\frac{di(t)}{dt} dt} = \int{\frac{V_L}{L} dt}\]
\[ i(t) = \int{\frac{V_L}{L} dt} =  i(0) + \frac{V_L}{L}t \]
La variación de la corriente en el tiempo no puede ser instantánea, ya que de lo contrario habría un pico infinito de tensión en el inductor (\(v(t) = \infty\)).
\[ \frac{di(t)}{dt} \neq \infty \]
Si el valor de la inductancia L es grande, las variaciones de corriente en el inductor serán pequeñas, por lo que el inductor se podrá considera como una fuente de corriente.
En régimen permanente, el valor medio de la tensión en los extremos del inductor debe ser nulo, ya que de lo contrario la corriente en bornes del inductor aumenaría hasta el infinito.
\[ i(t) = \int_0^t{-\frac{v_L(t)}{L} dt} \]
si \(v_L(t)\) no tuviese una media nula, la integral de la tensión sería infinito, ya que solo sumaría.
\[  = \frac{1}{T} \int_0^T v(t) dt = 0\]
Polaridad de la fuente equivalente del diodo
El polo positivo de la fuente de tensión equivalente que modela el efecto de la polarización de la unión PN está en el mismo lado que el ánodo (positivo).
La importancia de tener en cuenta la resistencia serie equivalente de un condensador
2 septiembre 201616 septiembre 2016 rubensm
Cuando hablamos del comportamiento de un condensador en frecuencia, imaginamos que su impedancia decrece hasta hacerse 0 en el infinito.
Sin embargo, en la realidad nos encontramos que el modelo real de una condensador tiene una resistencia en serie además de un inductor. En esta entrada vamos a ver solo los efectos que tiene dicha resistencia en serie, también conocida como ESR (equivalent series resistor).
Si calculamos la función de transferencia de este circuito, encontraremos que tiene la siguiente expresión:
Diagrama de Bode del circuito RC ideal
Vemos que la frecuencia de corte a la cual el valor absoluto de la función de transferencia H(s) ha disminuido 3 dB es:
\[f = \frac{1}{2\pi R C} = \frac{1}{2\pi \cdot 50 \cdot 10^{-6}} = 3183 Hz\]
Sin embargo, ¿cómo va a ser su respuesta en frecuencia si añadimos una resistencia en serie?
Para tener en cuenta los efectos de la resistencia en serie, modificamos el esquemático original añadiendo la resistencia en serie con el condensador. Para que los efectos sean más notables de manera que se vean mejor las consecuencias que tiene, el valor de la resistencia se ha escogido alto (50 Ω). Sin embargo, los condensadores reales intentan mantener este valor tan bajo como sea posible para seguir manteniendo las características de condensador en un ancho de banda más amplio.
La función de transferencia de este circuito es:
\[H(s) = \frac{R_L}{R_g + R_L}\frac{s+ \frac{1}{C R_L}}{s+ \frac{1}{C \left( R_L + R_g \right)}}\]
Como vemos, la función de transferencia tiene un cero en \(f_c = \frac{1}{2 \pi C R_L}\) y polo en \(f_p = \frac{1}{2\pi C \left( R_L + R_g\right) }\). El cero fuerza un pendiente a partir de \(f_1\) de -20 dB/dec, mientras que el polo fuerza una pendiente de +20 dB/dec a partir de \(f_2\), tal y como vemos en el diagrama de bode:
Diagrama de bode del circuito RC con ESR
Como vemos, el cero anula al polo de manera que la respuesta en frecuencia es plana para altas frecuencias (en la realidad el inductor en serie hace que aumente. Sin embargo, ahora no se están contemplando sus efectos). La frecuencia del polo está por debajo de la frecuencia del cero \(f_p < f_c\). Además, la frecuencia del cero está determinada por el valor de la resistencia en serie y por el valor del condensador. Por tanto, si hacemos \(R_L\)muy pequeña, estaremos retardando el efecto del cero y con ello, haciendo que la respuesta frecuencial del condensador sea igual a la del caso ideal en un ancho de banda mayor.
Si hacemos \(R_L = 0.01 \Omega\), las características de condensador (disminución de impedancia al incrementar la frecuencia) se dan para un ancho de banda mayor:
Diagrama de Bode del circuito RC con baja ESR
A modo de comparativa, podemos observar las diferencias mejor si superponemos todos los diagramas de bode.
Línea continua: alta ESR con \(R_L = 50 \Omega\). Línea discontinua: ESR = 0 (ideal). Línea punto ralla: \(R_L = 0.01 \Omega\).
El script de MATLAB utilizado para simular y hacer estas gráficas es:
clear all; close all; s = tf('s'); Rg = 50; RL = 50; RLow = 0.01; C = 1e-6; %% Con ESR H1 = ((1+s*C*RL)/(s*C*(Rg+RL)+1)); %% Sin ESR H2 = (1/(C*Rg))/(s+1/(C*Rg)); %% Con bajo ESR H3 = ((1+s*C*RLow)/(s*C*(Rg+RLow)+1)); bode1 = bodeplot(H1,'r',H2,'b--', H3, 'g-.'); setoptions(bode1, 'FreqUnits', 'Hz'); legend('Circuito RC con alta ESR', 'Circuito RC ideal', 'Circuito RC con baja ESR'); grid on;
Como vemos, debido a efectos parásitos como la resistencia en serie (ESR), el condensador deja de comportarse como tal a partir de una determinada frecuencia. Por debajo de ella, el condensador puede ser utilizado como tal. En los datasheets, este parámetro viene expresado como ESR aunque generalmente, se engloba dentro de un parámetro más general que es el factor de calidad Q.
El inductancia parásita serie de un condensador
2 septiembre 201616 septiembre 2016 rubensm
Hace poco escribía sobre la importancia de tener en cuenta la resistencia parásita serie de un condensador (ESR). La ESR es un parámetro importante pero sin embargo, no tener en cuenta la inductancia serie equivalente puede ser incluso más catastrófico en un diseño.
Como ya habíamos hablado, estos elementos parásitos inherentes al condesador real hacen que su comportamiento deje de ser el esperado. La expresión de la impedancia de un condensador es
\[Z_C = \frac{1}{2 \pi f C}\]
Por lo que al subir en frecuencia su impedancia disminuye.
Podemos ver que hay un tanque LC en serie (un condensador y un inductor en serie). La característica principal de un tanque LC en serie es que a su frecuencia de resonancia, \(f_0 = \frac{1}{2\pi \sqrt{LC}}\) se comporta como un cortocircuito. Por debajo de esa frecuencia, predomina la impedancia del condesador, por encima de la frecuencia de resonancia domina la impedancia del inductor y justo a la frecuencia de resonancia la impedancia del condensador es igual y de signo contrario a la del inductor. Es por ello que se anulan.
Debido a esto, podemos esperar que a la frecuencia de resonancia la salida sea 0 porque ambas impedancias se anulen cortocircuitando la salida a masa.
La función de transferencia de este circuito (o parámetro S21) es:
\[H(s) = \frac{s^2 + \frac{1}{LC}}{s^2 + s \frac{R_g}{L} + \frac{1}{LC}}\]
Diagrama de Bode del circuito LC
De la gráfica podemos observar todo lo que habíamos predicho teóricamente.
Sin embargo, si añadimos la ESR encontramos que la función de transferencia ahora es
\[H(s) = \frac{s^2 + s \frac{R}{L} + \frac{1}{LC}}{s^2 + s \frac{R+R_g}{L} + \frac{1}{LC}}\]
Diagrama de Bode para diferentes ESR
Como se puede ver, cuanto más grande es la ESR el pico de resonancia es menor. Si un condensador es muy malo (tiene unas ESR y ESL altas), se parecerá más a la curva azul (ESR = 10).
Utilizando condensadores como un transformador de impedancias
2 septiembre 201616 septiembre 2016 rubensm
Los transformadores son elementos muy útiles cuando es necesario modificar la impedancia vista desde un punto del circuito. Cuando estamos diseñando un filtro paso banda y queremos conectar la siguiente etapa es muy importante no modificar la resistencia del circuito, ya que modificaríamos su ancho de banda. Por otra parte, construir transformadores es algo caro, que ocupa mucho espacio y poco práctico. Por ello intentar buscar una solución sin que utilice bobinas es una buena idea.
Para empezar, deberemos saber como pasar del paralelo de una resistencia y un condensador a la disposición en serie de una resistencia y un condensador:
La impedancia equivalente del paralelo es:
\[Z = \frac{R_p}{1 + R_p C_p j \omega} = \frac{R_p}{1+R_p C_p j \omega} \cdot \frac{1-j\omega R_p C_p}{1-j\omega R_p C_p}=\frac{R_p(1-j\omega R_p C_p)}{1+\omega^2 R_p^2 C_p^2}=\frac{R_p}{1+\omega^2 R_p^2 C_p^2} – \frac{j\omega R_p^2 C_p}{1+\omega^2 R_p^2 C_p^2}\]
Si \(R_p >> \frac{1}{C_p\omega}\), entonces podemos aproximar la impedancia equivalente como:
\[Z \approx \frac{1}{R_p C_p^2 \omega^2}-j\frac{1}{\omega\cdot C_p}\]
\[R_s = \frac{1}{R_p C_p^2 \omega^2}\]
Como hemos visto esto solo es válido cuando la impedancia de la resistencia paralela es mucho mayor que la impendancia del condensador. Por tanto, podemos reescribir la condición como \[f >> \frac{1}{2\pi R_p C_p}\]
Primero tenemos que comprobar que a la frecuencia de trabajo (27 MHz) se cumplen la condición necesaria para que la aproximación sea válida:
\[f >> \frac{1}{2\pi R_p C_p} = \frac{1}{2\pi 1k\Omega 1nF}=159 kHz\]
Como vemos, a 27 MHz cumplimos de sobra la condición. Para calcular \[C_s\]:
\[R_s = \frac{1}{R_p C_p^2 \omega^2} = \frac{1}{1 k\Omega (1nF)^2 (2\pi\cdot 27 MHz)^2}=0.0347 \Omega\]
De la misma manera, podemos transformar el circuito serie en paralelo.
Ahora las identidades son:
\[R_p = \frac{1}{R_s C_s^2 \omega^2}\]
Siempre y cuando \[f >> \frac{1}{2\pi R_p C_p}\]
Como vemos, de esta manera conseguimos tener un condensador y una resistencia en paralelo del valor:
\[C_{eq}=\frac{C_1\cdot C_2}{C_1 + C_2}\]
\[R_p = R_0 (1+\frac{C_2}{C_1})^2\]
Como vemos \((1+\frac{C_2}{C_1})^2\) veces más grande.
Revisando los filtros de segundo orden: filtro paso bajo
2 septiembre 201616 septiembre 2016 rubensm
Los filtros son una de las piezas claves en la electrónica y sobretodo en el mundo de las telecomunicaciones. Para poder identificar el orden de un filtro, si trazamos si diagrama de Bode y observamos que la atenuación es de 20 dB/década se tratará de un filtro de 1º orden, 40 dB/década para un filtro de 2º orden, 60 dB/decada para un filtro de 3º orden, etc. Otra manera más práctica es mirar el número de polos y ceros que presenta la función de transferencia, lo que se traduce en mirar cuántos condensadores y inductores presenta. Esta regla no tiene por qué ser siempre cierta, así que para asegurarnos será mejor recurrir al diagrama de Bode.
En esta ocasión nos centraremos en los filtros de segundo orden, en concreto los filtros paso bajo. Su función de transferencia genérica es de la forma:
\(H_0\): es la amplificación a baja frecuencia del filtro
\(\zeta\): es el coeficiente de amortiguación
\(BW\)) en radianes. Por tanto la función de transferencia puede ser reescrita como:
Otro parámetro importante de un filtro paso banda es el factor de calidad. Este nos da información sobre como de estrecho y selectivo es el filtro. Una de las definiciones del factor de calidad (Q) es:
Si lo analizamos asintoticamente, si el filtro tuviera un ancho de banda \(f_0 \pm BW\), pero como veremos es algo muy complicado de conseguir actualmente.
2 septiembre 201617 septiembre 2016 rubensm
Las redes de adaptación son necesarias cuando queremos maximizar la transferencia de potencia entre dos sistemas conectados en cascada. Las redes de adaptación se comportan como filtros en los que en la banda de paso hay adaptación. En la banda de frecuencia a la cual la red no está adaptada, la potencia es reflejada.
Para asegurar la máxima transferencia de potencia, la impedancia de carga debe ser la compleja conjugada del generador.
Máxima transferencia de potencia (MTP)
Dependiendo de la disposición de inductores y condensadores, es posible crear ceros de transmisión en los cuales no haya transferencia de señal entre la entrada y la salida.
Cero de transmisión en DC ( \(f= 0\) ).
Para conseguir un cero de transmisión en DC podemos poner un condensador en serie entre entrada y salida o una inductancia en derivación (en paralelo a masa).
La pendiente con la que tiende a 0 el diagrama de Bode es de -20 dB/dec o 6 dB/oct.
Para calcular las octavas que hay entre dos frecuencias:
Para calcular el número de décadas entre dos frecuencias:
Para pasar de décadas a octavas:
\[N_{dec} = 0.3 N_{octavas}\]
Cero de transmisión en \(f=\infty\)
Para conseguir un cero de transmisión a frecuencias muy altas, hay que poner un inductor en serie o un condensador en derivación.
La pendiente en el diagrama de Bode es de 20 dB/dec o 6 dB/oct.
Cero a \(0< f_R < \infty\)
Para crear un cero a una frecuencia que no es ni DC ni a frecuencias infinitas, es necesario utilizar circuitos resonadores (también llamados circuitos tanque).
Existen dos tipos de resonadores: los serie y los paralelo.
Los resonadores serie constan de un condensador y un inductor en serie que a la frecuencia de resonancia equivalen a un cortocircuito. Por tanto, para forzar un cero de transmisión, será necesario poner un resonador serie en derivación.
Por otra parte, tenemos los resonadores paralelo, que a la frecuencia de resonancia son equivalentes a un circuito abierto. Para crear un cero de transmisión basta con ponerlos en serie entre la entrada y la salida del circuito.
La frecuencia de resonancia de un resonador es: \(f_R = \frac{1}{2\pi\sqrt{LC}}\)
Topologías de adaptación con elementos concentrados
Existen 3 topologías de redes en las que se necesita una red de adaptación para conseguir MTP:
La impedancia de carga o fuente es compleja.
1) Impedancia compleja con \(R_S = R_L\)
En esta red de adaptación el valor de la parte real de la impedancia coincide con la impedancia del generador. Sin embargo, hay un parte imaginaria que es necesario eliminar. En este caso es tan sencillo como añadir en serie una impedancia imaginaria de signo contrario. Es decir, si la reactancia es positiva (carácter inductivo), habrá que poner un condesador. Si la reactancia es negativa (carácter capacitivo), habrá que poner un inductor. De esta manera, es equivalente a tener un circuito tanque en serie. Sin embargo, como ya hemos visto anteriormente esta solución solo es válida para una frecuencia ya que ambos valores solo se anulan a su frecuencia de resonancia.
Una manera de medir cómo de estrecha será la banda a la cual se da la adaptación es utilizando el factor de calidad Q. En circuitos paso banda, el factor de calidad establece la relación que hay entre la frecuencia de paso y el ancho de banda a -3 dB. Es decir:
Como vemos, si el ancho de banda es grande (poco selectivo), la Q es pequeña. Si el filtro es muy selectivo, la Q es grande.
Este parámetro puede ser medido en función de la reactancia y el valor de la resistencia de carga:
Por tanto, si la resistencia es grande la Q es pequeña (el filtro es poco selectivo) y la banda de adaptación es ancha. Si por el contrario la resistencia es pequeña lleva a Q muy grandes (muy selectivo). Ambos extremos son difíciles de solucionar en la práctica, ya que conseguir un filtro muy selectivo o de gran ancho de banda es complicado.
2) Impedancia compleja con \(R_S \neq R_L\)
En este caso, las resistencia de carga y de fuente no coinciden. Es por ello que se necesita subir o bajor el valor de la resistencia de carga para adaptar con la impedancia de fuente.
Para diseñar este tipo de redes de adaptación se utilizan redes en L:
Sin embargo el principal problema del diseño de este tipo de redes es que su cálculo es muy largo sobretodo cuando el número de elementos aumenta.
Este proceso se puede simplificar si utilizamos equivalencias serie-paralelo de circuitos RC y RL.
\[Q_s = \frac{X_s}{R_s} = Q_p = \frac{R_p}{X_p} = Q\]
\[R_p = \left( 1 + Q^2 \right)R_s\]
El factor de calidad (Q) indica cómo de ideal es un dispositivo a la hora de almacenar energía. Un dispositivo que pueda almacenar toda la energía sin disiparla tendrá un factor de calidad que tenderá a infinito. Una manera fácil de saber cómo es la expresión del factor de calidad con una resistencia en serie es pensando que si la resistencia en serie es muy grande, esta disipará mucha potencia y el factor de calidad será bajo. Por tanto, en la expresión del factor de calidad para un dispositivo con una resistencia en serie, el valor de la resistencia está en el denominador \(Q_p = \frac{R_p}{X_p}\)
La manera en la que se deben colocar los elementos es la siguiente: con la resistencia de mayor valor, un elemento en paralelo (para bajar su impendancia). Y con la resistencia de menor valor un elemento en serie (para subir su impedancia).
Para calcular los valores de los elementos hay que igualar el factor de calidad Q de las redes serie y paralelo:
\[Q_s = Q_p = \sqrt{\frac{R}{r} – 1}\]
donde R es la resistencia con el valor nominal más alto y r la resistencia más baja.
Una vez calculado el factor de calidad, se obtiene el valor de la reactancia y con ello, el valor nominal del condensador o inductor.
Existen 4 disposiciones distintas:
Queremos adaptar estos dos puertos para que a la frecuencia de 850 MHz haya MTP y al mismo tiempo que la polarización en DC también pueda pasar del puerto 1 al 2.
Debido a que no podemos bloquear la continua, no podemos utilizar un condensador en serie con la resistencia del puerto 1. Por tanto, tenemos que utilizar la red en L con una bobina en serie y un condensador en derivación:
Para calcular los valores de L y C:
\[Q_s = Q_p = \sqrt{\frac{R}{r} -1 } = \sqrt{\frac{50}{5} -1} = 3\]
\[Q_s = \frac{X_s}{R_s} \Rightarrow X_s = Q \cdot R_s = 2\pi f L\]
\[L = \frac{Q \cdot R_s}{2\pi f} = \frac{3 \cdot 5}{2\pi \cdot 850\cdot 10^6} = 2.8\text{ nH}\]
\[Q_p = \frac{R_p}{X_p} \Rightarrow X_p = \frac{R_p}{Q_p} = \frac{1}{2\pi f C}\]
\[C = \frac{Q_p}{2\pi f R_p} = 11.2\text{ pF}\]
Respuestra en frecuencia del parámetro S21
Sin embargo, cuando la diferencia de resistencias es muy grande, es posible que necesitemos unos valores de Q que no nos convengan en la práctica (recordar que \(Q = \sqrt{\frac{R}{r} – 1}\) ).
Es decir, este salto de impedancia puede ser muy grande
Podemos hacer varios saltos de impedancia en lugar de uno solo. Esto da lugar a las redes en T y redes en π:
Por tanto disponemos de 3 tipos de redes: las redes en L, las redes en T y las redes en π. Con estas redes en T y π podemos aumentar el ancho de banda ya que al hacer saltos más pequeños de impedancia, la Q disminuye y el ancho de banda aumenta. Con las redes en L podemos disminuir el ancho de banda, ya que la resistencia virtual está entre un valor de \(R_{int}   R\).
Aumento del ancho de banda
Para aumentar el ancho de banda hay que utilizar una red en T o π. Si queremos una red de adaptación con un ancho de banda grande, la Q deberá se baja. Para que la Q sea baja, los saltos de impedancia deben de ser pequeños. Por tanto, podemos hacer saltos intermedios que tengan una Q menor y de esta manera aumentar el ancho de banda:
Para que una red en T o en π dé un ancho de banda mayor, el valor de la resistencia \(R_L\). Un valor adecuado es el que da la media geométrica entre los dos valores:
\[R_{int} = \sqrt{R_s R_L}\]
Por tanto, las redes en T y en π no sirven para adaptar resistencias de carga y generador ya iguales ya que se hacen saltos de impedancia.
Si queremos poner \(m\) sería:
\[R_m = R_S^{\frac{n-m}{n}} R_L^\frac{m}{n}\]
Reducción del ancho de banda
Para reducir el ancho de banda debemos hacer saltos de impedancia más grandes. Esto se puede conseguir de la siguiente manera:
El valor de \(R_{int} > R\). Ambas combinaciones harán que el ancho de banda sea menor.
Una tercera forma de adaptar las impedancias de carga y fuente es mediante absorción o resonancia de la parte compleja de impedancia. Estas soluciones son de banda muy estrecha.
La absorción consiste en utilizar la parte compleja de la carga o fuente como parte de la red de adaptación. Es decir, si necesitamos un condensador de 10 pF y la carga tiene un condesandor equivalente de 5 pF, solo será necesario poner un condensador de 5 pF ya que los otros 5 pF restantes los pondrá la parte imaginaria de la impedancia de carga.
La otra estrategia es hacer resonar la reactancia de la carga para poder eliminarla a la frecuencia de trabajo. Es decir, si tenemos un condensador en derivación, podemos ponerle un inductor en paralelo para que resuene a la frecuencia de trabajo y haya máxima transferencia de potencia.
También podemos resonar solo una parte de la reactancia y utilizar la otra para conformar la red de adaptación en L:
Adaptación con líneas de transmisión
En las líneas de transmisión tenemos 2 grados de libertad: la impedancia característica y la longitud eléctrica. Jugando con estos valores podemos sintetizar valores de inductancia y capacitancia utilizando transformadores en \(\frac{\lambda}{4}\) y stubs en paralelo. Sin embargo, las líneas de transmisión no sirven para adaptar los casos en los los valores de resistencia de carga y fuente sean diferentes.
2 septiembre 201612 abril 2022 rubensm
Hace algunas semanas compré por Ebay 3 módulos ESP8266 con la esperanza de poder utilizarlos en aplicaciones de IoT. Oí hablar de este módulo en Hackaday y solo leer de lo que era capaz no me lo pensé dos veces:
Procesador con puertos GPIO (General Purpose Input Output)
¡Solo vale 4€! (Actualización: actualmente es posible encontrarlo por ~1.5€)
Por tanto, este chip es capaz de conectarse con la red Wifi de tu casa, guardar o escribir información en una base de datos, hacer las veces de servidor, leer información de sensores, activar otros actuadores (como relés)… ¡Las posibilidades son enormes! Es un pequeñísimo Arduino con Wifi integrado.
Los primeros meses desde la salida del ESP8266 fueron bastante oscuros, ya que no se tenía apenas información, no había un SDK oficial y lo que había estaba en chino.
Pero recientemente la comunidad ESP8266 ha empezado a florecer ofreciendo diferentes vertientes por las que poder configurarlo. Yo me voy a centrar únicamente en la que utiliza el firmware NodeMCU.
Este firmware hace correr un compilador de LUA en el procesador, de manera que podremos escribir los programas que queramos correr en este mismo lenguaje.
Para poder instalar el firmware solo hay que conectar un FTDI (USB-UART converter) a nuestro ESP8266 de la siguiente manera:
Advertir que es obligatorio alimentar el ESP8266 a 3.3V, ya que por lo contrario quemaréis el chip.
Para entrar en modo de escritura de firmware hay que conectar el pin GPIO0 a masa. Yo he utilizado un jumper con que puedo conectar y desconectar fácilmente el pin.
Cuando tengamos este montaje hecho, necesitaremos descargar el grabador del firmware, que lo podemos encontrar también en el GitHub de NodeMCU.
Una vez descargado, abrimos el flasher:
Con lo que nos aperecerá la siguiente aplicación:
Automáticamente cuando conectemos nuestro FTDI cambiará el puerto COM. Si no te sucede asegúrate de tener los drivers para tu FTDI instalados.
Flashear el ESP8266 con NodeMCU es tan sencillo como darle al botón Flash(F), y se pondrá a escribir el firmware en la memoria del procesador. Como se puede ver en la pestaña Config hace cuatro escrituras distintas, siendo la tercera la que más tiempo lleva. Cuando termine el FTDI se desconectará del equipo y aparecerá un símbolo verde abajo en la esquina izquierda. En mi caso dicho símbolo no ha aparecido pero el flasheo ha sido correcto igualmente.
Ahora que ya tenemos el firmware subido, tenemos que cargar nuestro programa. Para ello utilizaremos el programa LUAUploader de Hari Wiguna. Con esta aplicación especialmente desarrollada para el ESP8266 podremos subir nuestros programas de una manera muy sencilla.
Cabe destacar que la corriente que entrega un puerto USB del ordenador no es suficiente para iniciar el módulo de Wi-Fi, así que a partir de este momento es necesario alimentar el ESP8266 con una fuente externa. En mi caso he utilizado dos pilas LR03 (las pequeñas de los mandos) para obtener 3V. Recuerda que no sirven los 5V o el chip se quemará. Cuando conectes la fuente externa desconecta el pin de 3.3V del FTDI para evitar problemas, pero deja el pin de GND para unificar las masas del FTDI y de la fuente externa.
Una vez lo tengamos todo listo podemos pasar a lo divertido. Abrimos el LUAUploader y nos aparecerá la siguiente pantalla:
Para comprobar que el firmware ha sido grabado correctamente iremos a la pestaña “Immediate” y escribiremos un pequeño chunk de prueba (un chunk es cada trozo de código que Lua puede ejecutar)
dummy = 5 print(dummy)
Si el compilador nos devuelve 5, quiere decir que el firmware ha sido escrito correctamente:
Para poder conectarnos a nuestra red Wi-Fi es necesario introducir el siguiente chunk:
ip = wifi.sta.getip() print(ip) --nos devolverá nil wifi.setmode(wifi.STATION) wifi.sta.config("SSID","password") ip = wifi.sta.getip() print(ip) --nos devolverá la IP asignada
Hay veces que después de intentar conectarse a la red Wi-Fi continúa devolviendo nil. Probad a imprimir de nuevo la dirección IP con:
ip = wifi.sta.getip() print(ip)
Ahora, para hacer una pequeña prueba, podemos montar un servidor en el propio ESP8266 con el chunk:
srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive",function(conn,payload) print(payload) conn:send(" Hola Ruben! ") end) conn:on("sent",function(conn) conn:close() end) end)
Una vez subido, si accedemos a la dirección del ESP8266 nos devolverá la página con un heading y el texto “Hola Ruben!” (para poder escribir acentos hay que utilizar los códigos ASCII en HTML y utilizar la columna HTML Número: é = é)