Isi kandungan:

Pemasa Jarak Jauh Dengan NodeMCU: 14 Langkah
Pemasa Jarak Jauh Dengan NodeMCU: 14 Langkah

Video: Pemasa Jarak Jauh Dengan NodeMCU: 14 Langkah

Video: Pemasa Jarak Jauh Dengan NodeMCU: 14 Langkah
Video: NodeMCU || Membuat Saklar Jarak Jauh - iOt project | Arduino - Blynk 2024, Julai
Anonim
Pemasa Kawalan Jauh Dengan NodeMCU
Pemasa Kawalan Jauh Dengan NodeMCU

Di sini kita akan membuat pemasa menggunakan NodeMCU dan Adafruit. Kami akan memaparkan pemasa kami dengan jalur LED dan kami dapat mengawalnya menggunakan telefon atau komputer kami!

Matlamat kami:

Buat pemasa menggunakan jalur LED yang kita dapat: mulakan, jeda dan tetapkan semula menggunakan telefon atau komputer kita.

Bekalan

Perkakasan:

  • NodeMCU ESP 8266
  • Jalur LED Adafruit NeoPixel

Perpustakaan:

  • Adafruit_NeoPixel.h
  • AdafruitIO_WiFi.h

Lain-lain:

Sambungan WiFi yang baik

Langkah 1: Mari Buat Suapan di Adafruit

Mari Buat Suapan di Adafruit!
Mari Buat Suapan di Adafruit!

Setelah mendapat semua yang kami perlukan, kami sudah bersedia untuk mula membina! Pertama sekali kita mesti membuat suapan di Adafruit. Adafruit adalah perkhidmatan yang menjadikan kami sangat mudah untuk menghubungkan Arduino kami ke internet dan menjadikan ciri kawalan jauh yang berguna. Sekiranya anda belum melakukannya, daftar ke Adafruit.

Sekarang mari buat suapan baru

Kami boleh menamakan suapan kami apa sahaja yang kami mahukan, saya memanggilnya 'pemasa'.

Suapan yang dilakukan adalah merekod semua yang kami lakukan di papan pemuka kami (yang akan kami buat hanya dalam satu minit) dan menghantar data tersebut ke papan kami, tetapi itulah sesuatu yang akan kami perhatikan setelah kami mempunyai data yang akan dihantar.

Langkah 2: Sekarang Mari Buat Papan Pemuka

Sekarang Mari Buat Papan Pemuka
Sekarang Mari Buat Papan Pemuka
Sekarang Mari Buat Papan Pemuka
Sekarang Mari Buat Papan Pemuka
Sekarang Mari Buat Papan Pemuka
Sekarang Mari Buat Papan Pemuka

Sekarang dengan cara yang sama seperti membuat suapan, kami akan membuat Papan Pemuka baru. Saya akan memanggil papan pemuka saya: 'antara muka pemasa' kerana pada dasarnya itulah papan pemuka kami: antara muka dengan butang untuk mengawal pemasa kami.

Langkah 3: Dapatkan Kunci Kami

Dapatkan Kunci Kami
Dapatkan Kunci Kami

Sekiranya kami ingin menyambungkan Arduino ke suapan kami, kami perlu mendapatkan kunci Adafruit kami, ini adalah kata laluan rahsia anda yang akan memastikan hanya anda yang dapat menyambung ke suapan anda.

Anda boleh mendapatkan kunci anda dengan mengklik butang Kunci AIO kuning di kanan atas skrin anda di Adafruit.

Simpan kunci ini di suatu tempat, kita akan memerlukannya kemudian.

Jangan berkongsi kunci anda! Jika tidak, orang yang mempunyai niat buruk boleh menyambung ke suapan dan peranti anda.

Langkah 4: Buka Contoh Feed Feed

Buka Contoh Baca Suapan
Buka Contoh Baca Suapan

Sekarang mari buka Arduino IDE kami dan mulakan proses pengekodan. Pertama sekali, kita perlu memasang perpustakaan Adafruit IO Arduino.

Tidak tahu cara memasang perpustakaan? ini adalah panduan hebat Adafruit: Arduino Libraries

Adafruit menawarkan banyak contoh yang telah dibuat untuk kita gunakan dan pelajari. Salah satu contoh ini ialah: adafruitio_21_feed_read. Anda boleh mendapatkan contoh ini di sini: Fail - Contoh Adafruit IO Arduino adafruitio_21_feed_read

(maafkan antara muka Belanda saya dalam gambar)

Langkah 5: Mari Siapkan Sambungan Kita

Sekiranya anda berjaya membuka sketsa adafruitio_21_feed_read, anda akan melihat 2 tab dalam lakaran anda: adafruitio_21_feed_read dan config.h. Sketsa ini dibuat supaya kita dapat menyambung ke umpan yang kita buat pada langkah 1.

