Coder Social home page Coder Social logo

danielsrs / esp8266_es Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 26.64 MB

Sistema de sensoriamento genérico usando uma Raspberry Pi, uma ESP8266 e comunicação através do protocolo UART

C 65.82% C++ 16.40% Makefile 1.80% Assembly 15.98%
arm assembly c cpp esp8266 esp8266-arduino lcd-driver lcd16x2 raspberry-pi-zero-w serial-communication

esp8266_es's Introduction

css-in-readme

Hello, My name Daniel Santa Rosa !

Welcome to my Github profile 👋🏽


🔭 Skill set:


Daniel-Js Daniel-Ts Daniel-React Daniel-HTML Daniel-CSS Daniel-Python Daniel-Csharp Daniel-Csharp Daniel-Csharp Daniel-Csharp Daniel-Csharp Daniel-Csharp Daniel-Csharp Daniel-Csharp Daniel-Csharp Daniel-Csharp Daniel-Csharp


👨🏽‍💻 I'm currently working on:

  • My React, Express, and Node skills
  • Some mobile and desktop apps with react native

🤓 I'm currently learning:

  • TypeScript
  • Laravel

🤔 I want to learn:

  • Next.js
  • GraphQL
  • Flutter

Some stats:


Visitor Stats

Outside of coding I enjoy:

  • Reading books 📖
  • Drawing (I suck) 🖌️
  • Music 🎶
  • Fantasy movies/tv shows/books 🧙🏽‍♂️🪄


Let's Connect ☕


css-in-readme

esp8266_es's People

Contributors

alexandrecaribe avatar danielsrs avatar joanderson90 avatar

Stargazers

 avatar

Watchers

 avatar

esp8266_es's Issues

setup

instalei o edge
habilitei o tap to click no touchpad
instalei o vscode

instalei:
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python

alterei a path editando ~/.profile
export PATH="$PATH:$HOME/esp/xtensa-lx106-elf/bin"

alterei a path editando ~/.profile
export IDF_PATH="$HOME/esp/ESP8266_RTOS_SDK"

instalei o pip2
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python2 get-pip.py

instalei:
python -m pip install --user -r $IDF_PATH/requirements.txt

alterado permissões:
sudo usermod -a -G dialout $USER

Template + Serial

#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

#ifndef STASSID
//#define STASSID "INTELBRAS"
//#define STAPSK  "Pbl-Sistemas-Digitais"
#define STASSID "Fortaleza Digital"
#define STAPSK  "marinfinito314"
#endif

const char* ssid = STASSID;
const char* password = STAPSK;

// Nome do ESP na rede
const char* host = "ESP-10.0.0.109";

// Definições de rede
IPAddress local_IP(10, 0, 0, 109);
IPAddress gateway(10, 0, 0, 1);
IPAddress subnet(255, 255, 0, 0);


void setup() {
  Serial.begin(115200);
  Serial.println("Booting");

  // Configuração do IP fixo no roteador, se não conectado, imprime mensagem de falha
  if (!WiFi.config(local_IP, gateway, subnet)) {
    Serial.println("STA Failed to configure");
  }

  
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // Port defaults to 8266
  // ArduinoOTA.setPort(8266);

  // Hostname defaults to esp8266-[ChipID]
   ArduinoOTA.setHostname(host);

  // No authentication by default
  // ArduinoOTA.setPassword("admin");

  // Password can be set with it's md5 value as well
  // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
  // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");

  ArduinoOTA.onStart([]() {
    String type;
    if (ArduinoOTA.getCommand() == U_FLASH) {
      type = "sketch";
    } else { // U_FS
      type = "filesystem";
    }

    // NOTE: if updating FS this would be the place to unmount FS using FS.end()
    Serial.println("Start updating " + type);
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("\nEnd");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("Error[%u]: ", error);
    if (error == OTA_AUTH_ERROR) {
      Serial.println("Auth Failed");
    } else if (error == OTA_BEGIN_ERROR) {
      Serial.println("Begin Failed");
    } else if (error == OTA_CONNECT_ERROR) {
      Serial.println("Connect Failed");
    } else if (error == OTA_RECEIVE_ERROR) {
      Serial.println("Receive Failed");
    } else if (error == OTA_END_ERROR) {
      Serial.println("End Failed");
    }
  });
  ArduinoOTA.begin();
  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  //Definindo pinos como entrada
  pinMode(5, OUTPUT);
}

int counter = 0;

void loop() {
  if (counter % 2 == 0) {
    Serial.print("--");
  } else {
    Serial.print("++");
  }
  // Faz a leitura
  String leitura = Serial.readString();
  // Debug
  //Serial.printf("\nLido: %s\n", Serial.readString());
  if (leitura.length() > 0) {
    int comando = leitura.charAt(0);
    int endereco = leitura.charAt(1);
    Serial.printf("comando: %i\n", comando);
    Serial.printf("endereco: %i\n", endereco);
    if (comando == 45) {
      pinMode(LED_BUILTIN, OUTPUT);
      digitalWrite(LED_BUILTIN, LOW);
      delay(1000);
    }
    else if (comando == 43) {
      Serial.printf("Pino GPIO5: %i", digitalRead(5));
    } 
    else {
      pinMode(LED_BUILTIN, OUTPUT);
      digitalWrite(LED_BUILTIN, HIGH);
    }
  }
  counter++;
  // Limpa para que não haja ruido na proxima leitura
  Serial.readString();
  ///Serial.flush();
  //Serial.flush();
  ArduinoOTA.handle();
}

LCD

@Timer regressivo que começa com o valor inicial 30 e exibe a contagem no display.
@Este código foi testado em uma Raspberry pi zero W e um display LCD HD44780U.
@Autores : Joanderson Santos, Daniel Santa Rosa e Alexandre Silva Caribé 


@Definição das constantes
.equ pagelen, 4096              @ Tamanho da pagina de memoria paginada
.equ setregoffset, 28 
.equ clrregoffset, 40 
.equ prot_read, 1  
.equ prot_write, 2  
.equ map_shared, 1  
.equ sys_open, 5                @ Numero da syscall para abrir arquivo
.equ sys_map, 192  
.equ nano_sleep, 162						@ Numero da syscall para nanosleep 
.equ level, 52                  @ Offset para o registrador de niveis da GPIO
.equ off, 0
.equ on, 1

@Faz a chamada para o serviço de nanosleep do Linux
@Passa a referência para o timespec nos registradores r0 e r1.
.macro nanoSleep
  LDR R0,=timespecsec
  LDR R1,=timespecnano
  MOV R7, #nano_sleep
  SVC 0
.endm


.macro nanoSleep2 time
  LDR R0, =\time
  LDR R1, =\time
  MOV R7, #nano_sleep
  SVC 0
.endm


