Daftar Isi:

Timer Terkendali Jarak Jauh Dengan NodeMCU: 14 Langkah
Timer Terkendali Jarak Jauh Dengan NodeMCU: 14 Langkah

Video: Timer Terkendali Jarak Jauh Dengan NodeMCU: 14 Langkah

Video: Timer Terkendali Jarak Jauh Dengan NodeMCU: 14 Langkah
Video: ESP8266 Project using Blynk Google Assistant with Timer and Sensor | IoT Projects 2022 2024, November
Anonim
Timer Terkendali Jarak Jauh Dengan NodeMCU
Timer Terkendali Jarak Jauh Dengan NodeMCU

Di sini kita akan membuat timer menggunakan NodeMCU dan Adafruit. Kami akan menampilkan timer kami dengan strip LED dan kami akan dapat mengontrolnya menggunakan ponsel atau komputer kami!

Tujuan kita:

Buat timer menggunakan strip LED yang dapat kita: start, pause, dan reset menggunakan ponsel atau komputer kita.

Perlengkapan

Perangkat keras:

  • NodeMCU ESP 8266
  • Adafruit NeoPixel LED strip

Perpustakaan:

  • Adafruit_NeoPixel.h
  • AdafruitIO_WiFi.h

Lainnya:

Koneksi WiFi yang layak

Langkah 1: Mari Membuat Feed di Adafruit

Ayo Buat Feed di Adafruit!
Ayo Buat Feed di Adafruit!

Sekarang setelah kami mendapatkan semua yang kami butuhkan, kami siap untuk mulai membangun! Pertama-tama kita harus membuat feed di Adafruit. Adafruit adalah layanan yang sangat memudahkan kita untuk menghubungkan Arduino kita ke internet dan membuat fitur remote control yang berguna. Jika Anda belum melakukannya, daftar ke Adafruit.

Sekarang mari kita buat feed baru

Kami dapat memberi nama feed kami apa pun yang kami inginkan, saya menyebutnya 'timer'.

Apa yang dilakukan feed adalah merekam semua yang kami lakukan di dasbor kami (yang akan kami buat hanya dalam satu menit) dan mengirimkan data itu ke papan kami, tetapi itu adalah sesuatu yang akan kami lihat setelah kami memiliki data yang akan dikirim.

Langkah 2: Sekarang Mari Membuat Dashboard

Sekarang Mari Membuat Dashboard
Sekarang Mari Membuat Dashboard
Sekarang Mari Membuat Dashboard
Sekarang Mari Membuat Dashboard
Sekarang Mari Membuat Dashboard
Sekarang Mari Membuat Dashboard

Sekarang dengan cara yang sama seperti kita membuat feed, kita akan membuat Dashboard baru. Saya akan memanggil dasbor saya: 'antarmuka pengatur waktu' karena pada dasarnya seperti itulah dasbor kami: antarmuka dengan tombol untuk mengontrol pengatur waktu kami.

Langkah 3: Dapatkan Kunci Kami

Dapatkan Kunci Kami
Dapatkan Kunci Kami

Jika kami ingin menghubungkan Arduino kami ke feed kami, kami perlu mendapatkan kunci Adafruit kami, ini adalah kata sandi rahasia Anda yang akan memastikan hanya Anda yang dapat terhubung ke feed Anda.

Anda bisa mendapatkan kunci Anda dengan mengklik tombol kuning AIO Key di kanan atas layar Anda di Adafruit.

Simpan kunci ini di suatu tempat, kita akan membutuhkannya nanti.

Jangan bagikan kunci Anda! Jika tidak, orang dengan niat buruk dapat terhubung ke feed dan perangkat Anda.

Langkah 4: Buka Contoh Baca Umpan

Buka Umpan Baca Contoh
Buka Umpan Baca Contoh

Sekarang mari kita buka Arduino IDE kita dan mulai proses pengkodean. Pertama-tama kita perlu menginstal perpustakaan Adafruit IO Arduino.

Tidak tahu cara menginstal perpustakaan? ini adalah panduan hebat oleh Adafruit: Perpustakaan Arduino

Adafruit menawarkan banyak contoh siap pakai untuk kita gunakan dan pelajari. Salah satu contohnya adalah: adafruitio_21_feed_read. Anda dapat menemukan contoh ini di sini: File - Contoh Adafruit IO Arduino adafruitio_21_feed_read

(maafkan antarmuka belanda saya di gambar)

Langkah 5: Mari Siapkan Koneksi Kita

Jika Anda berhasil membuka sketsa adafruitio_21_feed_read Anda akan melihat 2 tab di sketsa Anda: adafruitio_21_feed_read dan config.h. Sketsa ini dibuat agar kita bisa terhubung dengan feed yang kita buat di langkah 1.

