Cómo programar directamente el costoso módulo WiFi ESP8266

El ESP8266 es la respuesta a "Quiero algo a través de Wifi". Sorprendentemente, hay algunos ingenieros y aficionados que no han oído hablar de este chip ni han oído hablar de él, pero no entienden realmente qué es. Básicamente, es la respuesta a todo lo relacionado con IoT a tantos problemas de ingeniería que tanto han atormentado al mundo de los aficionados y los negocios.

El chip es un procesador con RAM integrada, algo de ROM y radio WiFi, y los únicos componentes externos que necesitarás son 4 capacitores, un cristal y un flash externo. ¡Es BARATO, como $ 4 / ea barato! O $ 5 si lo desea en una camilla agradable y conveniente que incluye todos estos artículos. El consumo de energía es razonable (~ 200mA) 1, el rango es loco ~ 300m2 sin equipo direccional y antena de seguimiento de PCB y ~ 4km si quieres ser ridículo.

Una cosa que más gente necesita saber es cómo programar directamente para este chip. Con demasiada frecuencia, los proyectos lo utilizan como una muleta con los comandos AT. Siga leyendo y descubra cómo saludar a un mundo con solo este chip.

Conozca su hardware

Primero, algunos antecedentes. Comencemos con una imagen de él (decapitado por zeptobars) y marcado por swimmmerdude

El procesador funciona a 80 MHz de forma predeterminada, pero puede llegar hasta 160 MHz, tiene ~ 80kB de DRAM (RAM de datos) y ~ 35kB de IRAM (RAM de instrucciones) de alta velocidad .4 Sí, eso significa que usa la arquitectura de Harvard. El IRAM se carga al inicio con todo lo que el usuario quiere mantener en la parte superior del procesador, aunque el procesador puede ejecutar código directamente desde el flash externo a una velocidad más lenta.

Antecedentes del firmware

Por defecto, cuando compras estas buenas placas, muchas de ellas vienen con el firmware “AT”, que es básicamente una herramienta sencilla y realmente ordenada que te permite usar estos dispositivos como simples módems inalámbricos controlados por un puerto serie. Eso es genial y todo, pero es difícil hacer las cosas particularmente complicadas con esto y, como mencioné antes, necesita el uso de un procesador externo.

Dos módulos ESP8266 diferentes

Hay algunos modos que el chip puede lanzar según la configuración de algunos pines GPIO. No hablaremos de "puesta en marcha de SDCard", ya que la mayoría de los aficionados realmente no se han ocupado de ello, pero hablaremos de la actualización y descarga de UART. Además, existe un software de carga remota que tiene algunas revisiones y opciones diferentes, pero lo guardaremos para otra publicación.

Para los dos modos que nos interesan, el procesador espera que GPIO15 sea bajo y GPIO2 sea alto durante el arranque. GPIO0 elige entre los dos modos que discutiremos aquí. Durante el funcionamiento normal, nos gustaría usar una resistencia para aumentar GPIO0.5 Esto hará que el cargador de arranque dentro del ESP8266 lea datos del chip EEPROM en el IRAM del ESP8266 y ejecute nuestro programa. Si configuramos GPIO0 bajo, sin embargo, la ROM de arranque dentro del ESP8266 se hace cargo y comienza a comunicarse a través de la UART. Usando este arranque de ROM podemos conducir nuestros programas a la memoria flash. Una buena forma de usar esto es conectar un interruptor GPIO0 a tierra para que pueda ponerlo en modo de programa a voluntad manteniendo presionado el botón en el interruptor.

Esto es sorprendentemente confiable e incluso admite diferentes velocidades en baudios. Utilizo 454 800 para mi velocidad en baudios, por lo que puedo hacer modificaciones a mis programas y probarlos muy rápidamente. Uno de mis proyectos necesita menos de un segundo para compilarse y unos 8 segundos para grabar. Existen herramientas oficiales para subir firmware "XTCOM", sin embargo a mí personalmente me gusta usar esptool.py6 porque permite automatizar el flash. Además, una vez que se quema el chip, incluso si GPIO0 se conecta lentamente, hará que se ejecute el firmware. Luego, si su código se reinicia, volverá a ingresar automáticamente al lanzador para otro ciclo de programa. Esto significa que puede mantener GPIO0 vinculado a GND mientras desarrolla.

En general, nuestros desarrolladores se ven así:

  • Interruptor de tierra GPIO0 (con resistencia de voltaje VCC)
  • GPIO2 y CH_PD conectados a VCC
  • GPIO15 conectado a tierra
  • Adaptador USB a TTL UART que se comunica con ESP8266 y suministra 5V al controlador de 3.3V que opera el chip
  • Por cierto ... puedes conseguir USB a TTL de nivel UART baratos, ¡échale un vistazo a un dragón eléctrico por menos de $ 1 / cada uno!

    Cadenas de herramientas

    Es un poco difícil comenzar a programar el ESP8266, pero una vez que lo haces, las cosas son muy fáciles. Hay algunas opciones para construir el kit de herramientas en Linux y OSX, además de algunas opciones en Windows. He intentado mantener una lista de cadenas de herramientas en mi archivo Léame ws2812esp8266 lo más actualizada posible. Los detalles sobre la construcción de la cadena de herramientas están más allá del alcance de este método, pero siga esa guía, o este conjunto de herramientas posiblemente más actualizado, y no debería tener problemas. Una vez que haya creado una barra de herramientas y podrá compilar firmware, como mi firmware WS2812ESP8266, podrá procesar el resto de este artículo.

    Espressif fue lo suficientemente amable como para distribuir su SDK libremente.7 ¡Esto fue algo que sorprendió a la comunidad de una buena manera! Esto fue extremadamente generoso y pocas empresas siguieron adelante. El SDK contiene un ejemplo y encabezados para la ROM, así como la biblioteca Espressif. Es importante tener en cuenta que hay una biblioteca comunitaria, pero cada vez que la he usado hasta ahora, no coincide con el mismo nivel de madurez que la biblioteca expresiva. Quizás eso cambie en el futuro.

    Asegúrese de verificar la carpeta "incluir" en su SDK. ¡Esto incluye muchas características asombrosas para ayudarlo a pasar de cero a héroe en poco tiempo!

    Programación: hay una ROM para eso

    Hay algunas cosas a tener en cuenta al programar el ESP8266. Una es que hay muchas características integradas en la ROM que puede aprovechar. Esto significa que no necesita (y no tiene que) volver a implementar MD5 (incluso con hmac), SHA1, comunicarse con el flash externo, SPI, funciones UART, funciones de diapositiva de programa, AES, comandos de memoria, printf, low - herramientas de E / S de nivel, incluso un planificador de eventos en tiempo real y, lo más importante ... ¡802.11!

    La lista completa de funciones que residen en la ROM del chip se puede encontrar en eagle.rom.addr.v6.ld. Sería apropiado que mires allí ahora y veas la maravillosa tierra de lo asombroso que se proporciona fuera de la caja.

    Además de la ROM en el chip, hay más API que se encuentran en la parte superior, para facilitar el uso de esta cosa como un pastel. Podemos ver algunas herramientas de facilitación. Debido a que el ESP8266 puede actuar como un punto de acceso o cliente (o ambos, aunque nunca lo he probado), tiene algunas herramientas que puede usar. Por defecto, el ESP8266 tiene su propio AP único. Es decir, cuando lo ejecuta de forma inmediata e inicia su API, comienza con un modo de alojamiento que ejecuta su propio servidor DHCP. Puede encontrarlo buscando una red wifi que comience con ESP8266.

    Abraza la abstracción

    Si su objetivo es escribir un main y tener su propio bucle principal, eso no sucederá. Si bien puede escribir main, se espera que la API tenga su propio bucle principal. En ese sentido, programar el ESP8266 es similar a la programación de Arduino.

