Cara membuat program untuk Windows di Arduino

Cara membuat program untuk Windows di Arduino

Suatu hari saya punya ide gila untuk dibawa 500 laser pointer di satu tempat. Saya menghabiskan banyak waktu dan melakukannya. Ternyata spektakuler dan tidak berguna, tapi saya menyukainya. Enam bulan lalu saya punya ide gila lagi. Kali ini, sama sekali tidak spektakuler, tapi jauh lebih bermanfaat. Saya juga menghabiskan banyak waktu untuk itu. Dan dalam artikel ini, saya menyajikan versi beta dari ide gila kedua saya.

Saya menamai proyek tersebut Nanonyam (Nanonyam) dan bahkan membuat logo untuknya (saya menggambar selama 5 menit).

Cara membuat program untuk Windows di Arduino

Bagi mereka yang berpikir tentang Arduino, kita dapat mengatakan bahwa Nanonyam adalah perisai Arduino virtual untuk mengontrol Windows.

Dengan kata lain, Nanonyam adalah mesin virtual yang menggunakan firmware untuk mikrokontroler AVR (disarankan ATMEGA2560) sebagai bytecode. Di dalam mesin virtual ini terdapat simulator inti AVR, tetapi alih-alih perangkat periferal, yang terletak di alamat SRAM dari 0x0060 hingga 0x01FF, terdapat antarmuka khusus untuk fungsi virtual (termasuk fungsi Windows API). Dan di sini sangat penting untuk segera dipahami: kode untuk Nanonyam tidak boleh memiliki akses apa pun ke rentang memori yang ditentukan, agar tidak memanggil secara tidak sengaja, misalnya, fungsi menghapus file atau memformat disk. Rentang memori SRAM lainnya dari 0x0200 hingga 0xFFFF (ini lebih dari mikrokontroler asli) tersedia untuk pengguna untuk tujuan apa pun. Saya segera mencatat bahwa ada perlindungan khusus terhadap peluncuran firmware yang tidak disengaja dari mikrokontroler asli (atau firmware dari arsitektur lain): sebelum mengaktifkan fungsi "berbahaya", Anda perlu memanggil fungsi virtual rumit khusus. Ada beberapa fitur keamanan lainnya juga.

Untuk membuat program untuk Nanonyam, Anda perlu menggunakan pustaka khusus yang mengimplementasikan semua fungsi virtual yang tersedia saat ini. Unduh mesin virtual dan perpustakaan Nanonyam untuk itu Anda kemudian dapat. Tapi halaman deskripsi fungsi virtual. Dan ya, situs saya sangat primitif dan tidak diadaptasi untuk perangkat seluler.

Nanonyam gratis untuk penggunaan rumah dan komersial. Program Nanonyam disediakan berdasarkan "sebagaimana adanya". Kode sumber tidak disediakan.

Program ini sedang dalam tahap pengujian. Menerapkan sekitar 200 fungsi virtual yang memungkinkan Anda membuat program sederhana untuk Windows.
Jelas, membuat sesuatu yang rumit dalam mesin virtual seperti itu tidak akan berhasil, karena memori untuk kode tersebut hanya 256 kB. Data dapat disimpan dalam file terpisah, buffer untuk bagian grafik diimplementasikan secara eksternal. Semua fungsi disederhanakan dan diadaptasi untuk arsitektur 8-bit.

Apa yang dapat Anda lakukan di Nanonyam? Saya datang dengan beberapa masalah.

Pengembangan blok program

Saya pernah perlu mendesain menu yang kompleks untuk tampilan grafis 128x64 dot. Saya benar-benar tidak ingin terus-menerus memuat firmware ke mikrokontroler asli untuk melihat tampilan pikselnya. Maka lahirlah ide Nanonyam. Gambar di bawah menunjukkan gambar dari tampilan OLED asli dari salah satu item di menu yang sama. Sekarang saya dapat mengerjakannya tanpa perangkat nyata.

Cara membuat program untuk Windows di Arduino

Nanonyam (dalam ide terakhirnya) adalah alat yang bagus untuk mengerjakan blok program untuk mikrokontroler, karena ada fungsi untuk bekerja dengan grafik (Anda dapat mensimulasikan tampilan dan indikator), dengan file (Anda dapat membuat log, membaca data uji), dengan keyboard (Anda dapat membaca hingga 10 tombol sekaligus), dengan port COM (ini adalah item terpisah).

Membuat Program Cepat

Misalnya, Anda perlu memproses 100500 file teks dengan cepat. Masing-masing perlu dibuka, sedikit dimodifikasi menurut beberapa algoritme sederhana, disimpan dan ditutup. Jika Anda seorang master Python, maka saya mengucapkan selamat kepada Anda, Anda memiliki segalanya. Tetapi jika Anda seorang arduino yang tangguh (dan jumlahnya banyak), maka Nanonyam akan membantu Anda dalam menyelesaikan masalah ini. Ini adalah tujuan kedua saya di Nanonyam: untuk menambahkan banyak fungsi berguna seperti pemrosesan teks, mengambil tangkapan layar, atau mensimulasikan penekanan tombol dalam sistem (yang semuanya sudah ada), serta banyak fungsi lain untuk menyelesaikan tugas rutin .

Menguji perangkat keras melalui port COM

Nanonyam dapat bertindak sebagai terminal yang bekerja sesuai dengan algoritme Anda. Anda dapat menggambar menu kecil untuk mengontrol perangkat dan menampilkan data yang diterima dari port. Anda dapat menyimpan dan membaca data dari file untuk dianalisis. Alat praktis untuk debugging dan kalibrasi perangkat keras sederhana, serta untuk membuat panel kontrol instrumen virtual sederhana. Bagi mahasiswa dan ilmuwan muda, proyek ini bisa sangat bermanfaat.

Pelatihan pemrograman

Namun, seperti halnya seluruh proyek Arduino, kegunaan utama Nanonyam terletak pada penyederhanaan fungsi, antarmuka, dan bootloader. Oleh karena itu, proyek ini harus menarik bagi pemrogram pemula dan mereka yang puas dengan level arduino. Ngomong-ngomong, saya sendiri masih belum mempelajari arduino secara detail, karena saya selalu menggunakan WinAVR atau AVR Studio, tetapi memulai dengan assembler. Oleh karena itu, contoh program di bawah ini akan sedikit salah, tetapi cukup berhasil.

Halo Habr!

Saatnya mengenal beberapa fitur Nanonyam dan menulis program sederhana. Kami akan menulis di Arduino, tetapi tidak dengan cara yang biasa, tetapi dengan cara yang saya bisa sekarang (saya sudah mengatakan bahwa saya belum menemukan lingkungan ini dengan baik). Pertama, buat sketsa baru dan pilih papan Mega2560.

Cara membuat program untuk Windows di Arduino

Simpan sketsa ke file dan salin berikutnya Perpustakaan nanonyam. Akan benar untuk menyertakan header perpustakaan, tetapi saya tidak tahu cara menulis kompilasi file individual di Arduino, jadi untuk saat ini kami hanya akan menyertakan perpustakaan secara langsung (dan sekaligus):

#include <stdio.h>
#include "NanonyamnN_System_lib.c"
#include "NanonyamnN_Keyboard_lib.c"
#include "NanonyamnN_File_lib.c"
#include "NanonyamnN_Math_lib.c"
#include "NanonyamnN_Text_lib.c"
#include "NanonyamnN_Graphics_lib.c"
#include "NanonyamnN_RS232_lib.c"

Akan lebih tepat lagi jika dibuatkan modul khusus β€œNanonyam for Arduino” yang bisa dipasang langsung dari Arduino. Segera setelah saya mengetahuinya, saya akan melakukannya, tetapi untuk saat ini saya hanya menunjukkan esensi bekerja dengan mesin virtual. Kami menulis kode berikut:

//Π‘Ρ€Π°Π·Ρƒ послС запуска рисуСм тСкст Π² ΠΎΠΊΠ½Π΅
void setup() {
  sys_Nanonyam();//ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅ΠΌ ΠΊΠΎΠ΄ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹
  g_SetScreenSize(400,200);//Π—Π°Π΄Π°Ρ‘ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ дисплСя 400Ρ…200 Ρ‚ΠΎΡ‡Π΅ΠΊ
  sys_WindowSetText("Example");//Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°
  g_ConfigExternalFont(0,60,1,0,0,0,"Arial");//Π—Π°Π΄Π°Ρ‘ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ Windows Π² ячСйкС ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² 0
  g_SetExternalFont(0);//Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ячСйку ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² 0 для рисования тСкста
  g_SetBackRGB(0,0,255);//Π¦Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° синий
  g_SetTextRGB(255,255,0);//Π¦Π²Π΅Ρ‚ тСкста ΠΆΡ‘Π»Ρ‚Ρ‹ΠΉ
  g_ClearAll();//ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌ экран (Π·Π°Π»ΠΈΠ²ΠΊΠ° Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π°)
  g_DrawTextCenterX(0,400,70,"Hello, Habr!");//РисуСм надпись
  g_Update();//Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ графичСский Π±ΡƒΡ„Π΅Ρ€ Π½Π° экран
}

//ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΆΠ΄Ρ‘ΠΌ закрытия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
void loop() {
  sys_Delay(100);//Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΊΠ° процСссора
}

Sketsa dengan program ini dapat diunduh di sini. Penjelasan rinci tentang fungsi cari di situs. Saya harap komentar dalam kode ini cukup untuk memahami intinya. Di sini berfungsi sys_Nanonyam() memainkan peran sebagai "kata sandi" untuk mesin virtual, yang menghilangkan batasan pada fungsi virtual. Tanpa fungsi ini, program akan ditutup setelah 3 detik pengoperasian.

Kami menekan tombol "Periksa" dan seharusnya tidak ada kesalahan.

Cara membuat program untuk Windows di Arduino

Sekarang Anda perlu mendapatkan file biner (firmware). Pilih menu"Sketsa>>Ekspor file biner (CTRL+ALT+S)".

Cara membuat program untuk Windows di Arduino

Ini akan menyalin dua file HEX ke folder sketsa. Kami hanya mengambil file tanpa awalan "with_bootloader.mega".

Ada beberapa cara untuk menentukan file HEX ke mesin virtual Nanonyam, semuanya dijelaskan di halaman ini. Saya sarankan untuk membuat di sebelah file Nanonyam.exe file itu jalur, untuk mendaftarkan path lengkap ke file HEX kami. Setelah itu Anda bisa lari Nanonyam.exe. Kami mendapatkan jendela dengan tulisan kami.

Cara membuat program untuk Windows di Arduino

Demikian pula, Anda dapat membuat program di lingkungan lain, seperti AVR Studio atau WinAVR.

Di sinilah kita mengakhiri perkenalan kita dengan Nanonyam. Gagasan utama harus jelas. Lebih banyak contoh ada di situs web.. Jika ada cukup banyak orang yang mau menggunakan proyek ini, saya akan membuat lebih banyak contoh dan terus "mengisi" pustaka fungsi virtual. Gagasan konkret untuk pengembangan proyek dan laporan kegagalan fungsi, bug, dan bug diterima. Dianjurkan untuk mengarahkan mereka ke kontak, ditunjukkan di situs web. Dan diskusi diterima di komentar.

Terima kasih atas perhatian Anda dan pemrograman yang bagus!

Sumber: www.habr.com

Tambah komentar