Level: Advanced - Nâng cao

Chuyên mục này trình bày các kiến thức tối ưu hóa, chuyên sâu cũng như những ứng dụng thực tiễn của Arduino mà bạn có thể dễ dàng bắt gặp trong đời sống.

Hack firmware Atmega16U2 trên Uno hoặc Mega để giả lập chuột hoặc bàn phím

Hôm nay, mình sẽ hướng dẫn cho các bạn hack firmware con Atmega16u2 để giả lập bàn phím / con chuột / tay cầm game đơn giản hơn sơ với Hoodloader2 dành cho các bạn không thích bị hại não hehe heart. Có một điểm khó hay mà mình nghĩ các bạn sẽ thích ở bài này: đó là bạn chỉ việc lập trình cho Atmega328 hoặc Atmega2560 là có ngay một con chuột / bàn phím rồi!

lên
8 thành viên đã đánh giá bài viết này hữu ích.

Hoodloader2 - Sức mạnh của 2 vi điều khiển trên một board mạch Arduino - USB Host với Arduino UNO / Mega2560

Trước đây, bạn đã từng đặt câu hỏi, cái con Atmega16U2 trên mạch Arduino Uno / Mega2560 của mình làm nhiệm vụ gì chưa? Nếu bạn đã từng đọc bài giới thiệu về Arduino Uno hay Arduino Mega 2560 thì có thể sẽ biết con Atmega16U2 đó sẽ làm nhiệm vụ USB-to-Serial, hay nói cách khác là tạo cổng COM ảo từ đó lập trình cho con vi điều khiển Atmega328p (UNO) hoặc Atmega1280 (Mega 2560). Nhưng khi mình tra datasheet con Atmega16U2 thì thấy rằng, chúng ta đang có một sự lãng phí lớn (12KB flash, 512byte ram) nhưng chỉ nạp bootloader DFU để biến nó thành một mạch USB-to-Serial. Đem vấn đề này đi hỏi ksp, thì mình đã được khai sáng bằng một bootloader với cho con Atmega16U2 này, nó có tên là Hoodloader2 và nó sẽ giúp ta biến con Atmega16U2 này thành một mạch Arduino hoàn chỉnh! Nói cách khác, với Hoodloader2, ta có thể làm việc với 2 con vi điều khiển trên mạch Arduino Uno / Mega2560. HACK NÃO chưa nào?

lên
24 thành viên đã đánh giá bài viết này hữu ích.

Điều khiển Arduino bằng LabView - Một hướng đi mới

Bạn nhàm chán với LED 7 Đoạn, Màn hình LCD, Bạn muốn đọc và xuất tín hiệu Digital, hay bạn muốn xuất các giá trị analog thành dạng biểu đồ. Ghi các giá trị mình đọc được vào file Excel. Làm một giao diện bằng máy tính thân thiện với người sử dụng. Cùng vô vàn điều khác nữa. Thế nhưng VB bạn không biết, Visual Studio bạn cũng chẳng rành, JAVA, C++,C# quá  khó cho bạn. Processing ư, dẹp đi broken heart.  Hôm nay chúng ta sẽ đến với LabView. Và vì sao mình chọn Labview sẽ được giải thích.

lên
25 thành viên đã đánh giá bài viết này hữu ích.

Điều khiển mạch Arduino thông qua Wifi sử dụng mạch XBee.

Để giao tiếp giữa máy tính với board Arduino ta thường làm theo cách giao tiếp qua cổng USB kết nối giữa máy tính và board Arduino. Hôm nay, tôi xin giới thiệu đến các bạn yêu thích khám phá cách điều khiển Arduino thông qua module wifi XBee. Với cách thức lập trình và kết nối đơn giản sẽ giúp những bạn mới tìm hiểu có thể tiếp cận và hiểu dễ dàng. Trong bài viết này tôi sử dụng C# để lập trình cho giao diện trên máy tính.

lên
13 thành viên đã đánh giá bài viết này hữu ích.

Timer/Counter trên AVR/Arduino

Như các bạn đã biết, Arduino là một nền tảng hướng tới sự đơn giản, giúp cho việc hiện thực hóa các ý tưởng dễ dàng hơn rất nhiều, nhưng cũng vì thế mà chúng ta sẽ không thể khai thác hết được sức mạnh của vi điều khiển nằm trên board Arduino. Điều mà mình cảm thấy tiếc nhất là sự thiếu sót của các Interrupt Vector trong môi trường Arduino (Arduino hiện chỉ có built-in function hỗ trợ External Interrupts).

lên
32 thành viên đã đánh giá bài viết này hữu ích.

Giao tiếp giữa máy tính và Arduino thông qua Serial - khám phá Processing

Ở bài viết Giao tiếp giữa hai mạch Arduino bất kỳ, chúng ta đã tìm hiểu cách giao tiếp giữa 2 vi điểu khiển khác nhau qua giao thức Serial. Trong bài viết đó, mình cũng đã đề cập đến việc có thể điều khiển các mạch Arduino qua giao thức Serial.bằng máy tính. Hôm nay chúng ta sẽ cùng tìm hiểu vấn đề này nhé!

Bạn mà có một ít kiến thức về lập trình Java thì sẽ rất có ích đấy trong bài viết này đấy!

lên
30 thành viên đã đánh giá bài viết này hữu ích.

KeySweeper - Keylogger trên nền tảng Arduino cho bàn phím không dây

Đây là một bài báo được mình dịch lại từ The Hacker News đăng vào ngày 13/01/2015. Mình dịch bài này là để các bạn thấy được một điều rằng ứng dụng Arduino không phải chỉ dừng ở việc điều khiển đèn LED nhấp nháy, điều khiển động cơ hay hiển thị/truyền phát thông tin đơn thuần,... nó còn làm được những thứ to lớn hơn thế.

lên
5 thành viên đã đánh giá bài viết này hữu ích.

Lưu các biến CHỈ ĐỌC với PROGMEM

Trong bài Tiết kiệm RAM trong Arduino?, chúng ta đã biết cách lưu chuỗi hằng vào bộ nhớ FLASH thay cho việc lưu hết bọn chúng vào RAM. Như vậy, một hằng chuỗi có thể được lưu vào bộ nhớ FLASH thay vì lưu vào RAM. Vậy, câu hỏi đặt ra là, những biến hằng khác (hằng số, hẳng mảng, hẳng số thực) có thể được lưu vào FLASH thay vì vào RAM hay không?

Trong thực tế, các biến hằng (trừ hằng chuỗi) hầu hết chỉ tốn vài chục byte để lưu trữ nên RAM, nên chúng ta cũng chưa gặp vấn đề gì trong việc lưu trữ hằng số hay hằng mảng cả. Nhưng thỉnh thoảng, có những lúc, ta phải tìm cách lưu trữ chúng ở một nơi khác, ví dụ Bài 12: Phát nhạc bằng Arduino với một cái loa hoặc buzzer.

Chần chừ gì nữa, biết muốn phám khá khả năng của Arduino - hay không?

lên
8 thành viên đã đánh giá bài viết này hữu ích.

Cách lưu trữ các biến số, mảng, chuỗi trong Arduino

Bạn có bao giờ tự hỏi những biến số, biến chuỗi hay biến mảng của mình được lâu ở đâu trên Arduino chưa? Trước kia, mình từng nghĩ rằng, nó được lưu ở vùng nhớ flash, nơi lưu trữ code mà chúng ta tải lên. Nhưng không, bình thường nó được lưu ở RAM!

Vậy RAM (viết tắt từ Random Access Memory) là gì? Nó là chữ viết tắt của một loại bộ nhớ chính của máy tính (Arduino cũng có thể xem là một máy tính). Như vậy nếu hết RAM, chương trình của bạn sẽ crash (hư – đỗ vỡ,…) một cách bất ngờ mà bạn không tài nào debug được (nếu bạn chưa đọc về bài này – hoặc những nội dung tương đương).

Vậy, thiết nghĩ, chúng ta cần nắm rõ hơn bản chất của vấn đề này. Nó thật thú vị phải không nào?

lên
19 thành viên đã đánh giá bài viết này hữu ích.

millis() - Tạo 1 đồng hồ theo thời gian thực và Lịch làm việc cho các Pin

Arduino đã có sẵn hàm delay(int delaymilliSec) thật thuận tiện cho chúng ta nhưng lại làm code quá dài và nhiều khi hiệu suất làm việc không hiệu quả. Bài viết của tôi xin được phép hướng dẫn cách làm 1 đồng hồ realtime bằng cách dùng hàm millis() đồng thời tạo 1 lớp để lập lịch làm việc cho các Pin mà ta muốn.

lên
20 thành viên đã đánh giá bài viết này hữu ích.
Đăng kí nhận RSS - Level: Advanced - Nâng cao