August 2019.
Möchten Sie auch innovative IoT-Projekte erstellen, die den ESP32-Chip (ESP32-basierten Modulen) des beliebten Unternehmens Espressif verwenden? Nun, ich habe und habe es immer noch getan. Und ich hoffe du tust es auch.
Das Ziel dieses gut dokumentierten Starter-Kits ist es, die Entwicklung Ihrer IoT-Projekte für ESP32-Hardware mithilfe des ESP-IDF-Frameworks von EspressIF zu beschleunigen und inspirieren, welche Art von Apps Sie für ESP32 mit verschiedenen Hardware-Modulen erstellen können.
Sind Sie bereit zu entdecken, wie Sie schnell anfangen können?
mkdir ~/esp
cd ~/esp
git clone -b v3.2.2 --recursive https://github.com/espressif/esp-idf.git esp-idf
Dieser Teil enthält grundlegende Informationen über einige ESP32 -Entwicklungsausschüsse, die ich ursprünglich verwendet habe:
Ein ESP32 -Entwicklungsausschuss kann nur durch einen solchen Adapter (leicht) programmiert werden.
Dieser Teil dokumentiert einige Produkte und wie man sie konfiguriert.
Wiederaufladbare Batterien werden häufig in IoT -Projekten verwendet.
Dieser Teil ist ein beliebtes Batterieladegerät, ein selbst gemachter Batterie-Ablöser und Details zu beliebten Batterien wie Löwenbatterien und LifePO4-Batterien. Es enthält auch einige Spezifikationen über professionelle Lisoci2-Lithium-Thionylchlorid-nicht-recherische Batterien zur Verwendung unter harten Bedingungen.
Einige Dokumentationen über hauptsächlich N -Kanal -Leistungsmosfets, die häufig in Kombination mit einem ESP32 -Entwicklungsausschuss verwendet werden.
Dokumentation zum TP4056 -Modul.
Einige Dokumentationen zu LDO -Spannungsregulatoren, die Teil eines ESP32 -Entwicklungsausschusses sind.
Das Starter -Kit enthält verschiedene Arbeitsprojekte, die Sie sofort ausführen können - im Gegensatz zu Snippets, die Sie selbst zusammenkleben müssen, was für einen Anfänger nicht einfach ist.
Diese Projekte:
Geben Sie Einblicke in die tatsächliche Verwendung des offiziellen ESP-IDF-Frameworks effizient.
Fügen Sie eine Menge beste Codierungspraktiken und Konfigurationspraktiken hinzu.
Zeigen Sie, wie die neuen ESP-IDF-Komponenten dieses Starter-Kits wie RGB-LED-Streifen und Meteo-Sensoren verwendet werden.
Das Special Project esp32_mjd_components :
Lassen Sie uns einige Projekte hervorheben, die zeigen, wie das Core ESP-IDF-Framework verwendet wird.
esp32_button_basics , wie man mit Schaltflächen (Switches) Schnittstelle unterbrochen.esp32_deep_sleep_wakeup_basics zeigt, wie Sie einen Schalter oder einen Magnettür/einen Fenstersensor verwenden, um ein ESP32 aus dem tiefen Schlaf aufzuwecken.esp32_http_client zeigt die Grundlagen der Verwendung der Standard-ESP-IDF-Komponente "ESP32_HTTP_CLIENT".esp32_gpio_basics Wie man mit GPIO -Stiften des Entwicklungsausschusses interagiert.esp32_gpio_scanner , wie Sie alle GPIO -Stifte scannen und ihre E/A -Funktion entdecken.esp32_i2c_scanner So scannen Sie alle Slave -Geräte auf den I2C -Stiften und identifizieren ihre I2C -Sklavenadresse. Dies ist praktisch, wenn Sie mit neuen I2C -Slave -Geräten arbeiten.esp32_ledc_pwm_basics Wie man den Standard-ESP-IDF-LEDC-Treiber verwendet (ein LED-Controller-Treiber mit PWM).esp32_nvs_basics Wie man den Standard-ESP-IDF-NVS-Treiber (nicht flüchtiger Speicher) mit einer benutzerdefinierten NVS-Partition verwendet.esp32_rmt_basics Wie man den Standard-ESP-IDF RMT-Treiber verwendet.esp32_spiffs_basics Wie verwendet man den Standard-Treiber für den serienp-IDF-Spiffs-Dateisystem.esp32_sw180_tilt_sensor Wie man mit diesem Tilt -Sensor eine Schnittstelle unterbrochen (keine zusätzlichen Komponenten erforderlich).esp32_timer_basics wie Sie den Standard-ESP-IDF-Timer-Treiber verwenden.esp32_uart_basics wie Sie den Standard-ESP-IDF-UART-Treiber verwenden.esp32_uart_do_output wie Sie den Standard-ESP-IDF-UART-Treiber verwenden.esp32_udp_client demonstriert die Grundlagen der Implementierung eines UDP-Clients mithilfe des ESP-IDF-Frameworks.Lassen Sie uns einige Projekte hervorheben, die zeigen, wie die zusätzlichen Komponenten des ESP32 MJD Starter Kit verwendet werden.
esp32_ads1115_adc_using_lib zeigt die Grundlagen der Verwendung der MJD ESP-IDF-Komponente "MJD_ADS1115" für die ESP32 und die beliebten Breakout-Boards des Ti ADS1115 Ultra-Small, Low-Power, I2C-kompatible, 860-SSPs, 16-Bit-ADCs mit interner Referenz, Oscillator und Program und Program-SPS, 16-Bit-ADCs mit interner ADCs, Oscillator und Program und Program-SPS, 16-Bit-ADCs mit interner ADCs, Oscillator und Program und Prograr-SPS, 16-Bit-ADCs mit interner ADCs, Oscillator und Programme und Prograr-SSP, ADCS-ADCS-ADCS, OSCILLDE und AUSBILD.esp32_am2320_temperature_sensor_using_lib Wie lesen Sie Daten aus dem AOSONG AM2320 Meteo -Sensor.esp32_bh1750fvi_lightsensor_using_lib Wie lesen Sie Daten aus dem BH1750 -Lichtintensitätssensor.esp32_bme280_sensor_using_lib Wie lesen Sie Daten aus dem Bosch Bme280 Meteo -Sensor.esp32_bmp280_sensor_using_lib Wie Sie Daten aus dem BOSCH BMP280 Meteo -Sensor lesen.esp32_dht11_temperature_sensor_using_lib Wie Sie Daten aus dem Temperatursensor von AOSong DHT11 lesen.esp32_dht22_temperature_sensor_using_lib Wie Sie Daten aus dem Temperatursensor von AOSong DHT22/AM2302 lesen.esp32_door_sensor_reed_switch zeigt, wie man einen Magnettür/einen Fenstersensor verwendet, der auf einem Schaltschalter basiert.esp32_ds3231_clock_using_lib So erhalten/festlegen Sie Daten aus der DS3231 ZS042 RTC Realtime Clock Board.esp32_hcsr501_pir_sensor_using_lib Wie Sie Daten aus dem HC-SR501 PIR Human Infrared Sensor lesen.esp32_huzzah32_battery_voltage_using_lib Wie verwendet Sie spezifische Funktionen der Adafruit Huzzah32 -Entwicklungskarte. Beispiel: Batteriespannungsstufe lesen.esp32_jsnsr04t_using_lib Dieses Projekt zeigt alle Merkmale des JSN-SR04T-2.0 Water of Ultrasonic Sensor Moduls in Kombination mit einer ESP32-Entwicklungskarte. Es gibt die Messungen im Debug -Protokoll ab.esp32_jsnsr04t_oled_mosfet_using_lib Dieses Projekt zeigt alle Funktionen des JSN-SR04T-2.0 Waterfof Ultrasonic Sensor Moduls in Kombination mit einer ESP32-Entwicklungskarte, einem OLED-Anzeigemodul, einem Power-Mosfet, um den Sensor einzuschalten, um den Sensor einzuschalten, um den Sensor einzuschalten (um während des tiefen Schlafes während des tiefen Schlafes zu sparen) und ein Tiefenschlaf und einen tiefen Schlaf) und einen Tiefenschlaf und einen Tiefenschlaf und einen Tiefenschlaf) und einen Tiefenschlaf und einen Tiefenschlaf und einen Tiefenschlaf) und einen Tiefenschlaf und einen tiefen Schlafzyule und einen tiefen Schlafzyule).esp32_ky032_obstacle_sensor_using_lib Wie man Daten aus dem KY-032-Infrarot-Hindernisvermeidungssensor liest.esp32_ledrgb_using_lib Wie man RGB-LED-Streifen steuert (wie die Adafruit-Neopixel und BTF-leuchtenden Produkte).esp32_linked_list_basics wie Sie die verknüpfte Listenkomponente verwenden.esp32_lorabee_using_lib So interagieren Sie mit der Sodaq Lorabee Breakout Board (Microchip RN2843 LORA -Transceiver). Dieses Projekt zeigt die grundlegenden Befehle zum Konfigurieren des Geräts und zum Lesen/Schreiben des NVM.esp32_lorabee_rx_using_lib Wie interagiert man mit der Sodaq Lorabee Breakout Board (Microchip RN2843 LORA -Transceiver). Dieses Projekt zeigt die Lora Rx -Empfangsfunktionalität. Hinweis: Es verwendet Lora P2P und nicht Lorawan.esp32_lorabee_tx_using_lib So interagieren Sie mit der Sodaq Lorabee Breakout Board (Microchip RN2843 LORA -Transceiver). Dieses Projekt zeigt die LORA TX -Übertragungsfunktionalität. Hinweis: Es verwendet Lora P2P und nicht Lorawan.esp32_lorabee_using_pc_usbuart Dieses Projekt zeigt, wie grundlegende Befehle an das Lorabee-Modul mit einem Windows-PC und einer USB-UART-Platine (wie einem FTDI) ausgegeben werden. Dies ist eine einfache Möglichkeit, sich mit den Funktionen des Lorabee / Microchip RN2843A -Boards vertraut zu machen.esp32_mlx90393_using_lib Wie können Sie Magnetfelddaten mit dem MELEXIS MLX90393 Magnetfeldsensor erhalten.esp32_neom8n_gps_using_lib Wie erfolgt GPS-Daten aus dem GPS Ublox NEO-M8N-Modul.esp32_scd30_sensor_settings_using_lib Dieses Projekt für das senssitrion SCD30 CO2- und RH/T -Sensormodul wird verwendet, um zu überprüfen, ob der Sensor ordnungsgemäß funktioniert, um alle Einstellungen des Sensors zu zeigen und die verschiedenen Kalibrierungsmodi auszuführen.esp32_scd30_sensor_readings_using_lib Dieses Projekt für das senssitrion SCD30 CO2- und RH/T -Sensormodul liest kontinuierlich die CO2 -Messung, die zugehörigen und abgeleiteten Messungen und den Luftqualitätsindex.esp32_sht3x_sensor_using_lib Dieses Projekt zeigt die Komponenten mjd_sht3x. Die MJD_SHT3X -Komponente für den senssirion SHT3X Digitalen Luftfeuchtigkeit und Temperatursensor konfigurieren das Gerät und sammeln seine Ausgangsmetriken (Temperatur CF, relative Luftfeuchtigkeit % und ALOS DEW PUNKT C F.esp32_ssd1306_oled_using_lib Dieses Projekt für die beliebten 128x32- und 128x64 -OLED -Anzeigen basierend auf dem SSD1306 -OLED -Treiber IC demonstriert die Komponente MJD_SSD1306, um Text auf einer OLED -Anzeige anzuzeigen.esp32_tmp36_sensor_ads1115_adc_using_lib Dieses Projekt zeigt die Komponenten mjd_ads1115 und mjd_tmp36. Die MJD_ADS1115-Komponente für den Ti ADS1115-Analog-Digital-Convertor wird verwendet, um den Spannungsausgang des analogen Temperatursensors zu lesen. Die MJD_TMP36 -Komponente für den TMP36 -Sensor wird verwendet, um den Rohspannungswert des ADC in Grad Celsius transparent in die Umgebungstemperatur umzuwandeln.esp32_wifi_device_scanner , wie Sie alle WLAN -Kanäle scannen und die Geräte entdecken.esp32_wifi_ssid_cloner wie Sie vorhandene Zugriffspunkte klonen.esp32_wifi_ssid_scanner Wie scannen Sie alle WLAN -Kanäle und entdecken Sie die Zugriffspunkte.esp32_wifi_ssid_spammer So erstellen Sie zusätzliche Zugriffspunkte im Bereich.esp32_wifi_stress_test Diese App Führen Sie einen Spannungstest für die ESP32 Dev Board in der Rolle als WLAN -Station aus. Ziel ist es, die Stabilität des ESP32-WLAN-Softwaretreibers einer bestimmten Version des ESP-IDF-Frameworks zu überprüfen. Um den korrekten Betrieb mit WLAN -Zugangspunktprodukten verschiedener Anbieter zu überprüfen.Ich bemerkte, dass viele Codierungsmuster in den ersten Projekten, die ich für das ESP32 entwickelt habe, immer wieder zurückkamen.
Nach einer Weile fing ich an, diese Codierungsmuster in separate Bibliotheken zu setzen. Das ESP-IDF ist ein erweiterbares Framework, daher werden diese Bibliotheken als neue ESP-IDF-Komponenten implementiert, die in jedem ESP-IDF-basierten Projekt leicht injiziert werden können.
Alle ESP-IDF-MJD-Komponenten sind im Projekt esp32_mjd_components zentralisiert.
Die Komponenten können ungefähr in 3 Gruppen geteilt werden:
Im Zusammenhang mit der Programmierung in der C -Sprache (die ihre eigenen Macken als alle anderen Programmiersprachen aufweist). Beispiel: verknüpfte Listen.
Im Zusammenhang mit der ESP32 -Umgebung und den Besonderheiten eingebetteter Systeme. Beispiele: Eine einfache WLAN -Komponente. Sie machen diese ESP-IDF-Funktionen einfacher zu bedienen.
Im Zusammenhang mit der Vernetzung. Einige Beispiele: Vernetzung mit einem MQTT -Server und einigen DNS -Funktionen. Die Komponente ist die Komplexität abstrahiert und erleichtert die Verwendung.
Bezogen auf die Peripheriegeräte, die Sie mit dem ESP32 -Chip- oder ESP32 -Modul verdrehen. Einige Beispiele: LORA -Board, RGB -LED, Temperatursensoren, GPS -Boards, RTC -Uhren, PIR -Sensoren und Hindernissensoren. Die Komponente ist die Komplexität des Peripherers abstrahiert.
Dies ist die Liste der neuen Komponenten:
mjd Die Basiskomponente, die allgemeine Funktionen enthält.mjd_ads1115 -Komponente für den Ti ADS1115 Analog-Digital-Convertor 16-Bit.mjd_am2320 -Komponente für den Aosong AM2320 Meteo -Sensor.mjd_bh1750fvi -Komponente für den BH1750 Light Intensity Sensor.mjd_bme280 -Komponente für den Bosch Bme280 Meteo -Sensor.mjd_bmp280 -Komponente für den Bosch Bmp280 Meteo -Sensor.mjd_dht11 -Komponente für den Temperatursensor von AoSong DHT11.mjd_dht22 -Komponente für den Temperatursensor von Aosong DHT11/AM2302.mjd_ds3231 -Komponente für die DS3231 ZS042 RTC Echtzeit-Taktplatte.mjd_hcsr501 -Komponente für den HC-SR501 PIR Human Infrared Sensor.mjd_huzzah32 -Komponente für die Adafruit Huzzah32 -Entwicklungskarte (Lese -Batteriespannungsstufe).mjd_jsnsr04t Komponente für das wasserdichte Ultraschallsensor-Modul JSN-SR04T-2.0.mjd_ky032 -Komponente für den KY-032-Infrarot-Hindernisvermeidungssensor.mjd_ledrgb -Komponente zur Steuerung verschiedener RGB -LED -Streifen (WorldSemi WS28XX -Chips wie der Adafruit Neopixels -Produktlinie).mjd_list -Komponente, die die verknüpften Listen implementiert, wie sie im Linux -Kernel verwendet werden.mjd_log -Komponente, um die Protokollierung in der App zu erleichtern.mjd_lorabee -Komponente, um mit der Sodaq Lorabee Microchip RN2483A -Karte zu interagieren (enthält einen Microchip RN2843 868MHz Lora -Chip).mjd_mlx90393 Komponente für den MELEXIS MLX90393 Magnetfeldsensor (XYZ -Achse und Temperaturmetriken).mjd_mqtt -Komponente für die Interaktion mit einem MQTT -Server (als MQTT -Client).mjd_nanopb -Komponente für die Arbeit mit Google -Protokollpuffern. Es enthält die gemeinsamen C -Dateien der Nanopb -Bibliothek v0.3.9.2. Es deklariert auch Nanopb spezifische projektweite Kompilierungsrichtlinien (-d) in makefile.projbuildmjd_net -Komponente, um verschiedene Netzwerkfunktionen zu erleichtern (Abrufen von IP -Adresse, DNS -Hostnamen usw.).mjd_neom8n Komponente für das GPS U-Blox NEO-M8N-Modul.mjd_scd30 -Komponente für das senssirion SCD30 CO2- und RH/T -Sensormodul.mjd_sht3x -Komponente für den senssitrion sht3x digitalen Luftfeuchtigkeit und Temperatursensor.mjd_ssd1306 Komponente für die beliebten 128x32- und 128x64 -OLED -Anzeigen, die auf dem SSD1306 OLED -Treiber -IC basieren.mjd_tmp36 -Komponente für den TMP36 -Analogemperatursensor aus analogen Geräten. Zusammen mit einem ADC verwendet werden.mjd_wifi -Komponente als WLAN -Station als WLAN -Zugangspunkt zu erleichtern.Lassen Sie uns diese Komponenten genauer kategorisieren:
Diese Komponente unterstützt mehrere RGB -LED -Pakete. Es wird mit den wesentlichen Dokumentationen wie Datenblättern, Schaltplänen und Anweisungen zur Verdrehung an Ihre Entwicklungskarte und letztendlich eine zusätzliche Stromversorgung geliefert.
Diese Komponenten sind mit den wesentlichen Dokumentationen wie Datenblättern, Schaltplänen und Anweisungen zur Verdrehung an Ihr Entwicklungsausschuss ausgestattet.
Verfahren:
git clone https://github.com/pantaluna/esp32-mjd-starter-kit.gitcd in das Verzeichnis des Projekts, das Sie unter ./projects untersuchen möchten.make menuconfig , um die Einstellungen des Projekts zu ändern, die Sie ausführen möchten (z. B. GPIO -PIN#, WLAN -Anmeldeinformationen, ...).make flash monitor , um das Beispiel auf Ihre Entwicklungskarte zu erstellen und hochzuladen und die Ausführung über das serielle Terminal zu überwachen. Das ESP-IDF-Framework (und seine Dokumentation) ist sehr mächtig und umfangreich.
Ich fand es schwierig, schnell loszulegen. Ich bin nur ein erfahrener Full -Stack -Entwickler (Backend/Frontend) ohne viel Erfahrung in der Entwicklung von IoT -Lösungen mithilfe eingebetteter Systeme.
Insbesondere konnte ich alle Merkmale des ESP-IDF-Frameworks verstehen, aber es fiel mir schwer, alles zusammenzukleben und schnell echte Projekte für echte Lösungen mit bestimmten Peripheriegeräten wie Sensoren, Lora-Boards, GPS-Boards und LED-Streifen zu entwickeln. Zum Beispiel wollte ich mit Projekten beginnen, die verschiedene Sensoren in einem Netzwerk steuern und die Daten auf einem zentralen Server analysieren und dann zu komplexeren Projekten übergehen.
Zweitens war es schwierig, eine gute Dokumentation (Datenblätter, Diagramme, Fotos der Verkabelung) der verschiedenen peripheren Geräte wie Meteo-Sensoren, GPS-Boards, RGB-LEDs usw. zu finden und wie diese Geräte in Kombination mit einem ESP32-basierten Entwicklungsausschuss verwendet werden.
Daher habe ich diese zusätzlichen Komponenten, gute Dokumentation und viele Arbeitsprojekte im Laufe der Zeit entwickelt, die auf eine ganze Reihe von Peripheriegeräten abzielen, die normalerweise in IoT -Projekten verwendet werden.
Jetzt ist ein guter Zeitpunkt, um der ESP32 -Community etwas zurückzugeben und alles, was ich gelernt habe, bis Open Source zu veröffentlichen, damit jeder von dieser Arbeit profitieren kann.
Sie haben 2 Optionen, um sich für den ESP32 -Chip zu entwickeln:
Es ist wichtig zu wissen, dass beide Frameworks stabil und verwendbar sind, aber sie werden von Espresssif immer noch erheblich entwickelt, und es werden regelmäßig wichtige neue Veröffentlichungen herausgestellt. Ich gehe davon aus, dass dies mindestens bis 2018Q4 fortgesetzt wird.
Nachdem ich mit beiden Frameworks experimentiert hatte, entschied ich mich für das ESP-IDF-Framework, insbesondere v3.1 und höher. Ich versuche immer, Bibliotheken freizugeben, die mit der letzten stabilen Version kompatibel sind.
Das ESP32 -Starter -Kit bringt Sie schnell an. Wenn Sie zusätzliche Funktionen einer vorhandenen Komponente benötigen oder eine neue Komponente vorschlagen möchten, geben Sie bitte ein Problem ein.
Alle MJD -Komponenten sind im Projekt mjd_components zentralisiert.
Das Kit ist nicht so konzipiert, dass alle denkbaren Funktionen eines ESP32 -Projekts implementiert werden. Wenn eine neue Funktion für Ihr Projekt sehr spezifisch ist, besteht der beste Ansatz darin, Ihr eigenes Bündel ESP-IDF-Komponenten mit der gewünschten Funktionalität zu erstellen. Sie können diese Komponenten als Fundament verwenden. Bitte vergessen Sie nicht zu erwähnen, dass Sie die Komponenten aus diesem Starter -Kit erhalten haben.
Wofür steht "MJD"? Es ist bedeutungsloses Codewort und wird in der C -Sprache verwendet, um Kennungen einzigartig zu machen. Dieser Ansatz stellt sicher, dass Sie diese neuen ESP-IDF-Komponenten in jedem anderen C-Projekt verwenden können.
Warum werden alle Projekte und Komponenten in einem Github -Repository gespeichert (im Gegensatz zu einem Github -Repo für jedes Projekt und jede Komponente)? Ich denke, dies erleichtert das Starter -Kit für Anfänger. In Zukunft könnte das Kit mit Git -Submodules eingerichtet werden.
Überprüfen Sie GitHub.
Füllen Sie zusätzliche Komponenten für Gassensoren, Staubpartikelsensoren, eine 4-20-mA-Stromschleifenkomponente, TFT-Anzeigen und RGB-LED-Matrixe frei.
Veröffentlichen Sie zusätzliche Projekte, um OTA -Updates zu demonstrieren (upgraden Sie die Firmware remote auf).
Um eine IoT -Plattform an die Öffentlichkeit zu veröffentlichen, können Sie die Geräte im Feld verwalten und die eingehenden Daten analysieren.
Um eine neue Website für die technische Dokumentation dieses Kits zu erstellen.