Blog del Ing. Alejandro Alomar (webalealomar@gmail.com). En este blog subo algunos de los trabajos que hago como hobby (no profesional), hay temas variados como, impresoras 3d, IOT (internet de las cosas), programación de ESP8266, electrónica, etc.
En esté capitulo les muestro
el código de un host que programé en Python hace unos años para explicar cómo
se comunica la placa SinapTec AT328.02 con el host.
En esté capitulo explico cómo funciona la parte electrónica de la placa de la placa y conecto el resto de los componentes para simular el funcionamiento de la misma. https://www.pronterface.com
30% de descuento para PCB avanzados y fabricación dentro de las 24 horas en PCBWay:
En este video explico como ser carga el firmware TeaCup en nuestra placa SinapTec AT328.02 y además explico cómo regular la corriente de los driver que controlan los motores paso a paso.
Les presento un servicio de PCBWay que permite compartir las placas en forma muy simple. Además, se le puede agregar fotos, videos y toda la documentación necesaria para realizar el proyecto. Haciendo click en “Add to cart” podés encargar tus placas.
Este video es un time-lapse del montaje de lo componentes y también
doy una serie de tips para el correcto armado de una placa controladora de
impresora 3D SinapTec AT328.02.
La calidad del plateado de las vías hizo que sea muy fácil
soldar los componentes.
Mandé a fabricar 10 placas a una empresa china llamada PCBWay, me las mandaron por FedEx y tardaron unos 10 días desde que hice el pedido hasta que las entregaron en la puerta de mi oficina.
La calidad de las placas es excelente en todo sentido, tanto de las pistas, como la serigrafía, la malla antisoldante, el plateado de las vías, las perforaciones y los bordes.
Les paso a detallar como hacer un pedido en PCBWay.
1) Loguearse. Usar datos verdaderos ya que los mismos luego se utilizarán para el envío
2) Cotización en línea (10 placas de 1 o 2 capas de 100x100mm a 5 u$s + envío)
En este
video explico cómo mostrar los datos del sensor interno de efecto Hall en una página
web alojada en un servidor web dentro del mismo ESP32.
Código Fuente:
#include<WiFi.h>//------------------Servidor Web en puerto 80---------------------WiFiServerserver(80);//---------------------Credenciales de WiFi-----------------------constchar*ssid="---";constchar*password="---";//---------------------VARIABLES GLOBALES-------------------------intcontconexion=0;Stringheader;// Variable para guardar el HTTP request//------------------------CODIGO HTML------------------------------StringpaginaInicio="<!DOCTYPE html>""<html>""<head>""<meta charset='utf-8' />""<META HTTP-EQUIV='Refresh' CONTENT='1'>""<title>Servidor Web ESP32</title>""</head>""<body>""<center>""<h3>Servidor Web ESP32</h3>";StringpaginaFin="</center>""</body>""</html>";//---------------------------SETUP--------------------------------voidsetup(){Serial.begin(115200);Serial.println("");// Conexión WIFIWiFi.begin(ssid,password);//Cuenta hasta 50 si no se puede conectar lo cancelawhile(WiFi.status()!=WL_CONNECTEDandcontconexion<50){++contconexion;delay(500);Serial.print(".");}if(contconexion<50){//para usar con ip fija//IPAddress ip(192,168,1,180); //IPAddress gateway(192,168,1,1); //IPAddress subnet(255,255,255,0); //WiFi.config(ip, gateway, subnet); Serial.println("");Serial.println("WiFi conectado");Serial.println(WiFi.localIP());server.begin();// iniciamos el servidor}else{Serial.println("");Serial.println("Error de conexion");}}//----------------------------LOOP----------------------------------voidloop(){WiFiClientclient=server.available();// Escucha a los clientes entrantesif(client){// Si se conecta un nuevo clienteSerial.println("New Client.");// StringcurrentLine="";//while(client.connected()){// loop mientras el cliente está conectadoif(client.available()){// si hay bytes para leer desde el clientecharc=client.read();// lee un byteSerial.write(c);// imprime ese byte en el monitor serialheader+=c;if(c=='\n'){// si el byte es un caracter de salto de linea// si la nueva linea está en blanco significa que es el fin del // HTTP request del cliente, entonces respondemos:if(currentLine.length()==0){client.println("HTTP/1.1 200 OK");client.println("Content-type:text/html");client.println("Connection: close");client.println();// Muestra la página webclient.println(paginaInicio+String(hallRead())+paginaFin);// la respuesta HTTP temina con una linea en blancoclient.println();break;}else{// si tenemos una nueva linea limpiamos currentLinecurrentLine="";}}elseif(c!='\r'){// si C es distinto al caracter de retorno de carrocurrentLine+=c;// lo agrega al final de currentLine}}}// Limpiamos la variable headerheader="";// Cerramos la conexiónclient.stop();Serial.println("Client disconnected.");Serial.println("");}}
En este tutorial explico cómo hacer un servidor web (WebServer) usando la IDE de Arduino en un ESP32.
Código Fuente:
#include <WiFi.h>
//------------------Servidor Web en puerto 80---------------------
WiFiServer server(80);
//---------------------Credenciales de WiFi-----------------------
const char* ssid = "-----";
const char* password = "-----";
//---------------------VARIABLES GLOBALES-------------------------
int contconexion = 0;
String header; // Variable para guardar el HTTP request
String estadoSalida = "off";
const int salida = 2;
//------------------------CODIGO HTML------------------------------
String pagina = "<!DOCTYPE html>"
"<html>"
"<head>"
"<meta charset='utf-8' />"
"<title>Servidor Web ESP32</title>"
"</head>"
"<body>"
"<center>"
"<h1>Servidor Web ESP32</h1>"
"<p><a href='/on'><button style='height:50px;width:100px'>ON</button></a></p>"
"<p><a href='/off'><button style='height:50px;width:100px'>OFF</button></a></p>"
"</center>"
"</body>"
"</html>";
//---------------------------SETUP--------------------------------
void setup() {
Serial.begin(115200);
Serial.println("");
pinMode(salida, OUTPUT);
digitalWrite(salida, LOW);
// Conexión WIFI
WiFi.begin(ssid, password);
//Cuenta hasta 50 si no se puede conectar lo cancela
while (WiFi.status() != WL_CONNECTED and contconexion <50) {
++contconexion;
delay(500);
Serial.print(".");
}
if (contconexion <50) {
//para usar con ip fija
//IPAddress ip(192,168,1,180);
//IPAddress gateway(192,168,1,1);
//IPAddress subnet(255,255,255,0);
//WiFi.config(ip, gateway, subnet);
Serial.println("");
Serial.println("WiFi conectado");
Serial.println(WiFi.localIP());
server.begin(); // iniciamos el servidor
}
else {
Serial.println("");
Serial.println("Error de conexion");
}
}
//----------------------------LOOP----------------------------------
void loop(){
WiFiClient client = server.available(); // Escucha a los clientes entrantes
if (client) { // Si se conecta un nuevo cliente
Serial.println("New Client."); //
String currentLine = ""; //
while (client.connected()) { // loop mientras el cliente está conectado
if (client.available()) { // si hay bytes para leer desde el cliente
char c = client.read(); // lee un byte
Serial.write(c); // imprime ese byte en el monitor serial
header += c;
if (c == '\n') { // si el byte es un caracter de salto de linea
// si la nueva linea está en blanco significa que es el fin del
// HTTP request del cliente, entonces respondemos:
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
// enciende y apaga el GPIO
if (header.indexOf("GET /on") >= 0) {
Serial.println("GPIO on");
estadoSalida = "on";
digitalWrite(salida, HIGH);
} else if (header.indexOf("GET /off") >= 0) {
Serial.println("GPIO off");
estadoSalida = "off";
digitalWrite(salida, LOW);
}
// Muestra la página web
client.println(pagina);
// la respuesta HTTP temina con una linea en blanco
client.println();
break;
} else { // si tenemos una nueva linea limpiamos currentLine
currentLine = "";
}
} else if (c != '\r') { // si C es distinto al caracter de retorno de carro
currentLine += c; // lo agrega al final de currentLine
}
}
}
// Limpiamos la variable header
header = "";
// Cerramos la conexión
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
}