Laurent ()
KernelChip .
.
MajorDoMo, Arduino
Arduino Mega Server. , , …
Processing.

?
Kali ini kita tidak akan banyak bicara langsung tentang Rumah Pintar, kita sudah cukup banyak membicarakannya di dua artikel sebelumnya. Kali ini kita akan membiarkan diri kita sedikit rileks dan hanya berolahraga pemrograman untuk kesenangan kita sendiri.Jadi, sebelum kita meletakkan modul "Laurent" dan kami ingin mengelolanya dari komputer kami. Bagaimana cara melakukannya? Ada banyak cara dan kita akan memilih salah satunya, yaitu, Pemrograman bahasa pemrograman. Mengapa pengolahan? Karena itu adalah bahasa pemrograman yang sederhana dan sekaligus kuat, terutama dalam hal penyajian informasi secara visual. Sketsa terbaik di atasnya hanya memukau imajinasi dan di antara program-program sederhana ada juga yang sangat, sangat bagus. Secara keseluruhan, ini adalah bahasa pemrograman yang bagus untuk bereksperimen dan belajar.Penting juga bagi kami bahwa Processing memiliki dukungan bawaan untuk fungsi jaringan dan interaksi pemrograman dengan modul Laurent tidak akan memerlukan upaya khusus dari kami.Menulis sketsa
Untuk memulai percobaan, Pemrosesan seharusnya sudah diinstal di komputer Anda . Jika Anda belum menginstal lingkungan pemrograman ini, maka Anda perlu mengunduh kit distribusi dan menginstalnya di komputer Anda. Kami berasumsi bahwa Anda telah melakukan ini dan dapat menulis dan menjalankan sketsa paling sederhana pada Pemrosesan.
Pertama-tama, kita perlu menghubungkan perpustakaan dengan dukungan untuk fungsi jaringan. Ini dilakukan dalam satu baris:import processing.net.*;
Kemudian mari kita perkenalkan perintah uji untuk mengelola modul Laurent. Biarkan itu menjadi perintah untuk menghidupkan dan mematikan relay yang sudah Anda kenal dari artikel sebelumnya. Dan jangan lupa perintah entri kata sandi, tanpa itu, modul tidak akan menanggapi perintah kami.String pass = "$KE,PSW,SET,Laurent";
String rele2on = "$KE,REL,2,1";
String rele2off = "$KE,REL,2,0";
Kami juga membutuhkan simbol layanan dan objek yang akan mewakili modul Laurent dalam program kami dan dengan mana kami akan mengirim perintah ke modul ini.byte CRbyte = 13;
byte LFbyte = 10;
Client myClient;
Sekarang fungsi yang secara langsung akan mengirim perintah kontrol ke modul:void sendCommand(String command, Client cl) {
cl.write(pass);
cl.write(CRbyte);
cl.write(LFbyte);
delay(10);
cl.write(command);
cl.write(CRbyte);
cl.write(LFbyte);
}
Pertama, fungsi mengirimkan kata sandi, yang disimpan dalam variabel pass (jika Anda mengubah kata sandi default, maka Anda perlu mengubah kata sandi dalam variabel ini juga), maka ia menunggu 10 milidetik dan mengirimkan perintah. Layanan byte diperlukan untuk menyelesaikan string yang dikirim.Sekarang fungsi pengaturan standar (). Fungsi ini hadir dalam semua sketsa pada Pemrosesan dan dimaksudkan untuk inisialisasi dan pengaturan parameter awal.void setup() {
size(300, 300);
background(255);
myClient = new Client(this, "192.168.2.19", 2424);
}
Di sini kita mengatur ukuran jendela program, warna latar belakang putih dan membuat objek myClient untuk modul Laurent kami. Anda mungkin sudah mengerti bahwa "192.168.2.19" adalah alamat IP modul (Anda harus mengubahnya ke alamat asli modul Anda), dan 2424 adalah port standar semua modul Laurent dan Anda tidak perlu mengubahnya.Dan akhirnya, fungsi draw () utama, yang akan memastikan pekerjaan sketsa. Ini adalah siklus tanpa akhir di mana kami akan mengatur fungsionalitas yang kami butuhkan. Mari kita, misalnya, mencoba menyalakan dan mematikan lampu, terhubung ke relay kedua dari modul Laurent setiap tiga detik.void draw() {
sendCommand(rele2on, myClient);
delay(3000);
sendCommand(rele2off, myClient);
delay(3000);
}
Sebaliknya, rele2on akan diganti dengan perintah "$ KE, REL, 2.1", dan bukannya rele2off, "$ KE, REL, 2.0".Sederhana bukan? Kami mengirim perintah dan menunggu tiga detik dan seterusnya dalam satu siklus. Fungsionalitasnya sederhana, tetapi tidak ada yang mengganggu Anda, yang dipersenjatai dengan informasi dari artikel ini, untuk membuat algoritma kontrol modul yang lebih kompleks dan sewenang-wenang. Dan jangan lupa bahwa modul tidak hanya dapat menghidupkan dan mematikan lampu, tetapi juga lebih banyak lagi, jadi tugasnya adalah milik Anda, Anda sekarang memiliki alat untuk mengelola modul dari sketsa pada Pemrosesan.Ini sketsa lengkapnya.Kode sketsa lengkapimport processing.net.*;
byte CRbyte = 13; // HEX 0x0D
byte LFbyte = 10; // HEX 0x0A
// Commands
String pass = "$KE,PSW,SET,Laurent";
String rele2on = "$KE,REL,2,1";
String rele2off = "$KE,REL,2,0";
// Client
Client myClient;
void sendCommand(String command, Client cl) {
cl.write(pass);
cl.write(CRbyte);
cl.write(LFbyte);
delay(10);
cl.write(command);
cl.write(CRbyte);
cl.write(LFbyte);
}
void setup() {
size(300, 300);
background(255);
myClient = new Client(this, «192.168.2.19», 2424);
}
void draw() {
sendCommand(rele2on, myClient);
delay(3000);
sendCommand(rele2off, myClient);
delay(3000);
}
Mengajar anak-anak ke program
Dan akhirnya, kami harus mengajar pemrograman anak-anak. Proses ini, seperti yang Anda sendiri pahami, tidak mudah dan bahasa pemrograman Pemrosesan sering digunakan untuk tujuan ini, sebagai salah satu yang paling sederhana dan paling jelas.Para pembuat bahasa telah berhati-hati dan menyederhanakan penulisan program sebanyak mungkin. Pekerjaan dengan grafis sangat mudah dan terjangkau. Dari menit pertama pelatihan, anak-anak Anda tidak hanya dapat menampilkan grafik di layar, tetapi bahkan menggambar kartun sederhana ketika gambar yang digambar bergerak di sekitar layar dan menanggapi gerakan dan klik mouse. Secara umum, sulit membayangkan bahasa yang lebih baik untuk mengajar pemrograman anak-anak.Kami akan mencoba membuat proses pembelajaran lebih menarik dan menyenangkan. Bagaimana? Kami akan memberi anak-anak kesempatan untuk mengontrol tidak hanya bentuk-bentuk berwarna di layar, tetapi juga benda-benda nyata di dunia nyata langsung dari program pertama mereka tentang Pemrosesan.Bagaimana melakukan ini dalam praktek? Kami mengambil sebagai dasar sketsa yang telah kami tulis dan menambahkan beberapa baris kode. Sebagai contoh, mari kita ciptakan sosok ajaib, ketika Anda menyentuhnya dengan mouse, peristiwa di dunia nyata akan terjadi, misalnya, lampu atau kipas akan menyala atau musik atau sesuatu yang lain akan mulai diputar, yang Anda punya cukup imajinasi. Ini akan memiliki efek yang jauh lebih besar pada anak daripada manipulasi sederhana dengan objek abstrak.
Jadi, kita akan membuat bentuk dan untuk ini kita akan mengatur koordinat dan ukurannya dan memperkenalkan variabel logis yang akan berisi keadaan objek (sekarang di dunia nyata).int x1 = 100;
int y1 = 100;
int dx = 100;
int dy = 100;
boolean state = false;
Sekarang yang penting. Sulit bagi seorang anak untuk menguasai pemrograman dan sulit baginya untuk beroperasi dengan konstruksi seperti itusendCommand(rele2on, myClient);
Oleh karena itu, kita perlu menyederhanakan sintaks bahasa sebanyak mungkin dan untuk ini kita akan memperkenalkan pembungkus "anak-anak" untuk fungsi yang menghidupkan dan mematikan relay.void on() {
sendCommand(rele2on, myClient);
}
void off() {
sendCommand(rele2off, myClient);
}
Setuju, on () atau off () sudah jauh lebih baik daripada sendCommand (rele2on, myClient). Dan anak jauh lebih mudah untuk membuat program dari struktur seperti itu. Dan tidak ada yang mengganggu Anda untuk menunjukkan imajinasi dan membuat nama sederhana dan mudah dimengerti lainnya untuk anak Anda.Sekarang kode untuk fungsi draw () utama.void draw() {
background(64);
if ((mouseX > x1 && mouseX < x1 + dx) &&
(mouseY > y1 && mouseY < y1 + dy)) {
fill(152,161,247, 100);
background(255);
if (!state) {
on();
}
state = true;
} else {
fill(204,240,152, 100);
if (state) {
off();
}
state = false;
}
rect(x1, y1, dx, dy);
}
Pada tahap awal pelatihan, konstruksi bahasa lain dapat dibungkus dengan cara ini, dan anak akan membuat program dari blok yang sangat sederhana. Sebagai tugas pekerjaan rumah, Anda dapat mempertimbangkan cara menyingkirkan desain seperti itu if ((mouseX > x1 && mouseX < x1 + dx) &&
(mouseY > y1 && mouseY < y1 + dy)) {
atau fill(152,161,247, 100);
dan menggantinya dengan yang sederhana dan mudah dimengerti untuk anak.
Cahaya datang tidak hanya di dunia maya di layar komputer, tetapi juga di ruang nyata. Dan pada modul ada tiga relay lagi yang sedang menunggu ide-ide kreatif Anda. Jika tidak ada yang terlintas dalam pikiran - tanyakan anak Anda - ia mungkin memiliki ide tentang ini. Di sini Anda memiliki awal "pelatihan pemrograman dan robotika", yang sangat relevan saat ini.Ini sketsa lengkapnya.Kode sketsa lengkapimport processing.net.*;
int x1 = 100;
int y1 = 100;
int dx = 100;
int dy = 100;
boolean state = false;
byte CRbyte = 13; // HEX 0x0D
byte LFbyte = 10; // HEX 0x0A
// Commands
String pass = "$KE,PSW,SET,Laurent";
String rele2on = "$KE,REL,2,1";
String rele2off = "$KE,REL,2,0";
// Client
Client myClient;
void sendCommand(String command, Client cl) {
cl.write(pass);
cl.write(CRbyte);
cl.write(LFbyte);
delay(10);
cl.write(command);
cl.write(CRbyte);
cl.write(LFbyte);
}
void on() {
sendCommand(rele2on, myClient);
}
void off() {
sendCommand(rele2off, myClient);
}
void setup() {
size(300, 300);
background(255);
myClient = new Client(this, «192.168.2.19», 2424);
}
void draw() {
background(64);
if ((mouseX > x1 && mouseX < x1 + dx) &&
(mouseY > y1 && mouseY < y1 + dy)) {
fill(152,161,247, 100);
background(255);
if (!state) {on();}
state = true;
} else {
fill(204,240,152, 100);
if (state) {off();}
state = false;
}
rect(x1, y1, dx, dy);
}
Kesimpulan
Nah, bagian ketiga dari siklus mengintegrasikan modul Laurent ke dalam sistem otomasi rumah telah berakhir. Dalam artikel ini kami tidak berbicara langsung tentang otomatisasi rumah, tetapi tidak ada yang mengganggu Anda untuk menerapkan pengetahuan yang Anda peroleh dalam membangun Rumah Pintar. Mungkin Anda akan membuat antarmuka manajemen Rumah Pintar khusus tentang Pemrosesan. Kenapa tidak? Pemrosesan memiliki segalanya untuk menyelesaikan masalah ini dan sekarang bahkan tahu cara mengelola modul Laurent.Setelah membaca semua artikel dalam seri, Anda dapat mengontrol modul Laurent dari empat sistem populer:Dan, dengan informasi dan contoh penggunaan yang begitu luas, tidak akan sulit bagi Anda untuk menambahkan dukungan untuk modul-modul ini ke sistem lain tempat Anda bekerja.