@Faz o mapeamento da memória referente ao endereço base da GPIO
@e move esse valor mapeado para o R8.
.macro MapAddressGPIO

  @ opening the file
  LDR R0, = fileName
  MOV R1, #0x1b0
  ORR R1, #0x006
  MOV R2, R1
  MOV R7, #sys_open
  SVC 0
  MOVS R4, R0

  @ preparing the mapping
  LDR R5, =gpioaddr
  LDR R5, [R5]
  MOV R1, #pagelen
  MOV R2, #(prot_read + prot_write)
  MOV R3, #map_shared
  MOV R0, #0
  MOV R7, #sys_map
  SVC 0
  MOVS R8, R0
  .ltorg

.endm


@Seta um valor para um determinado pino da Gpio
.macro SetGpioValue pin, value

	@Obtém os valores passados por parâmetro

  MOV R1, \value
  LDR R3, =\pin

	@Verifica se o valor a ser enviado para o pino é 0 ou 1
	@Se for zero utiliza o clrregoffset para selecionar o registrador clear (GPCLR0)
	@Caso contrário utiliza o setregoffset para selecionar o registrador set (GPSET0)

  MOV R2, R8    
  CMP R1,#0    
  ADDEQ R2, #clrregoffset 
  CMP R1,#1    
  ADDEQ R2, #setregoffset 

	@Manda o valor do pino no seu bit correspondente para o registrador selecionado acima.

  MOV R0, #1    
  ADD R3, #8    
  LDR R3, [R3]   
  LSL R0, R3    
  STR R0, [R2]   
.endm

@Seta um determinado pino da Gpio como output
.macro GPIODirectionOut pin

  LDR R2, =\pin      @Armazena o endereço referente ao pino que foi passado por parâmetro em R2
  LDR R2, [R2]       @Armazena o valor do pino citado acima
  LDR R1, [R8, R2]   @Armazena em R1 o endereço da GPIO base + offset referente ao pino
  LDR R3, =\pin 	   @Armazena o endereço referente ao pino que foi passado por parâmetro em R3 
  ADD R3, #4  	   
  LDR R3, [R3]        
  MOV R0, #0b111    @Move para R0 o valor b111 para realizar o mascaramento de bits
  LSL R0, R3  
  BIC R1, R0        @Faz o clear de 3 bits
  MOV R0, #1  
  LSL R0, R3      
  ORR R1, R0   
  STR R1, [R8, R2]  @Armazena o valor de R1 com o valor do bit correspondente ao número do pino no endereço base 
.endm                 @da GPIO

@Seta os pinos referentes ao display como output
.macro SetPinsDisplayOut

  GPIODirectionOut pinEN
  GPIODirectionOut pinRS
  GPIODirectionOut pinD7
  GPIODirectionOut pinD6
  GPIODirectionOut pinD5
  GPIODirectionOut pinD4
  .ltorg  
.endm



@Seta o display para operar em modo de 4 bits
.macro FunctionSet

  SetGpioValue pinRS, #off
  SetGpioValue pinD7, #off
  SetGpioValue pinD6, #off
  SetGpioValue pinD5, #on
  SetGpioValue pinD4, #off
 
  SetEnable
 .ltorg
.endm

@Realiza um pulso de clock para o pino referente ao enable do display
.macro SetEnable

  SetGpioValue pinEN, #off
  nanoSleep 
  SetGpioValue pinEN, #on
  nanoSleep 
  SetGpioValue pinEN, #off
  
.endm

@Liga o display e pisca o cursor
.macro OnDisplay

  SetGpioValue pinRS, #off
  SetGpioValue pinD7, #off
  SetGpioValue pinD6, #off
  SetGpioValue pinD5, #off
  SetGpioValue pinD4, #off
  SetEnable

  SetGpioValue pinRS, #off
  SetGpioValue pinD7, #on
  SetGpioValue pinD6, #on
  SetGpioValue pinD5, #on
  SetGpioValue pinD4, #on
  SetEnable
  
.endm



@Limpa todos os caracteres do display
.macro ClearDisplay

  SetGpioValue pinRS, #off
  SetGpioValue pinD7, #off
  SetGpioValue pinD6, #off
  SetGpioValue pinD5, #off
  SetGpioValue pinD4, #off
  SetEnable

  SetGpioValue pinRS, #off
  SetGpioValue pinD7, #off
  SetGpioValue pinD6, #off
  SetGpioValue pinD5, #off
  SetGpioValue pinD4, #on
  SetEnable
  
.endm


@Seta o display em mode de entrada
.macro EntrySetMode

  SetGpioValue pinRS, #off
  SetGpioValue pinD7, #off
  SetGpioValue pinD6, #off
  SetGpioValue pinD5, #off
  SetGpioValue pinD4, #off
  SetEnable

  SetGpioValue pinRS, #off
  SetGpioValue pinD7, #off
  SetGpioValue pinD6, #on
  SetGpioValue pinD5, #on
  SetGpioValue pinD4, #off
  SetEnable
  .ltorg

.endm

@Seta os 4 primeiros bits mais significativos referente a um número
@com base na tabela ASCII
@0011
.macro SetUpperBitsDefaultNumber

  SetGpioValue pinRS, #on
  SetGpioValue pinD7, #off
  SetGpioValue pinD6, #off
  SetGpioValue pinD5, #on
  SetGpioValue pinD4, #on
  SetEnable
  
.endm

@Escreve um determinado número no display
.macro writeDigit value

  SetUpperBitsDefaultNumber
  SetGpioValue pinRS, #on   @Manda nível lógico alto para o pino RS referente ao display
							  @indicando que ele irá receber um caractere


	@O código a seguir obtém os 4 bits menos significativos do valor numérico a ser
	@exibido no display, e seta cada bit referente ao pino correspondente do display

	@Ex: Obtendo o 4º bit menos significativo do valor 9
	@MOV R2,#1 -> 0000..., 0001
  @LSL R2,#3 -> 0000..., 1000
  @AND R1,R2,\value
	@0000..., 1000
	@0000..., 1001
	@0000..., 1000

  @LSR R1,#3 ->0000..., 0001
  @SetGpioValue pinD7, R1 -> pinD7 = 1



  MOV R2,#1
  LSL R2,#3
  AND R1,R2,\value
  LSR R1,#3
  SetGpioValue pinD7, R1

  MOV R2,#1
  LSL R2,#2
  AND R1,R2,\value
  LSR R1,#2
  SetGpioValue pinD6, R1

  MOV R2,#1
  LSL R2,#1
  AND R1,R2,\value
  LSR R1,#1
  SetGpioValue pinD5, R1


  MOV R2,#1
  AND R1,R2,\value
  SetGpioValue pinD4, R1
  SetEnable
  .ltorg

.endm