Untuk terhubung ke feed ini, kita perlu mengisi beberapa detail tentang WiFi dan akun Adafruit kita,

Mari kita pergi ke config.h, di sini kita akan mengisi rincian berikut:

Nama pengguna Adafruit Anda:

#define IO_USERNAME "joopert"

Kunci Adafruit Anda:

#define IO_KEY "1234567890abcdefghijklmnop"

Nama WiFi Anda:

#tentukan WIFI_SSID "Wifi Saya"

Dan kata sandi WiFi Anda:

#define WIFI_PASS "aVerySecretPassword"

Sekarang mari kembali ke tab adafruitio_21_feed_read dan isi:

Nama pengguna Adafruit Anda… lagi:

#define FEED_OWNER "joopert"

Dan akhirnya nama umpan Anda (dari umpan yang kami buat di langkah 1):

AdafruitIO_Feed *sharedFeed = io.feed("timer", FEED_OWNER);

Langkah 6: Periksa Koneksi ke Adafruit IO

Periksa Koneksi ke Adafruit IO
Periksa Koneksi ke Adafruit IO

Untuk memeriksa apakah langkah-langkah yang kita lakukan sebelumnya telah dijalankan dengan benar, kita akan mengunggah sketsa kita ke NodeMCU. Jika Anda membuka monitor serial Anda, itu akan terlihat seperti gambar di atas. Pertama monitor serial menunjukkan kepada Anda bahwa ia mencoba terhubung ke WiFi Anda dan ke Adafruit. jika itu lengkap itu harus mengatakan:

Adafruit IO terhubung

Ini adalah berita bagus! Sekarang kita dapat mulai menambahkan fungsionalitas ke timer kita…

Langkah 7: Mari kita LED

Mari kita LED
Mari kita LED
Mari kita LED
Mari kita LED

Sekarang saatnya menyalakan strip LED kami!

Hubungkan strip LED Anda ke PIN D5 (jika Anda tidak dapat menemukan D5, hubungkan ke PIN lain dan ubah LED_PIN dalam kode).

Tentukan strip LED

Kode berikut akan menambahkan perpustakaan NeoPixel (pelajari lebih lanjut tentang perpustakaan ini di sini: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use) dan pastikan Arduino kita tahu di mana strip LED kita dan berapa banyak lampu yang dimilikinya. Jika strip LED Anda memiliki spesifikasi yang berbeda, ubah dalam kode.

Tambahkan kode berikut DI ATAS void setup():

// siapkan koneksi NeoPixel#include #ifdef _AVR_ #include #endif

#define LED_PIN D5 // Di mana strip LED terhubung?

#define LED_COUNT 30 // Berapa banyak piksel yang dimilikinya?

#define BRIGHTNESS 50 // Kecerahan NeoPixel, 0 (mnt) hingga 255 (maks)

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

Mulai strip LED

Sekarang kita akan memulai strip LED kita dan mengatur kecerahan (kecerahan berubah dari 0 menit menjadi maksimal 255, tapi saya sarankan 50… 255 BENAR-BENAR cerah).

Tambahkan kode berikut DI void setup():

strip.mulai(); // INITIALIZE NeoPixel strip object (DIPERLUKAN)strip.show(); // Matikan semua piksel ASAP strip.setBrightness(50); // Atur BRIGHTNESS menjadi sekitar 1/5 (maks = 255)

ledsOn(); // Memanggil fungsi untuk menyalakan setiap LED satu per satu

Nyalakan lampu

Mungkin Anda telah memperhatikan bahwa kami memanggil fungsi yang belum ada, yang akan menjadi bagian pengkodean kami selanjutnya. Jika kita ingin menyalakan lampu kita, kita harus membuat 'for loop' yang menyalakan setiap LED satu per satu (tidak tahu apa itu for loop? Lihat di sini: www.arduino.cc/reference/ id/bahasa/struktur/struktur-kontrol/untuk/).

Sekarang kita akan membuat fungsi: ledsOn();

Tambahkan kode berikut DI BAWAH void handleMessage():

