Tarea3 Microcontroladores - Lovera

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

Practica calificada 3

Trabajo de Investigación

I. EJERCICIO Nº1: Realizar los siguientes ejercicios: (12 puntos)


a) Resumen de los materiales entregados en clase sobre el IOT.
-Destornilladores
-Soldador electrónico
-Soldadura
-Crema para soldar
-Jump wire (jumper)
-Tarjeta de prototipado o Protoboard
-resistencias de:5 de 1k, 5k, (5)10k, 220, 330 y 470 ohms , 1 de 100k y de 50k
-Variable o Potenciómetro de 1k, 5k, (2)10k, 100k ohms
-Fotorresistor de 5 mm o de 10 mm
-2 Botón normalmente abierto, el que encuentres.
-1 Regulador de 5v LM7805
-1 Capacitor electrolítico de 47uF
-1 Capacitor cerámico de 0.01uF
-1 Relevador de 2 polos y 2 tiros (8 pines, 5 volts)
-2 Botones o limit switches
-1 interruptor de encendido
-2 motores de 5 a 9 volts con motorreductores
-ESP32/Wemos D1/NodeMCU Raspberry Pi
-Sensores: dht11, dht22, lm35, y mq135
-Adaptadores de energía
-Arduino UNO o equivalente open hardware con BootLoader.
-Juego de cables con terminales macho - macho y macho - hembra o cable de
red “UTP”
-LCD 16x2 con backlight o retroiluminación
-Servomotor analógico, depende de tu proyecto comprar uno mini o uno normal,
el mini tiene muy poca fuerza.
-Leds para el proyecto del semáforo
b) Describa el hardware de la Rapsberry pi y del ESP32,
Rapsberry pi: La Raspberry Pi es una computadora de bajo costo y con un
tamaño compacto, del porte de una tarjeta de crédito, puede ser conectada a un
monitor de computador o un TV, y usarse con un mouse y teclado estándar. Es un
pequeño computador que correo un sistema operativo linux capaz de permitirle a
las personas de todas las edades explorar la computación y aprender a programar
lenguajes como Scratch y Python. Es capaz de hacer la mayoría de las tareas
típicas de un computador de escritorio, desde navegar en internet, reproducir
videos en alta resolución, manipular documentos de ofimática, hasta reproducir
juegos.

Cuenta con un GPIO de 40 pines, el cual permite el contacto con el mundo


exterior, tanto por sensores como con actuadores, en este punto es importante
conocer que el GPIO de Raspberry trabaja con un nivel de 3.3V, así que si quieres
conectar sensores que operan a 5V necesitaras un conversor de niveles lógicos te
recomendamos el MCI00582 comercializado por MCI Electronics. Debido que el
procesador de la Raspberry Pi no tiene un conversor de analógico a digital
integrado, por lo tanto si quieres leer sensores analógicos de usar un conversor
ADC externo, en MCI Electronics puedes conseguir uno con el
código MCI01856. Además cuentas con puertos de comunicación I2C, SPI y
UART.

• CPU Broadcom BCM2837 de 64 bits de cuatro núcleos a 1,2 GHz


• 1 GB de RAM
• LAN inalámbrica BCM43438 y Bluetooth de bajo consumo (BLE) a bordo
• Ethernet 100 bases
• GPIO extendido de 40 pines
• 4 puertos USB 2
• Salida estéreo de 4 polos y puerto de vídeo compuesto
• HDMI® de tamaño completo
• Puerto de cámara CSI para conectar una cámara Raspberry Pi
• Puerto de pantalla DSI para conectar una pantalla táctil Raspberry Pi
• Puerto micro SD para cargar su sistema operativo y almacenar datos
• Fuente de alimentación Micro USB conmutada mejorada de hasta 2,5 A

ESP32: ESP32 de Espressif Systems es la evolución del ESP8266, diseñado


para superar a su antecesor en capacidad de procesamiento y conectividad,
integra un potente microcontrolador con arquitectura de 32 bits, conectividad
Wi-Fi y Bluetooth. El SoM(System on Module) ESP-WROOM-32 fabricado
por Espressif integra en un módulo el SoC ESP32, memoria FLASH, cristal
oscilador y antena WiFi en PCB.
• Voltaje de Alimentación: 3.3V DC (2.7~ 3.6V)
• Voltaje lógico entradas/salidas (GPIO): 3.3V
• Corriente de Operación: ~80mA (fuente superior a 500mA)
• SoM: ESP-WROOM-32
• SoC: ESP32 (ESP32-D0WDQ6)
• CPU: Dual core Tensilica Xtensa LX6 (32 bit)
• Frecuencia de Reloj: 240MHz
• Memoria SRAM: 520KB
• Memoria FLASH Externa: 4MB
• Pines Digitales GPIO: 34 (incluyendo todos los periféricos)
• UART: 2
• SPI: 3
• I2C: 2
• Capacitive touch sensors: 10
• Interfaz SD
• Timers: 3 (16-bit)
• PWM Led: 16 canales independientes (16-bits)
• ADC: 2 (12-bit)
• DAC: 2 (8-bit)
• Wi-Fi, Protocolo 802.11 b/g/n/e/i (802.11n up to 150 Mbps)
• Wi-Fi, certificación RF: FCC/CE/IC/TELEC/KCC/SRRC/NCC
• Wi-Fi, rango de Frecuencia: 2.4 ~ 2.5 GHz
• Wi-Fi mode Station/SoftAP/SoftAP+Station/P2P
• Wi-Fi Security WPA/WPA2/WPA2-Enterprise/WPS
• Network protocols IPv4, IPv6, SSL, TCP/UDP/HTTP/FTP/MQTT
• Bluetooth, Protocolos: V4.2 BR/EDR and BLE specification
• Bluetooth, Radios: NZIF receiver with -97 dBm sensitivity, Class-1, class-2
and class-3 transmitter, AFH
• Bluetooth, Audio: CVSD and SBC
• Stack de Protocolo TCP/IP integrado en hardware
• Dimensiones: 18*25.5*3.1 mm
• Peso: 3 gramos

c) Muestre dos configuraciones de Rapsberry pi y ESP32, puede visitar la


siguiente página donde se programa estos dos dispositivos. (www.wokwi.com)
Esta página les permite realizar simulaciones en línea de ambos (inclusive
arduino uno).
Rapsberry pi
1Ejemplo:
#include "pitches.h"

#define SPEAKER_PIN 8

const uint8_t buttonPins[] = { 12, 11, 10, 9, 7, 6, 5, 4 };


const int buttonTones[] = {
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5
};
const int numTones = sizeof(buttonPins) / sizeof(buttonPins[0]);

void setup() {
for (uint8_t i = 0; i < numTones; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
pinMode(SPEAKER_PIN, OUTPUT);
}

void loop() {
int pitch = 0;
for (uint8_t i = 0; i < numTones; i++) {
if (digitalRead(buttonPins[i]) == LOW) {
pitch = buttonTones[i];
}
}
if (pitch) {
tone(SPEAKER_PIN, pitch);
} else {
noTone(SPEAKER_PIN);
}
delay(10);
}
2Ejemplo:
#define DIR_PIN 2
#define STEP_PIN 3

void setup() {
pinMode(STEP_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
digitalWrite(STEP_PIN, LOW);
}

void loop() {
// Move 200 steps (one rotation) CW over one second
digitalWrite(DIR_PIN, HIGH);
for (int i = 0; i < 200; i++) {
digitalWrite(STEP_PIN, HIGH);
digitalWrite(STEP_PIN, LOW);
delay(5); // 5 ms * 200 = 1 second
}

delay(500); // Wait half a second

// Move 200 steps (one rotation) CCW over 400 millis


digitalWrite(DIR_PIN, LOW);
for (int i = 0; i < 200; i++) {
digitalWrite(STEP_PIN, HIGH);
digitalWrite(STEP_PIN, LOW);
delay(2); // 2 ms * 200 = 0.4 seconds
}

delay(1000); // Wait another second


}
ESP32
1Ejemplo:
#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);

#define NTP_SERVER "pool.ntp.org"


#define UTC_OFFSET 0
#define UTC_OFFSET_DST 0

void spinner() {
static int8_t counter = 0;
const char* glyphs = "\xa1\xa5\xdb";
LCD.setCursor(15, 1);
LCD.print(glyphs[counter++]);
if (counter == strlen(glyphs)) {
counter = 0;
}
}

void printLocalTime() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
LCD.setCursor(0, 1);
LCD.println("Connection Err");
return;
}

LCD.setCursor(8, 0);
LCD.println(&timeinfo, "%H:%M:%S");

LCD.setCursor(0, 1);
LCD.println(&timeinfo, "%d/%m/%Y %Z");
}