@Escreve um caractere qualquer no display, dado seu valor, este referente a tabela ASCII
.global write_char
write_char:
  
 push {lr}

  MOV R6, R0
  SetGpioValue pinRS, #on

  MOV R2,#1
  LSL R2,#7
  AND R1,R2, R6
  LSR R1,#7
  SetGpioValue pinD7, R1

  MOV R2,#1
  LSL R2,#6
  AND R1,R2,R6
  LSR R1,#6
  SetGpioValue pinD6, R1

  MOV R2,#1
  LSL R2,#5
  AND R1,R2,R6
  LSR R1,#5
  SetGpioValue pinD5, R1


  MOV R2,#1
  LSL R2,#4
  AND R1,R2,R6
  LSR R1,#4
  SetGpioValue pinD4, R1

  SetEnable

  SetGpioValue pinRS, #on

  MOV R2,#1
  LSL R2,#3
  AND R1,R2,R6
  LSR R1,#3
  SetGpioValue pinD7, R1

  MOV R2,#1
  LSL R2,#2
  AND R1,R2,R6
  LSR R1,#2
  SetGpioValue pinD6, R1

  MOV R2,#1
  LSL R2,#1
  AND R1,R2,R6
  LSR R1,#1
  SetGpioValue pinD5, R1


  MOV R2,#1
  AND R1,R2,R6
  SetGpioValue pinD4, R1

  SetEnable
  pop {pc}
  

@Inicia o display
.global init_display
init_display:
  push {lr}
  MapAddressGPIO
  SetPinsDisplayOut
  ClearDisplay
  FunctionSet
  FunctionSet
  FunctionSet
  OnDisplay
  EntrySetMode
  pop {pc}
  

@ Definição das variáveis
.data

@Definição dos valores referentes aos times
time1s:
  .word 1
  .word 000000000

time100ms:
  .word 0
  .word 100000000

timespecsec: .word 0
timespecnano: .word 015000000

@Definição do nome do arquivo para realizar o mapeamento da memória
@e o endereço base da GPIO
fileName: .asciz "/dev/mem"
gpioaddr: .word 0x20200

@Definição dos valores dos pinos referentes ao display

pinD4:       @Valor do pino na GPIO -> 12
  .word 4  @Offset para selecionar o registrador de função (GPFSEL1)
  .word 6  @Bit offset referente ao pino no registrador selecionado
  .word 12 @Bit offset referente ao pino no registrador set e clr (GPSET0) e (GPCLR0)

pinD5: @Valor do pino na GPIO -> 16
  .word 4 
  .word 18 
  .word 16 

pinD6: @Valor do pino na GPIO -> 20
  .word 8 
  .word 0 
  .word 20 

pinD7: @Valor do pino na GPIO -> 21
  .word 8 
  .word 3 
  .word 21 

pinRS: @Valor do pino na GPIO -> 25
  .word 8 
  .word 15 
  .word 25

pinEN: @Valor do pino na GPIO -> 1
  .word 0 
  .word 3 
  .word 1


new var

#include <stdio.h>
#include <string.h>

enum sensor_type { Undefined, Analogic, Digital };

struct sensor_data {
    char name[17];
    char default_name[2];
    char description[255];
    int value;
    int id;
    enum sensor_type type;
};

typedef struct sensor_data Sensor;

/**
 * Lê uma string e salva o valor como o nome do
 * Sensor recebido como argumento. O tamanho
 * maximo da string é de 16 caracteres; (exeto \0).
 */
void get_sensor_name(Sensor *s) {
    char v[255];
    gets(v);
    int length = (int) strlen(v);
    for (int i = 0; i < length && i < 16; i++) {
        s->name[i] = v[i];
    }
    s->name[length] = "\0";
}

/**
 * Lê uma string e salva o valor como o nome do
 * Sensor recebido como argumento. O tamanho
 * maximo da string é de 16 caracteres; (exeto \0).
 */
void get_sensor_description(Sensor *s) {
    char v[255];
    gets(v);
    int length = (int) strlen(v);
    for (int i = 0; i < length && i < 254; i++) {
        s->description[i] = v[i];
    }
    s->description[length] = "\0";
}

void readSerialBytes(char v[100]) {
    static unsigned char bu[100] = "LDDsdjf laksdjf çalsdkf";
    for (int i = 0; i < strlen(bu) && i < 100; i++) {
        v[i] = bu[i];
    }
    v[strlen(bu)] = "\0";
}

void readID(char v[100]) {
    static unsigned char bu[100] = "0�Dsdjf laksdjf çalsdkf";
    for (int i = 0; i < strlen(bu) && i < 100; i++) {
        v[i] = bu[i];
    }
    v[strlen(bu)] = "\0";
}

void readqt(char v[100]) {
    static unsigned char bu[100] = "02Dsdjf laksdjf çalsdkf";
    for (int i = 0; i < strlen(bu) && i < 100; i++) {
        v[i] = bu[i];
    }
    v[strlen(bu)] = "\0";
}

int get_number_of_sensors() {
    char aux[100];
    readqt(aux);
    int response_lenght = strlen(aux);
    if (response_lenght < 2) {
        return -1;
    }
    char val[] = "00";
    val[0] = aux[0];
    val[1] = aux[1];
    return atoi(val);
}

int get_sensor_id(int sensor_index) {
    // sendo comando S3
    sleep(0.01);
    char aux[100];
    readID(aux);
    int response_lenght = strlen(aux);
    if (response_lenght < 2) {
        return -1;
    }
    return (int) aux[1];
}

int get_sensor_default_name(int sensor_id, char n[2]) {
    // sendo N sensor id
    char aux[100];
    readSerialBytes(aux);
    int response_lenght = strlen(aux);
    if (response_lenght < 2) {
        return -1;
    }
    n[0] = aux[0];
    n[1] = aux[1];
    return 0;
}

int command_to_int(char a, char b) {
    int val = a;
    val = val << 8;
    return val | b;
}

void readSeriaval(char v[100]) {
    static unsigned char bu[100] = "LDDsdjf laksdjf çalsdkf";
    int total = 1024;
    char a = total >> 8;
    char b = total;
    bu[0] = a;
    bu[1] = b;
    for (int i = 0; i < strlen(bu) && i < 100; i++) {
        v[i] = bu[i];
    }
    v[strlen(bu)] = "\0";
}

int get_analogic_val(int sensor_id) {
    // sendo N sensor id
    char aux[100];
    readSeriaval(aux);
    int response_lenght = strlen(aux);
    if (response_lenght < 2) {
        return -1;
    }
    return command_to_int(aux[0], aux[1]);
}