static void ICACHE_FLASH_ATTR procTask(os_event_t *events)
{
    system_os_post(procTaskPrio, 0, 0 );
    printf( "Idle Taskn" );
}


void user_init(void)
{
    system_os_task(procTask, procTaskPrio, procTaskQueue, procTaskQueueLen);
    system_os_post(procTaskPrio, 0, 0 );
}

Si necesita eventos con regularidad, existen funciones de temporización, os_timer_setfn, os_timer_arm, que pueden llamar a una función en un intervalo específico.

Genial para el entorno general, sin embargo, no hemos hablado de cómo hacer nada con esta parte. Hablemos de cómo usar 802.11 con esto. Si tienes miedo, no te culpo. Intentar cambiar la configuración de 802.11 o conectarse a redes, etc. es una propuesta aterradora. ¿Alguna vez ha intentado hacerlo en Linux o Windows mediante programación? Es horrible. ¡Sin embargo, en el ESP8266 es fácil!

Conecte ESP8266 a AP a través de 8 líneas de código

Después de que su ESP8266 se haya iniciado, si algo sucede donde necesita conectarse a una red existente, escriba el siguiente código y sucederá:

const char ssid[32] = "my_home_ssid";
const char password[32] = "my_home_password";

struct station_config stationConf;

wifi_set_opmode( STATION_MODE );
os_memcpy(&stationConf.ssid, ssid, 32);
os_memcpy(&stationConf.password, password, 32);
wifi_station_set_config(&stationConf);
wifi_station_connect();

No, de verdad, es así de fácil. Simplemente se conectará a su AP, extraerá una IP y se sentará allí. Sin conmoción, sin ratón. Además de eso, recordará esta operación y la próxima vez que lo encienda, se conectará inmediatamente. Cuando lo usé con un buen AP, pude conectarlo en aproximadamente 2 segundos después del arranque. Sí, realmente es así de rápido.

Servidor TCP

¿Qué hay de la creación de un servidor TCP, algo que pueda escuchar en un puerto y devolver datos? Ciertamente eso es difícil. No. Aquí hay un ejemplo de servidor HTTP que escribí para él:

//Allocate an "espconn"
pHTTPServer = (struct espconn *)os_zalloc(sizeof(struct espconn));
ets_memset( pHTTPServer, 0, sizeof( struct espconn ) );

//Initialize the ESPConn
espconn_create( pHTTPServer );
pHTTPServer->type = ESPCONN_TCP;
pHTTPServer->state = ESPCONN_NONE;

//Make it a TCP conention.
pHTTPServer->proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp));
pHTTPServer->proto.tcp->local_port = 80;

//"httpserver_connectcb" gets called whenever you get an incoming connetion.
espconn_regist_connectcb(pHTTPServer, server_connectcb);

//Start listening!
espconn_accept(pHTTPServer);

//I don't know what default is, but I always set this.
espconn_regist_time(pHTTPServer, 15, 0);

¿Qué hay de recibir las comunicaciones? Así es como lo haces:

//This function gets called whenever
void ICACHE_FLASH_ATTR server_connectcb(void *arg)
{
    int i;
    struct espconn *pespconn = (struct espconn *)arg;

    //espconn's have a extra flag you can associate extra information with a connection.
    pespconn->reverse = my_http;

    //Let's register a few callbacks, for when data is received or a disconnect happens.
    espconn_regist_recvcb( pespconn, http_recvcb );
    espconn_regist_disconcb( pespconn, http_disconnetcb );
}

Aquí lo tienes. ¿Enviar datos? espconn_sent. ¿Cerrar enlace? espconn_disconnect. Siempre que reciba datos, se transmitirán mediante la revocación del solicitante.

Probablemente hayas notado que utilicé la directiva ICACHE_FLASH_ATTR, ¿verdad? Bueno, recuerda, ¿cómo es que no tenemos mucho IRAM? Al hacerlo, la función seguirá parpadeando. Las instrucciones se almacenan en caché, pero no tardan demasiado en cargarse desde la memoria flash.

Trabajando con GPIO