void setup() {
Serial.begin(115200);

LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("Connecting to ");
LCD.setCursor(0, 1);
LCD.print("WiFi ");

WiFi.begin("Wokwi-GUEST", "", 6);


while (WiFi.status() != WL_CONNECTED) {
delay(250);
spinner();
}

Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());

LCD.clear();
LCD.setCursor(0, 0);
LCD.println("Online");
LCD.setCursor(0, 1);
LCD.println("Updating time...");

configTime(UTC_OFFSET, UTC_OFFSET_DST, NTP_SERVER);


}

void loop() {
printLocalTime();
delay(250);
}
2Ejemplo:
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>

const char* ssid = "Wokwi-GUEST";


const char* password = "";

#define BTN_PIN 5
#define TFT_DC 2
#define TFT_CS 15
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

const String url = "https://v2.jokeapi.dev/joke/Programming";

String getJoke() {
HTTPClient http;
http.useHTTP10(true);
http.begin(url);
http.GET();
String result = http.getString();

DynamicJsonDocument doc(2048);
DeserializationError error = deserializeJson(doc, result);

// Test if parsing succeeds.


if (error) {
Serial.print("deserializeJson() failed: ");
Serial.println(error.c_str());
return "<error>";
}

String type = doc["type"].as<String>();


String joke = doc["joke"].as<String>();
String setup = doc["setup"].as<String>();
String delivery = doc["delivery"].as<String>();
http.end();
return type.equals("single") ? joke : setup + " " + delivery;
}

void nextJoke() {
tft.setTextColor(ILI9341_WHITE);
tft.println("\nLoading joke...");

String joke = getJoke();


tft.setTextColor(ILI9341_GREEN);
tft.println(joke);
}

void setup() {
pinMode(BTN_PIN, INPUT_PULLUP);

WiFi.begin(ssid, password, 6);

tft.begin();
tft.setRotation(1);

tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.print("Connecting to WiFi");

while (WiFi.status() != WL_CONNECTED) {


delay(100);
tft.print(".");
}

tft.print("\nOK! IP=");
tft.println(WiFi.localIP());

nextJoke();
}

void loop() {
if (digitalRead(BTN_PIN) == LOW) {
tft.fillScreen(ILI9341_BLACK);
tft.setCursor(0, 0);
nextJoke();
}

delay(100);
}
II. EJERCICIO Nº2: Publicar en internet el sensor DHT11 con el ESP32 utilizando la
página de ThingSpeak. Puede utilizar la siguiente página de referencia
https://www.youtube.com/watch?v=P1D3kkcNuMU
(8 puntos)

import machine
import dht
import time
import network
import urequests as requests

# Connect to Wi-Fi
def Connect_WiFi():
net = network.WLAN(network.STA_IF)
if not net.isconnected():
net.active(True)
net.connect("your_SSID", "your_PASSWORD")
print(net.ifconfig())

# Read temperature and humidity from DHT22 sensor


def TempHum():
d = dht.DHT22(machine.Pin(14))
d.measure()
t = d.temperature()
h = d.humidity()
return t, h

# Send data to ThingSpeak


def Send_Data(temp, hum):
APIKEY = "your_THINGSPEAK_API_KEY"
url = "https://api.thingspeak.com/update?api_key=" + APIKEY + "&field1=" +
str(temp) + "&field2=" + str(hum)
response = requests.get(url)
print(response.status_code)

# Main loop
while True:
Connect_WiFi()
time.sleep(1)
(t, h) = TempHum()
Send_Data(t, h)
time.sleep(30)

También podría gustarte