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平台,以便您可以管理現場的設備並分析傳入數據。
為該套件的技術文檔製作新網站。