Agustus 2019.
Apakah Anda juga ingin membuat proyek IoT inovatif yang menggunakan chip ESP32, atau modul berbasis ESP32, dari perusahaan populer Espressif? Ya, saya melakukannya dan masih melakukannya. Dan saya harap Anda juga melakukannya.
Tujuan dari starter kit yang didokumentasikan dengan baik ini adalah untuk mempercepat pengembangan proyek IoT Anda untuk perangkat keras ESP32 menggunakan kerangka kerja ESP-IDF dari Espressif dan mendapatkan inspirasi aplikasi seperti apa yang dapat Anda bangun untuk ESP32 menggunakan berbagai modul perangkat keras.
Apakah Anda siap untuk menemukan bagaimana Anda bisa memulai dengan cepat?
mkdir ~/esp
cd ~/esp
git clone -b v3.2.2 --recursive https://github.com/espressif/esp-idf.git esp-idf
Bagian ini berisi informasi dasar tentang beberapa papan pengembangan ESP32 yang saya gunakan pada awalnya:
Dewan Pengembangan ESP32 hanya dapat diprogram (dengan mudah) oleh adaptor seperti itu.
Bagian ini mendokumentasikan beberapa produk dan cara mengonfigurasinya.
Baterai yang dapat diisi ulang sering digunakan dalam proyek IoT.
Bagian ini pengisi daya baterai yang populer, pelepasan baterai buatan sendiri, dan detail tentang baterai populer seperti baterai Lion dan baterai LIFEPO4. Ini juga berisi beberapa spesifikasi tentang baterai lisoci2 litium-thionyl-chloride yang tidak dapat ditagih untuk digunakan dalam kondisi yang keras.
Beberapa dokumentasi tentang MOSFET Power Nyalakan N yang sering digunakan dalam kombinasi dengan Dewan Pengembangan ESP32.
Dokumentasi tentang modul TP4056.
Beberapa dokumentasi tentang regulator tegangan LDO yang merupakan bagian dari Dewan Pengembangan ESP32.
Starter kit mencakup berbagai proyek kerja yang dapat Anda jalankan secara instan - bertentangan dengan cuplikan yang harus Anda rekatkan bersama sendiri, yang tidak mudah bagi pemula.
Proyek -proyek ini:
Berikan wawasan tentang cara benar-benar menggunakan kerangka kerja ESP-IDF resmi secara efisien.
Sertakan satu ton praktik pengkodean terbaik dan praktik konfigurasi.
Tunjukkan cara menggunakan komponen ESP-IDF baru dari kit starter ini, seperti strip LED RGB dan sensor Meteo.
Proyek Khusus esp32_mjd_components :
Mari kita sorot beberapa proyek yang menunjukkan cara menggunakan kerangka kerja ESP-IDF inti.
esp32_button_basics Cara berinteraksi dengan tombol (sakelar).esp32_deep_sleep_wakeup_basics menunjukkan cara menggunakan sakelar atau sensor pintu/jendela magnetik untuk membangunkan ESP32 dari tidur nyenyak.esp32_http_client menunjukkan dasar-dasar menggunakan komponen ESP-IDF standar "ESP32_http_client".esp32_gpio_basics Cara berinteraksi dengan pin GPIO dari Dewan Pengembangan.esp32_gpio_scanner Cara memindai semua pin GPIO dan menemukan fungsi I/O mereka.esp32_i2c_scanner Cara memindai semua perangkat budak pada pin I2C, dan mengidentifikasi alamat budak I2C mereka. Ini berguna saat bekerja dengan perangkat budak I2C baru.esp32_ledc_pwm_basics Cara menggunakan driver LEDC ESP-IDF standar (driver pengontrol LED menggunakan PWM).esp32_nvs_basics Cara menggunakan driver ESP-IDF NVS (penyimpanan non-volatile) standar dengan partisi NVS khusus.esp32_rmt_basics Cara menggunakan driver RMT ESP-IDF standar.esp32_spiffs_basics Cara menggunakan driver sistem file spiffs ESP-IDF standar.esp32_sw180_tilt_sensor Cara berinteraksi dengan sensor kemiringan ini (tidak diperlukan komponen tambahan).esp32_timer_basics Cara menggunakan driver timer ESP-IDF standar.esp32_uart_basics Cara menggunakan driver UART ESP-IDF standar.esp32_uart_do_output Cara menggunakan driver UART ESP-IDF standar.esp32_udp_client menunjukkan dasar-dasar mengimplementasikan klien UDP menggunakan kerangka ESP-IDF.Mari kita sorot beberapa proyek yang menunjukkan cara menggunakan komponen tambahan dari ESP32 MJD Starter Kit.
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 Bus.esp32_am2320_temperature_sensor_using_lib cara membaca data dari sensor meteo AOSONG AM2320.esp32_bh1750fvi_lightsensor_using_lib Cara membaca data dari sensor intensitas cahaya BH1750.esp32_bme280_sensor_using_lib Cara Membaca Data dari Bosch BME280 Meteo Sensor.esp32_bmp280_sensor_using_lib Cara membaca data dari sensor Meteo Bosch BMP280.esp32_dht11_temperature_sensor_using_lib Cara membaca data dari sensor suhu AOSONG DHT11.esp32_dht22_temperature_sensor_using_lib Cara membaca data dari sensor suhu AOSONG DHT22/AM2302.esp32_door_sensor_reed_switch menunjukkan cara menggunakan sensor pintu/jendela magnetik yang didasarkan pada sakelar buluh.esp32_ds3231_clock_using_lib Cara mendapatkan/mengatur data dari DS3231 ZS042 RTC Realtime Clock Board.esp32_hcsr501_pir_sensor_using_lib Cara membaca data dari sensor inframerah manusia HC-SR501 PIR.esp32_huzzah32_battery_voltage_using_lib Cara menggunakan fitur spesifik dari ADAFRUIT Huzzah32 Development Board. Contoh: Baca level tegangan baterai.esp32_jsnsr04t_using_lib Proyek ini menunjukkan semua fitur modul sensor ultrasonik tahan air JSN-SR04T-2.0 dalam kombinasi dengan papan pengembangan ESP32. Ini membuang pengukuran di log debug.esp32_jsnsr04t_oled_mosfet_using_lib Proyek ini menunjukkan semua fitur dari modul sensor ultrasonik JSN-SR04T-2.0 Waterproof, dan siklus tidur yang lebih dalam. dan siklus tidur yang dalam.esp32_ky032_obstacle_sensor_using_lib Cara membaca data dari sensor penghindaran hambatan inframerah KY-032.esp32_ledrgb_using_lib Cara mengontrol strip LED RGB (seperti ADAFRUIT Neopixels dan produk BTF-Lightning).esp32_linked_list_basics Cara menggunakan komponen daftar tertaut.esp32_lorabee_using_lib Cara berinteraksi dengan papan pelarian Sodaq Lorabee (Microchip RN2843 Lora Transceiver). Proyek ini menunjukkan perintah dasar untuk mengonfigurasi perangkat dan membaca/menulis NVM.esp32_lorabee_rx_using_lib Cara berinteraksi dengan papan pelarian Sodaq Lorabee (Microchip RN2843 Lora Transceiver). Proyek ini menunjukkan fungsionalitas menerima Lora RX. Catatan: Ini menggunakan Lora P2P dan bukan Lorawan.esp32_lorabee_tx_using_lib Cara berinteraksi dengan papan pelarian Sodaq Lorabee (Microchip RN2843 Lora Transceiver). Proyek ini menunjukkan fungsi transmisi Lora TX. Catatan: Ini menggunakan Lora P2P dan bukan Lorawan.esp32_lorabee_using_pc_usbuart Proyek ini menunjukkan cara mengeluarkan perintah dasar ke modul Lorabee menggunakan PC Windows dan papan USB-UART (seperti FTDI). Ini adalah cara mudah untuk terbiasa dengan fitur papan Lorabee / Microchip RN2843A.esp32_mlx90393_using_lib Cara mendapatkan data medan magnet menggunakan sensor medan magnet MLX90393 Melexis.esp32_neom8n_gps_using_lib Cara Mendapatkan Data GPS dari Modul GPS Ulox Neo-M8N.esp32_scd30_sensor_settings_using_lib Proyek ini untuk Sensirion SCD30 CO2 dan Modul Sensor RH/T digunakan untuk memverifikasi bahwa sensor berfungsi dengan baik, untuk menunjukkan semua pengaturan ** sensor dan menjalankan berbagai mode kalibrasi.esp32_scd30_sensor_readings_using_lib Proyek ini untuk Sensirion SCD30 CO2 dan Modul Sensor RH/T membaca secara terus menerus pengukuran CO2, pengukuran terkait dan diturunkan dan indeks kualitas udara.esp32_sht3x_sensor_using_lib Proyek ini menunjukkan komponen mjd_sht3x. Komponen MJD_SHT3X untuk sensor Sensirion SHT3X Digital Growidity dan Suhu digunakan mengkonfigurasi perangkat dan mengumpulkan metrik outputnya (suhu CF, kelembaban relatif % dan alos titik embun C F.esp32_ssd1306_oled_using_lib Proyek ini untuk tampilan OLED 128x32 dan 128x64 yang populer berdasarkan SSD1306 OLED Driver IC menunjukkan komponen MJD_SSD1306 untuk menampilkan teks pada layar OLED.esp32_tmp36_sensor_ads1115_adc_using_lib Proyek ini menunjukkan komponen MJD_ADS1115 dan MJD_TMP36. Komponen MJD_ADS1115 untuk Ti ADS1115 Analog-to-Digital-Convertor digunakan untuk membaca output tegangan sensor suhu analog. Komponen MJD_TMP36 untuk sensor TMP36 digunakan untuk mengonversi pembacaan tegangan mentah ADC ke suhu sekitar dalam derajat Celcius secara transparan.esp32_wifi_device_scanner Cara memindai semua saluran wifi dan menemukan perangkat.esp32_wifi_ssid_cloner Cara mengkloning titik akses yang ada.esp32_wifi_ssid_scanner Cara memindai semua saluran wifi dan menemukan titik akses.esp32_wifi_ssid_spammer Cara membuat titik akses tambahan di area tersebut.esp32_wifi_stress_test aplikasi ini menjalankan tes stres untuk papan dev ESP32 dalam peran sebagai stasiun wifi. Tujuannya adalah untuk memverifikasi stabilitas driver perangkat lunak WiFi ESP32 dari versi spesifik dari kerangka kerja ESP-IDF; Untuk memverifikasi operasinya yang benar dengan produk titik akses WiFi dari berbagai vendor.Saya perhatikan bahwa banyak pola pengkodean kembali lagi dan lagi dalam proyek pertama yang saya kembangkan untuk ESP32.
Jadi setelah beberapa saat saya mulai meletakkan pola pengkodean itu di perpustakaan yang terpisah. ESP-IDF adalah kerangka kerja yang dapat diperluas sehingga perpustakaan ini diimplementasikan sebagai komponen ESP-IDF baru yang dapat disuntikkan dengan mudah dalam proyek berbasis ESP-IDF apa pun.
Semua komponen MJD ESP-IDF terpusat dalam proyek esp32_mjd_components .
Komponen dapat dibagi secara kasar dalam 3 kelompok:
Terkait dengan pemrograman dalam bahasa C (yang memiliki keanehan sendiri sebagai semua bahasa pemrograman lainnya). Contoh: Daftar Tertaut.
Terkait dengan lingkungan ESP32 dan spesifik dari sistem tertanam. Contoh: Komponen WiFi yang mudah. Mereka membuat fitur ESP-IDF lebih mudah digunakan.
Terkait dengan jaringan. Beberapa contoh: berinteraksi dengan server MQTT dan beberapa fungsi DNS. Komponennya mengabstraksi kompleksitas, dan membuatnya lebih mudah digunakan.
Terkait dengan periferal yang Anda kawat ke modul chip ESP32 atau ESP32. Beberapa contoh: papan Lora, LED RGB, sensor suhu, papan GPS, jam RTC, sensor PIR dan sensor rintangan. Komponen abstrak kompleksitas periferal.
Ini adalah daftar komponen baru:
mjd Komponen dasar yang berisi fungsi tujuan umum.mjd_ads1115 untuk Ti ADS1115 Analog-to-Digital-Convertor 16-bit.mjd_am2320 untuk sensor Meteo AOSONG AM2320.mjd_bh1750fvi untuk sensor intensitas cahaya BH1750.mjd_bme280 untuk sensor Meteo Bosch BME280.mjd_bmp280 untuk sensor Meteo Bosch BMP280.mjd_dht11 untuk sensor suhu AOSONG DHT11.mjd_dht22 untuk sensor suhu AOSONG DHT11/AM2302.mjd_ds3231 untuk DS3231 ZS042 RTC Real-Time Clock Board.mjd_hcsr501 untuk sensor inframerah manusia HC-SR501 PIR.mjd_huzzah32 untuk papan pengembangan Huzzah32 Adafruit (baca level tegangan baterai).mjd_jsnsr04t untuk modul sensor ultrasonik tahan air JSN-SR04T-2.0.mjd_ky032 untuk sensor penghindaran hambatan inframerah KY-032.mjd_ledrgb untuk mengendalikan berbagai strip LED RGB (chip Worldsemi WS28XX seperti lini produk ADAFRUIT Neopixels).mjd_list yang mengimplementasikan daftar tertaut seperti yang digunakan dalam kernel Linux.mjd_log untuk memfasilitasi pencatatan di aplikasi.mjd_lorabee untuk berinteraksi dengan papan Sodaq Lorabee Microchip RN2483A (berisi chip Lora Microchip RN2843 868MHz).mjd_mlx90393 untuk Melexis MLX90393 Sensor medan magnet (sumbu xyz dan metrik suhu).mjd_mqtt untuk berinteraksi dengan server MQTT (sebagai klien MQTT).mjd_nanopb untuk bekerja dengan buffer protokol Google. Ini termasuk file C umum dari Perpustakaan Nanopb v0.3.9.2. Ini juga mendeklarasikan arahan kompilasi selebar proyek spesifik nanopb (-d) di makefile.projBuildmjd_net untuk memfasilitasi berbagai fitur jaringan (mendapatkan alamat IP, DNS menyelesaikan nama host, dll.).mjd_neom8n untuk modul GPS U-Blox Neo-M8N.mjd_scd30 untuk Sensirion SCD30 CO2 dan Modul Sensor RH/T.mjd_sht3x untuk sensor sensor dan sensor digital SHT3X dan suhu.mjd_ssd1306 untuk tampilan OLED 128x32 dan 128x64 yang populer yang didasarkan pada IC Driver OLED SSD1306.mjd_tmp36 untuk sensor suhu analog TMP36 dari perangkat analog. Untuk digunakan bersama dengan ADC.mjd_wifi untuk memfasilitasi, sebagai stasiun wifi, koneksi ke titik akses wifi.Mari kita mengkategorikan komponen -komponen ini secara lebih rinci:
Komponen ini mendukung beberapa paket LED RGB. Muncul dengan dokumentasi esensial seperti lembar data, skema, dan instruksi tentang cara memasangnya ke papan pengembangan Anda dan akhirnya catu daya tambahan.
Komponen -komponen ini dilengkapi dengan dokumentasi penting seperti lembar data, skema, dan instruksi tentang cara menghubungkannya ke papan pengembangan Anda.
Prosedur:
git clone https://github.com/pantaluna/esp32-mjd-starter-kit.gitcd ke dalam direktori proyek yang ingin Anda jelajahi di bawah ./projects .make menuconfig untuk memodifikasi pengaturan proyek yang ingin Anda jalankan (misalnya pin gpio#, kredensial wifi, ...).make flash monitor untuk membangun dan mengunggah contoh ke papan dev Anda dan pantau eksekusi melalui terminal serial. Kerangka kerja ESP-IDF (dan dokumentasinya) sangat kuat dan luas.
Saya merasa sulit untuk memulai dengan cepat. Saya hanya pengembang tumpukan penuh (backend/frontend) tanpa banyak pengalaman mengembangkan solusi IoT menggunakan sistem tertanam.
Lebih khusus lagi, saya dapat memahami semua fitur dari kerangka kerja ESP-IDF tetapi saya kesulitan menempelkan semuanya bersama-sama, dan dengan cepat mengembangkan proyek nyata untuk solusi nyata menggunakan periferal spesifik seperti sensor, papan Lora, papan GPS dan strip LED. Misalnya, saya ingin memulai dengan proyek -proyek yang mengendalikan berbagai sensor dalam jaringan dan menganalisis data di server pusat, dan kemudian beralih ke proyek yang lebih kompleks.
Kedua, sulit untuk menemukan dokumentasi yang baik (lembar data, diagram, foto kabel) dari berbagai perangkat periferal seperti sensor Meteo, papan GPS, LED RGB, dll. Dan cara menggunakan perangkat ini dalam kombinasi dengan papan pengembangan berbasis ESP32.
Jadi saya mengembangkan dari waktu ke waktu komponen ekstra ini, dokumentasi yang baik, dan banyak proyek kerja yang menargetkan seluruh rangkaian periferal yang biasanya digunakan dalam proyek IoT.
Sekarang adalah saat yang tepat untuk memberikan sesuatu kembali ke komunitas ESP32 dan melepaskan semua yang saya pelajari sejauh open source, sehingga semua orang dapat memperoleh manfaat dari pekerjaan ini.
Anda memiliki 2 opsi untuk mulai berkembang untuk chip ESP32:
Penting untuk diketahui bahwa kedua kerangka kerja itu stabil dan dapat digunakan tetapi mereka masih berada di bawah pengembangan yang signifikan oleh Espressif, dan rilis baru yang besar keluar secara teratur; Saya berharap ini berlanjut setidaknya hingga 2018Q4.
Setelah bereksperimen dengan kedua kerangka kerja, saya memutuskan untuk pergi dengan kerangka kerja ESP-IDF, lebih khusus v3.1 dan lebih tinggi. Saya selalu mencoba melepaskan pustaka yang kompatibel dengan rilis stabil terakhir.
ESP32 Starter Kit membuat Anda mulai dengan cepat. Jika Anda memerlukan fitur tambahan dari komponen yang ada, atau Anda ingin mengusulkan komponen baru, maka silakan kirimkan masalah.
Semua komponen MJD terpusat dalam proyek mjd_components .
Kit ini tidak dirancang untuk mengimplementasikan semua fitur yang mungkin dari setiap proyek ESP32. Jika fitur baru sangat spesifik untuk proyek Anda maka pendekatan terbaik adalah membuat bundel komponen ESP-IDF Anda sendiri dengan fungsionalitas yang Anda inginkan. Anda dapat menggunakan komponen -komponen ini sebagai fondasi; Tolong jangan lupa menyebutkan bahwa Anda memperoleh komponen dari kit pemula ini.
Apa sajian "MJD"? Ini adalah codeword yang tidak berarti dan digunakan dalam bahasa C untuk membuat pengidentifikasi unik. Pendekatan ini memastikan bahwa Anda dapat menggunakan komponen ESP-IDF baru ini dalam proyek C lainnya.
Mengapa semua proyek dan komponen disimpan dalam satu repositori GitHub (menentang memiliki repo github untuk setiap proyek dan setiap komponen)? Saya pikir ini membuat starter kit lebih mudah digunakan untuk pemula. Di masa depan kit mungkin diatur menggunakan submodul git.
Periksa GitHub.
Lepaskan komponen tambahan untuk sensor gas, sensor partikel debu, komponen loop arus 4-20mA, tampilan TFT dan matriks LED RGB.
Lepaskan proyek tambahan untuk menunjukkan pembaruan OTA (tingkatkan firmware dari jarak jauh).
Untuk merilis platform IoT kepada publik sehingga Anda dapat mengelola perangkat di lapangan dan menganalisis data yang masuk.
Untuk membuat situs web baru untuk dokumentasi teknis kit ini.