Peralatan Nirkabel NooLite dan Rumah Pintar (Bagian 1). Arduino

nooLite

Halo para pembaca Geektimes! Kali ini saya ingin menyampaikan kepada Anda serangkaian artikel tentang mengintegrasikan peralatan nirkabel nooLite ke dalam sistem otomasi rumah. Siklus ini akan serupa dengan seri artikel yang sudah diterbitkan ( satu , dua , tiga ) tentang integrasi modul Laurent ke dalam sistem Smart Home, hanya saja ia akan berbicara tentang sistem nooLite dan setelah membaca siklus ini Anda tidak akan memiliki pertanyaan tentang mengelola perangkat nooLite dari Smart Anda di rumah

Tentang serangkaian artikel


Siklus dibagi menjadi tiga bagian. Pada bagian pertama, Anda akan belajar tentang prinsip-prinsip pengoperasian peralatan nirkabel nooLite dan cara mengelolanya dari proyek Arduino Anda. Bagian kedua akan menjelaskan secara rinci tentang integrasi modul kontrol MT1132 ke dalam Server Arduino Mega dan tentang kemungkinan untuk mengelola Rumah Pintar yang terbuka dalam koneksi ini. Dan artikel ketiga dalam seri ini akan dikhususkan untuk topik yang sangat menarik - konsep menciptakan perangkat "100 in 1" berdasarkan Arduino Mega Server. Contoh membuat stasiun solder nirkabel pada AMS akan diperiksa secara terperinci, secara harfiah dari nol - berdasarkan hanya pada satu dimer nirkabel nooLite. Juga akan ada bagian keempat dari mana Anda akan belajar cara membuat kristal ajaib.

Ngomong-ngomong, stasiun solder, yang akan dibahas dalam artikel ketiga, sudah hadir dalam rakitan Arduino Mega Server terbaru dengan nomor 0.14. Dan pembaca yang paling ingin tahu tidak sabar menunggu artikel ketiga, tetapi segera unduh kit distribusi dan cari tahu bagaimana semuanya bekerja sendiri.

stasiun solder

Dan hal yang hebat adalah bahwa bisa ada ratusan perangkat seperti itu di AMS, dan pada saat yang sama. Misalnya, stasiun solder, stasiun cuaca, unit keamanan, pengontrol rumah kaca, dll. Dan semua ini dapat bekerja secara bersamaan atau "memulai" dengan memuat halaman web atau bahkan seluruh situs yang didedikasikan untuk perangkat tertentu.

Tapi jangan maju dulu, mari kita tinggalkan yang paling menarik pada akhirnya, tetapi untuk sekarang kita akan melakukan persiapan teoretis yang diperlukan. Saya berjanji bahwa semuanya akan dinyatakan dengan cara yang paling sederhana dan paling masuk akal. Jadi mari kita mulai.

Peralatan NooLite


Peralatan NooLite sudah menjadi sistem yang terkenal dan populer dan ada cukup banyak informasi tentang itu di Internet. Saya akan mencoba merangkum poin-poin utama di sini.

Konsepnya sangat sederhana - ada unit daya untuk mengendalikan cahaya dan berbagai beban, dan panel kontrol yang mengirim perintah ke unit daya ini. Dan semua ini bekerja, tentu saja, tanpa partisipasi koneksi kabel. Sebenarnya semuanya. Keindahan sistem ini adalah bahwa semua komponen dipikirkan, dibuat dengan baik dan melakukan apa yang dikatakannya - mereka dapat mengontrol peralatan yang terhubung dengan andal.

Ada juga sensor nirkabel, kontrol perangkat dari smartphone dan banyak lagi, tetapi dalam satu artikel tidak mungkin mencakup semuanya, di sini kita hanya akan fokus pada integrasi nooLite dengan platform DIY populer - Arduino.

Dari seluruh spektrum luas peralatan nooLite, kami akan tertarik dengan modul kontrol MT1132 karena ia dirancang untuk terhubung ke Arduino dan komputer papan tunggal seperti Raspberry Pi. Dan itu bekerja pada antarmuka serial sederhana. Ke depan sedikit, saya akan mengatakan bahwa saya menyukai modul karena kesederhanaannya, dapat diprediksi dan operasi yang dapat diandalkan. Dan saya dapat menghargai kualitas-kualitas ini setelah satu bulan berjuang tanpa hasil dengan modul jaringan pada chip W5500, yang tidak ingin bekerja secara normal.

Modul MT1132

Dan saya terutama menyukai kenyataan bahwa (terlepas dari catu daya) modul terhubung ke Arduino hanya dengan satu (!) Kawat (RX). Yang kedua (TX) bisa dihilangkan sama sekali. Modul ini "satu arah", yaitu dirancang hanya untuk mengirim sinyal kontrol. Rencana perusahaan Nootehnika termasuk pengembangan dan rilis versi "dua arah" dari modul.

SU111-300

Elemen kedua yang kita butuhkan dari peralatan nooLite adalah unit kontrol daya, misalnya, SU111-300. Sambungan unit ini dasar dan dapat dilihat pada gambar. Dua kabel terhubung ke jaringan 220 volt, dan dua lainnya ke beban. Satu-satunya hal yang ingin saya perhatikan adalah bahwa modul dilengkapi dengan jumper yang memblokir mode peredupan dan, jika Anda ingin menyesuaikan daya, Anda perlu memotong jumper ini (dan ingat untuk mengisolasi kabel telanjang yang dihasilkan).

PU311-2

Saya tidak akan memikirkan remote karena itu adalah kontrol "manual", dan kami, sehubungan dengan otomatisasi, lebih tertarik pada otomatis. Saya hanya bisa mengatakan bahwa percobaan dilakukan dengan remote control PU311-2, dibuat dalam bentuk saklar dinding dan itu menunjukkan dirinya dengan cara terbaik, yaitu, menyalakan dan mematikan lampu dengan jelas dan tanpa kegagalan. Apa, sebenarnya, peralatan yang baik dan berbeda dari yang buruk - Anda tidak akan memerhatikan yang baik.

Konsep kerja. Binding dan Unlinking


Sebelum Anda dapat menghidupkan dan mematikan peralatan listrik menggunakan sistem nooLite, Anda perlu "menghubungkan" modul kontrol ke unit daya yang sesuai. Ini dilakukan dengan menggunakan prosedur yang disebut. "Bindings" dan "unying", dijelaskan secara rinci dalam dokumentasi nooLite. Singkatnya, semuanya bermuara pada menekan sepasang tombol pada blok yang ditautkan dan tidak menimbulkan kesulitan.

Dalam kasus ketika modul kontrol MT1132 digunakan sebagai pengganti remote control, prosedurnya terjadi dengan cara yang sedikit berbeda. Yaitu: karena modul tidak memiliki tombol, Anda perlu membuat dan mengirim perintah kontrol secara terprogram pada saluran yang diinginkan, dan kemudian tekan tombol pada unit daya, mengonfirmasi "mengikat" atau "membuka ikatan".

Saluran adalah "garis kontrol" dan ada 32 di antaranya dalam modul MT1132, sebagaimana dibuktikan oleh dua digit terakhir dalam namanya. Ini berarti bahwa dengan modul ini Anda dapat mengelola 32 kelompok peralatan yang terpisah, yang lebih dari cukup untuk sebuah apartemen atau rumah kecil. Jika Anda memiliki rumah besar, maka modul dapat bekerja bersama dan skala ke sejumlah saluran.

Deskripsi Protokol


Ada dokumen yang bagus di situs web perusahaan Nootehnika yang secara komprehensif dan terperinci menggambarkan koneksi modul dan protokol kontrolnya. Saya tidak akan mengacaukan artikel dengan rincian teknis yang tidak perlu, siapa pun dapat membaca dokumen ini, saya hanya akan menjelaskan poin utama.

Untuk mengontrol modul, kita perlu membentuk perintah kontrol yang terdiri dari 12 byte. Prinsip-prinsip pembentukan tim ini dijelaskan dalam dokumen di atas. Dan seperti yang akan Anda lihat di bawah, semua aturan ini sudah diprogram dalam fungsi kontrol dan kita hanya perlu menggunakannya untuk mengeluarkan perintah ke modul.

Tim uji


nooLite memiliki sistem perintah yang cukup berkembang, dari mana kami akan memilih yang paling sederhana dan paling umum dan menggambarkan sistem menggunakan contoh mereka.

  • Jepret
  • Lepaskan
  • Inklusi
  • Tidak aktif
  • Pengaturan daya (peredupan)

Memahami bagaimana tim dasar bekerja, Anda dapat dengan mudah menggunakan yang lain.

Menghubungkan modul MT1132


Seperti yang sudah saya katakan, modul MT1132 terhubung secara harfiah dengan satu kabel (kecuali untuk daya). Modul ini dapat ditenagai oleh voltase 5 volt dan voltase 3,3 volt. Oleh karena itu, tidak ada masalah menghubungkan ke 5-volt Arduino Mega atau 3,3 volt Arduino Due. Satu-satunya titik adalah bahwa dengan daya yang berkurang, kisaran operasi sistem yang andal berkurang. Dan ini harus diperhitungkan jika Anda ingin memberi daya pada modul dari tegangan 3,3 volt.

Arduino

Modul ini memiliki pin RX dan TX untuk menerima dan mengirim sinyal melalui antarmuka serial. Yang penting untuk pengoperasian modul adalah koneksi RX, untuk menerima perintah kontrol dari pengontrol. Oleh karena itu, pin RX di sisi modul terhubung ke pin TX (18) di sisi Arduino. Pinout ini berlaku untuk Arduino Mega dan Arduino Due.

Bagian perangkat lunak


Sekarang mari kita cari tahu bagaimana mengelola semua ekonomi ini dari sketsa di Arduino. Pertama, inisialisasi Serial1, yang kami hubungkan dengan modul MT1132 (ini dilakukan pada frekuensi standar 9600):

Serial1.begin(9600);

Sekarang kode fungsi kontrol utama:

void nooSendCommand(byte channel, byte command, byte data, byte format) {
  byte buf[12];

  for (byte i = 0; i < 12; i++) {
    buf[i] = 0;
  }

  buf[0] = 85;
  buf[1] = B01010000;
  buf[2] = command;
  buf[3] = format;
  buf[5] = channel;
  buf[6] = data;

  int checkSum = 0;
  for (byte i = 0; i < 10; i++) {
    checkSum += buf[i];
  }

  buf[10] = lowByte(checkSum);
  buf[11] = 170;

  for (byte i = 0; i < (12); i++) {
    Serial1.write(buf[i]);
  }
}

Pada prinsipnya, kita bahkan tidak perlu tahu cara kerjanya, kita dapat menggunakannya dalam mode "kotak hitam" atau semacam API, dengan antarmuka tertentu mencuat. Kami hanya perlu tahu cara menggunakan antarmuka ini.

Seperti yang Anda lihat, hanya ada empat parameter - saluran, perintah, data, dan format. Anda dapat membaca prinsip dengan mana permintaan untuk API ini dapat dihasilkan dalam dokumen yang disebutkan di atas, tetapi kami akan menyederhanakan tugas kami lebih jauh dan membungkus antarmuka ini dalam perintah kontrol perangkat nooLite sederhana.

void nooBind  (byte ch)         {nooSendCommand(ch, 15, 0, 0);}
void nooUnbind(byte ch)         {nooSendCommand(ch,  9, 0, 0);}
void nooOn    (byte ch)         {nooSendCommand(ch,  2, 0, 0);}
void nooOff   (byte ch)         {nooSendCommand(ch,  0, 0, 0);}
void nooValue (byte ch, byte v) {nooSendCommand(ch,  6, v, 1);}

Tim yang relatif kompleks hanyalah yang terakhir, di sana, selain saluran, level daya juga diatur. Ada juga tim dalam sketsa yang tidak akan kita bahas sekarang, tetapi mereka dibentuk dengan mudah.

Sebenarnya ... itu dia! Tidak ada tempat yang lebih mudah. Dalam kode tersebut, perintah kontrol terlihat seperti ini:

nooBind(ch);
nooUnbind(ch);
nooOn(ch);
nooOff(ch);
nooValue(ch, v);

Sekarang mari kita berlatih mempraktikkan manajemen modul daya nooLite. Jadi, kami mengikat blok daya pada saluran nol:

nooBind(0);

LED pada unit daya mulai berkedip. Tekan tombol pada blok - LED berhenti berkedip - blok daya terpasang. Alih-alih saluran nol, Anda dapat menggunakan yang lain. Dan Anda dapat dengan mudah menghasilkan nomor saluran dalam kode sketsa sesuai dengan kebutuhan Anda.

Nyalakan lampu (jika kita mengikat lampu pada saluran nol, maka perintah untuk itu harus dikirim pada saluran ini):

nooOn(0);

Atur daya (kecerahan lampu):

