Daftar Isi:
- Langkah 1: Membuat Lingkungan Bangun
- Langkah 2: Dapatkan Kode Sumber, Konfigurasi, dan Bangun
- Langkah 3: Hubungkan Komponen Perangkat Keras
- Langkah 4: Flash dan Jalankan
- Langkah 5: Berinteraksi
- Langkah 6: Detail Implementasi
Video: WiFi LED Strip + Sensor Suhu Dengan ESP8266: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Tutorial ini menjelaskan langkah-langkah untuk menyiapkan ESP8266 dan membuatnya berbicara dengan sensor suhu dan strip LED, sementara juga dapat menerima input dan mengirim output dengan MQTT melalui WiFi. Proyek ini dibuat untuk kursus yang diambil di Cal Poly San Luis Obispo pada Musim Gugur 2016- CPE 439: Sistem Tertanam Waktu Nyata. Tujuan keseluruhannya adalah untuk mendemonstrasikan kemudahan membuat "benda" yang terhubung ke internet dengan perangkat keras yang murah.
Perlengkapan/Peralatan yang Dibutuhkan:
- Papan pengembang NodeMCU ESP8266
- Strip LED WS2812B
- MAX31820 Sensor suhu
- Papan tempat memotong roti
- Resistor 4.7K ohm
- resistor 220 ohm
- kabel jumper
- kabel micro usb
- PC (atau VM) yang menjalankan linux (mis. Ubuntu)
Asumsi/Prasyarat:
- pengalaman menggunakan alat baris perintah dan menginstal paket pada distro berbasis debian
- pemahaman dasar tentang sintaks Makefile
- menghubungkan kabel
Langkah 1: Membuat Lingkungan Bangun
Untuk membangun proyek, Anda perlu menginstal esp-open-sdk di mesin Anda. Ikuti tautan dan baca instruksi pembuatan. Singkatnya, Anda akan melakukan beberapa perintah sudo apt-get untuk menginstal dependensi, git clone --recursive untuk mengkloning/mengunduh esp-open-sdk, dan akhirnya membuat perintah untuk membangun esp-open-sdk.
Lihat aku
Langkah 2: Dapatkan Kode Sumber, Konfigurasi, dan Bangun
Sekarang setelah esp-open-sdk dibuat, klon repositori proyek.
git clone
Ubah ke direktori proyek, buat folder.local, dan salin pengaturan contoh.
cd esp-rtos-tes
mkdir -p.local cp settings.example.mk.local/settings.mk
Sekarang buka.local/settings.mk dengan editor teks apa saja dan ubah pengaturan berikut:
- OPENSDK_ROOT: Jalur absolut untuk lokasi esp-open-sdk yang Anda buat di langkah 1
- WIFI_SSID: SSID jaringan WiFi Anda
- WIFI_PASS: Kata sandi jaringan WiFi Anda
- PIXEL_COUNT: Jumlah piksel pada strip LED WS2812B Anda
Catatan: Karena proyek ini menggunakan SPI untuk menggerakkan LED dan menggunakan NodeMCU 3.3v untuk memasoknya, Anda mungkin tidak akan dapat menggerakkan lebih dari ~60 LED.
Catatan: Pengaturan lain tidak perlu diubah, tetapi bisa jika diinginkan. Disarankan untuk menjaga urutan prioritas tugas. Semakin rendah nomor prioritas, semakin rendah prioritas tugas.
Sekarang bangun proyek:
make -C contoh/cpe439
Jika semuanya sudah diatur dengan benar, itu harus mulai dikompilasi. Pada akhirnya Anda akan melihat:
Berhasil membuat 'firmware/cpe439.bin'
Lihat aku
Langkah 3: Hubungkan Komponen Perangkat Keras
Sekarang setelah kode dikompilasi, saatnya untuk menghubungkan periferal kita.
Pertama, tempelkan NodeMCU ke papan tempat memotong roti, lalu gunakan kabel jumper untuk membuat koneksi seperti yang ditunjukkan pada diagram.
Beberapa hal yang perlu diperhatikan:
- Penting: Jalur data WS2812B tidak dua arah. Jika Anda melihat lebih dekat pada tanda di sisi LED strip, Anda akan melihat panah kecil menunjuk ke satu arah. Output dari D7 dari NodeMCU harus menuju ke WS2812B dengan cara yang sama seperti penanda arah, yang dapat Anda lihat di diagram jika Anda perhatikan lebih dekat.
- Bergantung pada jenis konektor yang disertakan dengan WS2812B Anda, Anda mungkin perlu melakukan beberapa modifikasi untuk membuatnya terhubung dengan aman ke papan tempat memotong roti. Anda juga dapat menggunakan klip buaya untuk menghubungkannya ke kabel jumper yang dapat digunakan untuk papan tempat memotong roti.
- Pin MAX31820 memiliki pitch yang lebih kecil dan lebih tipis dari jumper standar 0,1"/2,54mm, membuatnya sulit untuk disambungkan. Salah satu cara mengatasinya adalah dengan menggunakan kabel jumper female-to-male, lepas casing plastik dari sisi female, kemudian gunakan beberapa tang untuk mengeriting ujung jumper betina dengan erat di sekitar pin MAX31820 yang lebih kecil.
Periksa kembali koneksi sebelum menyalakan NodeMCU agar tidak merusak komponen.
Langkah 4: Flash dan Jalankan
Berkedip
Dengan semua perangkat keras terhubung, colokkan NodeMCU Anda dan flash dengan perintah berikut:
buat contoh flash -C/cpe439 ESPPORT=/dev/ttyUSB0
/dev/ttyUSB0 adalah serial com tempat NodeMCU akan muncul. Jika Anda memiliki perangkat serial lain yang terhubung, itu mungkin muncul sebagai /dev/ttyUSB1 atau nomor lainnya. Untuk memeriksa Anda dapat menjalankan perintah ini dua kali, sekali dengan NodeMCU dicabut, dan sekali dengan itu dicolokkan, dan bandingkan perbedaannya:
ls /dev/ttyUSB*
Masalah lain yang mungkin Anda temui adalah tidak memiliki izin untuk mengakses perangkat. Dua cara untuk memperbaikinya adalah:
-
Tambahkan pengguna Anda ke grup dialout:
sudo adduser $(whoami) dialout
- chmod atau chown perangkat:
sudo chmod 666 /dev/ttyUSB0 Sudo chown $(whoami):$(whoami) /dev/ttyUSB0Metode pertama lebih disukai karena merupakan solusi permanen.
Berlari
Setelah menjalankan perintah flash dengan sukses, perangkat akan segera boot dan mulai menjalankan kode yang dikompilasi. Kapan saja setelah mem-flash Anda dapat menjalankan perintah berikut untuk menonton output serial:
python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 /dev/ttyUSB0 500000 --raw -q
Untuk menghemat waktu, Anda dapat menambahkan ini ke file ~/.bashrc Anda:
alias nodemcu='python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 /dev/ttyUSB0 500000 --raw -q'
..yang memungkinkan Anda mengetik "nodemcu" sebagai alias untuk perintah itu.
Jika semuanya dikonfigurasi dengan benar, strip LED Anda akan menyala hijau, dan pada serial Anda akan melihat WiFi terhubung, mendapatkan alamat IP, terhubung ke MQTT, dan pesan bahwa data suhu sedang didorong keluar.
terhubung dengan MyWiFiSSID, klien saluran 1dhcp start…wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, mask:255.255.255.0, gw:192.168.2.1ws2812_spi_init okRequest temp OKwifi_task: status = 5xQueueReceive +25.43xQuetue: (Kembali)menghubungkan ke server MQTT test.mosquitto.org …xQueueReceive +25.50xQueueSend ok doneKirim MQTT connect … MQTTv311donexQueueReceive +25.56 xQueueSend ok
Langkah 5: Berinteraksi
Dengan asumsi perangkat Anda telah terhubung ke WiFi dan broker MQTT berhasil, Anda akan dapat mengirim dan menerima data dari NodeMCU dengan MQTT. Jika Anda belum melakukannya, instal paket klien mosquitto:
sudo apt-get install mosquitto-clients
Anda sekarang seharusnya dapat menggunakan program mosquitto_pub dan mosquitto_sub dari shell Anda.
Menerima pembaruan suhu
Untuk menerima data suhu, kami ingin menggunakan perintah mosquitto_sub untuk berlangganan topik yang diterbitkan oleh NodeMCU.
mosquitto_sub -h test.mosquitto.org -t /cpe439/temp
Anda akan melihat data suhu (dalam Celcius), tiba di terminal.
+25.87+25.93+25.68…
Mengatur warna strip LED dari jarak jauh
Format pesan sederhana digunakan untuk mengirim nilai RGB ke NodeMCU melalui MQTT. Format perintah terlihat seperti ini:
r:RRRg:GGGb:BBB~
Di mana RRR, GGG, BBB sesuai dengan nilai RGB (0-255) dari warna yang ingin Anda kirim. Untuk mengirim perintah kita, kita akan menggunakan perintah mosquitto_pub. Berikut beberapa contohnya:
mosquitto_pub -h test.mosquitto.org -t /cpe439/rgb -m 'r:255g:0b:0~' # redmosquitto_pub -h test.mosquitto.org -t /cpe439/rgb -m 'r:0g:255b: 0~' # greenmosquitto_pub -h test.mosquitto.org -t /cpe439/rgb -m 'r:0g:0b:255~' # biru
Jika Anda ingin berkreasi, temukan pemilih warna online seperti ini, dan edit perintah dengan nilai RGB apa pun yang Anda pilih.
Awas
Topik dalam proyek ini disetel ke /cpe439/rgb dan /cpe439/temp pada broker MQTT publik, yang berarti tidak ada yang menghalangi orang lain untuk memublikasikan atau berlangganan topik yang sama seperti Anda. Untuk mencoba berbagai hal, menggunakan broker publik boleh saja, tetapi untuk proyek yang lebih serius, Anda harus terhubung ke broker dengan perlindungan kata sandi, atau menjalankan broker Anda sendiri di server.
Langkah 6: Detail Implementasi
Onewire
ESP8266 hanya memiliki 1 inti, begitu lama, memblokir tugas-tugas seperti menunggu 750ms untuk sensor suhu untuk melakukan pengukuran suhu biasanya akan mengakibatkan WiFi tidak berfungsi dengan baik, dan bahkan mungkin crash. Dalam paradigma FreeRTOS, Anda memanggil vTaskDelay() untuk menangani waktu tunggu yang lama ini, tetapi ada juga banyak waktu tunggu yang lebih singkat yang diperlukan antara membaca dan menulis yang lebih pendek daripada centang sistem FreeRTOS, dan dengan demikian tidak dapat dihindari dengan vTaskDelay(). Untuk juga menyiasatinya, driver onewire dalam proyek ini ditulis untuk menjalankan mesin negara yang digerakkan oleh timer perangkat keras ESP8266, yang dapat memicu peristiwa serendah setiap 10 mikro-detik, yang kebetulan merupakan yang terpendek waktu yang diperlukan antara operasi baca/tulis onewire. Sebagian besar implementasi lain menggunakan panggilan pemblokiran ke delay_us() atau serupa untuk menangani ini, tetapi jika Anda terus-menerus melakukan pembaruan suhu, semua penundaan itu mulai bertambah, menghasilkan aplikasi yang kurang responsif. Sumber untuk bagian kode ini terletak di folder extras/onewire.
WS2812B
ESP8266 tidak memiliki opsi perangkat keras standar untuk PWM yang cukup cepat untuk menggerakkan strip LED pada 800KHz. Untuk menyiasatinya, proyek ini menggunakan pin SPI MOSI untuk menggerakkan LED. Dengan menyesuaikan kecepatan clock SPI, dan mengubah payload SPI, Anda dapat mencapai kontrol yang cukup andal untuk setiap LED individu. Metode ini bukan tanpa kekurangannya- untuk satu LED harus ditenagai dengan sumber 5V dan pemindah level harus ditambahkan ke output pin SPI. Tapi 3.3V berfungsi. Kedua, terdapat gangguan yang terjadi karena timing yang tidak sempurna dengan menggunakan metode SPI. Dan ketiga sekarang Anda tidak dapat menggunakan SPI untuk hal lain. Latar belakang tambahan pada metode ini dapat ditemukan di sini, dan sumber untuk bagian kode ini terletak di folder extras/ws2812.
Metode yang lebih andal untuk menggerakkan strip LED adalah dengan menggunakan i2s. Namun metode ini memiliki banyak peretasan khusus chip, sehingga SPI tampaknya menjadi pilihan yang lebih baik sebagai latihan pembelajaran.
Direkomendasikan:
Sensor Suhu & Daging BBQ pada ESP8266 Dengan Tampilan: 5 Langkah (dengan Gambar)
Sensor Suhu & Daging BBQ di ESP8266 Dengan Tampilan: Dalam Instruksi ini saya akan menunjukkan cara membuat alat BBQ versi Anda sendiri yang mengukur suhu saat ini di barbekyu Anda dan menyalakan kipas untuk menyalakannya jika diperlukan. Selain itu ada juga serangan sensor suhu inti daging
Membaca Suhu Menggunakan Sensor Suhu LM35 Dengan Arduino Uno: 4 Langkah
Membaca Suhu Menggunakan Sensor Suhu LM35 Dengan Arduino Uno: Hai teman-teman dalam instruksi ini kita akan belajar cara menggunakan LM35 dengan Arduino. Lm35 adalah sensor suhu yang dapat membaca nilai suhu dari -55 °c hingga 150 °C. Ini adalah perangkat 3-terminal yang memberikan tegangan analog sebanding dengan suhu. Hai
ESP8266 NodeMCU Access Point (AP) untuk Server Web Dengan Sensor Suhu DT11 dan Mencetak Suhu & Kelembaban di Browser: 5 Langkah
ESP8266 NodeMCU Access Point (AP) untuk Web Server Dengan Sensor Suhu DT11 dan Pencetakan Suhu & Kelembaban di Browser: Hai guys di sebagian besar proyek kami menggunakan ESP8266 dan di sebagian besar proyek kami menggunakan ESP8266 sebagai server web sehingga data dapat diakses di perangkat apa pun melalui wifi dengan mengakses server Web yang dihosting oleh ESP8266 tetapi satu-satunya masalah adalah kita membutuhkan router yang berfungsi untuk
Cara Menggunakan Sensor Suhu DHT11 Dengan Arduino dan Mencetak Suhu Panas dan Kelembaban: 5 Langkah
Cara Menggunakan Sensor Suhu DHT11 Dengan Arduino dan Mencetak Suhu Panas dan Kelembaban: Sensor DHT11 digunakan untuk mengukur suhu dan kelembaban. Mereka adalah penggemar elektronik yang sangat populer. Sensor kelembaban dan suhu DHT11 membuatnya sangat mudah untuk menambahkan data kelembaban dan suhu ke proyek elektronik DIY Anda. Ini per
SENSOR SUHU DENGAN LCD DAN LED (Membuat Sensor Suhu Dengan LCD dan LED): 6 Langkah (Dengan Gambar)
SENSOR SUHU DENGAN LCD DAN LED (Membuat Sensor Suhu Dengan LCD dan LED): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA dari Indonesia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino dengan Output ke LCD dan LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini dan