void configure_sensors(Sensor sensores_digitais[31], int quantidade_sensores_digitais) {
    for (int i = 0; i < quantidade_sensores_digitais; i++) {
        sensores_digitais[i].type = Digital;
        sensores_digitais[i].id = get_sensor_id(i);
        get_sensor_default_name(sensores_digitais[i].id, sensores_digitais[i].default_name);
        printf("Nome: %s\nid: %i\ntipo: %i\n", sensores_digitais[i].default_name, sensores_digitais[i].id, sensores_digitais[i].type);
        // iguala nome ao nome padraõ
        sensores_digitais[i].name[0] = sensores_digitais[i].default_name[0];
        sensores_digitais[i].name[1] = sensores_digitais[i].default_name[1];
    }
}

int print_selection_menu(int quantidade_sensores_digitais, Sensor sensor[]) {
    printf("Selecione o numero da porta onde há um sensor digita: l\n\n");
    for (int i = 0; i < quantidade_sensores_digitais; i++) {
        printf("%i - %s\n", i + 1, sensor[i].default_name);
    }
    printf("%i - %s\n", quantidade_sensores_digitais + 1, "Não adicionar mais sensores");
    printf("Digite o numero da opção: ");
    char s[31];
    gets(s);
    int selected = atoi(s);
    if (selected < 1 || selected > quantidade_sensores_digitais + 2) {
        return -1;
    }
    return selected;
}

int main() {
    Sensor sensores_digitais[31];
    int quantidade_sensores_digitais = 0;
    
    // recebe da node a quantidade de sensores digitais disponiveis
    quantidade_sensores_digitais = get_number_of_sensors();
    // dada a quantidade de sensores, solicita ao node mscu, o nome
    // da entrada (D1, D2, D3) onde se pode ligar o sensor, o endereço
    // e o tipo como digitais
    configure_sensors(sensores_digitais, quantidade_sensores_digitais);
    
    int qt_sensores_adicionaods = 0;
    // adicionar sensores digitais
    while(1) {
        int opcao = print_selection_menu(quantidade_sensores_digitais, sensores_digitais);
        if (opcao != -1 && opcao < quantidade_sensores_digitais + 1 && opcao > 0) {
            printf("Digite o nome do sensor. Se deseja manter o padrão, apenas aperte entrer\n");
            printf("Nome: ");
            get_sensor_name(&sensores_digitais[opcao - 1]);
            
            //increementa a quantidade de sensores adicionados
            qt_sensores_adicionaods++;
        } else if (opcao == quantidade_sensores_digitais + 1) {
            // termina a selecçãõ de sendores
            break;
        }
    }
    
    quantidade_sensores_digitais = qt_sensores_adicionaods;
    
    // lendo valores
    for (int i = 0; i < quantidade_sensores_digitais; i++) {
        sensores_digitais[i].value = get_analogic_val(sensores_digitais[i].id);
        //printf("\nNome: %s\nid: %i\ntipo: %i\nvalor: %i\n", sensores_digitais[i].name, sensores_digitais[i].id, sensores_digitais[i].type, sensores_digitais[i].value);
    }

    // printando os sensodres
    for (int i = 0; i < quantidade_sensores_digitais; i++) {
        printf("\nNome: %s\nid: %i\ntipo: %i\nvalor: %i\n", sensores_digitais[i].name, sensores_digitais[i].id, sensores_digitais[i].type, sensores_digitais[i].value);
    }
    
    
    /*printf("number of sensors: %i\n", get_sensor_id(1));
    printf("Valor antes: %s\n\n", sensors[0].name);
    get_sensor_name(&sensors[0]);
    get_sensor_description(&sensors[0]);
    printf("Valor depois: %s\n\n", sensors[0].name);
    printf("des depois: %s\n\n", sensors[0].description);
    
    char ler[100];
    readSerialBytes(ler);
    printf("\nLEEEER: %s\n", ler);*/
    
    printf("\n\nNenhum sensor adicionado para leitura!!");

    return 0;
}

Readme v3

Sobre o projeto

Projeto de sensor analógico/digital em microcontrolador utilizando comunicação serial.

Implementando de um protótipo de sistema de sensoriamento genérico de uma plataforma baseada na NodeMCU para confecção das unidades de sensoriamento modular comandado por um Single Board Computer (SBC), capaz de controlar o acionamento de um conjunto variável de sensores, assim como monitorar o seu funcionamento, de forma automatizada por meio de uma comunicação UART


Tabela de Conteúdo


Feito Com

Abaixo segue o que foi utilizado na criação deste projeto:

  • GCC (GNU Compiler Collection) - O GNU Compiler Collection é um conjunto de compiladores de linguagens de programação produzido pelo projecto GNU.
  • ESP8266 SDK para Arduino - Este projeto traz suporte ao chip ESP8266 para o ambiente Arduino.
  • Arduino IDE v1.8 - O Arduino Software (IDE) de código aberto facilita a escrita de código e o upload para a placa. Este software pode ser usado com qualquer placa Arduino.

Começando

Para conseguir rodar o projeto, siga os passos abaixo.

Pré-requisitos

Antes de seguirmos, é preciso que você tenha o ambiente configurado para criar e testar aplicações em C.

No ambiente da SBC (considerando a Raspberry Pi rodando um sistema baseado no Debian) caso não tenha o tooling to GCC, execute:

$ sudo apt install build-essential
  1. Instale a IDE do Arduino na versão 1.8 de acordo com a documentação oficial
  2. Abra as preferências da IDE e adicione o código abaixo, assim como na imagem e pressione o botão de OK
https://arduino.esp8266.com/stable/package_esp8266com_index.json

Captura de tela_20221118_144353

  1. Em seguida, abra o gerenciador de placas da IDE e instale o Generic ESP8266 Module na versão 3.0.2, como na imagem:

Captura de tela_20221118_144840

Estrutura de Arquivos

A estrutura de arquivos está da seguinte maneira:

ESP8266_ES
├── NodeMCU/
│   ├── NodeMCU.cpp
├── Raspberry/
│   ├── display.h
│   ├── makefile
│   ├── display.o
│   └── main.c
├── .gitignore
└── README.md

Serão explicados os arquivos e diretórios na seção de Edição.

Instalação na NodeMCU

  1. Abra a ide do Arduino
  2. Abra o menu: Ferramentas > Placa e selecione a placa NodeMCU 1.0
  3. Conecte a NodeMCU ao computador via usb
  4. Selecione a porta no menu: Ferramentas > Porta
  5. Copie o codigo do arquivo NodeMCU.cpp para o editor da IDE
  6. Carregue o codigo na placa (Ctrl + u)

Instalação na SBC

  1. Na SBC, faça clone do projeto utilizando o comando e navegue para o diretório raiz do projeto:
$ git clone https://github.com/DanielSRS/ESP8266_ES
$ cd ESP8266_ES
  1. Navegue até o diretório que contém o código a ser executado na SBC e faça build:
$ cd Raspberry
$ make all
  1. Execute a aplicação
$ make run

Edição

Nesta seção haverão instruções caso você queira editar o projeto, explicando para que os diretórios são utilizados e também os arquivos de configuração.

  • NodeMCU - Após execução do projeto, o analizador léxico irá gerar arquivos de saída neste diretório contendo as informações processadas em cada arquivo de entrada.

    • NodeMCU.cpp - Codigo da aplicação executada na NodeMCU responsável por interpretar os comandos enviados pela SBC, realizar a leitura dos sensores e enviar atraves da UART as informações solicitadas
  • Raspberry - Diretório contendo todos os arquivos da aplicação executada na SBC (Raspberry Pi),

    • main.c - Codigo da aplicação executada na SBC e responsável pelo controle da NodeMCU enviando comandos, lendo e exibindo as informações coletadas.

    • makefile - Arquivo de configuração makefile com as instruções de build do projeto.

    • display.h - Arquivo de cabeçalho da biblioteca de comunicação com o display 16x2.

    • display.o - Biblioteca para comunicação com o display 16x2.

  • .gitignore - Arquivo de configurção do git contendo informções de arquivos que não devem ser versionados junto com o codigo fonte;

  • README.md - Este arquivo. Aqui é feito a documentação basica do projeto com instruções de instalação, configuração e execução.

Executar projeto (na SBC)

  • Ainda no diretório raiz, navegue para o diretorio Raspberry:

    $ cd Raspberry
  • Faça o build da aplicação

    $ make all
  • Faça o build e rode a aplicação

    $ make run
  • Execute manualmente a aplicação informando o sensor analógico e dois digitais conectados

    $ sudo ./Rasp -analogic -d."D0".16 -d."D1".5
  • Ou liste as portas digitais disponíveis

    $ sudo ./Rasp -l

Materiais de referência

Raspberry Pi Documentation

Display LCD HD44780U

BCM2835 ARM Peripherals

ESP8266 Arduino Core Documentation

Documentação de Referência da Linguagem Arduino

ESP8266WiFi library

ESP8266mDNS library

WifiUdp library

ArduinoOTA

SoftwareSerial Library

HardwareSerial Library

Termios Library

Contribuição

  • Quaisquer dúvidas, sugestões ou problemas que encontrar, fique livre para abrir uma issue.
  • Se quiser contribuir ajustando o codigo, implementando novas funcionalidas ou corrigindo bugs, faça um fork do projeto, faça as alterações nescessárias como descrito na seção de Edição e abra um pull request

sdk config

Automatically generated file. DO NOT EDIT.

Espressif IoT Development Framework (ESP-IDF) Project Configuration

CONFIG_IDF_TARGET_ESP8266=y
CONFIG_IDF_TARGET="esp8266"

SDK tool configuration

CONFIG_SDK_TOOLPREFIX="xtensa-lx106-elf-"
CONFIG_SDK_PYTHON="python"

CONFIG_SDK_MAKE_WARN_UNDEFINED_VARIABLES is not set

CONFIG_BOOTLOADER_INIT_SPI_FLASH=y

CONFIG_BOOTLOADER_DISABLE_JTAG_IO is not set

CONFIG_BOOTLOADER_FAST_BOOT is not set

CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set

CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set

CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set

CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y

CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set

CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set

CONFIG_LOG_BOOTLOADER_LEVEL=3

CONFIG_BOOTLOADER_APP_TEST is not set

CONFIG_BOOTLOADER_STORE_OFFSET=0x0
CONFIG_ESPTOOLPY_PORT="/dev/ttyUSB0"
CONFIG_ESPTOOLPY_BAUD_115200B=y

CONFIG_ESPTOOLPY_BAUD_230400B is not set

CONFIG_ESPTOOLPY_BAUD_921600B is not set

CONFIG_ESPTOOLPY_BAUD_2MB is not set

CONFIG_ESPTOOLPY_BAUD_OTHER is not set

CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200
CONFIG_ESPTOOLPY_BAUD=115200
CONFIG_ESPTOOLPY_COMPRESSED=y
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y

CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set

CONFIG_ESPTOOLPY_FLASHMODE_DIO is not set

CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set

CONFIG_ESPTOOLPY_FLASHMODE="dio"
CONFIG_SPI_FLASH_MODE=0x0

CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set

CONFIG_ESPTOOLPY_FLASHFREQ_40M=y

CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set

CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set

CONFIG_ESPTOOLPY_FLASHFREQ="40m"
CONFIG_SPI_FLASH_FREQ=0x0

CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set

CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y

CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set

CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set

CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set

CONFIG_ESPTOOLPY_FLASHSIZE="2MB"
CONFIG_SPI_FLASH_SIZE=0x200000
CONFIG_ESPTOOLPY_BEFORE_RESET=y

CONFIG_ESPTOOLPY_BEFORE_NORESET is not set

CONFIG_ESPTOOLPY_BEFORE="default_reset"
CONFIG_ESPTOOLPY_AFTER_HARD_RESET=y

CONFIG_ESPTOOLPY_AFTER_SOFT_RESET is not set

CONFIG_ESPTOOLPY_AFTER_NORESET is not set

CONFIG_ESPTOOLPY_AFTER="hard_reset"

CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set

CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set

CONFIG_ESPTOOLPY_MONITOR_BAUD_74880B=y

CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B is not set

CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set

CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set

CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set

CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set

CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=74880
CONFIG_ESPTOOLPY_MONITOR_BAUD=74880
CONFIG_PARTITION_TABLE_SINGLE_APP=y

CONFIG_PARTITION_TABLE_TWO_OTA is not set

CONFIG_PARTITION_TABLE_CUSTOM is not set

CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
CONFIG_PARTITION_TABLE_OFFSET=0x8000
CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv"
CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y

CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set

CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y

CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set

CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set

CONFIG_COMPILER_CXX_EXCEPTIONS is not set

CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y

CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set

CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set

CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set

CONFIG_COMPILER_STACK_CHECK is not set

CONFIG_COMPILER_WARN_WRITE_STRINGS is not set

CONFIG_APP_UPDATE_CHECK_APP_SUM=y

CONFIG_APP_UPDATE_CHECK_APP_HASH is not set

CONFIG_APP_COMPILE_TIME_DATE=y

CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set

CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set

CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set

CONFIG_ENABLE_COAP is not set

CONFIG_ESP_TLS_USING_MBEDTLS=y

CONFIG_ESP_TLS_USING_WOLFSSL is not set

CONFIG_ESP_TLS_SERVER is not set

CONFIG_ESP_TLS_PSK_VERIFICATION is not set

CONFIG_ESP_WOLFSSL_INTERNAL is not set

CONFIG_WOLFSSL_DEBUG is not set

CONFIG_ESP8266_NMI_WDT=y

CONFIG_ESP8266_XTAL_FREQ_40 is not set

CONFIG_ESP8266_XTAL_FREQ_26=y
CONFIG_ESP8266_XTAL_FREQ=26

