En el instituto estamos usando la placa de Keyestudio ESP32 STEAMakers con el programa de Arduino Blocks y últimamente nos está saliendo un error que lo dejo aquí abajo, hemos probado de reiniciar el ordenador y de poner un código vacío pero nos sigue dando error.
Error:
Exception: ArduinoError('\n\n{\n "error": "Error during Upload: Failed uploading: uploading error: exit status 0xffffffff",\n "output": {\n "stdout": "Sketch uses 197770 bytes (6%) of program storage space. Maximum is 3145728 bytes.\\nGlobal variables use 13092 bytes (3%) of dynamic memory, leaving 314588 bytes for local variables. Maximum is 327680 bytes.\\nesptool.py v3.0-dev\\r\\nSerial port COM3\\r\\nConnecting...\\r\\n",\n "stderr": "Traceback (most recent call last):\\r\\n File \\"esptool.py\\", line 3682, in \\u003cmodule\\u003e\\r\\n File \\"esptool.py\\", line 3675, in _main\\r\\n File \\"esptool.py\\", line 3330, in main\\r\\n File \\"esptool.py\\", line 512, in connect\\r\\n File \\"esptool.py\\", line 492, in _connect_attempt\\r\\n File \\"esptool.py\\", line 431, in sync\\r\\n File \\"esptool.py\\", line 369, in command\\r\\n File \\"esptool.py\\", line 332, in write\\r\\n File \\"site-packages\\\\serial\\\\serialwin32.py\\", line 323, in write\\r\\nserial.serialutil.SerialTimeoutException: Write timeout\\r\\nFailed to execute script esptool\\r\\n"\n }\n}')
Código:
#include <ABLocks_TimerFreeTone.h>
#include "WiFi.h"
#include "PubSubClient.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_CCS811.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
double b;
double t;
double Co2;
WiFiClient espmqtt_wifiClient;
PubSubClient espmqtt_client(espmqtt_wifiClient);
String espmqtt_topic="";
String espmqtt_msg_str="";
double espmqtt_msg_number=0;
char espmqtt_payload[128];
OneWire oneWireBus_26(26);
DallasTemperature ds18b20_26(&oneWireBus_26);
Adafruit_BMP280 bmp280;
Adafruit_CCS811 sensor_ccs811;
unsigned long sensor_ccs811_lastread=0;
double sensor_ccs811_co2_ppm=0.0;
double sensor_ccs811_co2_mgm3=0.0;
double sensor_ccs811_co2_tvoc_ppb=0.0;
unsigned long task_time_ms=0;
Adafruit_SSD1306 oled_1(128,64, &Wire,-1);
bool oled_1_autoshow=true;
String rtt_melody_13=":d=4,o=5,b=160:e6,8b,8c6,8d6,16e6,16d6,8c6,8b,a,8a,8c6,e6,8d6,8c6,b,8b,8c6,d6,e6,c6,a,2a,8p";
double math_random_int(int a,int b) {
if (a > b) {
int c = a;
a = b;
b = c;
}
return (double)random(a,b+1);
}
static const uint8_t PROGMEM oled_data_0[] PROGMEM = {128,64,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x76,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
const char espwifi_ssid[]="Xarxa";
const char espwifi_pass[]="Mates2020";
const char espmqtt_broker[]="io.adafruit.com";
const int espmqtt_port=1883;
const char espmqtt_user[]="ThiagoZB";
const char espmqtt_pass[]="aio_GZJL00EP6L79Eh7Syv1Yr75Dcjzy";
const char espmqtt_clientid[]="AB_";
void AlarmaCo2() {
oled_1.clearDisplay();
if(oled_1_autoshow)oled_1.display();
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Co2!"));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,HIGH);
TimerFreeTone(16,1000,500);
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Co2!"));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,LOW);
TimerFreeTone(16,0,500);
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Co2!"));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,HIGH);
TimerFreeTone(16,1000,500);
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Co2!"));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,LOW);
TimerFreeTone(16,0,500);
}
void AlarmaTemp() {
oled_1.clearDisplay();
if(oled_1_autoshow)oled_1.display();
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Temp! "));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,HIGH);
TimerFreeTone(16,500,500);
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Temp! "));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,LOW);
TimerFreeTone(16,0,500);
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Temp! "));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,HIGH);
TimerFreeTone(16,500,500);
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Temp! "));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,LOW);
TimerFreeTone(16,0,500);
}
void AlarmaPr() {
oled_1.clearDisplay();
if(oled_1_autoshow)oled_1.display();
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Pressio!"));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,HIGH);
TimerFreeTone(16,700,500);
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Pressio!"));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,LOW);
TimerFreeTone(16,0,500);
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Pressio!"));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,HIGH);
TimerFreeTone(16,700,500);
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Pressio!"));
if(oled_1_autoshow)oled_1.display();
Info();
digitalWrite(18,LOW);
TimerFreeTone(16,0,500);
}
void espmqtt_onreceive(){};
void espmqtt_setup(){
delay(10);;
randomSeed(micros());
espmqtt_client.setServer(espmqtt_broker, espmqtt_port);
espmqtt_client.setCallback(espmqtt_callback);
espmqtt_subscribe();
}
void espmqtt_loop(){
if (!espmqtt_client.connected()) {
espmqtt_client.connect(espmqtt_clientid,espmqtt_user,espmqtt_pass);
espmqtt_subscribe();
}
if (espmqtt_client.connected()) {
espmqtt_client.loop();
}
}
double espmqtt_payload2double(unsigned char *_payload, int _length){
int i;
for (i = 0; i<_length && i<128; i++){
espmqtt_payload[i] = _payload[i];
}
espmqtt_payload[i] = 0;
return atof(espmqtt_payload);
}
String espmqtt_payload2string(unsigned char *_payload, int _length){
int i;
for (i = 0; i<_length && i<128; i++){
espmqtt_payload[i] = _payload[i];
}
espmqtt_payload[i] = 0;
return String(espmqtt_payload);
}
void espmqtt_callback(char* _topic, unsigned char* _payload, unsigned int _payloadlength){
espmqtt_topic=String(_topic);
espmqtt_msg_str=espmqtt_payload2string(_payload,_payloadlength);
espmqtt_msg_number=espmqtt_payload2double(_payload,_payloadlength);
espmqtt_onreceive();
}
void espmqtt_subscribe(){
}
void Info() {
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,16);
oled_1.print(String(b)+String("mb"));
if(oled_1_autoshow)oled_1.display();
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,32);
oled_1.print(String(t)+String("C"));
if(oled_1_autoshow)oled_1.display();
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,48);
oled_1.print(String(Co2)+String("ppm"));
if(oled_1_autoshow)oled_1.display();
espmqtt_client.publish(String("ThiagoZB/f/Mb").c_str(),String(b).c_str());
espmqtt_client.publish(String("ThiagoZB/f/Temp").c_str(),String(t).c_str());
espmqtt_client.publish(String("ThiagoZB/f/Ppm").c_str(),String(Co2).c_str());
}
void Info2() {
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Data:"));
if(oled_1_autoshow)oled_1.display();
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,16);
oled_1.print(String(b)+String("mb"));
if(oled_1_autoshow)oled_1.display();
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,32);
oled_1.print(String(t)+String("C"));
if(oled_1_autoshow)oled_1.display();
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,48);
oled_1.print(String(Co2)+String("ppm"));
if(oled_1_autoshow)oled_1.display();
espmqtt_client.publish(String("ThiagoZB/f/aio_GZJL00EP6L79Eh7Syv1Yr75Dcjzy").c_str(),String(b).c_str());
espmqtt_client.publish(String("ThiagoZB/f/aio_GZJL00EP6L79Eh7Syv1Yr75Dcjzy").c_str(),String(t).c_str());
espmqtt_client.publish(String("ThiagoZB/f/aio_GZJL00EP6L79Eh7Syv1Yr75Dcjzy").c_str(),String(Co2).c_str());
}
double fnc_ds128b20_temp_26(int _index)
{
ds18b20_26.requestTemperatures();
return ds18b20_26.getTempCByIndex(_index);
}
double fnc_ccs811_data(int _type)
{
double v=0.0;
if((millis()-sensor_ccs811_lastread)>=1000){
if(sensor_ccs811.available() && (!sensor_ccs811.readData()) ){
//update new values from sensor
sensor_ccs811_co2_ppm=((double)sensor_ccs811.geteCO2());
sensor_ccs811_co2_mgm3=((double)sensor_ccs811_co2_ppm*(double)1.8);
sensor_ccs811_co2_tvoc_ppb=((double)sensor_ccs811.getTVOC());
sensor_ccs811_lastread=millis();
}
else{
//error reading sensor, reset values...
sensor_ccs811_co2_ppm=0.0;
sensor_ccs811_co2_mgm3=0.0;
sensor_ccs811_co2_tvoc_ppb=0.0;
}
}
//return value
if(_type==0)v=sensor_ccs811_co2_ppm;
if(_type==1)v=sensor_ccs811_co2_tvoc_ppb;
if(_type==2)v=sensor_ccs811_co2_mgm3;
return v;
}
void espwifi_setup(){
WiFi.mode(WIFI_STA);
WiFi.begin(espwifi_ssid,espwifi_pass);
while (WiFi.status() != WL_CONNECTED) delay(500);
}
void setup()
{
pinMode(18, OUTPUT);
pinMode(16, OUTPUT);
pinMode(26, OUTPUT);
ds18b20_26.begin();
bmp280.begin(0x76);
bmp280.setSampling(Adafruit_BMP280::MODE_NORMAL,Adafruit_BMP280::SAMPLING_X2,Adafruit_BMP280::SAMPLING_X16,Adafruit_BMP280::FILTER_X16,Adafruit_BMP280::STANDBY_MS_500);
sensor_ccs811.begin();
Serial.begin(115200);
Serial.flush();
while(Serial.available()>0)Serial.read();
oled_1.begin(SSD1306_SWITCHCAPVCC,0x3C);
oled_1.setRotation(0);
oled_1.display();
TimerFreeToneRtttl(26,(const char *)rtt_melody_13.c_str());
for (int count = 0; count < 3; count++) {
oled_1.drawBitmap((math_random_int(80, 0)),(math_random_int(10, 20)),&oled_data_0[2],oled_data_0[0], oled_data_0[1],WHITE);
if(oled_1_autoshow)oled_1.display();
oled_1.setTextSize(2);
oled_1.setTextColor(WHITE);
oled_1.setCursor(0,0);
oled_1.print(String("Benvinguts"));
if(oled_1_autoshow)oled_1.display();
delay(200);
}
espwifi_setup();
espmqtt_setup();
}
void loop()
{
yield();
espmqtt_loop();
if((millis()-task_time_ms)>=20000){
task_time_ms=millis();
oled_1.clearDisplay();
if(oled_1_autoshow)oled_1.display();
t = fnc_ds128b20_temp_26(0);
delay(500);
b = (bmp280.readPressure()/100.0);
delay(500);
Co2 = fnc_ccs811_data(0);
delay(500);
if (((t <= 10) || (t >= 28))) {
AlarmaTemp();
}
else {
Info2();
delay(500);
}
if (((b < 950) || (b > 1030))) {
AlarmaPr();
}
else {
Info2();
delay(500);
}
if (((Co2 < 300) || (Co2 > 550))) {
AlarmaCo2();
}
else {
Info2();
delay(500);
}
}
}
El tema de Arduino es bastante nuevo así que ningún profesor todavía no sabe como arreglarlo y no soy el único que le pasa.
Muchas Gracias.