Herramientas de usuario

Herramientas del sitio


personas:johnny:proyectos:esp8266

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
personas:johnny:proyectos:esp8266 [2019/05/30 17:33] kzpersonas:johnny:proyectos:esp8266 [2019/06/04 19:14] (actual) – [Conexión pantalla oled SSD1306] kz
Línea 1: Línea 1:
-===== Configuración inicial, blink con ESP8266 en Mac usando Atom Platformio =====+====== Configuración inicial platformio en atom esp8266 ======
  
 ===== Materiales ===== ===== Materiales =====
Línea 122: Línea 122:
  
  
-{{ :personas:johnny:captura_de_pantalla_2016-11-12_a_las_19.38.43.png?600 |}}+{{ :personas:johnny:captura_de_pantalla_2016-11-12_a_las_19.38.43.png?200 |}}
  
  
-==== Como encender un led con el esp 8266 + la aplicación blink ====+====== Como encender un led con el esp 8266 + la aplicación blink ======
  
 Toda la información inicia desde aqui [[http://www.blynk.cc/getting-started/]]  Toda la información inicia desde aqui [[http://www.blynk.cc/getting-started/]] 
Línea 235: Línea 235:
 http://androidcontrol.blogspot.com.co/2016/05/esp8266-wifi-control-relay.html http://androidcontrol.blogspot.com.co/2016/05/esp8266-wifi-control-relay.html
  
-===== Cómo programar sensor AQA en rama AQAkit =====+====== Simple led on off página incrustada en código ====== 
 + 
 +<code c++> 
 + 
 +#include <ESP8266WiFi.h> 
 + 
 +const char* ssid = "Your SSID"; 
 +const char* password = "Your password"; 
 + 
 +int ledPin = 13; 
 +WiFiServer server(80); 
 + 
 +void setup() { 
 +   
 +  pinMode(ledPin,OUTPUT); 
 +  digitalWrite(ledPin,LOW); 
 + 
 +  Serial.begin(115200); 
 +  Serial.println(); 
 +  Serial.print("Wifi connecting to "); 
 +  Serial.println( ssid ); 
 + 
 +  WiFi.begin(ssid,password); 
 + 
 +  Serial.println(); 
 +  Serial.print("Connecting"); 
 + 
 +  while( WiFi.status() != WL_CONNECTED ){ 
 +      delay(500); 
 +      Serial.print(".");         
 +  } 
 + 
 +   
 +  Serial.println(); 
 + 
 +  Serial.println("Wifi Connected Success!"); 
 +  Serial.print("NodeMCU IP Address : "); 
 +  Serial.println(WiFi.localIP() ); 
 + 
 +  server.begin(); 
 +  Serial.println("NodeMCU Server started"); 
 + 
 +  // Print the IP address 
 +  Serial.print("Use this URL to connect: "); 
 +  Serial.print("http://"); 
 +  Serial.print(WiFi.localIP()); 
 +  Serial.println("/"); 
 +   
 +
 + 
 +void loop() { 
 + 
 +    // Check if a client has connected 
 +  WiFiClient client = server.available(); 
 +  if (!client) { 
 +    return; 
 +  } 
 + 
 +  // Wait until the client sends some data 
 +  Serial.println("Hello New client"); 
 +  while(!client.available()){ 
 +    delay(1); 
 +  } 
 + 
 +   // Read the first line of the request 
 +  String request = client.readStringUntil('\r'); 
 +  Serial.println(request); 
 +  client.flush(); 
 + 
 +   // Match the request 
 +  
 +  int value = LOW; 
 +  if (request.indexOf("/LED=ON") != -1)  { 
 +    digitalWrite(ledPin, HIGH); 
 +    value = HIGH; 
 +  } 
 +  if (request.indexOf("/LED=OFF") != -1)  { 
 +    digitalWrite(ledPin, LOW); 
 +    value = LOW; 
 +  } 
 +  
 +// Set ledPin according to the request 
 +//digitalWrite(ledPin, value); 
 +  
 +  // Return the response 
 +  client.println("HTTP/1.1 200 OK"); 
 +  client.println("Content-Type: text/html"); 
 +  client.println(""); //  do not forget this one 
 +  client.println("<!DOCTYPE HTML>"); 
 +  client.println("<html>"); 
 +  
 +  client.print("Led pin is now: "); 
 +  
 +  if(value == HIGH) { 
 +    client.print("On"); 
 +  } else { 
 +    client.print("Off"); 
 +  } 
 +  client.println("<br><br>"); 
 +  client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>"); 
 +  client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");   
 +  client.println("</html>"); 
 +  
 +  delay(1); 
 +  Serial.println("Client disonnected"); 
 +  Serial.println(""); 
 +   
 +
 + 
 +</code> 
 + 
 +====== Cómo programar sensor AQA en rama AQAkit ======
  
 ==== pasos ==== ==== pasos ====
Línea 248: Línea 359:
  
   - Línea 115 y 116 configuración de las credenciales del wifi   - Línea 115 y 116 configuración de las credenciales del wifi
 +
 +====== códigos websockets ======
  
 ===== Código websocket para led ON OFF ===== ===== Código websocket para led ON OFF =====
Línea 285: Línea 398:
 #include <ESP8266mDNS.h> #include <ESP8266mDNS.h>
  
-static const char ssid[] = "manunderworld"; +static const char ssid[] = "-------"; 
-static const char password[] = "alex1988alex";+static const char password[] = "-------";
 MDNSResponder mdns; MDNSResponder mdns;
  
Línea 492: Línea 605:
 Esta otra opción permite que el esp no sea visible por todo mundo, solo se tiene que estar conectado a la misma red que el esp y luego entrar a la ip en un en browser asignada por el esp para entrar. Esta otra opción permite que el esp no sea visible por todo mundo, solo se tiene que estar conectado a la misma red que el esp y luego entrar a la ip en un en browser asignada por el esp para entrar.
  
-<code c++>/*+<code c++> 
 + 
 +/*
  * WebSocketServer_softAP  * WebSocketServer_softAP
  **/  **/
Línea 505: Línea 620:
 #define USE_SERIAL Serial #define USE_SERIAL Serial
  
-static const char ssid[] = "manunderworld"; +static const char ssid[] = "-------"; 
-static const char password[] = "alex1988alex";+static const char password[] = "---------";
 MDNSResponder mdns; MDNSResponder mdns;
  
Línea 865: Línea 980:
  
 </code> </code>
 +
 +====== conectar ESp8266 a telegram ======
 +
 +Para la configuración del bot debemos usar botfather y configurar nuestro bot usando este servicio. Mas información sobre la configuración [[https://www.2geeks1city.com/es/crear-bot-telegram-sin-programar-chatfuel|aquí]]
 +
 +===== pasos para configurar el bot =====
 +
 +Cuando estemos con Botfather, podremos escribirle ** /mybots ** para que el bot nos diga si tenemos bots configurados. Como este es el primero, entonces el nos dirá que no tiene ninguno. Entonces paramos a escribir ** /newbot ** para decirle a Botfather que nos haga un nuevo bot. Seguidamente, Botfather nos dirá que le pongamos un nombre a ese bot, el ''nombre'' que le asignamos al nuestro bot fue ** alexander_bot ** (así sera como nuestro bot aparecerá en telegram cuando lo busquemos para chatearle). Cuando le pongamos el nombre, Botfather nos dirá esta todo listo!. Todos estos pasos se muestran en esta imagen
 +
 +{{:personas:johnny:proyectos:telegram_createbot1.jpg?400|}}
 +
 +Después Botfather nos pedirá un ''nombre de usuario'' para nuestro bot () a mi me gusta llamarlo apodo), después de algunos intentos, el ''apodó'' para nuestro Bot es ** esp8266alexander_bot **
 +
 +Cuando tengamos el apodó para nuestro bot, Botfather nos felicitará diciendonos que nuestro bot ya esta listo para usarse. Nos dirá que hay que buscarlo con el nombre que le asignamos y ademas de eso nos brindará un token para usarlo en nuestro código. Tanto //el apodo, el token y el nombre// los necesitamos para usarlos mas tarde en nuestro código. 
 +
 +Los pasos anteriores se muestran en esta imagen 
 +
 +{{:personas:johnny:proyectos:telegram_createbot2.jpg?400|}}
 +
 +===== código telegram bot esp8266 =====
 +
 +Se usa esta librería para el [[https://github.com/Gianbacchio/ESP8266-TelegramBot/blob/master/src/ESP8266TelegramBOT.cpp|telegram bot]]
 +
 +<code c++>
 +
 +
 +#include <ESP8266TelegramBOT.h>
 +#include <ESP8266WiFi.h>
 +#include <WiFiClientSecure.h>
 +
 +// Initialize Telegram BOT
 +// your Bot Token (Get from Botfather)
 +#define BOTtoken "----------" 
 +#define BOTname "alexander_bot"
 +#define BOTusername "esp8266alexander_bot"
 +
 +TelegramBOT bot(BOTtoken, BOTname, BOTusername);
 +
 +int Bot_mtbs = 1000; //mean time between scan messages
 +long Bot_lasttime;   //last time messages' scan has been done
 +bool Start = false;
 +
 +// Initialize Wifi connection to the router
 +char ssid[] = "-----";     // your network SSID (name)
 +char password[] = "-----"; // your network key
 +
 +int el_reset = D2;
 +
 +/********************************************
 + * EchoMessages - function to Echo messages *
 + ********************************************/
 +void Bot_ExecMessages() {
 +  for (int i = 1; i < bot.message[0][0].toInt() + 1; i++)      {
 +    bot.message[i][5]=bot.message[i][5].substring(1,bot.message[i][5].length());
 +    Serial.println("GOT MESSAGE " + bot.message[i][5]);
 +    if (bot.message[i][5] == "ledon") {
 +      digitalWrite(el_reset, LOW);   // turn the LED on (HIGH is the voltage level)
 +      bot.sendMessage(bot.message[i][4], "Prendiendo el Led", "");
 +    }
 +    if (bot.message[i][5] == "ledoff") {
 +      digitalWrite(el_reset, HIGH);    // turn the LED off (LOW is the voltage level)
 +      bot.sendMessage(bot.message[i][4], "Apagando el Led", "");
 +    }
 +    if (bot.message[i][5] == "reset") {
 +      digitalWrite(el_reset, LOW);    // turn the LED off (LOW is the voltage level)
 +      delay(1000);
 +      digitalWrite(el_reset, HIGH);    // turn the LED off (LOW is the voltage level)
 +
 +      bot.sendMessage(bot.message[i][4], "Resetiando el esp", "");
 +    }
 +
 +    if (bot.message[i][5] == "start") {
 +      String wellcome = "Wellcome from FlashLedBot, your personal Bot on ESP8266 board";
 +      String wellcome1 = "/ledon : to switch the Led ON";
 +      String wellcome2 = "/ledoff : to switch the Led OFF";
 +      String wellcome3 = "/reset : to make a resetting routine.";
 +      bot.sendMessage(bot.message[i][4], wellcome, "");
 +      bot.sendMessage(bot.message[i][4], wellcome1, "");
 +      bot.sendMessage(bot.message[i][4], wellcome2, "");
 +      bot.sendMessage(bot.message[i][4], wellcome3, "");
 +      Start = true;
 +    }
 +  }
 +  bot.message[0][0] = "";   // All messages have been replied - reset new messages
 +}
 +
 +void setup(){
 +
 +  Serial.begin(115200);
 +
 +  // Set WiFi to station mode and disconnect from an AP if it was Previously
 +  // connected
 +  WiFi.mode(WIFI_STA);
 +  WiFi.disconnect();
 +  delay(100);
 +
 +  // attempt to connect to Wifi network:
 +  Serial.print("Connecting Wifi: ");
 +  Serial.println(ssid);
 +  WiFi.begin(ssid, password);
 +
 +  while (WiFi.status() != WL_CONNECTED) {
 +    Serial.print(".");
 +    delay(500);
 +  }
 +
 +  Serial.println("");
 +  Serial.println("WiFi connected");
 +  Serial.print("IP address: ");
 +  Serial.println(WiFi.localIP());
 +  //
 +  bot.begin();      // launch Bot functionalities
 +  pinMode(el_reset,OUTPUT);
 +  delay(2);
 +  digitalWrite(el_reset, HIGH);
 +
 +}
 +
 +void loop(){
 +
 +
 +  if (millis() > Bot_lasttime + Bot_mtbs)  {
 +    bot.getUpdates(bot.message[0][1]);   // launch API GetUpdates up to xxx message
 +    Bot_ExecMessages();   // reply to message with Echo
 +    Bot_lasttime = millis();
 +  }
 +
 +  /*
 +  digitalWrite(el_reset,LOW);
 +  delay(1000);
 +  digitalWrite(el_reset, HIGH);
 +  delay(1000);
 +*/
 +}
 +
 +</code>
 +
 +====== conexionado de algunos sensores ======
 +
 +===== Conexión relevador =====
 +
 +Se puede reemplazar el transistor de la imagen por un ** 2N2222 **. para ensayar el Relay, se puede usar el código __blink__ de arduino
 +
 +{{:personas:johnny:proyectos:relevador.jpg?600|}}
 +
 +===== Conexión DTH11 =====
 +
 +Este sensor es un sensor de temperatura y humedad en el aire.Toda la información para conectar el sensor en este [[http://www.circuitbasics.com/how-to-set-up-the-dht11-humidity-sensor-on-an-arduino/|link]]
 +
 +{{:personas:johnny:proyectos:screen_shot_2019-06-04_at_10.08.24_am.png?150|}}
 +
 +Así conectamos el sensor al arduino o al esp. La resistencia tiene de que ser 10K
 +
 +{{:personas:johnny:proyectos:screen_shot_2019-06-04_at_10.09.37_am.png?400|}}
 +
 +El código que necesitamos para leer los valores del sensor es este:
 +
 +<code c++>
 +#include <dht.h>
 +
 +dht DHT;
 +
 +#define DHT11_PIN 7
 +
 +void setup(){
 +  Serial.begin(9600);
 +}
 +
 +void loop()
 +{
 +  int chk = DHT.read11(DHT11_PIN);
 +  Serial.print("Temperature = ");
 +  Serial.println(DHT.temperature);
 +  Serial.print("Humidity = ");
 +  Serial.println(DHT.humidity);
 +  delay(1000);
 +}
 +</code>
 +
 +===== Conexión LM35 =====
 +
 +[[https://programarfacil.com/tutoriales/fragmentos/leer-el-sensor-de-temperatura-lm35-en-arduino/|Aquí]]
 + a toda la información. En este caso hemos optado por un sensor bastante normal que detecta temperaturas desde -55ºC a 150ºC, 1ºC equivale a 10mV y soporta voltajes de entre 4V y 30V. Todo esta información se ha obtenido de la ficha técnica del LM35.
 +
 +{{:personas:johnny:proyectos:screen_shot_2019-06-04_at_10.14.49_am.png?600|}}
 +
 +<code c++>
 +/*
 +  Creado: Luis del Valle (ldelvalleh@programarfacil.com)
 +  https://programarfacil.com
 +*/
 + 
 +// Declaracion de variables globales
 +float tempC; // Variable para almacenar el valor obtenido del sensor (0 a 1023)
 +int pinLM35 = 0; // Variable del pin de entrada del sensor (A0)
 + 
 +void setup() {
 +  // Cambiamos referencia de las entradas analógicas
 +  analogReference(INTERNAL);
 +  
 +  // Configuramos el puerto serial a 9600 bps
 +  Serial.begin(9600);
 +}
 + 
 +void loop() {
 +  // Con analogRead leemos el sensor, recuerda que es un valor de 0 a 1023
 +  tempC = analogRead(pinLM35); 
 +   
 +  // Calculamos la temperatura con la fórmula
 +  tempC = (1.1 * tempC * 100.0)/1024.0; 
 + 
 +  // Envia el dato al puerto serial
 +  Serial.print(tempC);
 +  // Salto de línea
 +  Serial.print("\n");
 +  
 +  // Esperamos un tiempo para repetir el loop
 +  delay(1000);
 +}
 +
 +</code>
 +
 +===== Conexión pantalla oled SSD1306 =====
 +
 +{{:personas:johnny:proyectos:monochrome-oled-display-pinout.jpg?200|}}
 +
 +Links con información interesante:
 +
 +  - [[https://lastminuteengineers.com/oled-display-arduino-tutorial/|Descripción de pantallas]]
 +  - [[https://www.youtube.com/watch?v=lkWZuAnHa2Y|Las dos maneras que existen para programar las pantallas]]
 +  - [[https://github.com/jandelgado/arduino/wiki/SSD1306-based-OLED-connected-to-Arduino|Entender los pines para conectar]]
 +
 +Este es el esquema de conexión:
 +
 +{{:personas:johnny:proyectos:photo_on_6-4-19_at_2.02_pm.jpg?600|}}
 +
 +Este código funciona con la librería de adafruit.
 +
 +<code c++>
 +/* 
 + * Demo for SSD1306 based 128x64 OLED module using Adafruit SSD1306 
 + * library (https://github.com/adafruit/Adafruit_SSD1306).
 + 
 + * See https://github.com/pacodelgado/arduino/wiki/SSD1306-based-OLED-connected-to-Arduino 
 + * for more information.
 + *
 + */
 + 
 +#include <SPI.h>
 +#include <Wire.h>
 +#include <Adafruit_GFX.h>
 +#include <Adafruit_SSD1306.h>
 +
 +// If using software SPI (the default case):
 +#define OLED_MOSI  11   //D1
 +#define OLED_CLK   12   //D0
 +#define OLED_DC    9
 +#define OLED_CS    8
 +#define OLED_RESET 10
 +
 +Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
 +
 +void setup()                  
 +//  Serial.begin(9600);
 +  display.begin(SSD1306_SWITCHCAPVCC);
 +  display.display();
 +  delay(1000);
 +  display.clearDisplay();
 +  display.setTextSize(1);
 +  display.setTextColor(WHITE);
 +}
 +
 +void loop()
 +{
 +  static unsigned long thisMicros = 0;
 +  static unsigned long lastMicros = 0;
 +  display.clearDisplay();
 +  display.setCursor(0,0);
 +  display.print("Now is the time for all good men to come to the aid the party \n");
 +  display.print("The quick brown fox jumps over a lazy dog \n");
 +  display.print(thisMicros - lastMicros);
 +  display.print(" microseconds");
 +  display.display();
 +  lastMicros = thisMicros;
 +  thisMicros = micros();
 +}
 +
 +</code>
 +
 +{{:personas:johnny:proyectos:photo5152366674249361447.jpg?400|}}
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
personas/johnny/proyectos/esp8266.1559237583.txt.gz · Última modificación: 2019/05/30 17:33 por kz