Agosto de 2019.
Você também deseja criar projetos inovadores de IoT que usam o chip Esp32, ou módulos baseados em ESP32, do popular Espressif da empresa? Bem, eu fiz e ainda o fiz. E eu espero que você faça também.
O objetivo deste kit de partida bem documentado é acelerar o desenvolvimento de seus projetos de IoT para o hardware ESP32 usando a estrutura ESP-IDF da Espressif e inspire que tipo de aplicativos você pode criar para o ESP32 usando vários módulos de hardware.
Você está pronto para descobrir como pode começar rapidamente?
mkdir ~/esp
cd ~/esp
git clone -b v3.2.2 --recursive https://github.com/espressif/esp-idf.git esp-idf
Esta parte contém informações básicas sobre alguns quadros de desenvolvimento do ESP32 que eu usei inicialmente:
Uma placa de desenvolvimento ESP32 só pode ser programada (facilmente) por esse adaptador.
Esta parte documenta alguns produtos e como configurá -los.
As baterias recarregáveis são frequentemente usadas em projetos de IoT.
Esta parte é um carregador de bateria popular, um descarregador de bateria feito por conta própria e detalhes sobre baterias populares, como as baterias de leão e as baterias LIFEPO4. Ele também contém algumas especificações sobre as baterias não recarregáveis lisoci2 lítio-cloreto de cloreto para uso em condições adversas.
Alguma documentação sobre principalmente os MOSFETs de potência do canal que são frequentemente usados em combinação com um quadro de desenvolvimento ESP32.
Documentação sobre o módulo TP4056.
Alguma documentação sobre os reguladores de tensão LDO que fazem parte de um Conselho de Desenvolvimento do ESP32.
O kit inicial inclui vários projetos de trabalho que você pode executar instantaneamente - opostos a trechos que você precisa colar juntos, o que não é fácil para um iniciante.
Esses projetos:
Dê informações sobre como realmente usar a estrutura oficial do ESP-IDF com eficiência.
Inclua uma tonelada de melhores práticas de codificação e práticas de configuração.
Demonstre como usar os novos componentes ESP-IDF deste kit de partida, como tiras de LED RGB e sensores meteo.
O projeto especial esp32_mjd_components :
Vamos destacar alguns projetos que demonstram como usar a estrutura principal do ESP-IDF.
esp32_button_basics COMO FAZER COM BOTTNS (SWITCHES).esp32_deep_sleep_wakeup_basics demonstra como usar um switch ou um sensor de porta/janela magnética para acordar um ESP32 do sono profundo.esp32_http_client demonstra o básico do uso do componente ESP-IDF padrão "ESP32_HTTP_CLIENT".esp32_gpio_basics Como interagir com os pinos GPIO do Conselho de Desenvolvimento.esp32_gpio_scanner Como digitalizar todos os pinos GPIO e descobrir sua função de E/S.esp32_i2c_scanner Como digitalizar todos os dispositivos escravos nos pinos i2C e identificar seu endereço de escravo i2C. Isso é útil ao trabalhar com novos dispositivos de escravos I2C.esp32_ledc_pwm_basics Como usar o driver de LEDC ESP-IDF padrão (um driver do controlador LED usando PWM).esp32_nvs_basics Como usar o driver NVS ESP-IDF padrão (armazenamento não volátil) com uma partição NVS personalizada.esp32_rmt_basics Como usar o driver RMT ESP-IDF padrão.esp32_spiffs_basics Como usar o driver padrão do sistema de arquivos ESP-IDF SPIFFs.esp32_sw180_tilt_sensor COMO FAZER COM ESTE SENSOR DE TILT (sem componentes extras necessários).esp32_timer_basics Como usar o driver de temporizador ESP-IDF padrão.esp32_uart_basics Como usar o driver ESP-IDF UART padrão.esp32_uart_do_output COMO USAR O DRIRADOR ESP-IDF UART padrão.esp32_udp_client demonstra o básico da implementação de um cliente UDP usando a estrutura ESP-IDF.Vamos destacar alguns projetos que demonstram como usar os componentes extras do kit inicial do ESP32 MJD.
esp32_ads1115_adc_using_lib Demonstrates the basics of using the MJD ESP-IDF component "mjd_ads1115" for the ESP32 and the popular breakout boards of the TI ADS1115 Ultra-Small, Low-Power, I2C-Compatible, 860-SPS, 16-Bit ADCs With Internal Reference, Oscillator, and Programmable Comparator using the I2C Ônibus.esp32_am2320_temperature_sensor_using_lib Como ler dados do sensor Aosong AM2320 meteo.esp32_bh1750fvi_lightsensor_using_lib Como ler dados do sensor de intensidade de luz BH1750.esp32_bme280_sensor_using_lib Como ler dados do sensor meteo BME280.esp32_bmp280_sensor_using_lib Como ler dados do sensor meteo BMP280.esp32_dht11_temperature_sensor_using_lib Como ler os dados do sensor de temperatura Aosong DHT11.esp32_dht22_temperature_sensor_using_lib Como ler dados do sensor de temperatura Aosong DHT22/AM2302.esp32_door_sensor_reed_switch demonstra como usar um sensor de porta/janela magnética que é baseada em um interruptor de palheta.esp32_ds3231_clock_using_lib Como obter/definir dados da placa de relógio DS3231 ZS042 RTC.esp32_hcsr501_pir_sensor_using_lib Como ler dados do sensor infravermelho humano HC-SR501 PIR.esp32_huzzah32_battery_voltage_using_lib Como usar recursos específicos da placa de desenvolvimento Adafruit Huzzah32. Exemplo: Leia o nível de tensão da bateria.esp32_jsnsr04t_using_lib Este projeto demonstra todos os recursos do módulo de sensor ultrassônico à prova d'água JSN-SR04T-2.0 em combinação com uma placa de desenvolvimento ESP32. Ele despeja as medidas no log de depuração.esp32_jsnsr04t_oled_mosfet_using_lib Este projeto demonstra todos os recursos do módulo de sensor ultrassônico à prova d'água JSN-SR04T-2.0 em combinação com uma placa de desenvolvimento Esp32, um módulo de tela OLED, um módulo de energia e um refúgio para salvar e salvar.esp32_ky032_obstacle_sensor_using_lib Como ler dados do sensor de prevenção de obstáculos infravermelhos KY-032.esp32_ledrgb_using_lib Como controlar tiras de LED RGB (como os Neopixels Adafruit e os produtos BTF-Lightning).esp32_linked_list_basics Como usar o componente da lista vinculada.esp32_lorabee_using_lib Como interagir com a placa de fuga do Sodaq Lorabee (Microchip RN2843 Lora Transceiver). Este projeto demonstra os comandos básicos para configurar o dispositivo e ler/gravar o NVM.esp32_lorabee_rx_using_lib Como interagir com a placa de fuga do Sodaq Lorabee (transceptor de Microchip RN2843 Lora). Este projeto demonstra a funcionalidade Lora RX Receber. Nota: Ele usa Lora P2P e não Lorawan.esp32_lorabee_tx_using_lib Como interagir com a placa de breakout do Sodaq Lorabee (transceptor de Microchip RN2843 Lora). Este projeto demonstra a funcionalidade de transmissão Lora TX. Nota: Ele usa Lora P2P e não Lorawan.esp32_lorabee_using_pc_usbuart Este projeto demonstra como emitir comandos básicos para o módulo Lorabee usando um PC Windows e uma placa USB-UART (como um FTDI). Essa é uma maneira fácil de se familiarizar com os recursos da placa Lorabee / Microchip RN2843A.esp32_mlx90393_using_lib Como obter dados de campo magnético usando o sensor de campo magnético Melexis MLX90393.esp32_neom8n_gps_using_lib Como obter dados GPS do módulo GPS Ublox Neo-M8N.esp32_scd30_sensor_settings_using_lib Este projeto para o módulo Sensirion SCD30 CO2 e RH/T é usado para verificar se o sensor está funcionando corretamente, para mostrar todas as configurações ** do sensor e executar os vários modos de calibração.esp32_scd30_sensor_readings_using_lib Este projeto para o módulo Sensirion SCD30 CO2 e RH/T lê continuamente a medição de CO2, as medições relacionadas e derivadas e o índice de qualidade do ar.esp32_sht3x_sensor_using_lib Este projeto demonstra os componentes mjd_sht3x. O componente mjd_sht3x para o sensor de umidade digital e o sensor de temperatura sensirion sht3x é usado configurar o dispositivo e coletar suas métricas de saída (temperatura cf, umidade relativa % e alos o ponto de orvalho c f.esp32_ssd1306_oled_using_lib Este projeto para os monitores OLED de 128x32 e 128x64 com base no IC do driver OLED SSD1306 demonstra o componente MJD_SSD1306 para mostrar o texto em uma tela OLED.esp32_tmp36_sensor_ads1115_adc_using_lib Este projeto demonstra os componentes MJD_ADS1115 e MJD_TMP36. O componente MJD_ADS1115 para o TI ADS1115 Analog-para-conversor analógico é usado para ler a saída de tensão do sensor de temperatura analógica. O componente MJD_TMP36 para o sensor Tmp36 é usado para converter a leitura de tensão bruta do ADC na temperatura ambiente em graus Celsius de forma transparente.esp32_wifi_device_scanner Como digitalizar todos os canais Wi -Fi e descobrir os dispositivos.esp32_wifi_ssid_cloner Como clonar pontos de acesso existentes.esp32_wifi_ssid_scanner Como digitalizar todos os canais Wi -Fi e descobrir os pontos de acesso.esp32_wifi_ssid_spammer Como criar pontos de acesso adicionais na área.esp32_wifi_stress_test Este aplicativo executa um teste de estresse para a placa de dev ESP32 na função como estação WiFi. O objetivo é verificar a estabilidade do driver de software WiFi ESP32 de uma versão específica da estrutura ESP-IDF; Para verificar sua operação correta com produtos de ponto de acesso Wi -Fi de vários fornecedores.Percebi que muitos padrões de codificação voltaram repetidamente nos primeiros projetos que desenvolvi para o ESP32.
Então, depois de um tempo, comecei a colocar esses padrões de codificação em bibliotecas separadas. O ESP-IDF é uma estrutura extensível, portanto essas bibliotecas são implementadas como novos componentes ESP-IDF, que podem ser injetados facilmente em qualquer projeto baseado em ESP-IDF.
Todos os componentes MJD ESP-IDF estão centralizados no projeto esp32_mjd_components .
Os componentes podem ser divididos aproximadamente em 3 grupos:
Relacionado à programação na linguagem C (que tem suas próprias peculiaridades como todas as outras linguagens de programação). Exemplo: listas vinculadas.
Relacionado ao ambiente ESP32 e às especificidades dos sistemas incorporados. Exemplos: um componente WiFi fácil. Eles facilitam o uso desses recursos ESP-IDF.
Relacionado à rede. Alguns exemplos: interface com um servidor MQTT e algumas funções DNS. O componente abstrai a complexidade e facilita o uso.
Relacionado aos periféricos que você conecta ao módulo ESP32 Chip ou Esp32. Alguns exemplos: placa Lora, LED RGB, sensores de temperatura, placas GPS, relógios RTC, sensores PIR e sensores de obstáculos. O componente abstrai a complexidade do periférico.
Esta é a lista de novos componentes:
mjd O componente base que contém funções de uso geral.mjd_ads1115 para o TI ADS1115 Analog-para-conversor de 16 bits.mjd_am2320 para o sensor Aosong AM2320 Meteo.mjd_bh1750fvi Componente para o sensor de intensidade de luz BH1750.mjd_bme280 para o sensor meteo BME280 Bosch.mjd_bmp280 para o sensor meteo bosch bmp280.mjd_dht11 para o sensor de temperatura Aosong DHT11.mjd_dht22 para o sensor de temperatura Aosong DHT11/AM2302.mjd_ds3231 Componente para o quadro de relógio em tempo real DS3231 ZS042 RTC.mjd_hcsr501 para o sensor infravermelho humano HC-SR501 PIR.mjd_huzzah32 para o Conselho de Desenvolvimento Adafruit Huzzah32 (Leia o nível de tensão da bateria).mjd_jsnsr04t Componente para o módulo de sensor ultrassônico impermeável JSN-SR04T-2.0.mjd_ky032 para o sensor de prevenção de obstáculos infravermelhos KY-032.mjd_ledrgb para controlar várias tiras de LED RGB (chips WorldSemi WS28XX, como a linha de produtos Adafruit Neopixels).mjd_list que implementa as listas vinculadas, conforme usado no kernel Linux.mjd_log para facilitar o log no aplicativo.mjd_lorabee para interagir com a placa Sodaq Lorabee Microchip RN2483A (contém um chip microchip RN2843 868MHz lora).mjd_mlx90393 Componente para o sensor de campo magnético Melexis MLX90393 (eixo XYZ e métricas de temperatura).mjd_mqtt para interagir com um servidor MQTT (como um cliente MQTT).mjd_nanopb para trabalhar com os buffers do Google Protocol. Inclui os arquivos C comuns da biblioteca NanopB v0.3.9.2. Ele também declara as diretivas de compilação específicas do NanopB em todo o projeto (-d) em makefile.projbuildmjd_net para facilitar vários recursos de rede (obtendo endereço IP, DNS Resolve Host Names, etc.).mjd_neom8n para o módulo GPS U-Blox Neo-M8N.mjd_scd30 para o módulo Sensirion SCD30 CO2 e RH/T.mjd_sht3x para o sensor de umidade digital e sensor de temperatura sensirion sht3x.mjd_ssd1306 para os populares monitores OLED 128x32 e 128x64, que são baseados no IC do driver OLED SSD1306.mjd_tmp36 para o sensor de temperatura analógica TMP36 de dispositivos analógicos. A ser usado junto com um ADC.mjd_wifi para facilitar, como uma estação Wi -Fi, uma conexão com um ponto de acesso WiFi.Vamos categorizar esses componentes com mais detalhes:
Este componente suporta vários pacotes LED RGB. Ele vem com a documentação essencial, como folhas de dados, esquemas e instruções sobre como conectá -las ao seu quadro de desenvolvimento e, eventualmente, uma fonte de alimentação extra.
Esses componentes vêm com a documentação essencial, como folhas de dados, esquemas e instruções sobre como conectá -las ao seu conselho de desenvolvimento.
Procedimento:
git clone https://github.com/pantaluna/esp32-mjd-starter-kit.gitcd no diretório do projeto que você deseja explorar em ./projects .make menuconfig para modificar as configurações do projeto que você deseja executar (por exemplo, GPIO PIN#, WiFi Credenciais, ...).make flash monitor para criar e fazer upload do exemplo para sua placa de desenvolvimento e monitore a execução por meio do terminal serial. A estrutura ESP-IDF (e sua documentação) é muito poderosa e extensa.
Achei difícil começar rapidamente. Sou apenas um desenvolvedor de pilha completa experiente (back -end/front -end) sem muita experiência no desenvolvimento de soluções de IoT usando sistemas incorporados.
Mais especificamente, eu conseguia entender todos os recursos da estrutura do ESP-IDF, mas tive dificuldade em colar tudo e rapidamente desenvolver projetos reais para soluções reais usando periféricos específicos, como sensores, placas Lora, placas GPS e tiras de LED. Por exemplo, eu queria começar com projetos controlando vários sensores em uma rede e analisando os dados em um servidor central e depois passar para projetos mais complexos.
Em segundo lugar, foi difícil encontrar uma boa documentação (folhas de dados, diagramas, fotos da fiação) dos vários dispositivos periféricos, como sensores meteo, placas GPS, RGB LEDs, etc. e como usar esses dispositivos em combinação com uma placa de desenvolvimento baseada em ESP32.
Por isso, desenvolvi ao longo do tempo esses componentes extras, boa documentação e muitos projetos de trabalho direcionados a um conjunto de periféricos que normalmente são usados em projetos de IoT.
Agora é um bom momento para devolver algo à comunidade ESP32 e lançar tudo o que aprendi até o ponto aberto, para que todos possam se beneficiar desse trabalho.
Você tem duas opções para começar a desenvolver para o chip ESP32:
É importante saber que ambas as estruturas são estáveis e utilizáveis, mas ainda estão sob desenvolvimento significativo pelo Espressif, e os principais novos lançamentos estão sendo lançados regularmente; Espero que isso continue pelo menos até 2018T4.
Depois de experimentar as duas estruturas, decidi ir com a estrutura ESP-IDF, mais especificamente v3.1 e superior. Eu sempre tento liberar bibliotecas compatíveis com a última versão estável.
O kit inicial do ESP32 leva você rapidamente. Se você precisar de recursos extras de um componente existente ou deseja propor um novo componente, envie um problema.
Todos os componentes do MJD estão centralizados no projeto mjd_components .
O kit não foi projetado para implementar todos os recursos concebíveis de qualquer projeto ESP32. Se um novo recurso for muito específico para o seu projeto, a melhor abordagem é criar seu próprio pacote de componentes ESP-IDF com a funcionalidade que você deseja. Você pode usar esses componentes como base; Por favor, não se esqueça de mencionar que você obteve os componentes deste kit de partida.
O que significa "MJD"? É uma palavra de código sem sentido e é usada no idioma C para tornar os identificadores únicos. Essa abordagem garante que você possa usar esses novos componentes ESP-IDF em qualquer outro projeto C.
Por que todos os projetos e componentes são armazenados em um repositório do GitHub (oposto a ter um repositório do GitHub para cada projeto e cada componente)? Eu acho que isso facilita o uso do kit inicial para iniciantes. No futuro, o kit pode ser configurado usando submódulos Git.
Verifique o github.
Libere componentes extras para sensores de gás, sensores de partículas de poeira, um componente de loop de corrente de 4-20mA, telas TFT e matrizes de LED RGB.
Libere projetos extras para demonstrar atualizações da OTA (atualize o firmware remotamente).
Para liberar uma plataforma de IoT para o público para que você possa gerenciar os dispositivos no campo e analisar os dados recebidos.
Para criar um novo site para a documentação técnica deste kit.