2019年8月。
您是否还想创建使用流行公司Espressif的ESP32芯片或基于ESP32的模块的创新IoT项目?好吧,我做到了,仍然这样做。我希望你也能做到。
这个有记录良好的入门套件的目的是使用Espressif的ESP-IDF框架加速ESP32硬件的IoT项目的开发,并获得灵感,并使用各种硬件模块可以为ESP32构建哪些类型的应用程序。
您准备好发现如何快速入门了吗?
mkdir ~/esp
cd ~/esp
git clone -b v3.2.2 --recursive https://github.com/espressif/esp-idf.git esp-idf
该部分包含有关我最初使用的一些ESP32开发板的基本信息:
ESP32开发委员会只能通过此适配器(即轻松)进行编程。
该部分记录了一些产品以及如何配置它们。
物联网项目经常使用可充电电池。
这部分是流行的电池充电器,一个自制的电池放电机,以及有关狮子电池和LifePo4电池等流行电池的详细信息。它还包含一些有关专业Lisoci2锂 - 硫代氯化锂 - 氯化锂的规格,可在恶劣条件下使用。
一些有关N通道功率MOSFET的文档,通常与ESP32开发板结合使用。
有关TP4056模块的文档。
有关LDO电压调节器的一些文档是ESP32开发委员会的一部分。
入门套件包括您可以立即运行的各种工作项目 - 反对您必须自己胶合在一起的片段,这对初学者来说并不容易。
这些项目:
就如何有效地使用官方的ESP-IDF框架提供见解。
包括大量最佳编码实践和配置实践。
演示如何使用此入门套件的新ESP-IDF组件,例如RGB LED带和Meteo传感器。
特别项目esp32_mjd_components :
让我们重点介绍一些演示如何使用核心ESP-IDF框架的项目。
esp32_button_basics如何与按钮(开关)接口。esp32_deep_sleep_wakeup_basics演示了如何使用开关或磁门/窗户传感器从深度睡眠中唤醒ESP32。esp32_http_client演示了使用标准ESP-IDF组件“ ESP32_HTTP_CLIENT”的基础。esp32_gpio_basics如何与开发板的GPIO引脚进行交互。esp32_gpio_scanner如何扫描所有GPIO引脚并发现其I/O功能。esp32_i2c_scanner如何在I2C引脚上扫描所有从设备,并识别其I2C从地址。使用新的I2C从设备时,这很方便。esp32_ledc_pwm_basics如何使用标准ESP-IDF LEDC驱动程序(使用PWM的LED控制器驱动程序)。esp32_nvs_basics如何使用自定义NVS分区使用标准的ESP-IDF NVS(非挥发存储)驱动程序。esp32_rmt_basics如何使用标准ESP-IDF RMT驱动程序。esp32_spiffs_basics如何使用标准ESP-IDF SPIFFS文件系统驱动程序。esp32_sw180_tilt_sensor如何与此倾斜传感器接口(无需额外的组件)。esp32_timer_basics如何使用标准的ESP-IDF计时器驱动程序。esp32_uart_basics如何使用标准的ESP-IDF UART驱动程序。esp32_uart_do_output如何使用标准的ESP-IDF UART驱动程序。esp32_udp_client展示了使用ESP-IDF框架实现UDP客户端的基础。让我们强调一些项目,这些项目演示了如何使用ESP32 MJD入门套件的额外组件。
esp32_ads1115_adc_using_lib演示了使用MJD ESP-IDF组件“ MJD_ADS1115”用于ESP32和TI ADS1115 Ultra Ultra-Small,低功耗,低功能,I2C Compatiabil,I2C Compatiabil,860-SPS,860-SPS,INSTRATION,INSTRATION,860-SPS,与内部参考的流行分类委员会的流行委员会。esp32_am2320_temperature_sensor_using_lib如何读取Aosong AM2320 Meteo传感器的数据。esp32_bh1750fvi_lightsensor_using_lib如何从BH1750光强度传感器读取数据。esp32_bme280_sensor_using_lib如何从Bosch BME280 Meteo传感器读取数据。esp32_bmp280_sensor_using_lib如何从Bosch BMP280 Meteo传感器读取数据。esp32_dht11_temperature_sensor_using_lib如何从Aosong DHT11温度传感器中读取数据。esp32_dht22_temperature_sensor_using_lib如何从Aosong DHT22/AM2302温度传感器读取数据。esp32_door_sensor_reed_switch演示了如何使用基于Reed开关的磁性门/窗户传感器。esp32_ds3231_clock_using_lib如何从DS3231 ZS042 RTC实时时钟板获取/设置数据。esp32_hcsr501_pir_sensor_using_lib如何从HC-SR501 PIR人类红外传感器读取数据。esp32_huzzah32_battery_voltage_using_lib如何使用Adafruit Huzzah32开发板的特定功能。示例:读取电池电压水平。esp32_jsnsr04t_using_lib这个项目演示了JSN-SR04T-2.0防水超声传感器模块与ESP32开发板的所有功能。它将测量值转储在调试日志中。esp32_jsnsr04t_oled_mosfet_using_lib此项目展示了JSN-SR04T-2.0的所有功能,结合了ESP32开发板,OLED显示模块,一个电源模块,一个电动模型,可以在睡眠中旋转电源,并在睡眠中节省电源,并在睡眠中节省了电源,并可以节省睡眠环境,并结合使用ESP32开发委员会(ESP32开发板),并结合使用ESP32开发委员会,并结合使用ESP32开发板,并提供了深度的循环。esp32_ky032_obstacle_sensor_using_lib如何从KY-032红外障碍物避免传感器中读取数据。esp32_ledrgb_using_lib如何控制RGB LED条(例如Adafruit Neopixels和BTF-Lightning产品)。esp32_linked_list_basics如何使用链接列表组件。esp32_lorabee_using_lib如何与SODAQ Lorabee突破板(Microchip RN2843 Lora收发器)进行交互。该项目演示了配置设备并读取/编写NVM的基本命令。esp32_lorabee_rx_using_lib如何与苏打水lorabee突破板(Microchip RN2843 Lora收发器)进行交互。该项目演示了Lora RX接收功能。注意:它使用Lora P2P而不是Lorawan。esp32_lorabee_tx_using_lib如何与SODAQ Lorabee突破板(Microchip RN2843 Lora收发器)进行交互。该项目演示了Lora TX传输功能。注意:它使用Lora P2P而不是Lorawan。esp32_lorabee_using_pc_usbuart此项目演示了如何使用Windows PC和USB-UART板(例如FTDI)向Lorabee模块发布基本命令。这是熟悉Lorabee / Microchip RN2843A板的功能的简便方法。esp32_mlx90393_using_lib如何使用MELEXIS MLX90393磁场传感器获取磁场数据。esp32_neom8n_gps_using_lib如何从GPS UBLOX NEO-M8N模块中获取GPS数据。esp32_scd30_sensor_settings_using_lib此项目用于SENSIRION SCD30 CO2和RH/T传感器模块用于验证传感器是否正常工作,以显示传感器的所有设置**并运行各种校准模式。esp32_scd30_sensor_readings_using_lib此项目用于SERMIRION SCD30 CO2和RH/T传感器模块,连续读取CO2测量,相关和派生的测量值以及空气质量指数。esp32_sht3x_sensor_using_lib此项目演示了组件MJD_SHT3X。使用SENSIRION SHT3X数字湿度和温度传感器的MJD_SHT3X组件配置设备并收集其输出指标(温度CF,相对湿度%和ALOS dew点CF。esp32_ssd1306_oled_using_lib基于SSD1306 OLED驱动程序IC演示了流行的128x32和128x64 OLED显示的此项目。esp32_tmp36_sensor_ads1115_adc_using_lib此项目演示了组件MJD_ADS1115和MJD_TMP36。 TI ADS1115类似物到数字转换器的MJD_ADS1111分量用于读取模拟温度传感器的电压输出。 TMP36传感器的MJD_TMP36组件用于将ADC的原始电压读数转换为透明摄氏度的环境温度。esp32_wifi_device_scanner如何扫描所有WiFi通道并发现设备。esp32_wifi_ssid_cloner如何克隆现有访问点。esp32_wifi_ssid_scanner如何扫描所有WiFi通道并发现访问点。esp32_wifi_ssid_spammer如何在该区域中创建其他访问点。esp32_wifi_stress_test此应用程序在WiFi站的角色中为ESP32 DEV板进行了压力测试。目的是验证ESP-IDF框架特定版本的ESP32 WiFi软件驱动程序的稳定性;用各种供应商的WiFi访问点产品验证其正确的操作。我注意到,在我为ESP32开发的第一个项目中,许多编码模式一次又一次地出现。
因此,过了一会儿,我开始将这些编码模式放在单独的库中。 ESP-IDF是一个可扩展的框架,因此这些库被实现为新的ESP-IDF组件,可以在任何基于ESP-IDF的项目中轻松注入。
所有ESP-IDF MJD组件都集中在项目esp32_mjd_components中。
这些组件可以大致分为3组:
与C语言中的编程有关(具有自己的所有其他编程语言)。示例:链接列表。
与ESP32环境和嵌入式系统的细节有关。示例:简单的WiFi组件。它们使这些ESP-IDF功能更易于使用。
与网络有关。一些示例:与MQTT服务器和某些DNS功能接口。该组件抽象了复杂性,并使其易于使用。
与您连接到ESP32芯片或ESP32模块的外围设备有关。一些示例:LORA板,RGB LED,温度传感器,GPS板,RTC时钟,PIR传感器和障碍物传感器。该组件抽象了周围的复杂性。
这是新组件的列表:
mjd包含通用函数的基本组件。mjd_ads1115 TI ADS1115类似于数字转换器16位的组件。mjd_am2320组件。mjd_bh1750fvi组件。mjd_bme280 BOSCH BME280 METEO传感器的组件。mjd_bmp280组件。mjd_dht11组件。mjd_dht22组件。mjd_ds3231组件。mjd_hcsr501组件。mjd_huzzah32 ADAFRUIT HUZZAH32开发板的组件(读取电池电压级别)。mjd_jsnsr04t组件用于JSN-SR04T-2.0防水超声传感器模块。mjd_ky032 KY-032红外障碍传感器的组件。mjd_ledrgb组件,用于控制各种RGB LED条(WorldSemi WS28XX芯片,例如Adafruit Neopixels产品线)。mjd_list组件实现Linux内核中使用的链接列表。mjd_log组件,以促进应用程序记录。mjd_lorabee组件与SODAQ Lorabee Microchip RN2483A板相互作用(包含一个Microchip RN2843 868MHz Lora芯片)。mjd_mlx90393 MELEXIS MLX90393磁场传感器(XYZ轴和温度指标)的组件。mjd_mqtt组件(作为MQTT客户端)。mjd_nanopb组件可与Google协议缓冲器一起使用。它包括NanoPB库v0.3.9.2的常见C文件。它还在makefile.projbuild中宣布NanoPB特定的项目范围内的汇编指令(-D)mjd_net组件促进各种网络功能(获取IP地址,DNS Resolve HostNames等)。mjd_neom8n组件。mjd_scd30组件的SCD30 CO2和RH/T传感器模块。mjd_sht3x组件。mjd_ssd1306组件。mjd_tmp36组件。与ADC一起使用。mjd_wifi组件以WiFi站点为wifi访问点的连接。让我们更详细地对这些组件进行分类:
该组件支持几个RGB LED软件包。它带有基本文档,例如数据表,原理图和有关如何将它们连接到开发板并最终额外的电源的说明。
这些组件包含基本文档,例如数据表,原理图以及有关如何将它们连接到开发板的说明。
程序:
git clone https://github.com/pantaluna/esp32-mjd-starter-kit.gitcd进入您要在./projects下探索的项目目录。make menuconfig以修改要运行的项目的设置(例如gpio pin#,wifi凭据,...)。make flash monitor构建和上传示例到您的开发板,并通过串行终端监视执行。 ESP-IDF框架(及其文档)非常强大且广泛。
我发现很难快速入门。我只是一个经验丰富的完整堆栈开发人员(后端/前端),没有太多使用嵌入式系统开发物联网解决方案的经验。
更具体地说,我可以理解ESP-IDF框架的所有功能,但是我很难将所有内容粘合在一起,并迅速使用特定的外围设备(例如传感器,Lora板,GPS板和LED条)开发真实解决方案的实际项目。例如,我想从控制网络中各种传感器的项目开始,并在中央服务器上分析数据,然后转到更复杂的项目。
其次,很难找到各种外围设备(例如Meteo传感器,GPS板,RGB LED等)的良好文档(数据表,图表,接线的照片),以及如何与基于ESP32的开发板结合使用这些设备。
因此,随着时间的流逝,我开发了这些额外的组件,良好的文档以及许多针对整个物联网项目中通常使用的外围设备的工作项目。
现在是回馈ESP32社区并释放我所学到的所有知识的好时机,以便每个人都可以从这项工作中受益。
您有2个开始开发ESP32芯片的选项:
重要的是要知道,这两个框架都是稳定且可用的,但是它们仍在浓缩咖啡中的重大发展,并且主要的新版本定期发布。我预计至少将持续到2018年第4季度。
在尝试了两个框架之后,我决定使用ESP-IDF框架,更具体地说是v3.1及更高的框架。我总是尝试发布与上一个稳定版本兼容的库。
ESP32入门套件可让您快速入门。如果您需要现有组件的额外功能,或者希望提出一个新组件,请提交问题。
所有MJD组件都集中在项目mjd_components中。
该套件并非旨在实现任何ESP32项目的所有可能功能。如果新功能对您的项目非常具体,那么最好的方法是将自己的ESP-IDF组件捆绑在一起,并具有所需的功能。您可以将这些组件用作基础;请不要忘记提到您从此入门套件中获得了组件。
“ MJD”代表什么?它是毫无意义的代码字,它在C语言中用于使标识符与众不同。这种方法可确保您可以在任何其他C项目中使用这些新的ESP-IDF组件。
为什么所有的项目和组件都存储在一个GitHub存储库中(反对每个项目和每个组件都有一个GitHub存储库)?我认为这使入门套件更容易为初学者使用。将来,可以使用git subsodules设置套件。
检查github。
释放气体传感器,灰尘传感器,4-20mA电流环组件,TFT显示器和RGB LED矩阵的额外组件。
发布额外的项目以演示OTA更新(远程升级固件)。
向公众发布IoT平台,以便您可以管理现场的设备并分析传入数据。
为该套件的技术文档制作新网站。