CONFIG_ESP8266_DEFAULT_CPU_FREQ_80 is not set

CONFIG_ESP8266_DEFAULT_CPU_FREQ_160=y
CONFIG_ESP8266_DEFAULT_CPU_FREQ_MHZ=160
CONFIG_ESP_FILENAME_MACRO_NO_PATH=y

CONFIG_ESP_FILENAME_MACRO_RAW is not set

CONFIG_ESP_FILENAME_MACRO_NULL is not set

CONFIG_USING_NEW_ETS_VPRINTF=y

CONFIG_LINK_ETS_PRINTF_TO_IRAM is not set

CONFIG_ETS_PRINTF_EXIT_WHEN_FLASH_RW=y

CONFIG_SOC_FULL_ICACHE is not set

CONFIG_SOC_IRAM_SIZE=0xC000

CONFIG_DISABLE_ROM_UART_PRINT is not set

CONFIG_ESP_PANIC_PRINT_HALT is not set

CONFIG_ESP_PANIC_PRINT_REBOOT=y

CONFIG_ESP_PANIC_SILENT_REBOOT is not set

CONFIG_ESP_PANIC_GDBSTUB is not set

CONFIG_RESET_REASON=y
CONFIG_WIFI_PPT_TASKSTACK_SIZE=5120
CONFIG_ESP8266_CORE_GLOBAL_DATA_LINK_IRAM=y

CONFIG_ESP8266_OTA_FROM_OLD is not set

CONFIG_ESP8266_BOOT_COPY_APP is not set

CONFIG_ESP8266_TIME_SYSCALL_USE_FRC1=y

CONFIG_ESP8266_TIME_SYSCALL_USE_NONE is not set

CONFIG_PM_ENABLE is not set

CONFIG_SCAN_AP_MAX=99
CONFIG_WIFI_TX_RATE_SEQUENCE_FROM_HIGH=y

CONFIG_ESP8266_WIFI_QOS_ENABLED is not set

CONFIG_ESP8266_WIFI_AMPDU_RX_ENABLED is not set

CONFIG_ESP8266_WIFI_AMSDU_ENABLED is not set

CONFIG_ESP8266_WIFI_RX_BUFFER_NUM=16
CONFIG_ESP8266_WIFI_LEFT_CONTINUOUS_RX_BUFFER_NUM=16
CONFIG_ESP8266_WIFI_RX_PKT_NUM=7
CONFIG_ESP8266_WIFI_TX_PKT_NUM=6
CONFIG_ESP8266_WIFI_NVS_ENABLED=y
CONFIG_ESP8266_WIFI_CONNECT_OPEN_ROUTER_WHEN_PWD_IS_SET=y
CONFIG_ESP8266_WIFI_ENABLE_WPA3_SAE=y

CONFIG_ESP8266_WIFI_DEBUG_LOG_ENABLE is not set

CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y

CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set

CONFIG_ESP_PHY_INIT_DATA_VDD33_CONST=33
CONFIG_ESP8266_PHY_MAX_WIFI_TX_POWER=20

CONFIG_ESP8266_HSPI_HIGH_THROUGHPUT is not set

CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2048
CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584
CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584
CONFIG_ESP_CONSOLE_UART_DEFAULT=y

CONFIG_ESP_CONSOLE_UART_CUSTOM is not set

CONFIG_ESP_CONSOLE_UART_NONE is not set

CONFIG_ESP_CONSOLE_UART_NUM=0
CONFIG_ESP_CONSOLE_UART_BAUDRATE=74880

CONFIG_ESP_UART0_SWAP_IO is not set

CONFIG_ESP_TASK_WDT=y
CONFIG_ESP_TASK_WDT_PANIC=y

CONFIG_ESP_TASK_WDT_TIMEOUT_13N is not set

CONFIG_ESP_TASK_WDT_TIMEOUT_14N is not set

CONFIG_ESP_TASK_WDT_TIMEOUT_15N=y
CONFIG_ESP_TASK_WDT_TIMEOUT_S=15

CONFIG_ESP_EVENT_LOOP_PROFILING is not set

CONFIG_ESP_EVENT_POST_FROM_ISR=y
CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y

CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set

CONFIG_HTTP_BUF_SIZE=512
CONFIG_HTTPD_MAX_REQ_HDR_LEN=512
CONFIG_HTTPD_MAX_URI_LEN=512
CONFIG_OTA_BUF_SIZE=256

CONFIG_OTA_ALLOW_HTTP is not set

CONFIG_FATFS_CODEPAGE_DYNAMIC is not set

CONFIG_FATFS_CODEPAGE_437=y

CONFIG_FATFS_CODEPAGE_720 is not set

CONFIG_FATFS_CODEPAGE_737 is not set

CONFIG_FATFS_CODEPAGE_771 is not set

CONFIG_FATFS_CODEPAGE_775 is not set

CONFIG_FATFS_CODEPAGE_850 is not set

CONFIG_FATFS_CODEPAGE_852 is not set

CONFIG_FATFS_CODEPAGE_855 is not set

CONFIG_FATFS_CODEPAGE_857 is not set

CONFIG_FATFS_CODEPAGE_860 is not set

CONFIG_FATFS_CODEPAGE_861 is not set

CONFIG_FATFS_CODEPAGE_862 is not set

CONFIG_FATFS_CODEPAGE_863 is not set

CONFIG_FATFS_CODEPAGE_864 is not set

CONFIG_FATFS_CODEPAGE_865 is not set

CONFIG_FATFS_CODEPAGE_866 is not set

CONFIG_FATFS_CODEPAGE_869 is not set

CONFIG_FATFS_CODEPAGE_932 is not set

CONFIG_FATFS_CODEPAGE_936 is not set

CONFIG_FATFS_CODEPAGE_949 is not set

CONFIG_FATFS_CODEPAGE_950 is not set

CONFIG_FATFS_CODEPAGE=437
CONFIG_FATFS_LFN_NONE=y

CONFIG_FATFS_LFN_HEAP is not set

CONFIG_FATFS_LFN_STACK is not set

CONFIG_FATFS_FS_LOCK=0
CONFIG_FATFS_TIMEOUT_MS=10000
CONFIG_FATFS_PER_FILE_CACHE=y
CONFIG_FMB_COMM_MODE_TCP_EN=y
CONFIG_FMB_TCP_PORT_DEFAULT=502
CONFIG_FMB_TCP_PORT_MAX_CONN=5
CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20
CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150
CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200
CONFIG_FMB_QUEUE_LENGTH=20
CONFIG_FMB_PORT_TASK_STACK_SIZE=4096
CONFIG_FMB_SERIAL_BUF_SIZE=256
CONFIG_FMB_PORT_TASK_PRIO=10
CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y
CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233
CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20
CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
CONFIG_FMB_CONTROLLER_STACK_SIZE=4096
CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20
CONFIG_FMB_TIMER_GROUP=0
CONFIG_FMB_TIMER_INDEX=0

CONFIG_FMB_TIMER_ISR_IN_IRAM is not set

CONFIG_DISABLE_FREERTOS is not set

CONFIG_FREERTOS_UNICORE=y

CONFIG_FREERTOS_ENABLE_REENT is not set

CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF
CONFIG_FREERTOS_HZ=100
CONFIG_FREERTOS_MAX_HOOK=2
CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1024
CONFIG_FREERTOS_ISR_STACKSIZE=512

CONFIG_FREERTOS_EXTENED_HOOKS is not set

CONFIG_FREERTOS_GLOBAL_DATA_LINK_IRAM=y

CONFIG_FREERTOS_CODE_LINK_TO_IRAM is not set

CONFIG_FREERTOS_TIMER_STACKSIZE=2048
CONFIG_TASK_SWITCH_FASTER=y

CONFIG_USE_QUEUE_SETS is not set

CONFIG_ENABLE_FREERTOS_SLEEP is not set

CONFIG_FREERTOS_USE_TRACE_FACILITY is not set

CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set

CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK=y

CONFIG_HEAP_DISABLE_IRAM is not set

CONFIG_HEAP_TRACING is not set

CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y

CONFIG_LOG_DEFAULT_LEVEL_NONE is not set

CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set

CONFIG_LOG_DEFAULT_LEVEL_WARN is not set

CONFIG_LOG_DEFAULT_LEVEL_INFO=y

CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set

CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set

CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_LOG_COLORS=y

CONFIG_LOG_SET_LEVEL is not set

CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y

CONFIG_LWIP_L2_TO_L3_COPY is not set

CONFIG_LWIP_IRAM_OPTIMIZATION is not set

CONFIG_LWIP_TIMERS_ONDEMAND=y
CONFIG_LWIP_MAX_SOCKETS=10

CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set

CONFIG_LWIP_SO_LINGER is not set

CONFIG_LWIP_SO_REUSE=y
CONFIG_LWIP_SO_REUSE_RXTOALL=y

CONFIG_LWIP_SO_RCVBUF is not set

CONFIG_LWIP_NETBUF_RECVINFO is not set

CONFIG_LWIP_IP4_FRAG=y
CONFIG_LWIP_IP6_FRAG=y

CONFIG_LWIP_IP4_REASSEMBLY is not set

CONFIG_LWIP_IP6_REASSEMBLY is not set

CONFIG_LWIP_IP_FORWARD is not set

CONFIG_LWIP_STATS is not set

CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set

CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
CONFIG_LWIP_GARP_TMR_INTERVAL=60
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y

CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set

CONFIG_LWIP_DHCPS_LEASE_UNIT=60
CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8

CONFIG_LWIP_AUTOIP is not set

CONFIG_LWIP_IPV6_AUTOCONFIG is not set

CONFIG_LWIP_NETIF_LOOPBACK=y
CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
CONFIG_LWIP_MAX_ACTIVE_TCP=16
CONFIG_LWIP_MAX_LISTENING_TCP=16
CONFIG_LWIP_TCP_MAXRTX=12
CONFIG_LWIP_TCP_SYNMAXRTX=6
CONFIG_LWIP_TCP_MSS=1440
CONFIG_LWIP_TCP_TMR_INTERVAL=250
CONFIG_LWIP_TCP_MSL=60000
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=2880
CONFIG_LWIP_TCP_WND_DEFAULT=5760
CONFIG_LWIP_TCP_RECVMBOX_SIZE=6
CONFIG_LWIP_TCP_QUEUE_OOSEQ=y

CONFIG_LWIP_TCP_SACK_OUT is not set

CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set

CONFIG_LWIP_TCP_OVERSIZE_MSS=y

CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set

CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set

CONFIG_LWIP_TCP_RTO_TIME=3000
CONFIG_LWIP_MAX_UDP_PCBS=16
CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=2048
CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y

CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set

CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF

CONFIG_LWIP_PPP_SUPPORT is not set

CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3
CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5

CONFIG_LWIP_MULTICAST_PING is not set

CONFIG_LWIP_BROADCAST_PING is not set

CONFIG_LWIP_MAX_RAW_PCBS=16

CONFIG_LWIP_IPV6 is not set

CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1
CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
CONFIG_LWIP_ESP_LWIP_ASSERT=y

CONFIG_LWIP_DEBUG is not set

CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y

CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set

CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set

CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y
CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384
CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096

CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set

CONFIG_MBEDTLS_DEBUG is not set

CONFIG_MBEDTLS_HAVE_TIME=y

CONFIG_MBEDTLS_HAVE_TIME_DATE is not set

CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y

CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set

CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set

CONFIG_MBEDTLS_TLS_DISABLED is not set

CONFIG_MBEDTLS_TLS_SERVER=y
CONFIG_MBEDTLS_TLS_CLIENT=y
CONFIG_MBEDTLS_TLS_ENABLED=y

CONFIG_MBEDTLS_PSK_MODES is not set

CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y
CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y
CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y
CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y
CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y
CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y
CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y
CONFIG_MBEDTLS_SSL_RENEGOTIATION=y

CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set

CONFIG_MBEDTLS_SSL_PROTO_TLS1=y
CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y
CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y

CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set

CONFIG_MBEDTLS_SSL_ALPN=y
CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y
CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y
CONFIG_MBEDTLS_AES_C=y

CONFIG_MBEDTLS_CAMELLIA_C is not set

CONFIG_MBEDTLS_DES_C is not set

CONFIG_MBEDTLS_RC4_DISABLED=y

CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set

CONFIG_MBEDTLS_RC4_ENABLED is not set

CONFIG_MBEDTLS_BLOWFISH_C is not set

CONFIG_MBEDTLS_XTEA_C is not set

CONFIG_MBEDTLS_CCM_C=y
CONFIG_MBEDTLS_GCM_C=y

CONFIG_MBEDTLS_RIPEMD160_C is not set

CONFIG_MBEDTLS_PEM_PARSE_C=y
CONFIG_MBEDTLS_PEM_WRITE_C=y
CONFIG_MBEDTLS_X509_CRL_PARSE_C=y
CONFIG_MBEDTLS_X509_CSR_PARSE_C=y
CONFIG_MBEDTLS_ECP_C=y
CONFIG_MBEDTLS_ECDH_C=y
CONFIG_MBEDTLS_ECDSA_C=y
CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y
CONFIG_MBEDTLS_ECP_NIST_OPTIM=y

CONFIG_util_assert is not set

CONFIG_ESP_SHA is not set

CONFIG_ESP_AES=y
CONFIG_ESP_MD5=y
CONFIG_ESP_ARC4=y