Untuk menyambung ke suapan ini, kami perlu mengisi beberapa butiran mengenai WiFi dan akaun Adafruit kami,

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

Nama pengguna Adafruit anda:

#tentukan IO_USERNAME "joopert"

Kunci Adafruit anda:

#tentukan IO_KEY "1234567890abcdefghijklmnop"

Nama WiFi anda:

#tentukan WIFI_SSID "MyWifi"

Dan kata laluan WiFi anda:

#tentukan WIFI_PASS "aVerySecretPassword"

Sekarang mari kita kembali ke tab adafruitio_21_feed_read dan isikan:

Nama pengguna Adafruit anda … sekali lagi:

#tentukan FEED_OWNER "joopert"

Dan akhirnya nama umpan anda (dari suapan yang kami buat pada langkah 1):

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

Langkah 6: Periksa Sambungan ke Adafruit IO

Periksa Sambungan ke Adafruit IO
Periksa Sambungan ke Adafruit IO

Untuk memeriksa apakah langkah-langkah yang kita ambil sebelumnya telah dilaksanakan dengan betul, kita akan memuat naik lakaran kita ke NodeMCU. Sekiranya anda membuka monitor bersiri anda, ia akan kelihatan seperti gambar di atas. Mula-mula monitor bersiri menunjukkan bahawa ia cuba menyambung ke WiFi anda dan Adafruit. jika lengkap, ia mesti mengatakan:

Adafruit IO bersambung

Ini adalah berita hebat! Sekarang kita boleh mula menambahkan fungsi pada pemasa kita …

Langkah 7: Mari LED

Mari LED
Mari LED
Mari LED
Mari LED

Kini tiba masanya untuk menghidupkan jalur LED kami!

Sambungkan jalur LED anda ke PIN D5 (jika anda tidak dapat menemukan D5 sambungkannya ke PIN lain dan ubah LED_PIN dalam kodnya).

Tentukan jalur LED

Kod berikut akan menambah perpustakaan NeoPixel (ketahui lebih lanjut mengenai perpustakaan ini di sini: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use) dan pastikan Arduino kami mengetahui di mana jalur LED kami dan berapa banyak lampu yang dimilikinya. Sekiranya jalur LED anda mempunyai spesifikasi yang berbeza, ubah dalam kodnya.

Tambahkan kod berikut DI ATAS persediaan kosong ():

// sediakan sambungan NeoPixel # include #ifdef _AVR_ #include #endif

#define LED_PIN D5 // Di manakah jalur LED disambungkan?

#define LED_COUNT 30 // Berapa piksel yang dimilikinya?

#tentukan BRIGHTNESS 50 // Kecerahan NeoPixel, 0 (min) hingga 255 (maksimum)

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

Mulakan jalur LED

Sekarang kita akan memulakan jalur LED kita dan menetapkan kecerahan (kecerahan berlangsung dari 0 min hingga 255 maksimum, tetapi saya cadangkan 50… 255 sangat terang).

Tambahkan kod berikut DALAM persediaan kosong ():

jalur.begin (); // INISIASI objek NeoPixel strip (DIPERLUKAN) strip.show (); // Matikan semua piksel ASAP strip.setBrightness (50); // Tetapkan BRIGHTNESS kepada kira-kira 1/5 (maksimum = 255)

ledsOn (); // Memanggil fungsi untuk menghidupkan setiap LED satu persatu

Hidupkan lampu

Mungkin anda sudah menyedari bahawa kami memanggil fungsi yang belum ada, itu akan menjadi bahagian pengekodan kami yang seterusnya. Sekiranya kita mahu menyalakan lampu kita harus membuat 'untuk gelung' yang menyalakan setiap LED LED satu persatu (tidak tahu apa itu gelung? Lihat di sini: www.arduino.cc/reference/ en / bahasa / struktur / kawalan-struktur / untuk /).

Sekarang kita akan membuat fungsi: ledsOn ();

Tambahkan kod berikut di BAWAH pemegang kosongMesej ():