nooValue(0, 100);

Di sini Anda perlu mengatakan sedikit tentang aturan pembentukan tim yang menetapkan tingkat kekuatan. Nilai daya tidak berubah dari 0 menjadi 255, seperti yang dipikirkan orang, tetapi dari 35 menjadi 155. Jika nilainya lebih dari 155, maka daya akan maksimum, jika 0, maka ini akan setara dengan perintah shutdown.

Di sini (untuk berjaga-jaga) rumus yang menerjemahkan nilai "standar" dari 0 hingga 100 ke dalam format yang dipahami oleh modul nooLite:

v = x * 1.2 + 34;

Dengan menggunakan rumus ini, Anda dapat mengatur kecerahan lampu dalam persentase daya yang biasa. Dan, tentu saja, jika Anda perlu menyesuaikan daya secara nonlinier, maka Anda dapat membuat variabel v menurut hukum apa pun atau bahkan hanya memilih nilai tetap. Ini akan dibahas pada bagian ketiga dari siklus, ketika kita akan menyesuaikan suhu pemanasan dari stasiun solder.

Matikan perangkat:

nooOff(0);

Lepaskan:

nooUnbind(0);

LED pada unit daya mulai berkedip. Kami mengkonfirmasi decoupling dengan menekan tombol pada unit daya. Itu saja, sekarang unit daya telah berhenti merespons perintah kami dan kami dapat "memotret" lagi di salah satu dari 32 saluran modul no11ite MT1132.

Ini sketsa lengkapnya.

Kode sketsa lengkap
byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

void nooSendCommand(byte channel, byte command, byte data, byte format) {
byte buf[12];

for (byte i = 0; i < 12; i++) {
buf[i] = 0;
}

buf[0] = 85;
buf[1] = B01010000;
buf[2] = command;
buf[3] = format;
buf[5] = channel;
buf[6] = data;

int checkSum = 0;
for (byte i = 0; i < 10; i++) {
checkSum += buf[i];
}

buf[10] = lowByte(checkSum);
buf[11] = 170;

for (byte i = 0; i < (12); i++) {
Serial1.write(buf[i]);
}
}

void nooBind (byte ch) {nooSendCommand(ch, 15, 0, 0);}
void nooUnbind (byte ch) {nooSendCommand(ch, 9, 0, 0);}

void nooOn (byte ch) {nooSendCommand(ch, 2, 0, 0);}
void nooOff (byte ch) {nooSendCommand(ch, 0, 0, 0);}
void nooTrigger(byte ch) {nooSendCommand(ch, 4, 0, 0);}
void nooCancel (byte ch) {nooSendCommand(ch, 10, 0, 0);}

void nooUp (byte ch) {nooSendCommand(ch, 3, 0, 0);}
void nooDown (byte ch) {nooSendCommand(ch, 1, 0, 0);}
void nooRevers (byte ch) {nooSendCommand(ch, 5, 0, 0);}

void nooValue (byte ch, byte v) {nooSendCommand(ch, 6, v, 1);}

void setup() {
Serial1.begin(9600);

/*
loop(), */

//nooBind(0);

//nooOn(0);
//nooOff(0);
//nooValue(0, 100);

//nooUnbind(0);
}

void loop(){

}

Subtotal


Seperti yang Anda lihat, tidak ada yang rumit dalam mengendalikan modul daya nooLite menggunakan Arduino, sebaliknya, kontrolnya sangat sederhana: modul terhubung dengan satu kawat, dan perintahnya hampir merupakan bahasa manusia yang alami - "nyalakan saluran 0", "matikan saluran 1", "Untuk mengatur kekuatan 50% pada saluran 3" benar-benar tidak sederhana.

Bonus untuk mereka yang telah membaca sampai akhir


Beberapa hari yang lalu, versi baru dari Arduino Mega Server dirilis pada nomor 0.14, di mana semua penyakit masa kanak-kanak teknologi diatasi dan yang bekerja dengan cepat dan stabil. Dan versi yang sama berisi inti kendali instrumen nooLite terintegrasi dan cara kerjanya, Anda akan belajar dari artikel berikutnya dalam seri “Peralatan Nirkabel NooLite dan Rumah Pintar (Bagian 2). Arduino Mega Server. "

Bagian kedua , ketiga dan keempat dari siklus.

Source: https://habr.com/ru/post/id389067/


All Articles