CONFIG_ENABLE_MDNS is not set

CONFIG_MQTT_PROTOCOL_311=y
CONFIG_MQTT_TRANSPORT_SSL=y
CONFIG_MQTT_TRANSPORT_WEBSOCKET=y
CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y

CONFIG_MQTT_USE_CUSTOM_CONFIG is not set

CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set

CONFIG_MQTT_CUSTOM_OUTBOX is not set

CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y

CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set

CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set

CONFIG_NEWLIB_NANO_FORMAT=y

CONFIG_OPENSSL_DEBUG is not set

CONFIG_OPENSSL_ASSERT_DO_NOTHING=y

CONFIG_OPENSSL_ASSERT_EXIT is not set

CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5
CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
CONFIG_PTHREAD_STACK_MIN=768
CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread"
CONFIG_SPIFFS_MAX_PARTITIONS=3
CONFIG_SPIFFS_CACHE=y
CONFIG_SPIFFS_CACHE_WR=y

CONFIG_SPIFFS_CACHE_STATS is not set

CONFIG_SPIFFS_PAGE_CHECK=y
CONFIG_SPIFFS_GC_MAX_RUNS=10

CONFIG_SPIFFS_GC_STATS is not set

CONFIG_SPIFFS_PAGE_SIZE=256
CONFIG_SPIFFS_OBJ_NAME_LEN=32
CONFIG_SPIFFS_USE_MAGIC=y
CONFIG_SPIFFS_USE_MAGIC_LENGTH=y
CONFIG_SPIFFS_META_LENGTH=4
CONFIG_SPIFFS_USE_MTIME=y

CONFIG_SPIFFS_DBG is not set

CONFIG_SPIFFS_API_DBG is not set

CONFIG_SPIFFS_GC_DBG is not set

CONFIG_SPIFFS_CACHE_DBG is not set

CONFIG_SPIFFS_CHECK_DBG is not set

CONFIG_SPIFFS_TEST_VISUALISATION is not set

CONFIG_IP_LOST_TIMER_INTERVAL=120
CONFIG_TCPIP_ADAPTER_GLOBAL_DATA_LINK_IRAM=y
CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y
CONFIG_VFS_SUPPORT_TERMIOS=y
CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1
CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128

CONFIG_WL_SECTOR_SIZE_512 is not set

CONFIG_WL_SECTOR_SIZE_4096=y
CONFIG_WL_SECTOR_SIZE=4096

CONFIG_ENABLE_UNIFIED_PROVISIONING is not set

CONFIG_LTM_FAST=y
CONFIG_WPA_MBEDTLS_CRYPTO=y

CONFIG_WPA_DEBUG_PRINT is not set

CONFIG_WPA_TESTING_OPTIONS is not set

CONFIG_WPA_WPS_WARS is not set

CONFIG_WPA_11KV_SUPPORT is not set

Deprecated options for backward compatibility

CONFIG_TARGET_PLATFORM="esp8266"
CONFIG_TOOLPREFIX="xtensa-lx106-elf-"

CONFIG_MAKE_WARN_UNDEFINED_VARIABLES is not set

CONFIG_FLASHMODE_QIO=y

CONFIG_FLASHMODE_QOUT is not set

CONFIG_FLASHMODE_DIO is not set

CONFIG_FLASHMODE_DOUT is not set

CONFIG_MONITOR_BAUD_9600B is not set

CONFIG_MONITOR_BAUD_57600B is not set

CONFIG_MONITOR_BAUD_74880B=y

CONFIG_MONITOR_BAUD_115200B is not set

CONFIG_MONITOR_BAUD_230400B is not set

CONFIG_MONITOR_BAUD_921600B is not set

CONFIG_MONITOR_BAUD_2MB is not set

CONFIG_MONITOR_BAUD_OTHER is not set

CONFIG_MONITOR_BAUD_OTHER_VAL=74880
CONFIG_MONITOR_BAUD=74880
CONFIG_OPTIMIZATION_LEVEL_DEBUG=y

CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set

CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y

CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set

CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set

CONFIG_CXX_EXCEPTIONS is not set

CONFIG_STACK_CHECK_NONE=y

CONFIG_STACK_CHECK_NORM is not set

CONFIG_STACK_CHECK_STRONG is not set

CONFIG_STACK_CHECK_ALL is not set

CONFIG_STACK_CHECK is not set

CONFIG_WARN_WRITE_STRINGS is not set

CONFIG_MAIN_TASK_STACK_SIZE=3584
CONFIG_CONSOLE_UART_DEFAULT=y

CONFIG_CONSOLE_UART_CUSTOM is not set

CONFIG_CONSOLE_UART_NONE is not set

CONFIG_CONSOLE_UART_NUM=0
CONFIG_CONSOLE_UART_BAUDRATE=74880

CONFIG_UART0_SWAP_IO is not set

CONFIG_TASK_WDT=y
CONFIG_TASK_WDT_PANIC=y
CONFIG_TASK_WDT_TIMEOUT_S=15
CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150
CONFIG_MB_MASTER_DELAY_MS_CONVERT=200
CONFIG_MB_QUEUE_LENGTH=20
CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096
CONFIG_MB_SERIAL_BUF_SIZE=256
CONFIG_MB_SERIAL_TASK_PRIO=10
CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y
CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233
CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20
CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
CONFIG_MB_CONTROLLER_STACK_SIZE=4096
CONFIG_MB_EVENT_QUEUE_TIMEOUT=20
CONFIG_MB_TIMER_GROUP=0
CONFIG_MB_TIMER_INDEX=0

CONFIG_L2_TO_L3_COPY is not set

CONFIG_USE_ONLY_LWIP_SELECT is not set

CONFIG_ESP_GRATUITOUS_ARP=y
CONFIG_GARP_TMR_INTERVAL=60
CONFIG_TCPIP_RECVMBOX_SIZE=32
CONFIG_TCP_MAXRTX=12
CONFIG_TCP_SYNMAXRTX=6
CONFIG_TCP_MSS=1440
CONFIG_TCP_MSL=60000
CONFIG_TCP_SND_BUF_DEFAULT=2880
CONFIG_TCP_WND_DEFAULT=5760
CONFIG_TCP_RECVMBOX_SIZE=6
CONFIG_TCP_QUEUE_OOSEQ=y

CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set

CONFIG_TCP_OVERSIZE_MSS=y

CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set

CONFIG_TCP_OVERSIZE_DISABLE is not set

CONFIG_UDP_RECVMBOX_SIZE=6
CONFIG_TCPIP_TASK_STACK_SIZE=2048
CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y

CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set

CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF

CONFIG_PPP_SUPPORT is not set

CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5
CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
CONFIG_ESP32_PTHREAD_STACK_MIN=768
CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
CONFIG_SUPPORT_TERMIOS=y

End of deprecated options

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.