Isi kandungan:
- Langkah 1: Membuat Persekitaran Binaan
- Langkah 2: Dapatkan Kod Sumber, Konfigurasi, dan Bangun
- Langkah 3: Sambungkan Komponen Perkakasan
- Langkah 4: Flash dan Jalankan
- Langkah 5: Berinteraksi
- Langkah 6: Perincian Pelaksanaan
Video: Jalur LED WiFi + Sensor Suhu Dengan ESP8266: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Tutorial ini menerangkan langkah-langkah untuk menyiapkan ESP8266 dan membincangkannya dengan sensor suhu dan jalur LED, sementara juga dapat menerima input dan mengirim output dengan MQTT melalui WiFi. Projek ini dibuat untuk kursus yang diambil di Cal Poly San Luis Obispo pada musim gugur 2016- CPE 439: Sistem Masa Nyata. Tujuan keseluruhannya adalah untuk menunjukkan kemudahan membuat "benda" yang tersambung ke internet dengan perkakasan yang murah.
Bekalan / Peralatan Diperlukan:
- Papan dev NodeMCU ESP8266
- Jalur LED WS2812B
- Sensor suhu MAX31820
- Papan roti
- Perintang 4.7K ohm
- Perintang 220 ohm
- wayar pelompat
- kabel mikro-usb
- PC (atau VM) yang menjalankan linux (mis. Ubuntu)
Andaian / Prasyarat:
- pengalaman menggunakan alat baris perintah dan memasang pakej pada distro berasaskan debian
- pemahaman asas mengenai sintaks Makefile
- wayar penyambung
Langkah 1: Membuat Persekitaran Binaan
Untuk membina projek, anda perlu memasang esp-open-sdk pada mesin anda. Ikuti pautan dan baca arahan membina. Singkatnya, anda akan melakukan beberapa perintah sudo apt-get untuk memasang dependensi, clone git --reursive to clone / download esp-open-sdk, dan akhirnya perintah make untuk membangun esp-open-sdk.
Lihat saya
Langkah 2: Dapatkan Kod Sumber, Konfigurasi, dan Bangun
Sekarang esp-open-sdk dibina, klon repositori projek.
git klon
Tukar ke direktori projek, buat folder.local, dan salin tetapan contoh.
cd esp-rtos-ujian
mkdir -p.local cp setting.example.mk.local / setting.mk
Sekarang buka.local / settings.mk dengan mana-mana editor teks dan ubah tetapan berikut:
- OPENSDK_ROOT: Jalan mutlak untuk lokasi esp-open-sdk yang anda bina pada langkah 1
- WIFI_SSID: SSID rangkaian WiFi anda
- WIFI_PASS: Kata laluan rangkaian WiFi anda
- PIXEL_COUNT: Bilangan piksel pada jalur LED WS2812B anda
Catatan: Oleh kerana projek ini menggunakan SPI untuk menggerakkan LED dan menggunakan NodeMCU 3.3v untuk membekalkannya, anda mungkin tidak akan dapat memandu lebih dari ~ 60 LED.
Catatan: Tetapan lain tidak perlu diubah, tetapi boleh dilakukan jika dikehendaki. Dianjurkan untuk menjaga urutan keutamaan tugas. Semakin rendah nombor keutamaan, semakin rendah keutamaan tugas.
Sekarang bina projek:
buat -C contoh / cpe439
Sekiranya semuanya disusun dengan betul, ia mesti mula disusun. Pada akhirnya anda akan melihat:
Berjaya membuat 'firmware / cpe439.bin'
Lihat saya
Langkah 3: Sambungkan Komponen Perkakasan
Sekarang kodnya disusun, sudah tiba masanya untuk menghubungkan persisian kami.
Pertama, pasangkan NodeMCU ke papan roti, kemudian gunakan wayar jumper untuk membuat sambungan seperti yang ditunjukkan dalam rajah.
Beberapa perkara yang perlu diberi perhatian:
- Penting: Garis data WS2812B tidak dua arah. Sekiranya anda melihat dengan teliti tanda pada bahagian LED jalur, anda akan melihat anak panah kecil menunjuk satu arah. Keluaran dari D7 dari NodeMCU perlu menuju ke WS2812B dengan cara yang sama seperti penanda arah, yang dapat anda lihat dalam rajah jika anda melihat dengan teliti.
- Bergantung pada jenis penyambung yang disertakan WS2812B anda, anda mungkin perlu melakukan beberapa pengubahsuaian untuk menyambungkannya dengan selamat ke papan roti. Anda juga boleh menggunakan klip buaya untuk menyambungkannya ke kabel pelompat yang dapat memenuhi papan roti.
- Pin MAX31820 mempunyai nada yang lebih kecil dan lebih tipis daripada jumper 0.1 "/2.54mm standard, menjadikannya sukar untuk disambungkan. Salah satu cara untuk mengatasi ini adalah dengan menggunakan wayar jumper wanita-ke-lelaki, menanggalkan casing plastik dari sisi wanita, kemudian gunakan beberapa tang untuk merapatkan hujung pelompat wanita dengan erat di sekitar pin MAX31820 yang lebih kecil.
Periksa semula sambungan sebelum menghidupkan NodeMCU agar tidak merosakkan komponen.
Langkah 4: Flash dan Jalankan
Berkelip
Dengan semua perkakasan yang disambungkan, pasangkan NodeMCU anda dan flash dengan arahan berikut:
buat contoh flash -C / cpe439 ESPPORT = / dev / ttyUSB0
/ dev / ttyUSB0 adalah com bersiri yang NodeMCU akan muncul di bawah. Sekiranya anda mempunyai peranti bersiri lain yang disambungkan, ia mungkin muncul sebagai / dev / ttyUSB1 atau beberapa nombor lain. Untuk memeriksa, anda boleh menjalankan perintah ini dua kali, sekali dengan NodeMCU dicabut, dan sekali dengan pemalamnya, dan bandingkan perbezaannya:
ls / dev / ttyUSB *
Masalah lain yang mungkin anda hadapi ialah tidak mempunyai kebenaran untuk mengakses peranti. Dua cara untuk memperbaikinya ialah:
-
Tambahkan pengguna anda ke kumpulan dialout:
sudo adduser $ (whoami) dialout
- chmod atau chown peranti:
sudo chmod 666 / dev / ttyUSB0 sudo chown $ (whoami): $ (whoami) / dev / ttyUSB0Kaedah pertama lebih disukai kerana ia adalah penyelesaian kekal.
Berlari
Setelah berjaya menjalankan perintah flash, peranti akan segera boot dan mula menjalankan kod yang disusun. Pada bila-bila masa selepas flash anda boleh menjalankan perintah berikut untuk menonton output bersiri:
python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 / dev / ttyUSB0 500000 --raw -q
Untuk menjimatkan masa, anda boleh menambahkannya ke fail ~ /.bashrc anda:
alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 / dev / ttyUSB0 500000 --raw -q'
.. yang membolehkan anda hanya menaip "nodemcu" sebagai alias untuk perintah itu.
Sekiranya semuanya dikonfigurasi dengan betul, jalur LED anda harus menyala hijau, dan secara bersiri anda akan melihat sambungan WiFi, mendapatkan alamat IP, menyambung ke MQTT, dan mesej bahawa data suhu dikeluarkan.
disambungkan dengan MyWiFiSSID, saluran pelanggan 1dhcp mula… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, topeng: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okRespest temp OKwifi_task: status = 5xQueueStwtkwtkwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwt: (Re) menyambung ke test server MQTT.mosquitto.org… xQueueReceive + 25.50xQueueHantar ok selesai Hantar MQTT sambungkan… MQTTv311donexQueueReceive +25.56 xQueueSend ok
Langkah 5: Berinteraksi
Dengan andaian bahawa peranti anda telah tersambung ke WiFi dan broker MQTT dengan berjaya, anda akan dapat mengirim dan menerima data dari NodeMCU dengan MQTT. Sekiranya anda belum melakukannya, pasang pakej klien nyamuk:
sudo apt-get pasang mosquitto-klien
Anda kini boleh menggunakan program mosquitto_pub dan mosquitto_sub dari cengkerang anda.
Menerima kemas kini suhu
Untuk menerima data suhu, kami ingin menggunakan perintah mosquitto_sub untuk melanggan topik yang diterbitkan oleh NodeMCU.
mosquitto_sub -h test.mosquitto.org -t / cpe439 / temp
Anda mesti melihat data suhu (dalam Celsius), tiba di terminal.
+25.87+25.93+25.68…
Menetapkan warna jalur LED dari jauh
Format pesanan ringkas digunakan untuk mengirim nilai RGB ke NodeMCU melalui MQTT. Format arahan kelihatan seperti ini:
r: RRRg: GGGb: BBB ~
Di mana RRR, GGG, BBB sesuai dengan nilai RGB (0-255) warna yang ingin anda hantar. Untuk menghantar arahan kami, kami akan menggunakan perintah mosquitto_pub. Berikut adalah beberapa contoh:
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
Sekiranya anda ingin menjadi kreatif, cari pemilih warna dalam talian seperti ini, dan edit perintah dengan nilai RGB apa sahaja yang anda pilih.
Berhati-hati
Topik dalam projek ini ditetapkan ke / cpe439 / rgb dan / cpe439 / temp pada broker MQTT awam, yang bermaksud bahawa tidak ada yang menghalang orang lain daripada menerbitkan atau melanggan topik yang sama seperti anda. Untuk mencuba sesuatu, menggunakan broker awam adalah baik, tetapi untuk projek yang lebih serius, anda ingin menyambung ke broker dengan perlindungan kata laluan, atau menjalankan broker anda sendiri di pelayan.
Langkah 6: Perincian Pelaksanaan
Onewire
ESP8266 hanya mempunyai 1 teras, sekian lama, tugas menyekat seperti menunggu 750ms sensor suhu untuk melakukan pengukuran suhu biasanya akan mengakibatkan WiFi tidak berfungsi dengan baik, dan mungkin juga berlaku kerosakan. Dalam paradigma FreeRTOS, anda memanggil vTaskDelay () untuk menangani penantian lama ini, tetapi terdapat juga banyak penantian yang lebih pendek yang diperlukan antara bacaan dan penulisan yang lebih pendek daripada centang sistem FreeRTOS, dan dengan itu tidak dapat dielakkan dengan vTaskDelay (). Untuk mengatasi ini, pemacu onewire dalam projek ini ditulis untuk menjalankan mesin keadaan yang dipacu oleh pemasa perkakasan ESP8266, yang dapat mencetuskan peristiwa serendah setiap 10 mikro-detik, yang kebetulan menjadi yang terpendek masa yang diperlukan antara operasi membaca / menulis onewire. Sebilangan besar pelaksanaan lain menggunakan panggilan pemblokiran untuk delay_us () atau serupa untuk menangani hal ini, tetapi jika anda terus-menerus melakukan pembaruan suhu, semua kelewatan itu mulai bertambah, menghasilkan aplikasi yang kurang responsif. Sumber untuk bahagian kod ini terletak di folder ekstra / onewire.
WS2812B
ESP8266 tidak mempunyai pilihan perkakasan standard untuk PWM yang cukup pantas untuk menggerakkan jalur LED pada 800KHz. Untuk menyelesaikannya, projek ini menggunakan pin SPI MOSI untuk menggerakkan LED. Dengan menyesuaikan kadar jam SPI, dan mengubah muatan SPI di sekitar, anda dapat mencapai kawalan yang cukup dipercayai bagi setiap LED individu. Kaedah ini bukan tanpa kekurangan - untuk satu LED harus dihidupkan dengan sumber 5V dan pergeseran level harus ditambahkan pada output pin SPI. Tetapi 3.3V berfungsi. Kedua, terdapat gangguan yang berlaku kerana masa yang tidak sempurna menggunakan kaedah SPI. Dan ketiga sekarang anda tidak boleh menggunakan SPI untuk perkara lain. Latar belakang tambahan kaedah ini boleh didapati di sini, dan sumber bahagian kod ini terdapat di folder ekstra / ws2812.
Kaedah yang lebih dipercayai untuk memandu jalur LED adalah menggunakan i2s. Namun kaedah ini mempunyai banyak peretasan khusus cip, jadi SPI sepertinya menjadi pilihan yang lebih baik sebagai latihan pembelajaran.
Disyorkan:
Membaca Suhu Menggunakan Sensor Suhu LM35 Dengan Arduino Uno: 4 Langkah
Membaca Suhu Menggunakan Sensor Suhu LM35 Dengan Arduino Uno: Hai kawan-kawan dalam instruksional ini kita akan belajar bagaimana menggunakan LM35 dengan Arduino. Lm35 adalah sensor suhu yang dapat membaca nilai suhu dari -55 ° C hingga 150 ° C. Ia adalah peranti 3-terminal yang memberikan voltan analog berkadar dengan suhu. Hig
ESP8266 NodeMCU Access Point (AP) untuk Pelayan Web Dengan Sensor Suhu DT11 dan Mencetak Suhu & Kelembapan dalam Penyemak Imbas: 5 Langkah
ESP8266 NodeMCU Access Point (AP) untuk Pelayan Web Dengan Sensor Suhu DT11 dan Mencetak Suhu & Kelembapan di Penyemak Imbas: Hai kawan-kawan dalam kebanyakan projek yang kami gunakan ESP8266 dan di kebanyakan projek kami menggunakan ESP8266 sebagai pelayan laman web sehingga data dapat diakses di sebarang peranti melalui wifi dengan mengakses Pelayan Web yang dihoskan oleh ESP8266 tetapi satu-satunya masalah adalah kita memerlukan penghala yang berfungsi untuk
Cara Menggunakan Sensor Suhu DHT11 Dengan Arduino dan Cetak Suhu Panas dan Kelembapan: 5 Langkah
Cara Menggunakan Sensor Suhu DHT11 Dengan Arduino dan Cetak Suhu Panas dan Kelembapan: Sensor DHT11 digunakan untuk mengukur suhu dan kelembapan. Mereka adalah penggemar elektronik yang sangat popular. Sensor kelembapan dan suhu DHT11 menjadikannya sangat mudah untuk menambahkan data kelembapan dan suhu ke projek elektronik DIY anda. Per
Jalur LED Diaktifkan Dengan Sensor Gerak Dengan Pemasa: 6 Langkah (dengan Gambar)
Jalur LED Diaktifkan Motion Sensor Dengan Pemasa: Hai semua! Saya sangat gembira dapat menulis arahan lain sekarang. Projek ini berlaku ketika saya dihubungi oleh rakan-rakan instruksional-er (?!) (David @dducic) beberapa bulan yang lalu untuk meminta bantuan reka bentuk. Jadi, inilah spesifikasi asal: & q
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. Ini adalah bacaan suhu dengan reka bentuk saya sendiri, dengan sensor ini dan