El último punto clave que abordaré en este artículo es GPIO. Los pines tienen tensión interna opcional (GPIO0..15) y resistencias de tensión (GPIO16). Todos se pueden configurar como entradas o salidas. Hay algunas funciones útiles para lidiar con los GPIO. Deberá llamar a gpio_init (...) algunas son macros como PIN_PULLDWN_DIS (...), PIN_PULLUP_EN (...) y otras que se encuentran en el SDK. Puede configurar las entradas / salidas con gpio_output_set. Muchos de los GPIO pueden tener múltiples funciones, algunas de estas funciones están habilitadas de forma predeterminada, por lo que, al inicio, no puede hacer nada con GPIO12 y GPIO14 antes de que se seleccionen como GPIO

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12); 
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14); 

Aprender a programar el ESP8266 es como aprender a programar en cualquier otro entorno. Los archivos de encabezado proporcionados con el SDK son de gran ayuda cuando intenta averiguar qué es o si hay alguna manera fácil de hacer lo que desea. Hasta ahora, la hoja de datos no me ha ayudado mucho, sin embargo, Google es, con mucho, la mejor herramienta para encontrar información sobre cómo hacer algo con esta parte.

La comunidad

Debido a que esta parte realmente es la respuesta a tantos problemas, ¡ha capturado a la comunidad de aficionados! ¡Foros como esp8266.com y el par ruso esp8266.ru están llenos de personas que intentan usar esta parte para cosas increíbles! Están llenos de personas que han aprendido unos de otros sobre cómo aprovechar esta pequeña parte.

Recursos

[1] Wiki general para obtener mucha información sobre este chip, como características eléctricas, etc. Gran parte de esto se traduce de las hojas de datos chinas. https://nurdspace.nl/ESP8266

[2] Pruebas de distancia que realicé en el ESP8266. https://www.youtube.com/watch?v=7BYdZ_24yg0

[3] La publicación de reddit donde swimmmerdude adivinó cómo se ve el chip caducado http://www.reddit.com/r/electronics/comments/2jq22l/esp8266_wifiserial_chip_decapped_its_actually/

[4] Mapa de memoria para el espacio de direcciones, diseño SPI Flash, registros que incluyen IOMUX: https://github.com/esp8266/esp8266-wiki/wiki/Memory-Map

[5] Discusión de los modos iniciales del ESP8266: http://www.esp8266.com/viewtopic.php?f=6&t=33

[6] El sitio web esptool.py que contiene información sobre la carga de programas al ESP8266 y esquemas de cableado alternativos que pueden ayudar a flashear. https://github.com/themadinventor/esptool/