void ledsOn() { for (int i = 0; i < strip.numPixels(); i++) { // Untuk setiap piksel dalam strip… strip.setPixelColor(i, 0, 0, 255); // Atur warna piksel menjadi strip biru.show(); // Perbarui strip agar sesuai } }

Mengunggah

Sekarang adalah bagian yang menyenangkan, mari unggah kode kita ke NodeMCU… Jika semuanya bekerja dengan benar, strip LED Anda sekarang akan berubah sepenuhnya menjadi biru!

Apakah tidak ada piksel yang muncul?: sudahkah Anda menghubungkan strip ke PIN yang benar? Atau mungkin koneksi internet Anda terputus.

Apakah hanya beberapa piksel yang tidak muncul?: periksa apakah Anda mengatur jumlah piksel yang tepat!

Langkah 8: Tambahkan Waktu ke Timer

Sekarang kita akan memastikan bahwa timer kita benar-benar… yah… kali, sesuatu.

Ada berbagai cara untuk melakukan pengaturan waktu dengan Arduino, salah satunya adalah delay(), ini menghentikan pemrosesan papan kami untuk jangka waktu tertentu. Kami tidak akan menggunakan ini karena Arduino kami pada dasarnya membeku selama penundaan, dan kami ingin papan kami diperbarui secara teratur. Jadi kita akan menggunakan Millis(), ini adalah cara yang lebih elegan untuk melakukan pengaturan waktu di Arduino, dengan Millis() kita masih dapat menjalankan kode di antara interval.

Jika Anda tertarik dengan cara kerjanya, Anda dapat melihat artikel ini:

Mari tambahkan kode untuk Millis():

Letakkan kode ini DI ATAS void setup()

unsigned long beforeMillis = 0; // akan menyimpan terakhir kali strip LED diperbaruiint interval = 1000; // interval timer kita (milidetik)

Dan mari kita letakkan kode ini DI void loop():

unsigned long currentMillis = milis();// mulai TIMER RYTHM ********************************************* ********* if (Millis saat ini - sebelumnyaMillis >= interval) { sebelumnyaMillis = saat iniMillis;

// akhir TIMER RYTHM ********************************************* ***********

Apa yang baru saja kami lakukan adalah membuat ritme untuk strip LED kami untuk mematikan LED, pada langkah berikutnya kami akan menambahkan kode untuk melakukan hal itu.

Langkah 9: Hitung mundur

Dalam langkah ini: kami akan membuat fungsi yang akan memastikan bahwa setiap detik (atau interval apa pun yang Anda tetapkan) kami mematikan SATU LED di ujung strip sampai semua LED kami mati.

Kami akan membuat 'int' di bagian atas yang disebut 'led'. Ini nanti akan memberitahu timer kita berapa banyak led yang masih harus dimatikan.

Tambahkan kode berikut DI ATAS void setup():

int led = LED_COUNT-1; // tels berapa banyak piksel yang harus menyala

Sekarang mari tambahkan fungsi 'timer();', ini akan mematikan lampu setiap detik

Tambahkan kode berikut DI BAWAH void ledsOn():

void timer() { strip.setPixelColor(led, 0, 0, 0);

if (led > -1) { led--; } else { berkedip(); } }

Kami ingin memberikan umpan balik kepada pengguna bahwa penghitung waktu dilakukan setelah semua lampu padam. Dengan 'blinkie();' LED akan berkedip merah setelah timer selesai!

Tambahkan kode berikut DI ATAS void setup():

int status berkedip = 1; // memberitahu blinkie(); berfungsi apakah lampu harus hidup atau mati

Tambahkan kode berikut DI BAWAH kekosongan timer():

void blinkie() { if (blinkStatus == 1) {

status berkedip = 0; strip.bersih(); } else { status berkedip = 1; for (int i = 0; i < strip.numPixels(); i++) { // Untuk setiap piksel dalam strip… strip.setPixelColor(i, 255, 0, 0); // Mengatur warna piksel (dalam RAM) strip.show(); // Perbarui strip agar sesuai } } } }

Akhirnya kita harus memanggil fungsi di void loop();, Ingat TIMER RYTHM yang kita tambahkan di langkah 8? Dalam pernyataan if ini kita akan memanggil fungsi timer();.

TIMER RYTHM sekarang akan terlihat seperti ini:

// mulai TIMER RYTHM ********************************************* *********

if (Millis saat ini - Mili sebelumnya >= interval) { Mili sebelumnya = Milis saat ini; pengatur waktu(); strip.show();} // akhir TIMER RYTHM ************************************** ******************

Sekarang unggah kode ini!

Saat ini strip LED Anda harus mematikan 1 LED setiap detik dan berkedip merah setelah selesai…

Sekarang mari kita buat motherlover ini dikendalikan dari jarak jauh!

Langkah 10: Jadikan Remote Controlled: Bagian I

Jadikan Ini Terkendali Jarak Jauh: Bagian I
Jadikan Ini Terkendali Jarak Jauh: Bagian I
Jadikan Ini Terkendali Jarak Jauh: Bagian I
Jadikan Ini Terkendali Jarak Jauh: Bagian I

Kami punya timer kami, itu bagus dan keren tapi saya berjanji bahwa Anda akan dapat mengontrolnya dengan telepon Anda kan? Mari masuk ke tahap akhir proyek kita: membuat pengatur waktu kita dikendalikan dari jarak jauh.

Masih membuka tab Adafruit Anda? Mari kita kembali ke io.adafruit.com dan pergi ke dasbor antarmuka pengatur waktu dan membuat blok baru: TOGGLE

  1. Hubungkan sakelar ke umpan TIMER
  2. Atur nilai ON ke: 1
  3. Atur nilai OFF ke: 0

Alasan untuk ini adalah bahwa Adafruit tidak mengirim data teks ke NodeMCU kami, tetapi hanya angka.

Anda juga dapat memberi nama Toggle jika Anda mau, mungkin: 'On/Off switch'

Sekarang mari kita kembali ke Arduino IDE

Hanya untuk memastikan kode kita up to date, mari kita UPLOAD kode kita sekali lagi.

BUKA MONITOR SERIAL setelah selesai mengunggah dan TEKAN TOGGLE di dashboard Adafruit kami beberapa kali. Kita sekarang akan melihat sesuatu seperti ini muncul di monitor serial kita:

diterima <- 0diterima <- 1 diterima <- 0 diterima <- 1 diterima <- 0

Ini berarti bahwa kami benar-benar dapat mengirim kontrol ke NodeMCU kami!

Jika Anda tidak menerima pesan ini, periksa apakah Data Adafruit Anda di config.h Anda masih benar.

Langkah 11: Jadikan Ini Terkendali Jarak Jauh: Bagian II

Sekarang yang tersisa hanyalah melakukan sesuatu dengan kontrol yang kami terima.

Untuk melakukan itu kita harus mengubah TIMER RYTHM if pernyataan kita di loop kosong(); sedikit.

Kami akan memberitahu NodeMCU kami bahwa itu hanya akan memulai timer setelah kami menerima '1' (yang berarti: ON) dari Adafruit.

Pertama mari kita kumpulkan data yang dikirimkan Adafruit kepada kami

Tambahkan kode berikut DI ATAS void setup():

int adaData; // mengumpulkan data yang dikirim AdaFruit kepada kami

Sekarang mari kita benar-benar mengumpulkan data itu

Tambahkan kode berikut DI DALAM void handleMessage():

adaData = data->toInt();

Mari kita ubah void loop();

TIMER RYTHM sekarang akan terlihat seperti ini:

// mulai TIMER RYTHM ********************************************* *********if (Millis saat ini - Mili sebelumnya >= interval) { Mili sebelumnya = Mili saat ini; if (adaData == 0) { Serial.println("Saya tidak berjalan"); } else if (adaData == 1) { timer(); } strip.tampilkan(); } // akhir TIMER RYTHM ******************************************** ************

UPLOAD kode Anda…

Sekarang Anda seharusnya dapat menghidupkan dan mematikan timer dengan menggunakan sakelar di Adafruit!

Langkah 12: Bermain-main! Kita Selesai… atau Apakah Kita?

Saat ini Anda harus memiliki pengatur waktu jarak jauh yang berfungsi penuh! Jika itu untuk Anda maka terima kasih telah datang bersama dengan proyek ini!

Jika Anda ingin melanjutkan sedikit lebih lama, dalam beberapa langkah berikutnya kita akan menambahkan tombol RESET untuk timer kita!

Langkah 13: EKSTRA: Buat Tombol Sesaat

EKSTRA: Buat Tombol Sesaat
EKSTRA: Buat Tombol Sesaat

Mari kembali ke dasbor kita. Sekarang kami ingin MENCIPTAKAN BLOK BARU lagi.

  1. Buat tombol Sesaat
  2. Hubungkan ke feed 'timer'
  3. Atur nilai tekan ke: 2
  4. HAPUS nilai rilis
  5. Berikan warna yang bagus!

Nyaman tombol sesaat sudah disebut 'Reset'!

Setelah Anda membuat blok ini, ujilah, tombol berfungsi jika Anda menerima:

diterima <- 2

Di monitor serial Anda.

Jika Anda tidak melihat pesan ini, coba unggah ulang sketsa

Langkah 14: EKSTRA: Tambahkan Fungsi Reset

Untuk membuat tombol reset melakukan apa saja, kita perlu menambahkan fungsi yang mengatur ulang semua LED kembali ke keadaan semula.

Tambahkan kode berikut DI BAWAH void blinkie():

void rerun() { led = LED_COUNT; ledsOn(); }

Sekarang yang tersisa hanyalah memanggil fungsi kita, untuk itu kita harus mengubah TIMER RYTHM untuk terakhir kalinya

TIMER RYTHM sekarang akan terlihat seperti ini:

// mulai TIMER RYTHM ********************************************* *********if (Millis saat ini - Mili sebelumnya >= interval) { sebelumnyaMillis = saatMillis if (adaData == 0) { Serial.println("im not running"); } else if (adaData == 1) { timer(); } else if (adaData == 2) { rerun(); } strip.tampilkan(); } // akhir TIMER RYTHM ******************************************** ************

UPLOAD kode Anda…

Sekarang Anda juga harus dapat mengatur ulang penghitung waktu dengan menekan tombol!

Direkomendasikan: