Cách tạo chương trình cho Windows trong Arduino

Cách tạo chương trình cho Windows trong Arduino

Một ngày nọ, tôi có một ý tưởng điên rồ là mang 500 con trỏ laser ở một nơi. Tôi đã dành rất nhiều thời gian và đã làm được. Nó trở nên ngoạn mục và vô dụng, nhưng tôi thích nó. Sáu tháng trước, tôi có một ý tưởng điên rồ khác. Lần này, không ngoạn mục chút nào, nhưng hữu ích hơn nhiều. Tôi cũng đã dành rất nhiều thời gian cho nó. Và trong bài viết này, tôi trình bày phiên bản beta của ý tưởng điên rồ thứ hai của mình.

Tôi gọi dự án là Nanonyam (Nanonyam) và thậm chí còn nghĩ ra logo cho nó (tôi đã vẽ trong 5 phút).

Cách tạo chương trình cho Windows trong Arduino

Đối với những người nghĩ về Arduino, chúng ta có thể nói rằng Nanonyam là một lá chắn Arduino ảo để điều khiển Windows.

Nói cách khác, Nanonyam là một máy ảo sử dụng phần sụn cho bộ vi điều khiển AVR (ATMEGA2560 được khuyến nghị) làm mã byte. Bên trong máy ảo này là một trình giả lập lõi AVR, nhưng thay vì các thiết bị ngoại vi, được đặt tại các địa chỉ SRAM từ 0x0060 đến 0x01FF, có một giao diện đặc biệt cho các chức năng ảo (bao gồm các chức năng API của Windows). Và ở đây, điều rất quan trọng là phải hiểu ngay: mã cho Nanonyam không được có bất kỳ quyền truy cập nào vào phạm vi bộ nhớ đã chỉ định, để không vô tình gọi, chẳng hạn như chức năng xóa tệp hoặc định dạng đĩa. Phần còn lại của bộ nhớ SRAM nằm trong khoảng từ 0x0200 đến 0xFFFF (điều này còn hơn cả trong một bộ vi điều khiển thực) có sẵn cho người dùng cho bất kỳ mục đích nào. Tôi lưu ý ngay rằng có một biện pháp bảo vệ đặc biệt chống lại việc vô tình khởi chạy phần sụn của bộ vi điều khiển thực (hoặc phần sụn từ kiến ​​​​trúc khác): trước khi kích hoạt các chức năng "nguy hiểm", bạn cần gọi một chức năng ảo phức tạp đặc biệt. Ngoài ra còn có một số tính năng bảo mật khác.

Để tạo các chương trình cho Nanonyam, bạn cần sử dụng các thư viện đặc biệt triển khai tất cả các chức năng ảo hiện có. Tải xuống máy ảo Nanonyam và các thư viện cho nó Bạn có thể sau đó. Tuy nhiên, trang mô tả chức năng ảo. Và vâng, trang web của tôi còn rất thô sơ và không phù hợp với thiết bị di động.

Nanonyam miễn phí cho mục đích sử dụng gia đình và thương mại. Chương trình Nanonyam được cung cấp trên cơ sở "nguyên trạng". Mã nguồn không được cung cấp.

Chương trình hiện đang trong giai đoạn thử nghiệm. Đã triển khai khoảng 200 chức năng ảo cho phép bạn tạo các chương trình đơn giản cho Windows.
Rõ ràng, việc tạo một thứ gì đó phức tạp trong một máy ảo như vậy sẽ không hiệu quả, vì bộ nhớ dành cho mã chỉ là 256 kB. Dữ liệu có thể được lưu trữ trong các tệp riêng biệt, bộ đệm cho phần đồ họa được triển khai bên ngoài. Tất cả các chức năng được đơn giản hóa và thích nghi với kiến ​​trúc 8-bit.

Bạn có thể làm gì ở Nanonyam? Tôi đã đưa ra một vài vấn đề.

Phát triển các khối chương trình

Tôi đã từng cần thiết kế một menu phức tạp cho màn hình đồ họa 128x64 điểm. Tôi thực sự không muốn liên tục tải phần sụn vào một bộ vi điều khiển thực để xem các pixel trông như thế nào. Và thế là ý tưởng về Nanonyam ra đời. Hình bên dưới hiển thị hình ảnh từ màn hình OLED thực của một trong các mục trên cùng một menu. Bây giờ tôi có thể làm việc với nó mà không cần thiết bị thực.

Cách tạo chương trình cho Windows trong Arduino

Nanonyam (theo ý tưởng cuối cùng của nó) là một công cụ tốt để xử lý các khối chương trình cho vi điều khiển, vì có các chức năng làm việc với đồ họa (bạn có thể mô phỏng màn hình và chỉ báo), với các tệp (bạn có thể tạo nhật ký, đọc dữ liệu thử nghiệm), với bàn phím (bạn có thể đọc tối đa 10 nút cùng lúc), có cổng COM (ở đây có mục riêng).

Tạo chương trình nhanh

Ví dụ: bạn cần xử lý nhanh 100500 tệp văn bản. Mỗi cái cần được mở, sửa đổi một chút theo một số thuật toán đơn giản, được lưu và đóng. Nếu bạn là một bậc thầy Python, thì tôi xin chúc mừng bạn, bạn có tất cả mọi thứ. Nhưng nếu bạn là một arduino cứng (và có rất nhiều người trong số họ), thì Nanonyam sẽ giúp bạn giải quyết vấn đề này. Đây là mục tiêu thứ hai của tôi trong Nanonyam: thêm nhiều chức năng hữu ích như xử lý văn bản, chụp ảnh màn hình hoặc mô phỏng thao tác gõ phím trong hệ thống (nhân tiện, tất cả đều đã có), cũng như nhiều chức năng khác để giải quyết các công việc thường ngày .

Kiểm tra phần cứng qua cổng COM

Nanonyam có thể hoạt động như một thiết bị đầu cuối hoạt động theo thuật toán của bạn. Bạn có thể vẽ một menu nhỏ để điều khiển thiết bị và hiển thị dữ liệu nhận được từ cổng. Bạn có thể lưu và đọc dữ liệu từ các tệp để phân tích. Một công cụ tiện dụng để gỡ lỗi và hiệu chỉnh phần cứng đơn giản, cũng như để tạo các bảng điều khiển thiết bị ảo đơn giản. Đối với sinh viên và các nhà khoa học trẻ, dự án này có thể rất hữu ích.

Đào tạo lập trình

Tuy nhiên, như với toàn bộ dự án Arduino, tính hữu ích chính của Nanonyam nằm ở việc đơn giản hóa các chức năng, giao diện và bộ tải khởi động. Do đó, dự án này nên được các lập trình viên mới làm quen và những người hài lòng với mức độ của arduino quan tâm. Nhân tiện, bản thân tôi vẫn chưa nghiên cứu chi tiết về arduino, vì tôi luôn sử dụng WinAVR hoặc AVR Studio, nhưng bắt đầu với trình biên dịch chương trình. Do đó, chương trình ví dụ dưới đây sẽ sai một chút, nhưng khá hiệu quả.

Xin chào Habr!

Đã đến lúc làm quen với một số tính năng của Nanonyam và viết một chương trình đơn giản. Chúng tôi sẽ viết bằng Arduino, nhưng không phải theo cách thông thường mà theo cách tôi có thể làm bây giờ (tôi đã nói rằng tôi vẫn chưa hiểu rõ về môi trường này). Đầu tiên, tạo một bản phác thảo mới và chọn bảng Mega2560.

Cách tạo chương trình cho Windows trong Arduino

Lưu bản phác thảo vào một tệp và sao chép tiếp theo Thư viện Nanonyam. Sẽ đúng hơn nếu bao gồm các tiêu đề của thư viện, nhưng tôi không biết cách viết trình biên dịch các tệp riêng lẻ trong Arduino, vì vậy bây giờ chúng tôi sẽ chỉ bao gồm các thư viện trực tiếp (và tất cả cùng một lúc):

#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"

Sẽ đúng hơn nếu tạo ra một mô-đun đặc biệt “Nanonyam cho Arduino”, có thể được cài đặt trực tiếp từ Arduino. Ngay khi tôi tìm ra nó, tôi sẽ làm điều đó, nhưng hiện tại tôi chỉ đang trình bày bản chất của việc làm việc với một máy ảo. Chúng tôi viết đoạn mã sau:

//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}

Phác thảo với chương trình này có thể tải xuống tại đây. Mô tả chi tiết chức năng tìm kiếm trên trang web. Tôi hy vọng các nhận xét trong mã này là đủ để nắm được ý chính của nó. chức năng ở đây sys_Nanonyam() đóng vai trò "mật khẩu" cho máy ảo, giúp loại bỏ các hạn chế đối với các chức năng ảo. Nếu không có chức năng này, chương trình sẽ đóng sau 3 giây hoạt động.

Chúng tôi nhấn nút "Kiểm tra" và sẽ không có bất kỳ lỗi nào.

Cách tạo chương trình cho Windows trong Arduino

Bây giờ bạn cần lấy một tệp nhị phân (phần sụn). Chọn menu "Phác thảo>>Xuất tệp nhị phân (CTRL+ALT+S)".

Cách tạo chương trình cho Windows trong Arduino

Thao tác này sẽ sao chép hai tệp HEX vào thư mục phác thảo. Chúng tôi chỉ lấy tệp không có tiền tố "with_bootloader.mega".

Có một số cách để chỉ định tệp HEX cho máy ảo Nanonyam, tất cả chúng đều được mô tả trên trang này. Tôi đề nghị tạo bên cạnh tệp Nanonyam.exe tập tin con đường, trong đó đăng ký đường dẫn đầy đủ đến tệp HEX của chúng tôi. Sau đó bạn có thể chạy Nanonyam.exe. Chúng tôi nhận được một cửa sổ với dòng chữ của chúng tôi.

Cách tạo chương trình cho Windows trong Arduino

Tương tự, bạn có thể tạo chương trình trong các môi trường khác, chẳng hạn như AVR Studio hoặc WinAVR.

Đây là nơi chúng ta kết thúc quá trình làm quen với Nanonyam. Ý chính phải rõ ràng. Nhiều ví dụ hơn là trên trang web.. Nếu có đủ người sẵn sàng sử dụng dự án này, thì tôi sẽ làm thêm các ví dụ và tiếp tục "lấp đầy" các thư viện chức năng ảo. Ý tưởng cụ thể cho sự phát triển của dự án và các báo cáo về sự cố, lỗi và lỗi được chấp nhận. Nên hướng họ đến các địa chỉ liên hệ, chỉ định trên trang web. Và thảo luận được chào đón trong các ý kiến.

Cảm ơn tất cả các bạn đã chú ý và lập trình tốt!

Nguồn: www.habr.com

Thêm một lời nhận xét