commit 948356bc2c38e1a57a1bbe87b863d96417c6e79c Author: martin chaparro Date: Sun Mar 14 21:28:01 2021 -0500 first_commit diff --git a/Arduino/README.md b/Arduino/README.md new file mode 100644 index 0000000..45f929c --- /dev/null +++ b/Arduino/README.md @@ -0,0 +1,10 @@ +# PROYECTOS ARDUINO + +## Boards + ++ Arduino Mega 2560 + + +### PinOUT Arduino Mega 2560 +![pinmap](pinout-arduino-mega.jpg) + diff --git a/Arduino/SHIELD_LCD_TFT/.gitignore b/Arduino/SHIELD_LCD_TFT/.gitignore new file mode 100644 index 0000000..89cc49c --- /dev/null +++ b/Arduino/SHIELD_LCD_TFT/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/Arduino/SHIELD_LCD_TFT/.vscode/extensions.json b/Arduino/SHIELD_LCD_TFT/.vscode/extensions.json new file mode 100644 index 0000000..0f0d740 --- /dev/null +++ b/Arduino/SHIELD_LCD_TFT/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ] +} diff --git a/Arduino/SHIELD_LCD_TFT/include/README b/Arduino/SHIELD_LCD_TFT/include/README new file mode 100644 index 0000000..194dcd4 --- /dev/null +++ b/Arduino/SHIELD_LCD_TFT/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/Arduino/SHIELD_LCD_TFT/lib/ADAFRUIT_MEGA2560.rar b/Arduino/SHIELD_LCD_TFT/lib/ADAFRUIT_MEGA2560.rar new file mode 100644 index 0000000..eb2afa6 Binary files /dev/null and b/Arduino/SHIELD_LCD_TFT/lib/ADAFRUIT_MEGA2560.rar differ diff --git a/Arduino/SHIELD_LCD_TFT/lib/README b/Arduino/SHIELD_LCD_TFT/lib/README new file mode 100644 index 0000000..6debab1 --- /dev/null +++ b/Arduino/SHIELD_LCD_TFT/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into executable file. + +The source code of each library should be placed in a an own separate directory +("lib/your_library_name/[here are source files]"). + +For example, see a structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/Arduino/SHIELD_LCD_TFT/platformio.ini b/Arduino/SHIELD_LCD_TFT/platformio.ini new file mode 100644 index 0000000..f8e375f --- /dev/null +++ b/Arduino/SHIELD_LCD_TFT/platformio.ini @@ -0,0 +1,16 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:megaatmega2560] +platform = atmelavr +board = megaatmega2560 +framework = arduino +lib_deps = SPI +monitor_speed = 115200 \ No newline at end of file diff --git a/Arduino/SHIELD_LCD_TFT/src/main.cpp b/Arduino/SHIELD_LCD_TFT/src/main.cpp new file mode 100644 index 0000000..3088833 --- /dev/null +++ b/Arduino/SHIELD_LCD_TFT/src/main.cpp @@ -0,0 +1,168 @@ +#include +#include // Libreria de graficos +#include // Libreria de LCD +#include // Libreria del panel tactil +void lecturaPanel(); +void draw_btn1(bool on); +void draw_btn2(bool on); +int get_btn(); + +// Pines necesarios para los 4 pines del panel tactil +#define YP A1 // Pin analogico A1 para ADC +#define XM A2 // Pin analogico A2 para ADC +#define YM 7 +#define XP 6 + +// Definimos la presion máxima y minima que podemos realizar sobre el panel +#define MINPRESSURE 1 +#define MAXPRESSURE 1000 + +// Para mejor precision de la presion realizada, es necesario +// medir la resistencia entre los pines X+ y X-. +// En Shield TFT 2.4" LCD se mide entre los pines A2 y 6 +// Instancia del panel tactil (Pin XP, YP, XM, YM, Resistencia del panel) +TouchScreen ts = TouchScreen(XP, YP, XM, YM, 364); + +short TS_MINX = 150; // Coordenadas del panel tactil para delimitar +short TS_MINY = 120; // el tamaño de la zona donde podemos presionar +short TS_MAXX = 850; // y que coincida con el tamaño del LCD +short TS_MAXY = 891; + +#define LCD_CS A3 // Definimos los pines del LCD +#define LCD_CD A2 // para poder visualizar elementos graficos +#define LCD_WR A1 +#define LCD_RD A0 +#define LCD_RESET A4 + +#define BLACK 0x0000 // Definimos los colores +#define BLUE 0x001F // que utilizaremos para +#define RED 0xF800 // el texto y los elementos graficos +#define GREEN 0x07E0 +#define CYAN 0x07FF +#define MAGENTA 0xF81F +#define YELLOW 0xFFE0 +#define WHITE 0xFFFF + +Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Instancia LCD + +int X; // Variables que almacenaran la coordenada +int Y; // X, Y donde presionemos y la variable Z +int Z; // almacenara la presion realizada + +bool btn1_press = false; // variable "flag" para control rebotes +bool btn2_press = false; // variable "flag" para control rebotes + +#define ledA 21 +#define ledK 20 + +void setup(void) +{ + tft.begin(0x9325); // Iniciamos el LCD especificando el controlador ILI9341. + + tft.fillScreen(BLACK); // Pintamos la pantalla de Rojo + tft.setRotation(0); // Establecemos la posición de la pantalla Vertical u Horizontal + draw_btn1(true); + draw_btn2(true); + Serial.begin(115200); +} + +void loop() +{ + lecturaPanel(); // Realizamos lectura del panel para detectar presion y coordenadas + + // Si la pulsación del eje X se produce entre los puntos 40 y 160 + // Y la pulsacion del eje Y se produce entre los puntos 20 y 60 + // Y la presión realizada esta entre el margen determinado + int btn = get_btn(); + switch (btn) + { + case 1: + draw_btn1(btn1_press); + btn1_press = !btn1_press; + Serial.print("Boton 1 >> "); + Serial.println(btn1_press); + delay(150); + break; + case 2: + draw_btn2(btn2_press); + btn2_press = !btn2_press; + Serial.print("Boton 2 >> "); + Serial.println(btn2_press); + delay(150); + default: + break; + } +} + +void lecturaPanel() +{ + digitalWrite(13, HIGH); + TSPoint p = ts.getPoint(); // Realizamos lectura de las coordenadas + digitalWrite(13, LOW); + + pinMode(XM, OUTPUT); // La librería utiliza estos pines como entrada y salida + pinMode(YP, OUTPUT); // por lo que es necesario declararlos como salida justo + // despues de realizar una lectura de coordenadas. + + // Mapeamos los valores analogicos leidos del panel tactil (0-1023) + // y los convertimos en valor correspondiente a la medida del LCD 320x240 + X = map(p.x, TS_MAXX, TS_MINX, tft.width(), 0); + Y = map(p.y, TS_MAXY, TS_MINY, tft.height(), 0); + Z = p.z; +} + +void draw_btn1(bool on) +{ + + if (on) + { + tft.fillRoundRect(40, 20, 160, 120, 15, BLUE); // Dibujamos un "boton" + tft.setCursor(100, 70); // Colocamos el cursor + tft.setTextSize(4); // Especificamos el tamaño del texto + tft.setTextColor(WHITE); // Definimos el color del texto + tft.println("ON"); // Escribimos por pantalla + } + else + { + tft.fillRoundRect(40, 20, 160, 120, 15, RED); // Dibujamos un "boton" + tft.setCursor(90, 70); // Colocamos el cursor + tft.setTextSize(4); // Especificamos el tamaño del texto + tft.setTextColor(WHITE); // Definimos el color del texto ft + tft.println("OFF"); // Escribimos por pantalla + } +} + +void draw_btn2(bool on) +{ + + if (on) + { + tft.fillRoundRect(40, 180, 160, 120, 15, CYAN); // Dibujamos un "boton" + tft.setCursor(100, 230); // Colocamos el cursor + tft.setTextSize(4); // Especificamos el tamaño del texto + tft.setTextColor(WHITE); // Definimos el color del texto + tft.println("ON"); // Escribimos por pantalla + } + else + { + tft.fillRoundRect(40, 180, 160, 120, 15, RED); // Dibujamos un "boton" + tft.setCursor(90, 230); // Colocamos el cursor + tft.setTextSize(4); // Especificamos el tamaño del texto + tft.setTextColor(WHITE); // Definimos el color del texto ft + tft.println("OFF"); // Escribimos por pantalla + } +} + +int get_btn() +{ + int result = 0; + if ((X > 40 && X < 200) && (Y > 20 && Y < 140) && (Z > MINPRESSURE && Z < MAXPRESSURE)) + { + result = 1; + } + else if ((X > 40 && X < 200) && (Y > 180 && Y < 300) && (Z > MINPRESSURE && Z < MAXPRESSURE)) + { + result = 2; + } + return result; +} \ No newline at end of file diff --git a/Arduino/SHIELD_LCD_TFT/test/README b/Arduino/SHIELD_LCD_TFT/test/README new file mode 100644 index 0000000..b94d089 --- /dev/null +++ b/Arduino/SHIELD_LCD_TFT/test/README @@ -0,0 +1,11 @@ + +This directory is intended for PlatformIO Unit Testing and project tests. + +Unit Testing is a software testing method by which individual units of +source code, sets of one or more MCU program modules together with associated +control data, usage procedures, and operating procedures, are tested to +determine whether they are fit for use. Unit testing finds problems early +in the development cycle. + +More information about PlatformIO Unit Testing: +- https://docs.platformio.org/page/plus/unit-testing.html diff --git a/Arduino/pinout-arduino-mega.jpg b/Arduino/pinout-arduino-mega.jpg new file mode 100644 index 0000000..c2f84e8 Binary files /dev/null and b/Arduino/pinout-arduino-mega.jpg differ diff --git a/ESP32/README.md b/ESP32/README.md new file mode 100644 index 0000000..e5549e0 --- /dev/null +++ b/ESP32/README.md @@ -0,0 +1,6 @@ +# PROYECTOS ESP32 + +## Boards + ++ MH-ET LIVE ++ WEMOS R32 diff --git a/ESP8266/MatrixLedsRGB/.gitignore b/ESP8266/MatrixLedsRGB/.gitignore new file mode 100644 index 0000000..89cc49c --- /dev/null +++ b/ESP8266/MatrixLedsRGB/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/ESP8266/MatrixLedsRGB/.travis.yml b/ESP8266/MatrixLedsRGB/.travis.yml new file mode 100644 index 0000000..7c486f1 --- /dev/null +++ b/ESP8266/MatrixLedsRGB/.travis.yml @@ -0,0 +1,67 @@ +# Continuous Integration (CI) is the practice, in software +# engineering, of merging all developer working copies with a shared mainline +# several times a day < https://docs.platformio.org/page/ci/index.html > +# +# Documentation: +# +# * Travis CI Embedded Builds with PlatformIO +# < https://docs.travis-ci.com/user/integration/platformio/ > +# +# * PlatformIO integration with Travis CI +# < https://docs.platformio.org/page/ci/travis.html > +# +# * User Guide for `platformio ci` command +# < https://docs.platformio.org/page/userguide/cmd_ci.html > +# +# +# Please choose one of the following templates (proposed below) and uncomment +# it (remove "# " before each line) or use own configuration according to the +# Travis CI documentation (see above). +# + + +# +# Template #1: General project. Test it using existing `platformio.ini`. +# + +# language: python +# python: +# - "2.7" +# +# sudo: false +# cache: +# directories: +# - "~/.platformio" +# +# install: +# - pip install -U platformio +# - platformio update +# +# script: +# - platformio run + + +# +# Template #2: The project is intended to be used as a library with examples. +# + +# language: python +# python: +# - "2.7" +# +# sudo: false +# cache: +# directories: +# - "~/.platformio" +# +# env: +# - PLATFORMIO_CI_SRC=path/to/test/file.c +# - PLATFORMIO_CI_SRC=examples/file.ino +# - PLATFORMIO_CI_SRC=path/to/test/directory +# +# install: +# - pip install -U platformio +# - platformio update +# +# script: +# - platformio ci --lib="." --board=ID_1 --board=ID_2 --board=ID_N diff --git a/ESP8266/MatrixLedsRGB/.vscode/extensions.json b/ESP8266/MatrixLedsRGB/.vscode/extensions.json new file mode 100644 index 0000000..0f0d740 --- /dev/null +++ b/ESP8266/MatrixLedsRGB/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ] +} diff --git a/ESP8266/MatrixLedsRGB/.vscode/settings.json b/ESP8266/MatrixLedsRGB/.vscode/settings.json new file mode 100644 index 0000000..74fc39c --- /dev/null +++ b/ESP8266/MatrixLedsRGB/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cSpell.language": ",es" +} \ No newline at end of file diff --git a/ESP8266/MatrixLedsRGB/include/README b/ESP8266/MatrixLedsRGB/include/README new file mode 100644 index 0000000..194dcd4 --- /dev/null +++ b/ESP8266/MatrixLedsRGB/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/ESP8266/MatrixLedsRGB/lib/README b/ESP8266/MatrixLedsRGB/lib/README new file mode 100644 index 0000000..6debab1 --- /dev/null +++ b/ESP8266/MatrixLedsRGB/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into executable file. + +The source code of each library should be placed in a an own separate directory +("lib/your_library_name/[here are source files]"). + +For example, see a structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/ESP8266/MatrixLedsRGB/platformio.ini b/ESP8266/MatrixLedsRGB/platformio.ini new file mode 100644 index 0000000..4d95cce --- /dev/null +++ b/ESP8266/MatrixLedsRGB/platformio.ini @@ -0,0 +1,27 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 +framework = arduino +lib_deps = + SPI + Wire + knolleary/PubSubClient@^2.8 + arduino-libraries/NTPClient@^3.1.0 +monitor_speed = 115200 +upload_speed = 256000 +monitor_filters = colorize +upload_protocol = espota +upload_port = 192.168.1.104 +upload_flags = + --port=8266 + --auth=un260874 diff --git a/ESP8266/MatrixLedsRGB/src/main.cpp b/ESP8266/MatrixLedsRGB/src/main.cpp new file mode 100644 index 0000000..e1b5be9 --- /dev/null +++ b/ESP8266/MatrixLedsRGB/src/main.cpp @@ -0,0 +1,111 @@ +#include +#include + + +#include +#include +//#include + +WiFiUDP ntpUDP; +NTPClient timeClient(ntpUDP, "0.south-america.pool.ntp.org", -18000, 6000); + +#include "matrix.hpp" +#include "mqtt.hpp" +#include "ota.hpp" + +const char *ssid = "mdchaparror"; +const char *password = "un260874"; +long timeAnterior; +long matrix_time; + + +// void t1Callback(); +// void t2Callback(); +// void serialEvent(); + +// Task t1(120, TASK_FOREVER, &t1Callback); +// Task t2(100, TASK_FOREVER, &t2Callback); + +// Scheduler runner; + +void setup() +{ + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + while (WiFi.waitForConnectResult() != WL_CONNECTED) + { + delay(5000); + ESP.restart(); + } + Serial.println(WiFi.localIP()); + mensaje += WiFi.localIP().toString(); + + ota_init(); + mqtt_init(); + + timeClient.begin(); + matrix_init(); + + + // runner.init(); + // runner.addTask(t1); + // runner.addTask(t2); + // delay(1000); + // t1.enable(); + // t2.enable(); +} +// void loop() +// { +// runner.execute(); +// } + +// void t1Callback() +// { +// ArduinoOTA.handle(); +// show_matrix(); +// } + +// void t2Callback() +// { + +// if ((millis() - timeAnterior) > 1000) +// { +// timeAnterior = millis(); +// if (!client.connected()) +// { +// reconnect(); +// } +// timeClient.update(); //sincronizamos con el server NTP +// hora = timeClient.getFormattedTime(); +// texto = mensaje + " " + hora; +// longitud = longitud = texto.length() * 5 + 64; +// } + +// client.loop(); +// } + + +void loop(){ + ArduinoOTA.handle(); + if((millis() - matrix_time) > 100){ + matrix_time = millis(); + show_matrix(); + } + + + if ((millis() - timeAnterior) > 1000) + { + timeAnterior = millis(); + if (!client.connected()) + { + reconnect(); + } + timeClient.update(); //sincronizamos con el server NTP + hora = timeClient.getFormattedTime(); + texto = mensaje + " " + hora; + longitud = texto.length() * 5 + 64; + } + + client.loop(); +} \ No newline at end of file diff --git a/ESP8266/MatrixLedsRGB/src/matrix.hpp b/ESP8266/MatrixLedsRGB/src/matrix.hpp new file mode 100644 index 0000000..527e04a --- /dev/null +++ b/ESP8266/MatrixLedsRGB/src/matrix.hpp @@ -0,0 +1,46 @@ +#include +#include +#include +#define PIN D7 //DIN MATRIZ +String texto = "Puerto Ota: "; +String mensaje = "Puerto Ota: "; +String hora = "00:00:00"; +int R = 255; +int G = 0; +int B = 0; + +Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32, 8, PIN, + NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, + NEO_GRB + NEO_KHZ800); + +int x = matrix.width(); +int longitud = 0; +int pass = 0; + +const uint16_t colors[] = { + matrix.Color(255, 102, 0), + matrix.Color(255, 204, 0), + matrix.Color(128, 0, 128), + matrix.Color(255, 0, 255)}; + +void matrix_init() +{ + matrix.begin(); + matrix.setTextWrap(false); + matrix.setBrightness(20); + matrix.setTextColor(matrix.Color(R, G, B)); +} + +void show_matrix() +{ + matrix.fillScreen(0); + matrix.setCursor(x, 1); + matrix.print(texto); + matrix.setTextColor(matrix.Color(R, G, B)); + if (--x < -1 * longitud) + { + x = matrix.width(); + + } + matrix.show(); +} \ No newline at end of file diff --git a/ESP8266/MatrixLedsRGB/src/mqtt.hpp b/ESP8266/MatrixLedsRGB/src/mqtt.hpp new file mode 100644 index 0000000..df4723b --- /dev/null +++ b/ESP8266/MatrixLedsRGB/src/mqtt.hpp @@ -0,0 +1,88 @@ +#include +// MQTT: ID, server IP, port, username and password +const char *MQTT_CLIENT_ID = "matrix_client"; +const char *MQTT_SERVER_IP = "192.168.1.105"; +const uint16_t MQTT_SERVER_PORT = 1883; +const char *MQTT_USER = "mdchaparror"; +const char *MQTT_PASSWORD = "un80187452"; +const char *MQTT_TOPIC_MENSAJE = "matrix/mensaje"; +const char *MQTT_TOPIC_RGB = "matrix/rgb"; + + +WiFiClient wifiClient; +PubSubClient client(wifiClient); +String getValue(String data, char separator, int index); + +void callback(char *p_topic, byte *p_payload, unsigned int p_length) +{ + // concat the payload into a string + String payload; + for (uint8_t i = 0; i < p_length; i++) + { + payload.concat((char)p_payload[i]); + } + + if (String(MQTT_TOPIC_MENSAJE).equals(p_topic)) + { + mensaje = String(payload); + texto = mensaje + " " + hora; + x = matrix.width(); + longitud = texto.length() * 5 + 64; + } + if (String(MQTT_TOPIC_RGB).equals(p_topic)) + { + String rgb = String(payload); + R = getValue(rgb,',',0).toInt(); + G = getValue(rgb,',',1).toInt(); + B = getValue(rgb,',',2).toInt(); + texto = mensaje + " " + hora; + x = matrix.width(); + longitud = texto.length() * 5 + 64; + } + + + + +} + +void reconnect() +{ + while (!client.connected()) + { + if (client.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASSWORD)) + { + Serial.println("INFO: connected"); + client.subscribe(MQTT_TOPIC_MENSAJE); + client.subscribe(MQTT_TOPIC_RGB); + } + else + { + Serial.print("ERROR: failed, rc="); + Serial.print(client.state()); + Serial.println("DEBUG: try again in 5 seconds"); + } + } +} + +void mqtt_init() +{ + client.setServer(MQTT_SERVER_IP, MQTT_SERVER_PORT); + client.setCallback(callback); +} + +String getValue(String data, char separator, int index) +{ + int found = 0; + int strIndex[] = {0, -1}; + int maxIndex = data.length()-1; + + for(int i=0; i<=maxIndex && found<=index; i++){ + if(data.charAt(i)==separator || i==maxIndex){ + found++; + strIndex[0] = strIndex[1]+1; + strIndex[1] = (i == maxIndex) ? i+1 : i; + } + } + + return found>index ? data.substring(strIndex[0], strIndex[1]) : ""; +} \ No newline at end of file diff --git a/ESP8266/MatrixLedsRGB/src/ota.hpp b/ESP8266/MatrixLedsRGB/src/ota.hpp new file mode 100644 index 0000000..dec3628 --- /dev/null +++ b/ESP8266/MatrixLedsRGB/src/ota.hpp @@ -0,0 +1,10 @@ + + #include + + + void ota_init() +{ + ArduinoOTA.setHostname("OtaMatrix"); + ArduinoOTA.setPassword((const char *)"un260874"); + ArduinoOTA.begin(); +} \ No newline at end of file diff --git a/ESP8266/MatrixLedsRGB/test/README b/ESP8266/MatrixLedsRGB/test/README new file mode 100644 index 0000000..df5066e --- /dev/null +++ b/ESP8266/MatrixLedsRGB/test/README @@ -0,0 +1,11 @@ + +This directory is intended for PIO Unit Testing and project tests. + +Unit Testing is a software testing method by which individual units of +source code, sets of one or more MCU program modules together with associated +control data, usage procedures, and operating procedures, are tested to +determine whether they are fit for use. Unit testing finds problems early +in the development cycle. + +More information about PIO Unit Testing: +- https://docs.platformio.org/page/plus/unit-testing.html diff --git a/ESP8266/README.md b/ESP8266/README.md new file mode 100644 index 0000000..8e17759 --- /dev/null +++ b/ESP8266/README.md @@ -0,0 +1,7 @@ +# PROYECTOS ESP8266 + +## Boards + ++ ESP8266 GENERIC ++ WEMOS R1 ++ NodeMCU diff --git a/README.md b/README.md new file mode 100644 index 0000000..758814e --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# proyectos_platformio + +proyectos de platformio diff --git a/STM32/BLINK_STM32F103/.gitignore b/STM32/BLINK_STM32F103/.gitignore new file mode 100644 index 0000000..620fc39 --- /dev/null +++ b/STM32/BLINK_STM32F103/.gitignore @@ -0,0 +1,6 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch +.vscode diff --git a/STM32/BLINK_STM32F103/include/README b/STM32/BLINK_STM32F103/include/README new file mode 100644 index 0000000..194dcd4 --- /dev/null +++ b/STM32/BLINK_STM32F103/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/STM32/BLINK_STM32F103/lib/README b/STM32/BLINK_STM32F103/lib/README new file mode 100644 index 0000000..6debab1 --- /dev/null +++ b/STM32/BLINK_STM32F103/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into executable file. + +The source code of each library should be placed in a an own separate directory +("lib/your_library_name/[here are source files]"). + +For example, see a structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/STM32/BLINK_STM32F103/platformio.ini b/STM32/BLINK_STM32F103/platformio.ini new file mode 100644 index 0000000..76cdfe0 --- /dev/null +++ b/STM32/BLINK_STM32F103/platformio.ini @@ -0,0 +1,22 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:genericSTM32F103C8] +platform = ststm32 +board = genericSTM32F103C8 +framework = arduino +; upload_protocol = hid +; build_flags = +; -D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC +; -D HAL_PCD_MODULE_ENABLED +; monitor_speed =115200 + +upload_protocol = stlink +debug_tool = stlink \ No newline at end of file diff --git a/STM32/BLINK_STM32F103/src/main.cpp b/STM32/BLINK_STM32F103/src/main.cpp new file mode 100644 index 0000000..8895d88 --- /dev/null +++ b/STM32/BLINK_STM32F103/src/main.cpp @@ -0,0 +1,12 @@ +#include + +void setup() { + pinMode(PC13,OUTPUT); + } + +void loop() { + digitalWrite(PC13,LOW); + delay(200); + digitalWrite(PC13,HIGH); + delay(200); +} \ No newline at end of file diff --git a/STM32/BLINK_STM32F103/test/README b/STM32/BLINK_STM32F103/test/README new file mode 100644 index 0000000..b94d089 --- /dev/null +++ b/STM32/BLINK_STM32F103/test/README @@ -0,0 +1,11 @@ + +This directory is intended for PlatformIO Unit Testing and project tests. + +Unit Testing is a software testing method by which individual units of +source code, sets of one or more MCU program modules together with associated +control data, usage procedures, and operating procedures, are tested to +determine whether they are fit for use. Unit testing finds problems early +in the development cycle. + +More information about PlatformIO Unit Testing: +- https://docs.platformio.org/page/plus/unit-testing.html diff --git a/STM32/README.md b/STM32/README.md new file mode 100644 index 0000000..19a0326 --- /dev/null +++ b/STM32/README.md @@ -0,0 +1,9 @@ +# PROYECTOS STM32 + +## Boards + ++ STM32F102C8T6 + +![esquema](STM32F103C8T6_1.png) +![esquema](Stm32f103_pinout_diagram.png) + diff --git a/STM32/STM32F103C8T6_1.png b/STM32/STM32F103C8T6_1.png new file mode 100644 index 0000000..acf4be3 Binary files /dev/null and b/STM32/STM32F103C8T6_1.png differ diff --git a/STM32/Stm32f103_pinout_diagram.png b/STM32/Stm32f103_pinout_diagram.png new file mode 100644 index 0000000..4bd50d1 Binary files /dev/null and b/STM32/Stm32f103_pinout_diagram.png differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pa1.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pa1.bin new file mode 100644 index 0000000..4dbb06b Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pa1.bin differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pa9.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pa9.bin new file mode 100644 index 0000000..bf01d05 Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pa9.bin differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pb0.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pb0.bin new file mode 100644 index 0000000..bcfbb26 Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pb0.bin differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pb12.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pb12.bin new file mode 100644 index 0000000..6dd6e8b Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pb12.bin differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pb7.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pb7.bin new file mode 100644 index 0000000..56d3d1b Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pb7.bin differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pb9.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pb9.bin new file mode 100644 index 0000000..c85b965 Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pb9.bin differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pc13.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pc13.bin new file mode 100644 index 0000000..ce17f6c Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pc13.bin differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pd1.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pd1.bin new file mode 100644 index 0000000..4666df9 Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pd1.bin differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pd2.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pd2.bin new file mode 100644 index 0000000..e47bf66 Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pd2.bin differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pe2.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pe2.bin new file mode 100644 index 0000000..e08d1c3 Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pe2.bin differ diff --git a/STM32/stm32_binaries/F103/high_density/hid_generic_pe5.bin b/STM32/stm32_binaries/F103/high_density/hid_generic_pe5.bin new file mode 100644 index 0000000..dc3bc7e Binary files /dev/null and b/STM32/stm32_binaries/F103/high_density/hid_generic_pe5.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pa1.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pa1.bin new file mode 100644 index 0000000..ebff765 Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pa1.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pa9.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pa9.bin new file mode 100644 index 0000000..2a0a620 Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pa9.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb0.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb0.bin new file mode 100644 index 0000000..cffaa0e Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb0.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb12.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb12.bin new file mode 100644 index 0000000..5d84800 Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb12.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb7.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb7.bin new file mode 100644 index 0000000..eab373b Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb7.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb9.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb9.bin new file mode 100644 index 0000000..2746866 Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pb9.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pc13.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pc13.bin new file mode 100644 index 0000000..fe6cfa2 Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pc13.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pd1.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pd1.bin new file mode 100644 index 0000000..d8da4e0 Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pd1.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pd2.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pd2.bin new file mode 100644 index 0000000..a114b12 Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pd2.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pe2.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pe2.bin new file mode 100644 index 0000000..653586b Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pe2.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pe5.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pe5.bin new file mode 100644 index 0000000..375c0b0 Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_generic_pe5.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_maple_mini.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_maple_mini.bin new file mode 100644 index 0000000..1f2259f Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_maple_mini.bin differ diff --git a/STM32/stm32_binaries/F103/low_and_medium_density/hid_mini-stm32v3.bin b/STM32/stm32_binaries/F103/low_and_medium_density/hid_mini-stm32v3.bin new file mode 100644 index 0000000..6b5e9a2 Binary files /dev/null and b/STM32/stm32_binaries/F103/low_and_medium_density/hid_mini-stm32v3.bin differ diff --git a/STM32/stm32_binaries/F407/diymroe_stm32f407vgt_pe0.bin b/STM32/stm32_binaries/F407/diymroe_stm32f407vgt_pe0.bin new file mode 100644 index 0000000..19e3095 Binary files /dev/null and b/STM32/stm32_binaries/F407/diymroe_stm32f407vgt_pe0.bin differ diff --git a/Texas/README.md b/Texas/README.md new file mode 100644 index 0000000..3eab603 --- /dev/null +++ b/Texas/README.md @@ -0,0 +1,15 @@ +# PROYECTOS STM32 + +## Boards + ++ TivaC (TM4C123) ++ TivaC (TM4C129) ++ Stellaris + +### PinOUT TM4C123 +![pinmap](pinMapsTivaC123.jpeg) +![pinmapBack](pinMapsTivaC123Back.jepeg) + +### PinOUT TM4C129 +![pinmap](pinMapsTivaC129.jpeg) +![pinmapBack](pinMapsTivaC129Back.jepeg) diff --git a/Texas/pinMapsTivaC123.jpeg b/Texas/pinMapsTivaC123.jpeg new file mode 100644 index 0000000..7bb051d Binary files /dev/null and b/Texas/pinMapsTivaC123.jpeg differ diff --git a/Texas/pinMapsTivaC123Back.jpeg b/Texas/pinMapsTivaC123Back.jpeg new file mode 100644 index 0000000..be020a9 Binary files /dev/null and b/Texas/pinMapsTivaC123Back.jpeg differ diff --git a/Texas/pinMapsTivaC129.jpeg b/Texas/pinMapsTivaC129.jpeg new file mode 100644 index 0000000..d6a5253 Binary files /dev/null and b/Texas/pinMapsTivaC129.jpeg differ diff --git a/Texas/pinMapsTivaC129Back.jpeg b/Texas/pinMapsTivaC129Back.jpeg new file mode 100644 index 0000000..e225f21 Binary files /dev/null and b/Texas/pinMapsTivaC129Back.jpeg differ