kekosongan ledsOn () {untuk (int i = 0; i <strip.numPixels (); i ++) {// Untuk setiap piksel dalam jalur… strip.setPixelColor (i, 0, 0, 255); // Tetapkan warna piksel ke jalur biru.show (); // Kemas kini jalur agar sepadan}}

Muat naik

Sekarang adalah bahagian yang menyeronokkan, mari memuat naik kod kami ke NodeMCU … Sekiranya semuanya berfungsi dengan betul jalur LED anda kini harus menjadi biru sepenuhnya!

Tidak ada piksel yang muncul?: Adakah anda telah menyambungkan jalur ke PIN yang betul? Atau mungkin sambungan internet anda terputus.

Adakah hanya beberapa piksel yang tidak muncul?: Periksa sama ada anda menetapkan jumlah piksel yang betul!

Langkah 8: Tambahkan Pemasa ke Pemasa

Sekarang kita akan memastikan bahawa pemasa kita sebenarnya … baik … kali, sesuatu.

Terdapat pelbagai cara untuk melakukan penentuan waktu dengan Arduino, salah satunya adalah kelewatan (), ini menghentikan pemprosesan papan kami untuk jangka masa yang ditentukan. Kami tidak akan menggunakannya kerana Arduino kami pada dasarnya membeku semasa penundaan, dan kami mahu papan kami sentiasa dikemas kini. Oleh itu, kita akan menggunakan Millis (), ini adalah cara yang lebih elegan untuk melakukan pemasaan di Arduino, dengan Millis () kita masih dapat menjalankan kod di antara selang waktu.

Sekiranya anda berminat dengan cara ini, anda boleh membaca artikel ini:

Mari tambah kod untuk Millis ():

Letakkan kod ini DI ATAS persediaan kosong ()

lama tidak ditandatangani sebelumnyaMillis = 0; // akan menyimpan kali terakhir jalur LED dikemas kini selang = 1000; // selang pemasa kami (milisaat)

Dan mari masukkan kod ini DI gelung kosong ():

arus panjang yang tidak ditandatanganiMillis = millis ();// mulakan TIMER RYTHM ********************************************* ********* if (currentMillis - sebelumnyaMillis> = selang) {sebelumnyaMillis = currentMillis;

// tamat RYTHM TIMER ********************************************* ***********

Yang kami buat hanyalah membuat irama agar jalur LED kami mematikan LED, pada langkah seterusnya kami akan menambahkan kod untuk melakukan begitu sahaja.

Langkah 9: Kira-kira

Dalam langkah ini: kami akan membuat fungsi yang akan memastikan bahawa setiap saat (atau selang apa pun yang anda tetapkan) kami mematikan SATU LED di hujung jalur sehingga semua LED kami mati.

Kami akan membuat 'int' di bahagian atas yang disebut 'leds'. Ini kemudian akan memberitahu pemasa kita berapa banyak petunjuk yang masih perlu dimatikan.

Tambahkan kod berikut DI ATAS persediaan kosong ():

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

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

Tambahkan kod berikut DI BAWAH led kosongOn ():

pemasa tidak sah () {strip.setPixelColor (leds, 0, 0, 0);

jika (leds> -1) {leds--; } lain {blinkie (); }}

Kami ingin memberi maklum balas kepada pengguna bahawa pemasa selesai setelah semua lampu mati. Dengan 'blinkie ();' LED akan berkelip merah setelah pemasa selesai!

Tambahkan kod berikut DI ATAS persediaan kosong ():

int blinkStatus = 1; // memberitahu blinkie (); berfungsi sama ada lampu harus menyala atau mati

Tambahkan kod berikut DI BAWAH pemasa kosong ():

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

blinkStatus = 0; strip.clear (); } lain {blinkStatus = 1; untuk (int i = 0; i <strip.numPixels (); i ++) {// Untuk setiap piksel dalam jalur… strip.setPixelColor (i, 255, 0, 0); // Tetapkan warna pixel (dalam RAM) strip.show (); // Kemas kini jalur agar sepadan}}}}

Akhirnya kita harus memanggil fungsi dalam gelung kosong kita ();, Masih ingat dengan TIMER RYTHM yang kita tambahkan pada langkah 8? Dalam pernyataan if ini, kami akan memanggil fungsi pemasa ();.

TIMER RYTHM kini kelihatan seperti ini:

// mulakan TIMER RYTHM ********************************************* *********

if (currentMillis - sebelumnyaMillis> = selang) {sebelumnyaMillis = currentMillis; pemasa (); strip.show ();} // akhir RYTHM TIMER ************************************** ******************

Sekarang muat naik kod ini!

Sekarang jalur LED anda harus mematikan 1 LED setiap saat dan berkelip merah apabila selesai…

Sekarang mari kita buat kawalan jauh ibu kekasih ini!

Langkah 10: Jadikannya Dikawal Jauh: Bahagian I

Jadikan Ia Dikawal Jauh: Bahagian I
Jadikan Ia Dikawal Jauh: Bahagian I
Jadikan Ia Dikawal Jauh: Bahagian I
Jadikan Ia Dikawal Jauh: Bahagian I

Kami mempunyai pemasa kami, semuanya baik-baik saja dan bagus tetapi saya berjanji bahawa anda akan dapat mengawalnya dengan telefon anda bukan? Mari memasuki peringkat akhir projek kami: menjadikan pemasa kami dikawal jauh.

Masih terbuka tab Adafruit anda? Mari pergi ke kembali ke io.adafruit.com dan mari pergi ke papan pemuka antara muka pemasa kami dan buat blok baru: TOGGLE

  1. Sambungkan togol ke suapan TIMER
  2. Tetapkan nilai ON ke: 1
  3. Tetapkan nilai OFF ke: 0

Sebabnya ialah Adafruit tidak menghantar data teks ke NodeMCU kami, tetapi hanya nombor.

Anda juga boleh memberikan nama Toggle jika anda suka, mungkin: 'Suis hidup / mati'

Sekarang mari kita kembali ke Arduino IDE

Hanya untuk memastikan kod kami terkini, mari kita MENGGUNAKAN kod kita sekali lagi.

BUKA PEMANTAU SERIUS setelah selesai memuat naik dan TEKANKAN TOGGLE di papan pemuka Adafruit kami beberapa kali. Kita seharusnya melihat sesuatu seperti ini muncul di monitor bersiri kami:

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

Ini bermaksud bahawa kita sebenarnya boleh menghantar kawalan ke NodeMCU kita!

Sekiranya anda tidak menerima mesej ini, periksa apakah Data Adafruit anda di config.h anda masih betul.

Langkah 11: Jadikannya Dikawal Jauh: Bahagian II

Sekarang yang tinggal hanyalah melakukan sesuatu dengan kawalan yang kami terima.

Untuk melakukan itu, kita mesti mengubah TIMER RYTHM jika penyataan dalam gelung kosong (); sedikit.

Kami akan memberitahu NodeMCU kami bahawa ia hanya boleh memulakan pemasa setelah kami menerima '1' (yang bermaksud: AKTIF) dari Adafruit.

Pertama mari kita mengumpulkan data yang dihantar oleh Adafruit kepada kita

Tambahkan kod berikut DI ATAS persediaan kosong ():

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

Sekarang mari kita mengumpulkan data itu

Tambahkan kod berikut INSIDE the void handleMessage ():

adaData = data-> toInt ();

Mari ubah gelung kekosongan kami ();

TIMER RYTHM kini kelihatan seperti ini:

// mulakan TIMER RYTHM ********************************************* ********* if (currentMillis - sebelumnyaMillis> = selang) {sebelumnyaMillis = currentMillis; if (adaData == 0) {Serial.println ("Saya tidak berjalan"); } lain jika (adaData == 1) {pemasa (); } strip.show (); } // tamat RYTHM TIMER ******************************************** ************

TINGKATKAN kod anda …

Sekarang anda seharusnya dapat menghidupkan dan mematikan pemasa dengan menggunakan suis di Adafruit!

Langkah 12: Main di Sekitar! Kita Selesai… atau Adakah Kita?

Sekarang anda mesti mempunyai pemasa jarak jauh yang berfungsi sepenuhnya! Sekiranya itu untuk anda, terima kasih kerana menyertai projek ini!

Sekiranya anda ingin meneruskan sedikit lebih lama, dalam beberapa langkah seterusnya kami akan menambah butang RESET untuk pemasa kami!

Langkah 13: EKSTRA: Buat Butang Sekejap

EKSTRA: Buat Butang Sekejap
EKSTRA: Buat Butang Sekejap

Mari kembali ke papan pemuka kami. Sekarang kita mahu MEMBUAT BLOK BARU lagi.

  1. Buat butang Momentary
  2. Sambungkannya ke suapan 'pemasa'
  3. Tetapkan nilai tekan ke: 2
  4. HILANGKAN nilai pelepasan
  5. Beri warna yang bagus!

Dengan senang butang sekejap sudah dipanggil 'Reset'!

Setelah anda membuat ujian blok ini, butang berfungsi jika anda menerima:

diterima <- 2

Di monitor bersiri anda.

Sekiranya anda tidak melihat mesej ini, cuba muat naik semula lakaran tersebut

Langkah 14: EKSTRA: Tambahkan Fungsi Tetapkan Semula

Untuk membuat butang reset melakukan apa sahaja, kita perlu menambah fungsi yang menetapkan semula semua LED kembali ke keadaan semula.

Tambahkan kod berikut DI BAWAH blinkie kekosongan ():

jalankan semula tidak sah () {leds = LED_COUNT; ledsOn (); }

Sekarang yang tinggal hanyalah memanggil fungsi kita, untuk itu kita mesti menukar TIMER RYTHM untuk kali terakhir

TIMER RYTHM kini kelihatan seperti ini:

// mulakan TIMER RYTHM ********************************************* ********* if (currentMillis - sebelumnyaMillis> = selang) {sebelumnyaMillis = currentMillis if (adaData == 0) {Serial.println ("im tidak berjalan"); } lain jika (adaData == 1) {pemasa (); } lain jika (adaData == 2) {jalankan semula (); } strip.show (); } // tamat RYTHM TIMER ******************************************** ************

TINGKATKAN kod anda …

Sekarang anda juga boleh mengatur semula pemasa dengan menekan butang!

Disyorkan: