Mengelola Arduino Melalui Internet dengan PC - Pengalaman Pemula

Halo semuanya. Dalam artikel ini saya akan berbicara tentang bagaimana saya berhasil menerapkan kontrol Arduino melalui Internet menggunakan PC yang terhubung ke Internet. Secara umum, metode ini dapat digunakan untuk mikrokontroler apa pun, misalnya, PIC. Metodenya cukup ek, ada banyak yang harus dimodernisasi dan ada banyak skema yang lebih maju, tetapi dalam kasus paling sederhana ini sudah cukup.

Alih-alih bergabung


Saya ingin segera mengatakan bahwa dalam artikel ini saya tidak akan masuk terlalu jauh ke dalam seluk-beluk pemrograman, diasumsikan bahwa pembaca memiliki setidaknya dasar-dasar minimal. Saya akan memberi tahu Anda secara umum bagaimana sumber daya digunakan dan tentang poin-poin menarik.

Prasyarat untuk penciptaan metode ini yang saya miliki selama pembuatan mobil listrik saya: Zhmyak di sini! Saya harus mengatakan segera bahwa itu dibuat lebih dan lebih karena minat olahraga daripada untuk kerja praktek yang serius, tetapi tetap berfungsi dan dapat bermanfaat bagi seseorang.

Apa yang membangun seluruh sistem dan bagaimana penerapannya dalam perangkat keras


Skema kerjanya adalah sebagai berikut: dari server kita membaca file di mana data disimpan menggunakan program yang berjalan di PC / laptop. Program ini melalui USB mengirimkan data ke controller. Pengontrol menerima data dan melakukan tindakan pada mereka. Skema dengan server menarik karena Anda dapat mengontrol skema tanpa aplikasi, cukup dengan mengunjungi situs dari smartphone / tablet / pc / laptop mana saja di dunia di mana ada akses Internet.

PS. Tentang sisi server dijelaskan di bawah ini.

Dalam artikel ini saya akan mengontrol Arduino MEGA 2560 (mitra Cina), tetapi di balik layar rangkaian bekerja dengan lancar dengan PIC16F877A, satu-satunya hal yang harus saya gunakan adalah adaptor USB-TTL:



Jelas bahwa program PIC sedikit berbeda dari program Arduino, karena berbeda jenis MK, tetapi prinsipnya sama:

Kami menerima data melalui port COM, membandingkannya dengan tabel perintah internal dan melakukan tindakan yang sesuai.

Skema awalnya tampak sangat sederhana bagi saya, tetapi ada satu TETAPI - tidak ada program yang akan membaca file di Internet dan mengirim data ke port COM. Karena itu, saya harus menulis program seperti itu.

Program ini ditulis di VB6. Untuk membaca file dari server, komponen VB6 digunakan: Microsoft Internet Transfer Control 6.0. Dengan bantuannya, file teks pada server cukup dibaca menjadi variabel string. Setelah membaca baris ini, dikirim ke port COM menggunakan komponen VB6: Microsoft Comm Control 6.0. Seluruh proses membaca file dan mengirim baris dibaca dalam satu lingkaran menggunakan penghitung waktu. Interval pengatur waktu dapat diubah dalam konfigurasi program, atau langsung selama operasi. Selain itu, Anda dapat memilih mode operasi port, nomornya, mode operasi koneksi Internet dan tautan ke file yang dapat dibaca.

Saya ingin membuat pernyataan bahwa dengan ukuran file besar dan celah kecil, program macet, tetapi terus bekerja. Ukuran buffer program saya adalah 512 byte. Mengingat bahwa MK saya memiliki buffer lebih sedikit, ini sudah cukup.

Poin penting. Sebuah program di MK tidak dapat menguraikan data, ia hanya dapat membaca karakter mana yang dikirim ke input melalui port serial. Tanpa kesalahan, saya berhasil menerima alfabet Latin (26 karakter AZ dan 10 digit 0-9). Sebanyak 36 tim, jika algoritma ini diselesaikan dan penguraian data dimasukkan ke dalam MK, maka semua data dapat ditransfer. Ada juga kemungkinan perangkat lunak "doping" untuk pertukaran data dua arah.

Pemilihan server dan sisi server


Untuk sisi server, setiap server dengan dukungan PHP , bahkan jika berjalan pada PC pribadi, hanya akan memiliki IP statis, tetapi saya pribadi menggunakan Jino sewaan. Bagian server dalam contoh saya terdiri dari dua file: halaman HTML dengan formulir dengan tombol ON / OFF untuk LED dan skrip PHP yang mengubah konten file TXT dari mana program yang berjalan pada PC membaca data.

Perangkat lunak


Kode HTML Bentuk dengan 2 tombol, LED on / off di papan:

<html>
<head>
<title> </title>
</head>  
<body>
<form action="work.php" method="post">
:
<p>
<input type="submit" name="sv" value="On" />
<input type="submit" name="sv" value="Off" />
<p>
</form>    
</body>    
</html>

Kode PHP, di sini kita menulis perintah A ke file, jika LED harus menyala, dan B jika harus padam:

<?php
$cm = fopen("command.txt", "w");
switch ($_POST['sv']) {
case "On":
fwrite($cm,"a");    
    break;   
case "Off":
fwrite($cm,"b");    
    break;  
}
fclose($cm); 
?>

Sekarang kode aktual untuk Arduino:

int val; //      
void setup() {
Serial.begin(9600); //   
pinMode(13, OUTPUT); //   13  
}
void loop() {
// ,   - 
if (Serial.available()) {
val = Serial.read(); //  val   
if (val == 'a') {digitalWrite(13, HIGH);} //  a  
if (val == 'b') {digitalWrite(13, LOW);} //  b  
}}

Program itu sendiri untuk membaca informasi pada server dengan meneruskan ke port COM dan kode sumbernya ada di arsip di tautan: Yandex-Disk Program ini dikompilasi ke dalam beberapa versi kode, mungkin ada beberapa perbedaan dalam operasi, tetapi seharusnya tidak. Pada awal pertama file EXE, file bantuan dan file konfigurasi dibuat. Data dari file ini dibaca ketika program dimulai, jika ada. Jika file tidak ada (misalnya, pada awal pertama program), maka file konfigurasi dibuat dengan nilai default.

Hasil kerja



Alih-alih sebuah kesimpulan


Dalam contoh ini, saya menerapkan algoritma "ek" sederhana yang berfungsi. Tentu saja ada tempat untuk mengembangkan lebih lanjut, namun demikian, 36 tim sudah dapat dikirim dalam bentuk ini. Jika Anda menerapkan penguraian data yang masuk dalam mikrokontroler, maka Anda dapat mentransfer data apa pun. Untuk tugas saya, 36 tim akan cukup dengan kepala, dan selain itu, ini adalah pengalaman pemula :)

All Articles