Chương I: TỔNG QUAN HỆ TIN HỌC PHÂN TÁN
1.6. Mạch vi xử lý Arduino
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn. Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit. Những Model hiện tại có trên thị trường thường được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/O (vào/ra) kỹ thuật số tương thích với nhiều board mở rộng khác nhau.
Được giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích lập trình, sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác với môi trường thông qua các cảm biến và các thiết bị vận hành. Cộng đồng phá triển phát triển Arduino rất đông đảo, sẵn sàng hỗ trợ những người yêu thích hoặc mới bắt, có rất nhiều ví dụ mẫu và tài liệu để nghiên cứu. Đi cùng với nó là một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thường và cho phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc C++.
Các board Arduino có thể được đặt hàng ở dạng được lắp sẵn hoặc dưới dạng các kit tự-làm-lấy. Thông tin thiết kế phần cứng được cung cấp công khai để những ai muốn tự làm một mạch Arduino bằng tay có thể tự mình thực hiện được (mã nguồn mở). Người ta ước tính trung bình mỗi năm có hơn 700.000 mạch chính thức đã được đưa tới tay người dùng. Giá của các board Arduino dao động xung quanh €20, hoặc $27 hoặc 574.468VNĐ, nếu tự làm thì giá có thể giảm xuống thấp hơn 150.000VNĐ.
1.6.1. Phần cứng
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình và có thể mở rộng với các module, các mạch tích hợp thêm vào có thể dễ dàng thay đổi, được gọi là shield. Các shield truyền thông tin với board Arduino trực tiếp thông qua các chân khác nhau. Arduino chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280, và ATmega2560. Một vi điều khiển Arduino cũng có thể được lập trình sẵn với một boot loader cho phép đơn giản là upload chương trình vào bộ nhớ flash on-chip, so với các thiết bị khác thường phải cần một bộ nạp bên ngoài. Điều này giúp cho việc sử dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như là một bộ nạp chương trình.
Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử
dụng cho những mạch ngoài. Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chân I/O kỹ thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6 chân input analog, có thể được sử dụng như là 6 chân I/O số. Nhiều shield ứng dụng plug-in cũng được thương mại hóa.
Hı̀nh 6: Các loại mạch Arduino 1.6.2. Phần mềm
Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng cross- platform (nền tảng) được viết bằng Java, và từ IDE này sẽ được sử dụng cho Ngôn ngữ lập trình xử lý (Processing programming language) và project Wiring. Nó được thiết kế để dành cho những người mới tập làm quen với lĩnh vực phát triển phần mềm. Nó bao gồm một chương trình code editor với các chức năng như đánh dấu cú pháp, tự động brace matching, và tự động canh lề, cũng như compile(biên dịch) và upload chương trình lên board chỉ với 1 cú nhấp chuột. Một chương trình hoặc code viết cho Arduino được gọi là một sketch.
Các chương trình Arduino được viết bằng C hoặc C++. Arduino IDE đi kèm với một thư viện phần mềm được gọi là "Wiring", từ project Wiring gốc, có thể giúp các thao tác input/output được dễ dàng hơn. Người dùng chỉ cần định nghĩa 2 hàm để tạo ra một chương trình vòng thực thi (cyclic executive) có thể chạy được:
setup(): hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết lập các cài đặt
loop(): hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch Một chương trình điển hình cho một bộ vi điều khiển đơn giản chỉ là làm cho một bóng đèn Led sáng/tắt. Trong môi trường Arduino, ta sẽ phải viết một chương trình giống như sau:
#define LED_PIN 13
void setup () {
pinMode (LED_PIN, OUTPUT); // Đặt chân 13 làm đầu ra digital
}
void loop () {
digitalWrite (LED_PIN, HIGH); // Bật LED on
delay (1000); // chờ trong 1 giây (1000 mili giây) digitalWrite (LED_PIN, LOW); // Tắt LED off
delay (1000); // chờ trong 1s }
1.7. Nodejs nền tảng lập trình Server
Node.js là một nền tảng chạy trên môi trường V8 JavaScript runtime - một trình thông dịch JavaScript cực nhanh chạy trên trình duyệt Chrome. Bình thường thì bạn cũng có thể tải bộ V8 và nhúng nó vào bất cứ thứ gì; Node.js làm điều đó đối với các web Server. JavaScript suy cho cùng cũng chỉ là một ngôn ngữ - vậy thì không có lý do gì để nói nó không thể sử dụng trên môi trường Server tốt như là trong trình duyệt của người dùng được.
Hı̀nh 7: Mô hình hoạt động của Nodejs
Trong một môi trường Server điển hình LAMP (Linux-Apache-MySQL- PHP), bạn có một web Server là Apache hoặc NGINX nằm dưới, cùng với PHP chạy trên nó. Mỗi một kết nối tới Server sẽ sinh ra một thread mới, và điều này khiến ứng dụng nhanh chóng trở nên chậm chạp hoặc quá tải - cách duy nhất để hỗ trợ nhiều người dùng hơn là bằng cách bổ sung thêm nhiều máy chủ. Đơn giản là nó không có khả năng mở rộng tốt. Nhưng với Node.js thì điều này không phải là vấn đề. Không có một máy chủ Apache lắng nghe các kết nối tới và trả về mã trạng thái HTTP - bạn sẽ phải tự quản lý kiến trúc lõi của máy chủ đó. May mắn thay, có một số module giúp thực hiện điều này được dễ dàng hơn, nhưng công việc này vẫn gây cho bạn một chút khó khăn khi mới bắt đầu. Tuy nhiên, kết quả thu được là một ứng dụng web có tốc độ thực thi cao.
Ưu điểm :
Đầu tiên là ưu điểm về tốc độ thực thi và khả năng mở rộng. Node.js có tốc độ rất nhanh. Đó là một yêu cầu khá quan trọng khi bạn là một startup đang cố gắng tạo ra một sản phẩm lớn và muốn đảm bảo có thể mở rộng nhanh chóng, đáp ứng được một lượng lớn người dùng khi trang web của bạn phát triển lên.
Node.js có thể xử lý hàng ngàn kết nối đồng thời trong khi PHP sẽ chỉ có nước sụp đổ. Bên cạnh các lợi ích về tốc độ thực thi và khả năng mở rộng, có
thể bạn cũng đã biết một chút về JavaScript, vì vậy tại sao lại phải phiền toái để học thêm về một ngôn ngữ lập trình hoàn toàn mới như PHP? Và sau đó bạn sẽ có một sự phấn khích khi học về một cái gì đó mới mẻ và gần như chưa được khám phá. Bạn còn nhớ cái cảm giác khi mà một cái gì đó mới xuất hiện và sau đó trở thành phổ biến khắp mọi nơi mà bạn hối tiếc đã không học về nó sớm hơn, và mãi mãi chỉ là người đến sau? Đừng phạm phải sai lầm như vậy lần này nữa.
Node.js đang ngày càng trở nên lớn mạnh hơn.
Nhược điểm:
Giống như hầu hết các công nghệ mới, việc triển khai Nodejs trên host không phải là điều dễ dàng cho người mới tiếp cận.
Là mã nguồn mở nên được nhiều người biết đến và tham gia phát triển nhưng chính vì điều đó mà khiến cho Nodejs không có một khuôn mẫu thống nhất nào cho việc phát triển nền tảng.
Việc sử dụng ngôn ngữ JavaScript cũng là một điểm yếu vì JavaScript không phải là một ngôn ngữ hướng đối tượng thuần túy.