Dalam dua ulasan pertama ( 1 , 2 ), kami memperkenalkan komposisi dan fitur utama NR05 Digital Laboratory kit dari seri Alphabet of the Electronics Worker .
Kami telah berulang kali mengatakan bahwa kemungkinan rekrutmen tidak terbatas pada pengalaman dan proyek yang mencakup manual pelatihan. Opsi panggilan jauh lebih luas!Mari kita pertimbangkan bagaimana Anda dapat menerapkan kontrol perangkat eksekutif dari ponsel cerdas atau tablet Anda menggunakan Laboratorium Digital.Komunikasi antara smartphone dan modul Arduino yang diinstal pada papan ekspansi akan diimplementasikan menggunakan teknologi Bluetooth. Tentu saja, ini akan membatasi kemampuan untuk secara nirkabel mengontrol jarak sekitar 10 m, tetapi di rumah seringkali lebih banyak tidak diperlukan. Berdasarkan teknologi ini, Anda dapat berhasil mengendalikan robot sederhana atau perangkat otomatisasi rumah, dan ponsel atau ponsel cerdas Anda akan berfungsi sebagai panel kontrol universal gratis yang dapat dengan mudah diprogram ulang untuk menyelesaikan tugas dengan baik.Di Internet, Anda dapat menemukan beberapa proyek yang memungkinkan Anda menghubungkan Arduino dengan telepon melalui Bluetooth, dan proyek semacam itu tentu saja akan membantu untuk menguasai prinsip komunikasi tersebut, tetapi kelemahan utama mereka adalah ketidakmampuan untuk mengadaptasi fungsi dari program kontrol dan tampilannya untuk kebutuhan spesifik pengguna.Kami akan mengikuti jalan yang sedikit lebih rumit, tetapi lebih universal - kami akan menulis program untuk telepon dan untuk Arduino sendiri. Ini akan membantu Anda memahami prinsip penulisan aplikasi semacam itu dan menggunakannya dalam pengembangan Anda.Pertama, mari kita jelaskan pada prinsip apa koneksi yang akan kita gunakan didasarkan. Seperti yang Anda ketahui, ketika modul Arduino terhubung ke komputer, port serial virtual - port COM - dikonfigurasikan di komputer. Ini digunakan untuk mengunggah sketsa ke Arduino, serta untuk bertukar informasi antara komputer dan mikrokontroler Arduino. Juga di papan Arduino ada dua kontak yang dikombinasikan dengan pin D1 dan D0 dan ditunjuk RX dan TX - masing-masing, transmisi (Terima) dan penerimaan (Transmit) dari antarmuka UART standar.Setelah menghubungkan adaptor Bluetooth-UART ke kontak ini (modul HC-05 ternyata sesuai dengan keinginan kami, itu tidak termasuk dalam kit) kami mendapatkan saluran komunikasi perangkat keras antara perangkat yang terhubung melalui Bluetooth ke adaptor dan Arduino.Jadi, dengan menulis informasi dari satu perangkat ke port serial dan membacanya dari yang lain (ini dapat dilakukan dalam dua arah), kita dapat mengatur pertukaran informasi antar perangkat. Kecepatan pertukaran antara Arduino dan smartphone dalam hal menggunakan modul HC-05 akan menjadi 57600 baud.Untuk kejelasan, kami menggunakan LED RGB dan drive servo, yang keduanya dikendalikan oleh sinyal PWM.Berikut ini diagram koneksi komponen proyek:
Untuk mengontrol elemen eksekutif, kami akan mentransfer surat tertentu dari smartphone yang menentukan elemen mana yang dimaksudkan untuk perintah tersebut, dan nomor yang sesuai dengan parameter perintah. Parameter dapat berupa angka yang menentukan apakah aktuator harus dihidupkan atau dimatikan, atau angka yang menentukan parameter PWM.Kami memberikan teks program untuk Arduino. Program menerima data dari adaptor Bluetooth, mendekripsi mereka dan melakukan tindakan yang diperlukan: menyalakan atau mematikan LED, menyesuaikan kecerahannya atau sudut rotasi poros servo.Teks ini dilengkapi dengan jumlah komentar yang cukup untuk memahami logika program:Spoiler// LCD-
#include <Servo.h>
#include <LiquidCrystal.h>
// 5
// get_key
#define NUM_KEYS 5
int adcKeyVal[NUM_KEYS] = {30, 150, 360, 535, 760};
// LCD-
LiquidCrystal lcd(A1, A2, A3, 2, 4, 7);
//
Servo servo;
int btValue; // BT-
char command; // , COM-
void setup() {
// COM- bluetooth, , -
Serial.begin(57600);
Serial.flush();
Serial.setTimeout(4);
// LCD (16 , 2 )
lcd.begin(16, 2);
lcd.clear();
lcd.print(«Master Kit-READY»);
delay(2000);
lcd.clear();
// 3-
servo.attach(3);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(9, LOW);
}
void loop() {
int key = get_key(); // ,
// , COM-
//
if (key > 0){
Serial.print(key);
delay(500);
}
// , bluetooth,
if (Serial.available() > 0) {
// ()
command = Serial.read();
// ( )
btValue = Serial.parseInt();
// LCD , bluetooth
lcd.setCursor(0,0);
lcd.print(command);
lcd.print(' ');
lcd.print(btValue);
lcd.print(" ");
delay(10);
switch (command) {
case 'P': // P,
pinSwitch(btValue);
break;
case 'S': // S — c 1 ( )
pwm5(btValue);
break;
case 'M': // — 2 ( )
servo3(btValue);
break;
}
}
}
//
void pinSwitch(int Pin){
digitalWrite(Pin, !digitalRead(Pin));
}
// 5 ( )
void pwm5(int pwmValue){
analogWrite(5, pwmValue);
}
// 3
void servo3(int angleValue){
int angle = map(angleValue, 0, 180, 5, 180);
servo.write(angle);
}
//
int get_key()
{
int input = analogRead(A6);
int k;
for(k = 0; k < NUM_KEYS; k++)
if(input < adcKeyVal[k])
return k + 1;
return 0;
}
Sekarang, mari kita ambil program untuk smartphone, yang seharusnya mengirimkan perintah dengan parameter. Kami akan menggunakan kemampuan proyek Inventaris Aplikasi MIT untuk ini.MIT App Inventor adalah lingkungan pemrograman yang dikembangkan di Massachusetts Institute of Technology (MIT). Ini digunakan untuk mengembangkan aplikasi untuk perangkat seluler (smartphone dan komputer tablet) yang berjalan pada sistem operasi Android.Ini bukan bahasa pemrograman dalam pengertian yang diterima secara umum, saat menggunakannya, Anda tidak perlu menulis kode teks dalam bentuk baris. Program ini dibentuk dalam bentuk balok-balok yang ditampilkan di layar, yang diseret dan ditumpuk seperti puzzle. Jika blok cocok bersama sesuai dengan logika program, mereka "tetap bersatu", jika mereka tidak cocok, maka mereka tidak dapat terhubung. Awalnya, metode pemrograman ini dikembangkan untuk mendidik siswa, sehingga cukup mudah dipelajari. Tentu saja, seperti dalam setiap bahasa, ia memiliki kehalusan dan trik sendiri, tetapi situs memiliki cukup informasi dan contoh untuk menguasai bahasa. Banyak program tersedia di situs dalam domain publik.Untuk menggunakan lingkungan pemrograman App Inventor, tersedia di ai2.appinventor.mit.edu, Anda harus memiliki akun Google yang Anda beri otorisasi di situs web proyek. Program ini dibuat di browser apa saja. Komputer yang menjalankan browser ini harus selalu terhubung ke Internet. Ponsel cerdas atau tablet tempat program yang dibuat menggunakan App Inventor akan diinstal harus memiliki versi OS Android minimal 4.0.Di browser, Anda membuat desain (tampilan) dan logika program dalam bentuk blok, di tempat yang sama proyek selesai dikompilasi menjadi file yang dapat dieksekusi dengan ekstensi apk. File ini dapat diunduh dan dijalankan di perangkat seluler dengan beberapa cara. Mungkin yang paling nyaman dari metode ini adalah menginstal aplikasi MIT2 AI Companion pada perangkat seluler (ada di Play Market). Penemu Aplikasi menghasilkan kode QR yang berisi tautan ke aplikasi yang Anda buat, dan AI2 Companion membaca dan menginstal (atau memperbarui) itu. Anda bahkan dapat menggambar dan mengunggah ikon Anda sendiri untuk meluncurkan aplikasi Anda. Dengan demikian, Penemu Aplikasi memungkinkan Anda membuat aplikasi yang sepenuhnya fungsional dan intuitif untuk Android. Meskipun kode mereka tidak optimal, tetapi kenyamanan,kesederhanaan dan kecepatan membuat aplikasi seperti itu dalam banyak kasus cukup membayar kekurangan ini.Aplikasi yang berfungsi dalam proyek kami diunggah ke galeri AI2 Appiventor MIT dengan nama BToothHC05.Aplikasi ini memungkinkan Anda untuk menemukan perangkat Bluetooth, menyambungkannya, menghasilkan perintah dengan parameter dan mengirimkannya ke perangkat yang terhubung, membaca data dari perangkat dan menampilkan jumlah tombol yang ditekan pada papan ekspansi.Desain layar terlihat sesuai dengan gambar berikut:
Ada elemen (kotak hijau yang melambangkan gambar yang disisipkan) yang tidak membawa fungsionalitas, tetapi berfungsi sebagai pemisah untuk meningkatkan penampilan.Jika Anda pergi ke situs web AppInventor dan berada di lingkungan pemrograman dalam mode Designer, maka ketika Anda mengklik kanan pada elemen desain yang sesuai, Anda akan melihat propertinya di sebelah kanan. Setelah beralih ke mode Blok, Anda dapat melihat semua blok aplikasi yang sedang dikembangkan.Nyaris semua blok, pada kenyataannya, adalah penangan acara: menekan tombol pada layar sentuh, menggeser slider slider, memicu timer, mengubah kemiringan ponsel (ya, hampir semua sensor perangkat seluler dapat digunakan di App Inventor!).Pertimbangkan tujuan fungsional setiap blok.
Dalam blok ini, ketika Anda mengklik tombol layar Sambungkan / Putuskan (acara Button4Connect.Klik), perangkat Bluetooth terputus (hubungi BluetoothClient1.Disconnect) jika sudah terhubung (BluetoothClient1.IsConnected), teks pada tombol berubah menjadi "Terputus" dan warnanya berubah menjadi abu-abu, atau memanggil daftar perangkat yang memungkinkan untuk terhubung (ListPicker1.Open) jika tidak ada koneksi. Seperti yang Anda lihat, blok ini cukup mudah dibaca dari sudut pandang bahkan seorang programmer pemula!
Dalam tiga blok ini (dari atas ke bawah):- tetapkan variabel global (semua blok akan "melihatnya") switch1 untuk berganti mode operasi: slider atau miring;- saat memanggil daftar perangkat ListPicker1 untuk koneksi, kami ingin menampilkan alamat dan namanya;- ketika memilih perangkat dari daftar ListPicker1, sambungkan ke sana, ubah warna tombol dan tampilkan teks Connected to Device Name. Nama Perangkat dibentuk dari urutan karakter yang panjang; 8 karakter diambil mulai dari tanggal 18.
Tiga blok yang ditunjukkan di atas mengirimkan melalui koneksi yang telah ditetapkan karakter "P5", "P9" dan "P6", yang masing-masing harus menghidupkan atau mematikan warna merah, hijau atau biru LED.
Ketika slider Slider1, yang mengontrol kecerahan warna merah LED, digeser, blok ini mengirimkan simbol "S" dan angka-angka yang sesuai dengan posisi slider.
Ketika Slider2, yang mengontrol servo, digeser, jika mode yang sesuai aktif (switch1 = 0), kami mengirim karakter M dan posisi slider.
Jika mode operasi dari sensor kemiringan dihidupkan, unit mengirimkan M dan sudut kemiringan + 90 derajat untuk mengendalikan drive servo.
Unit ini mengalihkan mode operasi servo dari slider atau tilt sensor dan karenanya mengubah teks pada tombol (Teks) dan warnanya (BackgroundColor).
Dua blok ini dipicu oleh peristiwa pengatur waktu. Blok pertama (Clock1) setiap 0,1 detik (interval ini diatur dalam properti timer1 Clock1) memeriksa data apakah tombol pada papan ekspansi telah ditekan. Jika tombol itu ditekan, maka dalam 1 detik (blok kedua - Clock2) informasi tentang jumlah tombol yang ditekan ditampilkan pada layar smartphone.Kita sekarang akan melihat video bagaimana kontrol LED dan servo dari smartphone sesuai dengan program kami benar-benar terjadi.Dengan cara yang sama, sejumlah besar aktuator yang terhubung ke Arduino dapat dikendalikan. Ini tidak memerlukan pekerjaan besar programmer ketika menggunakan AppInventor, dan pemrograman Arduino cukup sederhana dan jelas. Anda dapat dengan mudah menambah atau menghapus blok program yang tidak perlu dan mendapatkan fungsionalitas yang Anda butuhkan.Seperti yang dapat Anda lihat dari materi ini, papan ekspansi dari kit Laboratorium Digital memungkinkan Anda menggunakan modul tambahan Arduino dengan cukup mudah dan visual.Aplikasi.Mulai di lingkungan pemrograman MIT AppInventor.Seperti yang sudah kami tulis, untuk bekerja di proyek AppInventor, Anda memerlukan akun Google. Jika Anda memiliki ponsel cerdas di Android, kemungkinan besar Anda sudah memiliki akun seperti itu. Jika tidak, Anda bisa mendapatkannya dengan masuk ke Google melalui tautan berikut .Selanjutnya, buka situs web AppInventor dan klik tautan Buat Aplikasi !, yang terletak di sudut kanan atas halaman utama situs web, buka situs web lingkungan pemrograman.Sebagai ilustrasi, di bawah ini adalah tautan ke video pendek yang menunjukkan pembuatan program sederhana yang menampilkan teks ketika Anda mengklik tombol yang terbentuk pada layar sentuh smartphone.