[7] El correo expreso oficial para ESP SDK 0.9.5 http://bbs.espressif.com/viewtopic.php?f=5&t=154

  • Mike Szczys dice:

    ¡Esto es genial! Gracias a [cnlohr] para escribir el cartel de invitado. Hemos visto a mucha gente usarlos con comandos AT y un microcontrolador externo, pero realmente quería una guía completa para la programación directa. ¡Bien hecho!

    • davedarko dice:

      Leí "de: cnlohr" y pensé "¡qué genial es eso!" 🙂 Sin embargo, todavía no he jugado con los ESP, tengo que planificar algo de tiempo para ello.

      • davedarko dice:

        ¿Candidato a Omnibus 2015?

    • hojalata dice:

      ¿Cómo puedo conectar más sensor de vibración con esp8266-12? Y por favor, dame algunas instrucciones de programación sobre el módulo wifi esp8266-12.

  • goebish dice:

    ¡Muchas gracias por este artículo, eso es exactamente lo que espero encontrar en HAD!

    • Matt Freund dice:

      Este es literalmente el mejor artículo que he escrito en La-Tecnologia.

      Charles, como de costumbre, lo golpea desde el parque. Bien hecho.

  • Mathieu Stephan dice:

    ¡Buen artículo!
    Lástima que no se mencionó mi entrada: http://www.limpkin.fr/index.php?post/2014/12/07/First-Steps-with-the-ESP8266-03-Development-Board 🙂

    • cnlohr dice:

      No sabía esto en el momento de escribir este artículo, sin embargo, todavía no estoy seguro de cómo lo pondría. Quizás simplemente agregue "Y aquí hay algunos proyectos ..."

  • jcmvbkbc dice:

    > y, lo más importante ... 802.11!
    802.11 está en realidad en la biblioteca SDK libnet80211.a y va en FLASH.

    • cnlohr dice:

      Ese es un punto decente. Muchas de las funciones más avanzadas son ultrarrápidas. No estoy seguro de si vale la pena explicar la distinción ...

  • Me dice:

    "Sorprendentemente, hay algunos ingenieros y aficionados que no han oído hablar de este chip".

    Para los aficionados esto es sorprendente. Para ingenieros ... no tanto.

    Los ingenieros que diseñan productos para que las empresas los produzcan y vendan en masa deben abordar la certificación FCC o equivalente de su país. Este es un proceso costoso y difícil. Si ya lo hacen, probablemente ya tengan alguna empresa que les venda chips que suelden directamente a sus PCB, y al firmar los NDA, ya tienen la documentación oficial completa. Probablemente no estén interesados ​​en módulos de pasatiempos.

    No, ni siquiera importa si el módulo ya ha sido aprobado. ¿Fueron siquiera aprobados? Una vez más, realmente no importa. Colóquelo en un producto que planea producir y vender, y debe obtener la certificación nuevamente como un todo.

    La RF es algo de lujo y el módulo podría reaccionar con su bus de alimentación u otros elementos, tal vez incluso con partes metálicas de su caja. Esto podría hacer que irradie fuera de su frecuencia deseada o enfocar energía en una dirección, excediendo así los límites legales para operaciones sin licencia en esa dirección.

    Como aficionado, la regla es cuidar con prudencia de sus medios para asegurarse de que no transmite fuera de sus límites o peor ... interfiera con nadie. Como profesional el listón es mucho más alto y las cosas no son tan fáciles.

    • Capitán Cumbria dice:

      La doble aprobación es una gran estafa maloliente.

      • Leithoa dice:

        Si y no. Es solo una protección responsable para los OEM, por lo que cuando su producto se atasca en otro y no funciona, no es culpa suya. Luego, como se mencionó, existe la extraña posibilidad de que una fuente de alimentación o la geometría de la caja creen condiciones que violen las reglas del espectro o EMI. Ninguna empresa quiere ser aquella cuyo producto desactive los marcapasos cerrados.

        • BradN dice:

          Si eso fuera realmente un gran problema, no tendríamos adaptadores wifi USB, todos serían específicos para el chasis del sistema al que están dirigidos.

          • licenciado en Derecho dice:

            cuando traté de comprar una tarjeta de computadora para mi computadora portátil (lenovo, suspiro; son notorios por la lista blanca que usan) tuve que disparar una biografía pirateada que eliminó la lista blanca. ¡muy molesto! Cuando le pregunta a Lenovo por qué no le permiten instalar su propia tarjeta pcie wifi, su respuesta es eficaz: "no podemos garantizar la clase b de la FCC" o cualquier tontería por el estilo. claramente es una estafa. intentan encerrarte en sus propias cartas. Curiosamente, su tarjeta ES una tarjeta de Intel central, como la que compré en mi tienda local. pero algunos identificadores son diferentes. la tarjeta es 100% idéntica, de lo contrario.

            lenovo miente. No volveré a comprar Lenovo (por varias razones). pero esto de la lista blanca es realmente tan anti-consumidor. HP también juega el mismo juego, entre otras cosas.

      • BobC dice:

        De hecho, la FCC permite que cierto módulo se transmita a un dispositivo usando ese módulo, siempre que el dispositivo no agregue nada, ni siquiera un cable o una nueva antena, a la ruta de RF. Por lo tanto, solo se aplica a módulos con una antena incorporada o exactamente el mismo cable y antena externa con los que se certificó como se certificó (proporcionado como un kit certificado del proveedor modular).

        En la UE se necesita una recertificación completa de los dispositivos, modulares o no. Sin embargo, la garantía del dispositivo de nivel superior se simplifica (y mucho más rápido) si el módulo de RF ya está certificado por separado. Creo que el razonamiento es el simple hecho de que muchos módulos se utilizan mal fácilmente. Por lo tanto, los módulos siguen siendo el camino a seguir en la UE para los subsistemas de RF que se espera que evolucionen rápidamente. El efecto neto en la UE es fomentar el uso de antenas externas personalizadas (aunque sí se hace un certificado de alto nivel).

    • Alex T. dice:

      No necesita obtener una segunda aprobación si obtiene la aprobación modular la primera vez y es el único transmisor intencional en su producto.

  • Ingeniero de Backwoods dice:

    Gracias. ¡Planeo conseguir algunos de estos ahora!

  • justas dice:

    ¡Buen articulo!

    La parte FFC para ingenieros es algo que también me interesa mucho. ¿Existe alguna empresa comercial que haya lanzado un producto con un chip Wi-Fi Espressif?

    • Nuevo dice:

      Si es así, * ciertamente * no lo anunciarán, simplemente lo descubrirán por casualidad. Lo último que mostraría una empresa legítima es que puede estar utilizando un módulo que probablemente no haya sido certificado por la FCC. De hecho, si lo hubieran usado, no habría sido el menor, pero me hubiera sorprendido que el pasivo hubiera sido enterrado bajo un bloque negro de epoxi y la suerte lo hubiera encontrado primero.

      • NeAHacker dice:

        La certificación FCC y CE se realiza a nivel de "producto" y no a nivel modular. Los módulos no necesitan estar certificados en sí mismos, solo el producto final en el que se utilizan.

        • spuzzdawg dice:

          Muchos módulos inalámbricos están certificados a nivel modular, es muy común. Como se mencionó muchas veces en los comentarios anteriores, en algunos casos es posible utilizar la certificación modular para todo el dispositivo.

    • Dave dice:

      ¿Cuenta el Arduino D1?

  • hemalchevli dice:

    Gracias [cnlohr] para escribir un artículo completo tan maravilloso. ¡Prestigio!

  • Markus Gritsch dice:

    ¿Por qué 454 800 baudios y no los más estándar 460800?

    • Robar dice:

      tipo de cambio internacional o quizás inflación?

      • licenciado en Derecho dice:

        ese es el equivalente en bitcoins, supongo (risas).

    • Cuenta dice:

      454 800 bien tolera 460800. Probablemente sea lo más cercano que podría llegar el hardware.

  • jlbrian7 dice:

    Gracias, ¡fue una gran publicación!

  • baobrien dice:

    Hola cnlohr: ¿Usaste el 'esp_iot_rtos_sdk' basado en FreeRTOS?

  • Ben dice:

    Orderedus ordenó el mío hace un mes, comencé a leer algunos documentos, pero esta es la guía inicial definitiva, marcada. Gran trabajo

  • Daniel dice:

    ¡Gracias por la gran edición! Eso es exactamente lo que necesitaba para recibir notificaciones de mis dispositivos "tontos" actuales. Es decir, cuando mi lavadora y secadora estén terminadas, cuál es la temperatura actual de mi refrigerador / congelador, etc.

    • Ren dice:

      ¡Estas son cosas que yo también quiero hacer! Pero soy demasiado nuevo para lograr esto basándome en este resumen. Necesitará un tutorial más básico. Supongo que eso va a terminar porque va a ganar popularidad. Una cosa que quiero hacer es verificar cada minuto si algún LED está encendido o apagado y notificar el estado del LED a través de wifi.

      • Chris Crawford (@cacrawf) dice:

        Consulte el intérprete de Lua para ESP8266. Si todo lo que hace es leer / escribir algunos pines y luego hacer algunas llamadas en línea, es mucho más arduo y más fácil de acceder. https://github.com/nodemcu/nodemcu-firmware

        • 8N1 dice:

          Estar de acuerdo. nodemcu es increíble y realmente fácil de usar una vez que comienzas. He estado jugando mucho con él las últimas semanas y estoy muy impresionado con el tiempo que se le ocurrió con muy poco esfuerzo de codificación y lo estable que es.
          Asegúrese de consultar los ejemplos proporcionados en el Rap para comenzar.
          Entre otras cosas, utilicé ESPlorer para todas mis pruebas con nodemcu y, aunque es un pequeño buggy (ESPlorer) aquí y allá, es bastante divertido de jugar.

          • Christopher Hiller dice:

            Tuve un buen éxito con NodeMCU y ESPlorer. Utilice esptool para encender el firmware y ponerse a trabajar. ¡Mira, no hay microcontrolador externo!

  • RoboMonkey dice:

    barato, inalámbrico y GPIO ....

    ¡Me tenías barato!

  • Shannon dice:

    Esa es una buena edición. Tenía la intención de jugar con algunos de estos por un tiempo. Tal vez haga algunos de esos sensores de presencia para la automatización de mi hogar.

    Además, al igual que para su información con alguien en HaD, sus hojas de ruta relativas para sus citas no funcionan tan bien desde la página de inicio del blog.

    • Brian Benchoff dice:

      > Además, al igual que para su información con alguien en HaD, los enlaces relativos a sus citas no funcionan tan bien desde la página de inicio del blog.

      yarg. Eso es un poco malo. La buena noticia es que solo tuve que arreglar dos enlaces.

      • Caco dice:

        La mayoría de los enlaces entre comillas tampoco funcionan 🙂

      • Shannon dice:

        🙂

  • problema dice:

    ¿Alguien trabaja con la pila IPv6 en estos dispositivos?

    • Mike Szczys dice:

      Interesante pregunta. ¿Es necesario? Pensé que estos estarían en su mayoría detrás de un enrutador, por lo que IPv4 en LAN debería ser bueno, ¿verdad? Quizás estoy confundido acerca de lo que realmente hace la v6.

      • Shannon dice:

        Hay redes IPv6, con conexiones de red IPv6.
        Para una verdadera Internet de las cosas, sería bueno tener todas las cosas en IPv6, todos pueden tener su propia dirección IP que uno puede (no debería) obtener de Internet.

        • problema dice:

          Eso es correcto, esa es la idea. Además, elimina completamente a NAT de la ecuación si decide que su proyecto de IoT debe llegar a un servidor en el público Internet.

          • Robar dice:

            ¿Qué podría salir mal con esa idea ???

          • Quinto dice:

            @ Robar
            Lo mismo que sucedió antes de que NAT se convirtiera en algo que hacían todos los enrutadores domésticos; usted es responsable de mantener su sistema seguro. La industria usaba cortafuegos, al igual que los ordenadores domésticos. Los dispositivos de IoT que se conectan a los AP en la naturaleza deben confirmar de alguna manera su conexión antes de enviar o recibir datos confidenciales. Cómo lo haga depende de usted, pero asumir que su AP es seguro debido a una contraseña y NAT es bastante tonto; Si desea obtener datos del exterior, entonces tiene un puerto abierto a Internet en general y ese puerto debe estar protegido, ya sea IPv4 o IPv6.

        • Quinto dice:

          Mi red interna, detrás de un módem de cable alquilado (lo sé, lo sé) que hace NAT, sigue siendo IPv4 e IPv6. ¿Es diferente? Realmente no; No me sorprendería si el módem de cable hace NAT a IPv6 y asigna las mismas direcciones a todos con esa variedad de módem. Asegura que cuando me conecto a un sitio IPv6, yo (debería, sin un NAT extraño en la combinación de módem / enrutador) interactuar sin un tubo de IPv6 a IPv4.

          Pero cuantos más empecemos a cambiar y exijamos que los grandes proveedores cambien, mejor estaremos.

      • problema dice:

        Si solo le importa la conectividad LAN, entonces sí, IPv4 puede ser adecuado para su proyecto de IoT / red de sensores / etc. IPv6 permite la conectividad de extremo a extremo y devuelve a los enrutadores a su tarea adecuada: decidir a dónde van los paquetes, no engañar al origen / destino del paquete como con NAT / PAT.

  • Sandman dice:

    ¿Alguien sabe lo que hay dentro de la ROM? Parece que puede hacer firmware actualizado ... y tiene una conexión a Internet ... ¿así que el malware puede ser un problema? 😉

    • localroger dice:

      Necesita sacar un pin para actualizar el firmware, por lo que necesita acceso físico.

  • Ralph Doncaster (Nerdo Ralph) dice:

    Escritura útil. Me da un incentivo para organizar la disposición de la cadena de herramientas mientras espero que mi módulo 246c saque el barco lento de China.
    http://www.aliexpress.com/item/Free-Shipping-ESP8266-remote-serial-Port-WIFI-wireless-module-through-walls-Wang/32262360397.html

    • Colin Dunstan dice:

      Acordado. Edición muy útil. Ahora también puede descargar kits de herramientas listos para usar.
      Para el kit de herramientas de Linux Arduino IDE - ESP8266, hay un ejemplo (no he probado este) en "Programación de ESP8266-EVB con Arduino IDE" de Olimex Ltd "https://olimex.wordpress.com/2015/03/ 31 / programación-esp8266-evb-con-arduino-ide / ”
      Para el kit de herramientas equivalente de Windows (solo 64 bits), lo descargué y encendí en el Foro de la comunidad ESP8266 - "Aquí se explica cómo instalar sin reemplazar su IDE existente" en http://www.esp8266.com/viewtopic.php? f = 26 y t = 2164
      Trabajó por primera vez con Arduino IDE 1.6.2.

  • Joakim L. Christiansen dice:

    También puede programarlo en Lua si no necesita consumir demasiada RAM.
    https://github.com/nodemcu/nodemcu-firmware
    Eso funciona muy bien para cosas simples. Pero gracias por este artículo, ¡es el siguiente paso para mí!

  • Ken, Toronto dice:

    De hecho, esta es una buena escritura.

    He estado jugando con este gran chip desde el otoño pasado. A $ 5 por tabla, ¿por qué no? La documentación aún está incompleta, pero la comunidad en general (como aquí) ha avanzado para llenar los vacíos. Tuve algo de éxito en el desarrollo de un firmware personalizado con una cadena de herramientas de Windows. ¡Gran diversión!

    También trabajé con Spark Core y pronto, Spark Photon: parecen ser los "Arduinos" de los controladores habilitados para wifi, y Spark proporcionó muchas herramientas y soporte, por lo que podrían ser un punto de partida preferido. para aquellos con menos experiencia.

  • Meizhu dice:

    Es posible que ni siquiera necesite el interruptor si usa esptool.py. Lector README:

    > esptool utiliza la línea de estado de los módems RTS y DTR para ingresar automáticamente al cargador de arranque. Conecte RTS a CH_PD (que se usa como una restauración activa baja) y DTR a GPIO0.

    • Markus Gritsch dice:

      No lo sabía. ¡Gracias por esta sugerencia!

    • Ralph Doncaster dice:

      Entonces, ¿hay alguna diferencia entre reset y ch_PD?

      • Markus Gritsch dice:

        Intenté Restablecer en lugar de CH_PD, y funciona bien.

  • Brendan Sleight dice:

    Excelente publicación de invitado, necesitamos más de estos, excelentes enlaces.

  • Robar dice:

    ¡¡¡Artículo asombroso e informativo !!! Bellamente hecho, ¡TENGO!

  • Peter Bennett dice:

    Configuré una Raspberry Pi 2 con el compilador cruzado, eclipse, esptool, etc. Y empató la serie ... Broad subió al ESP-12 y se fue.

    • Kirchnet dice:

      Me preguntaba si eso funcionaría mientras leo el artículo. ¿Publicaste un informe sobre esto en algún lugar de Internet? Para aquellos de nosotros que somos nuevos en la cadena de herramientas ESP.

    • Roger Guess (@RogerGuess) dice:

      También me encantaría escuchar lo que hiciste. El Pi es la única caja de Linux en mi casa (oculta la cara).

  • Markus Gritsch dice:

    > Los pines tienen resistencias pull-up y pull-down internas opcionales.

    Desafortunadamente es solo o / o:
    Los GPIO 0-15 solo tienen retiros disponibles
    GPIO16 solo tiene scroll disponible

    http://www.esp8266.com/viewtopic.php?f=13&t=1613#p9687

  • Myndale dice:

    ¡Gracias! Verificaría HAD mucho más a menudo si hubiera más artículos como este.

  • Stahl dice:

    ¿Por qué GPIO15 debería estar vinculado a GND?

    • j0z0r dice:

      Si no lo hace, el dispositivo simplemente se bloquea en el gestor de arranque.

  • W dice:

    Genial, gracias. No me di cuenta de lo abiertos y accesibles que eran estos chips, solo los miré poco después del lanzamiento cuando todo salió un poco desordenado.

  • Rob2 dice:

    No olvide las actualizaciones actuales como otra opción para reprogramar. El SDK viene con un ejemplo que usa servidores Espressif, pero esto se puede modificar fácilmente para actualizar desde un servidor local sin scripts especiales.

    • Maxi dice:

      Rob2, Hola, ¿sabes cómo utilizo la actualización "Over the air"? Mi ESP, es ESP 12 de ai-thinker, sdk 0.9.2 y no puedo enviarle comandos AT ... no responderá. Funciona como un punto de acceso y puedo conectarme con la aplicación IOTManager de Android.
      ¡Gracias!
      Max

      • cnlohr dice:

        Desafortunadamente, no sé mucho acerca de las cosas normales de las OTA ... Yo siempre lo hice por mi cuenta. Además, siempre obtendría más ESP en caso de duda. Vea si le pasó algo desafortunado.

  • cosecha dice:

    Me gustaría usar uno de estos en el arrancador remoto de mi automóvil para poder quitar el automóvil de mi teléfono. Quiero usar el firmware predeterminado con los comandos AT y que un arduino mini sea el cerebro. Me pregunto cómo se agotará esto en la batería. Es posible que un automóvil no conduzca durante una semana.

    ¿Estas cosas tienen sueño por defecto?

    • F dice:

      Mi coche tenía un interruptor roto de la luz en el espejo vanidoso de la visera del pasajero. La luz estuvo continuamente activa durante unos tres años. Conduzco el coche sólo una o dos veces por semana. Incluso en temperaturas bajo cero, nunca tuve problemas para arrancar el coche después de haberlo dejado solo durante más de una semana. ¿Le ayuda esto a comprender la capacidad de la batería de un automóvil?

      • dolares dice:

        ¡Lo hace!

        Investigué un poco, probé mi esp8266 para diseñar 70mA yo mismo (probablemente pueda ahorrar algunos mA quitando el pequeño LED) professional mini es probablemente alrededor de 50mA, probablemente pueda usar el modo de suspensión e interrumpirlo para despertar cuando hay un cliente en esp8266 ( funcionará en modo AP).

        En la batería de un automóvil encontré información de que es de 44 Ah, pero eso es de 12, por lo que para una carga de 5 V debería tener suficiente para mi configuración.

        También pensé en agregar un interruptor a toda la configuración para encenderlo solo cuando hace frío y apagar todo el sistema durante los meses de verano.

        • WW Heisenberg dice:

          No apueste por eso. La mayoría de los autos tienen mucho, por sí solos cuando la llave está apagada por ahora. Y para ahorrar dinero, los fabricantes de equipos originales utilizan las baterías de menor capacidad que pueden soportar, utilizando solo las cosas que planearon. Tengo un PIC y un pequeño relé de señal funcionando sin 7805 y si no los desconecto, mi batería se agota después de unos días.

          • Tore Lund dice:

            7805 como suministro conectado constante en un automóvil solo funciona si coloca su dispositivo en modo de suspensión cuando no está conducido. Hoy usaría un convertidor POLOLU 300A o 500mA 5v o 3.3v.

            200mA debería ser el uso máximo y tendrá (supongo) varios niveles de apagado y escuchando paquetes de activación mágicos.

  • Nuevo dice:

    Este es un gran material, por favor produzca más artículos como este que traten de profundizar en nuevas plataformas y sistemas, ¡siempre es una lectura interesante! cnlohr siempre parece impresionarme de una forma u otra, ¡sigue haciendo lo que haces, hombre!

    • F dice:

      La mejor parte es la falta de italianos que reclamen tributo por su "propiedad intelectual"

      • cnlohr dice:

        No sé si recibo tu comentario ... ¿Una referencia a Arduino?

  • steves dice:

    Recientemente publiqué un artículo introductorio de ESP8266 también en mi blog: http://telecnatron.com/articles/Getting-Started-With-The-ESP8266-WIFI-Microcontroller/index.html

    Se ocupa más del lado incipiente de las cosas: cableado del módulo, probándolo, C SDK, entorno NodeMCU. Las personas que deseen comenzar pueden encontrarlo útil cuando lo lean junto con el artículo presentado aquí, especialmente aquellos que acaban de recibir el primer módulo en el correo.

    • F dice:

      gracias por tu publicación, tu página es muy, muy buena, la guardo en favoritos para referencia futura, muchas cosas buenas

      Creo que lo único que haría de otra manera es usar m4 en lugar de cpp, pero de gustibus non est disputandem.

    • cnlohr dice:

      Este es un artículo bastante bueno. Si lo notaba durante la redacción, lo incluiría en una nota al pie de la letra. hasta.

  • Marek dice:

    ¿Cinco dólares? ¡En Aliexpress puedes comprar ESP8266 por menos de $ 3!

    • F dice:

      Bueno, ciertamente puedes pagar $ 3 a aliexpress por una cosa, pero si realmente obtendrás lo que pagaste es otra cuestión. Puede obtener ESP8266, puede obtener una funda para iPhone, puede obtener un encendedor de butano, puede obtener una caja de cacahuetes de espuma de estireno, y eso es seguro que no obtendrá su dinero.

      • Marek dice:

        Compré muchos de estos módulos en AE, en varias versiones, de varios proveedores. Siempre recibí lo que pedí. También compré otros módulos directamente desde China (por ejemplo, generadores DRA818V o DDS) sin ningún problema.
        Tus proveedores de eBay también obtienen sus productos de Aliexpress, ¿sabes?

        • Greenaum dice:

          Sí, pero los chicos de Ebay son fáciles de demandar. Y Ebay ha incorporado malas palabras, por lo que cuando se queja de sus espumas de estireno, eso realmente le importa al proveedor. Eso es básicamente por lo que pagas. El vendedor de Ebay se toma todas las molestias de encontrar un proveedor chino de productos electrónicos honesto. O al menos consistente.

          Por dos dólares, y tal vez enviar sus acciones desde su propio país, vale la pena. Si tuviera que comprar 10,000, entonces podría ser otro.

          • Marek dice:

            Bueno, ahora veo por qué hay otra perspectiva.
            No puedo imaginarme enjuiciar a nadie por no entregar algunas docenas de cosas por unos pocos dólares. Un caso probablemente se detendría aquí en Polonia de todos modos. Por lo tanto, prefiero comprar directamente en China que pagar el doble a un proveedor local.

          • Vejestorio dice:

            Usted sabe que los vendedores chinos de eBay simplemente tiran la cuenta y crean una nueva si tiene un mal representante, ¿verdad? Además, muchos vendedores registrados en EE. UU./ UE solo tienen un buzón en EE. UU./ UE y operan desde China. No sé si puede procesar una publicación con algún resultado.

  • marcaérico dice:

    ¡Quién! No me di cuenta de que estas cosas acumulan tanta memoria.

  • Xykon42 dice:

    ¡También hay un puerto para micrófono que me encantaría probar! Pero todavía se encuentra en un desarrollo temprano y no parece estar progresando muy rápido en la actualidad.
    https://github.com/micropython/micropython/tree/master/esp8266

    • ru4mj12 (@ ru4mj12) dice:

      ¿Sabes qué sabor de micropitón usaron para el puerto esp8266?

      ¿Python incrustado en búho?
      https://www.usenix.org/conference/usenixfederatedconferencesweek/design-and-implementation-embedded-python-run-time-system

      Python-en-chip (p14p)?
      https://code.google.com/p/python-on-a-chip/

      MicroPython Kickstarter?
      https://www.kickstarter.com/projects/214379695/micro-python-python-for-microcontrollers

      • Markus Gritsch dice:

        El de Kickstarter, como sugeriría el nombre MicroPython.

  • mziwisky dice:

    Un poco de autopromoción descarada aquí: armé un software aislado para el ESP8266 usando Vagrant. Facilita la configuración de su cadena de herramientas y guarda todo en una máquina virtual para no contaminar su entorno nativo con basura adicional. Míralo: https://github.com/mziwisky/esp8266-dev

  • bcatalinux dice:

    También hay una placa de desarrollo para esp201.

    http://myesp8266.blogspot.ro/2015/03/other-interesting-board-is-this-board.html

  • jilokixom dice:

    Hola
    ¿Es posible escribir un pequeño repetidor en línea a partir de esto?
    La malla es muy buena, pero las distancias largas no son fáciles. Hoy en día, la red wifi es posible para trabajar con teléfonos móviles, pero el problema está muy extendido.

    • cnlohr dice:

      Aunque nunca lo he usado, hay un modo "Ambos" en el que el dispositivo se configura como una estación AP + ... ¿Entonces, tal vez?

  • slaff2 (@ slaff2) dice:

    Y otra guía de programación más detallada para ESP8266 con buenos trucos:
    https://blog.attachix.com/programming-for-esp8266-part-1/
    https://blog.attachix.com/programming-for-esp8266-part-2/

  • Roger Guess (@RogerGuess) dice:

    Creo que cometí un error al ordenar esp8266 incorrecto. Lo tengo conectado a través de USB a serie y estoy usando Termite 3.1 a la terminal. Cuando envío AT + RST, ordena eoe y luego dice "ERROR". Versión más nueva, diferente, no estoy seguro. Cuando corro un ciclo, se hace eco "[Vendor:www.ai-thinker.com Version:0.9.2.4]”. Ordenado por Amazon.

    ¿Pueden todos compartir qué / dónde los compran?

    • Roger Guess (@RogerGuess) dice:

      ¡Ah! Encontré la solución. Fue un problema final y no agregó CR-LF:

      http://stackoverflow.com/a/27917455/1132773

      (cualquiera de ustedes en stackoverflow, vote por su respuesta)

  • Tim Caswell dice:

    ¿Cómo se utilizan las funciones integradas en la ROM? Por ejemplo, quiero tomar una cadena C y calcular el SHA1. ¿Hay títulos en alguna parte que expliquen cómo usarlos? ¿Cómo usamos las direcciones al vincular?

    • cnlohr dice:

      En el interior, se utilizan muchas funciones o se explican por sí mismas ... Desafortunadamente para otros, como MD5, tienes que buscar en Google y probar ... Nunca probé el SHA1, pero invento algunos títulos que coinciden con lo que suele hacer la gente eso, y probablemente sea correcto. Hmmmm, tal vez alguien tenga que iniciar un proyecto para crear un encabezado para las funciones de rom ...

      • Tim Caswell dice:

        Sí, descubrí algunas de las características y comencé un archivo de título https://github.com/nodemcu/nodemcu-firmware/blob/dev/app/include/rom.h

  • Jacobo dice:

    ¿Puedo usar 8051 IC para hacer esto?

    • Mike Massen dice:

      Ofrezca usar los productos Tool-Stick de sílabas que son compatibles con 8051, puede usar CUALQUIER procesador siempre que tenga o pueda tener un flujo de datos en serie o incluso una sesión final en la que pretenda que su procesador es una excelente manera de Enseñe a los niños qué es un microprocesador y por qué es tan poderoso para todo tipo de tareas.
      Enlaces de Silabs aquí: http://www.silabs.com/products/mcu/Pages/ToolStick.aspx

      • cnlohr dice:

        Realmente no entiendo lo que esto significaría para el 8051. Aunque se pueden usar juntos, no entiendo por qué no harías que el ESP hiciera todo lo que hizo el 8051.

        • Mike Massen dice:

          cnlohr preguntó: "¿Realmente no entiendo qué significaría esto para el 8051?" En respuesta a mi publicación, que respondió a Jack.
          El 8051 es un procesador simple y económico y la barra de herramientas silabs es un producto que se basa en las partes generales del 8051 con muchas más opciones de E / S, como cross.
          cnlohr preguntó además: "No entiendo por qué no harías que el ESP haga todo lo que hizo el 8051". solo una cuestión de si la tarea fue simple y si tuvo suficiente tiempo.

          Hay algunos problemas vagos al usar el procesador ESP integrado porque el wifi necesita una anulación del programa y, por lo tanto, elimina el procesamiento de su programa integrado. En general, es mucho más rápido no estropear ninguna de las estructuras internas, asumiendo que los desarrolladores han documentado bien la CPU * su interfaz s / w, etc.en el ESP y, en cualquier caso, no necesariamente pueden garantizar o incluso garantizar un proceso profesional porque su La aplicación debe funcionar junto con, sin embargo, el sistema operativo ESP está configurado. Si se mejorara la documentación, dicha resistencia disminuiría.

          Los ingenieros tienden a querer evitar estos problemas oscuros, ya que también pueden afectar la IP y también si ya está completamente familiarizado con otro procesador como 8051, 68HC11, etc., entonces el tiempo de comercialización es mucho menor que tener que interconectar su programa con el procesador ESP integrado y, en cualquier caso, depende del tamaño de su conjunto de datos, que puede incluir una gran generación de ascii o html. OTOH si la aplicación es simple y no es parte de un proceso de desarrollo empresarial que involucra a un público con riesgo de capital, entonces ciertamente explora, pero cuando un inversionista tiene capital en riesgo, entonces como puente a la prueba de concepto es económicamente más factible. (tiempo y $) para interactuar con un procesador existente y especialmente si el ya tiene stock y experiencias de residentes, etc. 🙂

  • manzana dice:

    Hola cnlohr, muchas gracias por tu artículo. Me relajo gracias por tu trabajo. Tengo una pregunta. ¿Todas las funciones SPI, UART, GPIO y otras están precargadas en la ROM? entonces, ¿dónde se carga nuestro programa?
    ¿Podría explicarme cómo funciona la memoria ROM y del programa?

  • John dice:

    Quiero conectar el módulo wifi esp8266 a arduino r3. Y usando esto, quiero transmitir datos a un teléfono celular. ¿Cómo se puede hacer esto?

  • Amol dice:

    Quiero que esp8266 acceda al wifi doméstico ingresando la contraseña wifi manualmente, no mediante la programación de Cox. Estoy desarrollando un programa para comunicarme con esp8266. Así que, por favor, ayúdeme sobre cómo puedo ingresar una contraseña wifi de acuerdo con mi programa.

    • Oso polar dice:

      Lo básico sería:

      Inícielo en modo AP, sirva una página (o escuche una conexión de atención) solicitando configuraciones de wifi, guárdelas en flash. Una vez ingresados ​​los ajustes, cambie al modo de estación e intente conectarse. Si tiene éxito, quédese como estación y use la configuración guardada en el futuro. Si falla una conexión, elimine la configuración guardada y vuelva al modo AP para servir una página (o socket) que solicita nuevos certificados.

  • Amol P. dice:

    ¡Felicitaciones por este editorial @cnlohr! ¡Realmente gracias por sus esfuerzos! Hola.

  • SASUKE dice:

    ¿Alguien puede explicar cómo obtener la intensidad de la señal wifi como entrada en mi programa esp8266 usando el comando AT + CWLAP?
    Cómo usar el resultado en el monitor serial como entrada en mi programa en arduino IDE

  • Rohit dice:

    Hola cnlohr,
    Estoy trabajando en Arduino y ESP8266, quiero configurar esp8266 con ESP-SDK-API, entonces, ¿cuál debería ser el procedimiento?
    y no quiero usar un comando AT

    • cnlohr dice:

      Lea las instrucciones en esp open sdk en github.

  • Donald J. Murray dice:

    Recomendaría conseguir aquellos con protectores de metal, ya que probablemente sean de la fcc. Además, ¿programarlos además de usarlos como simples módulos espía wifi viola el certificado fcc? Esto es una gran cosa si está haciendo un producto comercial.

  • Ayush Chand dice:

    No veo controladores para el ADC en esp8266 NonOS SDK. ¿Alguna idea?

Matías Jiménez
Matías Jiménez

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *