Skip to main content

Posts

Showing posts from March, 2021

Arduino Leonardo có chức năng USB Host không?

USB Host là để cho phép các thiết bị ngoại vi khác như chuột, bàn phím, kết nối vào. USB Host phải cấp nguồn cho các thiết bị ngoại vi. USB Host còn có tên gọi khác là USB OTG. USB Devices là để kết nối tới USB Host, USB Devices sẽ nhận nguồn điện 5V từ USB Host để hoạt động. Hiện nay rất nhiều trang web bán hàng mô tả rằng " Arduino Leonardo còn có thêm một chức năng khá hay, đó là USB host ". Đó là mô tả không đúng, mình cũng đã mua board Arduino Leonardo vì tưởng rằng nó có thể làm được USB Host như các trang web bán hàng mô tả nhưng thực tế là board này không hỗ trợ USB Host. Theo trang web của Arduino " The Arduino LEONARDO is an integrated USB HID Arduino board. Ideal for projects requiring the board to behave (act) as a USB human interface devices. ", dịch ra có nghĩa là Arduino Leonardo là một board Arduino tích hợp USB HID (chuột, bàn phím,... là các thiết bị USB HID), phù hợp cho những dự án cần yêu cầu board mạch hoạt động như là một thiết bị USB ngoại vi

Dùng Arduino IDE để lập trình cho STM32F030

Bạn có thể dùng Arduino IDE để dễ dàng lập trình cho board STM32F030. Dụng cụ cần chuẩn bị bao gồm 1 mạch nạp ST-Link V2 mini và 1 board mạch STM32F030. Kết nối phần cứng, bên trái là ST-Link V2 mini, bên phải là board STM32F0 SWDIO <===> DIO GND <===> GND SWCLK <===> CLK 3.3V <===> 3V3 Mở Arduino IDE, vào File > Preferences. Thêm dòng sau vào mục Additional Boards Manager URLs "https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json". Trong cửa sổ Tools > Board > Boards Manager tìm và cài đặt thư viện STM32Cores như hình dưới Trong menu Tools chọn board là "Generic STM32F0 Series", chọn board part number là "STM32F030F4 Demo board", U(S)ART Support là "Enable generic ('Serial')", Optimize là "Smallest (-Os default)", C Runtime library là "Newlib nano (default)", Upload method là "STM32CubeProgrammer (SWD)"   Nhấn nút Upload code để xem kết qu

Dùng Arduino IDE để lập trình cho board STM8S103

Board STM8S103 có thể dễ dàng được lập trình với Arduino IDE giúp bạn nhanh chóng thử nghiệm dự án của mình mà không phải cài đặt các phần mềm và thư viện phức tạp khác. Làm theo các bước sau đây để nạp code cho một board STM8S103 có thể nhấp nháy đèn LED on-board. Để làm theo hướng dẫn này bạn cần phải có 1 board mạch STM8S103F3P6, 1 mạch nạp ST-Link V2 mini. Kết nối phần cứng như sau, bên trái là mạch nạp ST-Link V2 mini, bên phải là board STM8S103 3.3V <===> 3V3 SWIM <===> SWIM GND <===> GND RST <===> NRST Mở Arduino IDE, vào File > Preferences. Ở chỗ Additional Boards Manager URLs thêm vào dòng này "https://github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json". Nếu ở ô text đã có sẵn những url khác thì bạn di chuyển con nháy (carret) đến cuối thêm dấu "," URL ở trên (xem hình dưới hoặc xem video ở cuối bài viết để biết cách làm). Vào menu Tools > Board > Boards Manager để mở cửa sổ Boards Manager. Trong cửa sổ Boar

Arduino Due không chạy chương trình khi cắm nguồn

Hiện tượng là Arduino Due khi bật nguồn lên chương trình không tự chạy mà phải nhấn nút reset hoặc tắt nguồn và bật lại ngay thì chương trình mới chạy. Nguyên nhân thì có thể là con Atmega16U2 gửi tín hiệu reset cho chip SAM quá nhanh khi đó nguồn cấp cho SAM chưa ổn định nên SAM không reset được. Đây là một lỗi rất khó chịu vì không thể mỗi lần cấp nguồn phải thêm thao tác reset cho board mạch. Một số board Due được sản xuất sau này thì đã khắc phục hiện tượng trên, tuy nhiên nếu bạn có board Due gặp hiện tượng như vậy thì sau đây là cách khắc phục: Cách 1 : Hàn điện trở 10k (điện trở dán SMD 0603) giữa hai chân của con Fet A1SHB gần các pin ICSP của con Atmega16u2. Tuy nhiên cách này đòi hỏi bạn phải có công lực hàn board cực mạnh hoặc là bạn dùng điện trở loại xuyên lỗ rồi tìm đường mạch chỗ nào thích hợp đảm bảo nối hai chân của Fet để hàn vào. Cách 2 : Cập nhật firmware cho con chip Atmega16U2. Mình dùng USBasp và cách làm như sau: - Kết nối USBasp vào ICSP của chip Atmega16U2, US

Dùng mạch nạp USBasp để nạp code cho Arduino

Arduino có thể dễ dàng nạp code và chạy chương trình chỉ với thao tác đơn giản cắm board mạch vào máy tính chọn cổng COM và nhấn nút Upload. Để làm được như vậy, bên trong chip vi xử lý được nạp sẵn một đoạn mã lệnh gọi là boot loader. Boot loader luôn luôn được chạy lên đầu tiên, sau đó mới chuyển quyền điều khiển lại cho phần mã của người dùng nạp vào.   Như vậy để các Chip Arduino có thể làm việc được với Arduino IDE thông qua giao tiếp USB-COM thì trong vi điều khiển phải được nạp sẵn boot loader. Các board mạch Arduino bán sẵn trên thị trường như Arduino Uno, Arduino Nano, Arduino Mega 2560,... đều được nạp sẵn boot loader. Như vậy ưu điểm của boot loader là để người dùng dễ dàng tiếp cận, thử nghiệm, và làm ra được sản phẩm nhanh chóng, dễ dàng. Nhưng nhược điểm là boot loader luôn luôn cần một khoảng thời gian từ 1.6s đến 2s để khởi động. Nếu bạn không muốn mất 1.6 - 2s đầu tiên mà muốn chương trình chạy gần như ngay lập tức khi cấp nguồn hoặc reset thì dùng mạch nạp USBasp để n

Đọc Fuse Bits của Arduino UNO (Mega328P) dùng mạch nạp Burn-E

Kết nối mạch nạp Burn-E với Arduino UNO theo thứ tự chân như sau, bên trái là mạch nạp Burn-E bên phải là Arduino UNO MCLR <===> RES (Reset) VDD <===> 5V GND <===> GND PGD <===> 12 PGC <===> 13 AUX <===> ~11   Mạch nạp Burn-E để jumper ở mức cấp nguồn 5v. Arduino không kết nối với bất kỳ ngoại vi nào khác Cắm mạch nạp Burn-E vào cổng USB máy tính và trên giao diện phần mềm Burn-E Programmer chọn loại chip là ATmega ISP (1). Sau đó bấm chọn nút Detect Device (2), mạch nạp sẽ nhận ra chip là ATmega328P(A). Cuối cùng bấm chọn nút Read All (3), mạch nạp sẽ đọc toàn bộ file hex và fuse bits.  Xem video ở đây   Đối với MEGA2560 MCLR <===> RESET VDD <===> 5V GND <===> GND PGD <===> 50 PGC <===> 52 AUX <===> 51   Ý nghĩa một số fuse nCKDIV8: Chia xung đồng hồ cho 8 nBODEN: Cho phép phát hiện sụt áp hay không (Brown-out detector enable) SUT1, SUT0: Delay sau khi cấp nguồn hoặc reset rồi mới chạy dòng lệnh đầu tiên nOCDEN: L

Hướng dẫn nạp code cho Arduino Due

Arduino Due sử dụng chip ARM hoạt động ở điện áp 3.3V thay vì chip AVR hoạt động ở điện áp 5V như các dòng Arduino khác. Bạn cần chú ý điều đó khi làm việc với Arduino Due để không làm hỏng board. Để nạp code của Arduino Due, trong Arduino IDE cần cài đặt Arduino SAM Board (32-bits Arm Cortex-M3) bằng cách vào Tools > Boards > Board Manager sau đó search với từ "due" và Install như hình dưới Kết nối Arduino Due với máy tính thông qua cổng USB programming (ở gần jack cắm DC màu đen). Sau đó chọn board là Arduino Due (Programming Port), chọn cổng COM tương ướng (trong trường hợp này là COM4). Cuối cùng nạp chương trình Led Blink để xem kết quả. Video kết quả