Mục lục:
- Bước 1: Xây dựng Arduino độc lập
- Bước 2: Nối dây ISP
- Bước 3: Chỉnh sửa tệp Bootloader, ghi Bootloader và tải lên bản phác thảo của bạn
- Bước 4: Giao tiếp nối tiếp
Video: Arduino độc lập 3.3V W / Xung nhịp 8 MHz bên ngoài được lập trình từ Arduino Uno thông qua ICSP / ISP (với Giám sát nối tiếp!): 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Mục tiêu:
- Để xây dựng một Arduino độc lập chạy trên 3.3V với xung nhịp ngoài 8 MHz.
-
Để lập trình nó thông qua ISP (còn được gọi là ICSP, lập trình nối tiếp trong mạch) từ Arduino Uno (chạy ở 5V)
Để chỉnh sửa tệp bộ nạp khởi động và ghi bộ nạp khởi động (thông qua ISP)
-
Để có thể đọc thông tin nối tiếp từ Arduino độc lập qua cáp FTDI
Để có thể đọc thông tin nối tiếp từ standlaone Arduino mà không cần cáp FTDI
Mở đầu:
Tôi đang cố gắng xây dựng dự án độc lập của mình nhưng không thấy bất kỳ hướng dẫn toàn diện nào về chạy, lập trình và giám sát Arduino Độc lập - đặc biệt là một hướng dẫn chạy với xung nhịp ngoài 8Mhz và 3.3V và được lập trình bởi Arduino UNO. Tôi đã tổng hợp một số hướng dẫn riêng biệt lại với nhau và tôi đã cố gắng tham khảo nơi tôi lấy thông tin để cấp tín dụng khi đến hạn. Hướng dẫn này là kết quả của nhiều ngày tìm kiếm các giải pháp và tìm các phần của nó tại một thời điểm trong khi tôi đang xây dựng dự án của riêng mình. các công ty, nhưng vì nó có liên quan để bao gồm các mục cụ thể mà tôi đang đề cập.
Các câu hỏi thường gặp trước khi chúng ta bắt đầu:
Tại sao bạn cần lập trình nó với ISP và giám sát qua FTDI? Tại sao bạn không thể lập trình nó qua FTDI?
Chúng tôi sẽ phải thay đổi cài đặt cầu chì bằng cách ghi một bộ nạp khởi động mới vào và bạn không thể làm điều đó thông qua giao tiếp nối tiếp. Bạn phải ghi bộ nạp khởi động qua ISP. Điều này cũng hữu ích cho những người không có chip ATMEGA328 được tải sẵn.
Tại sao tôi không sử dụng cáp ISP với chức năng giám sát nối tiếp, như cáp này?
Có lẽ, giống như tôi, bạn chỉ tình cờ không có một cái và thay vì đợi một cái được vận chuyển, bạn thích sử dụng những gì bạn có! Tôi tình cờ có một cáp FTDI (mặc dù cuối cùng bạn sẽ thấy rằng bạn thậm chí không cần nó: nó chỉ giúp cuộc sống của bạn dễ dàng hơn).
Tôi không cần một bộ chuyển đổi mức logic từ Uno sang Arduino độc lập sao?
Có, bạn có, nhưng tôi sẽ chỉ cho bạn cách tự làm một cái. Giống như cáp ISP, tôi tình cờ không có.
Tôi muốn chạy nó bằng nguồn điện bên ngoài. Làm thế nào để làm điều đó?
Có rất nhiều hướng dẫn chỉ ra cách chạy Arduino độc lập khi không sử dụng pin. Tôi sẽ viết cách tôi đã làm và liên kết nó ở đây [sẽ chèn sau].
HƯỚNG DẪN
Bước 1: Xây dựng Arduino độc lập
1) Xây dựng Arduino độc lập từ liên kết này. Phần duy nhất của hướng dẫn bạn cần là "Thông tin cơ bản về ATMEGA8 / 168/328".
- bạn có thể cấp nguồn cho Arduino độc lập từ 3.3V ra khỏi Arduino Uno. (Bạn có thể bỏ qua phần đầu tiên của hướng dẫn có tiêu đề "Thêm mạch cho nguồn điện".
- Thay đồng hồ 16 MHz bằng đồng hồ 8 Mhz.
-
Thêm 0,1 giới hạn uF giữa: VCC và Gnd (cả hai bên) VRef và Gnd.
- Tôi không có những thứ này trong ảnh nhưng tôi có chúng trong các dự án của mình!
- Tôi biết đó là bộ dao động 16 MHz trong ảnh. Tôi đã chụp ảnh trước khi tôi tìm ra mọi thứ tôi đã làm trong hướng dẫn!
Nguồn hình ảnh sơ đồ ATMEGA328p tại đây.
Mẹo khắc phục sự cố phổ biến
- Đảm bảo bạn đã thiết lập lại mức cao thông qua một điện trở 10k từ VCC đến chân 1 của ATMEGA. Nếu chốt được nối đất hoặc nổi, nó sẽ không hoạt động.
- Kiểm tra kỹ xem bạn đã cắm dây và bộ dao động đúng cách chưa.
- Đảm bảo bạn sử dụng tụ điện 22pF cho bộ dao động 8 MHz. Nó sẽ không hoạt động nếu không.
- Đảm bảo thiết bị được cấp nguồn.
Bước 2: Nối dây ISP
2) Tạo phần ISP
Bạn sẽ làm theo hướng dẫn này ở đây với một bước nhỏ nhưng rất quan trọng.
Lý do bạn không thể chỉ làm theo hướng dẫn là vì bạn đang thiếu một phần quan trọng: bạn không thể lập trình thiết bị 3.3V trực tiếp từ các kết nối 5V. (Ít nhất, tôi không thể: nó sẽ không hoạt động cho đến khi tôi làm điều này). Bạn cần chèn một bộ dịch chuyển mức logic để chuyển tín hiệu 5V từ UNO sang Arduino 3.3Vstandalone.
Nếu bạn không có bảng điều khiển mức logic, bạn có thể tạo một bảng bằng cách sử dụng điện trở. Tất cả một bộ dịch chuyển mức logic thực sự là (miễn là bạn đang chuyển xuống) là một bộ chia điện áp. Bạn sẽ cần 6 điện trở giống nhau, không có gì quá cao hoặc quá thấp. Tôi đã sử dụng điện trở 220 ohm, nhưng tôi chắc chắn rằng ngay cả điện trở 10k cũng sẽ hoạt động.
Đối với SCK (chân số 13) và MOSI (chân số 11), sử dụng bộ chia điện áp để cắt điện áp đi một phần ba. Về bản chất, bạn sẽ có một Uno SCK và MOSI, sau đó là một điện trở (220 ohm), sau đó SCK và MOSI được kết nối với Arduino độc lập và 2 điện trở (tổng 440 ohm) để nối đất.
Vì vậy, hãy đọc hướng dẫn được liên kết ở đầu phần này, nhưng bao gồm các bộ phân áp giữa SCK và MOSI. Hãy nhớ rằng SCK, MISO, MOSI và RESET là các chân 13, 12, 11 và 10 trên Uno nhưng là các chân 19, 18, 17 và 1 trên Arduino độc lập!
Mẹo khắc phục sự cố phổ biến
-
KIỂM TRA DÂY
- Nếu bạn nhận được chữ ký thiết bị của tất cả các số 0 khi cố gắng viết chương trình, thì hệ thống dây điện của bạn gần như chắc chắn đã tắt hoặc Arduino độc lập không nhận được điện.
- Ngoài ra, hãy đảm bảo rằng bạn đã có dây đặt lại từ 10 trên Uno thành 1 trên Arduino độc lập
-
KIỂM TRA CÁC CHIA ĐIỆN ÁP
Đảm bảo bạn có bộ chia điện áp với tỷ lệ 1: 2 (bên cao: bên thấp) cho các điện trở cho cả SCK và MOSI. Ví dụ. một điện trở 220 ở phía + 5v và sau đó là 2 điện trở 220 ohm (tổng 440 ohm) hướng xuống đất với tín hiệu hướng tới Arduino độc lập ở giữa
Bước 3: Chỉnh sửa tệp Bootloader, ghi Bootloader và tải lên bản phác thảo của bạn
3) Chỉnh sửa tệp bootloader (boards.txt) và ghi bootloader vào Arduino độc lập. Tải lên bản phác thảo của bạn
Chỉnh sửa tệp bộ nạp khởi động
Để chạy Arduino độc lập, bạn sẽ phải chỉnh sửa cài đặt cầu chì brownout của bộ nạp khởi động. Nếu không, bạn sẽ có thể ghi bộ nạp khởi động trên đó nhưng sẽ không thể chạy bất kỳ bản phác thảo nào.
Bạn có thể loại bỏ hoàn toàn phát hiện brownout, nhưng tôi không khuyên bạn nên làm như vậy. Thay vào đó, chúng tôi sẽ giảm nó xuống từ 2,7V (những gì có trên chip của tôi làm mặc định) và thay thế nó bằng 1,8V. Tuy nhiên, cuối cùng, bạn có thể chọn cài đặt trình duyệt nào bạn muốn bằng cách sử dụng máy tính cầu chì tại đây.
Tệp bảng của tôi ở vị trí sau:
C: / Program Files (x86) Arduino / hardware / arduino / avr
Tuy nhiên, bạn có thể có nhiều hơn một tệpboards.txt trong thư mục phần cứng không phải / arudino /. Bạn sẽ chỉnh sửa tệpboards.txt trong / arduino / location vì bạn sẽ sửa đổi phần ATMEGA328p (3.3V, 8 MHz).
Bạn có thể mất tệpboards.txt đã chỉnh sửa nếu bạn cài đặt lại hoặc cập nhật Arduino IDE (theo bài đăng này). Điều này có nghĩa là nếu bạn cập nhật Arduino IDE, bạn sẽ phải thay đổi lại các cài đặt này nếu bạn muốn tạo một Arduino độc lập khác.
Trong tệpboards.txt, cuộn xuống hoặc tìm kiếm "Pro Mini". Phần này có tiêu đề "pro.name = Arduino Pro hoặc Pro Mini". Cuộn xuống tiểu mục "pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)".
Tìm dòng có nội dung "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"
Thay đổi cài đặt thành xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).
Lưu và thoát.
Ghi Bootloader
Sau khi thực hiện xong việc này, bạn có thể làm theo phần "Hướng dẫn" trên hướng dẫn ISP từ bước 1 đến bước 5.
Một số điều cần làm rõ:
-
Khi bạn đang tải lên bản phác thảo "Arduino as ISP", bạn cần đảm bảo rằng bạn đã chọn đúng cổng COM và bộ xử lý.
Trong trường hợp này, có nghĩa là bạn đã chọn cổng COM của Arduino trong Công cụ-> Cổng: COM X (Arduino Uno) và bảng là Arduio Uno
-
Chọn đúng lập trình viên: trong Tools-> Programmer-> Arduino as ISP.
KHÔNG phải ArduinoISP hoặc ArduinoISP.org
-
Trước khi ghi bộ mã khởi động, hãy thay đổi bo mạch "Pro hoặc Pro Mini" và Bộ xử lý thành "ATMEGA328p (3.3V, 8 MHz)".
Bạn sẽ không thấy phần bộ xử lý cho đến khi chọn đúng loại bo mạch
Ghi bộ nạp khởi động vào Arduino độc lập TRƯỚC KHI bạn cố gắng viết các bản phác thảo trên đó.
Tải lên bản phác thảo
Cái này rất quan trọng. Bây giờ bạn có thể lập trình Arduino: Uno và Độc lập. Nếu bạn không tải lên đúng thiết bị, bạn phải lặp lại phần trên và viết lại Arduino dưới dạng chương trình ISP trên Uno.
Khi bạn tải lên bản phác thảo của mình, hãy đảm bảo bạn nhấp vào Công cụ -> Tải lên bằng lập trình viên HOẶC nhấp vào Ctrl + Shift + U. Bạn cũng có thể giữ phím shift và nhấp vào biểu tượng mũi tên, nhưng không được nhấp vào biểu tượng mũi tên mà không giữ phím shift.
Mẹo khắc phục sự cố phổ biến
- Bật đầu ra dài dòng để khắc phục sự cố.
-
"Thiết bị signatuere đều là số 0!" [Điều này rất có thể xảy ra.]
- xem phần ISP Wiring. Hoặc bạn đã nối dây Arduino độc lập không chính xác hoặc nó không được bật nguồn.
- Đảm bảo bạn đã chọn đúng cổng COM và bo mạch / bộ xử lý. Khi bạn đang ghi bộ nạp khởi động, bạn PHẢI đảm bảo rằng bạn đang ghi bộ nạp khởi động Pro Mini 3.3V 8 MHz trên đó, nếu không các cầu chì sẽ không được đặt chính xác.
-
"Tôi đã chỉnh sửa tệpboards.txt nhưng không thấy các chỉnh sửa"
Đảm bảo bạn đã chỉnh sửa đúng tệpboards.txt. Hãy thử cập nhật Arduino IDE nếu các chỉnh sửa không hoạt động hoặc tạm thời xóa các thư mục khác trong thư mục / phần cứng / của bạn
-
"Tôi không thể tìm thấy phần chuyên nghiệp mini củaboards.txt!"
Bạn không tìm đúng tệpboards.txt. Kiểm tra thư mục Arduino // hardware / arduino /
Bước 4: Giao tiếp nối tiếp
4) Giám sát thiết bị độc lập thông qua giao tiếp nối tiếp
Bạn thực sự có thể làm điều này thông qua 2 phương pháp, vì vậy nếu bạn thậm chí không có cáp / bảng ngắt FTDI thì đó không phải là ngày tận thế. Và hãy nhớ rằng, bản phác thảo bạn đã tải lên Arduino độc lập phải có câu lệnh Serial.print để bạn đọc: nếu bạn không viết nó trong chương trình, bạn sẽ không thấy gì cả!
Nếu bạn không có cáp FTDI
Sau khi bạn đã ghi xong bộ nạp khởi động và viết chương trình bạn muốn, bạn có thể (rất cẩn thận và nhớ nó quay trở lại hướng nào) tháo chip ATMEGA328 DIP khỏi Arduino Uno. Tôi khuyên bạn nên sử dụng một mái tóc phẳng cho việc này.
Bạn có thể kết nối RX của Arduino độc lập với RX của Uno và TX với TX. Vâng, thông thường thì ngược lại, nhưng bạn có thể coi Uno là "chuyển tiếp" thông tin đến màn hình nối tiếp của IDE. Đó là lý do tại sao bạn không kết nối RX với TX và TX ro RX trong trường hợp này. Khi bạn đang chạy chương trình của mình, hãy đảm bảo bạn đã chọn cổng COM của Arduino Uno và mở montor nối tiếp. Bạn sẽ có thể thấy đầu ra nối tiếp của standaone Arduino.
(Giải pháp này được ghi có cho Robin2 tại đây.)
Nếu bạn có cáp / bo mạch FTDI
(Tôi đang sử dụng bảng FTDI của Sparkfun mà tôi đã chuyển đổi thành 3,3V bằng cách sử dụng miếng hàn ở mặt sau)
Chỉ cần kết nối GND của bảng đột phá với mặt đất của Arduino độc lập và kết nối RX của bảng đột phá với TX và TX của Arduino với RX. (Nếu bạn CHỈ đang theo dõi nối tiếp và không ghi lại bất kỳ thứ gì, bạn chỉ có thể kết nối RX của breadoutboard với Arduino TX).
Hãy nhớ rằng tại thời điểm này, bạn có tùy chọn cấp nguồn cho Arduino độc lập thông qua Uno HOẶC Cáp FTDI. Không kết nối cả hai nguồn điện cùng một lúc! Lưu ý rằng bạn sẽ phải thay đổi cổng COM vì nó sẽ khác với cổng COM của Arduino Uno.
Mẹo khắc phục sự cố phổ biến
-
"Tôi không thấy gì cả!"
- Kiểm tra xem bạn đã bật đúng cổng COM chưa.
- Kiểm tra xem bạn có trình điều khiển FTDI mới nhất hay không.
- ĐẢM BẢO TĂNG TRƯỞNG ĐƯỢC KẾT NỐI.
-
"Tất cả những gì tôi thấy là đầu ra rác trong màn hình nối tiếp!"
- Bạn đang nhận được một cái gì đó, đó là một dấu hiệu tốt.
- Tuy nhiên, hãy kiểm tra điện áp của bảng FTDI.
- Arduino độc lập đang xuất ra 3,3V trên TX của nó và bảng FTDI có thể không nhận nếu nó mong đợi 5v.
- Kiểm tra tốc độ truyền.
- Đảm bảo bạn đã kết nối đất và chỉ kết nối một nguồn điện! (Tức là không cấp nguồn cho Arduino độc lập từ Uno VÀ bảng FTDI của bạn.
Đề xuất:
Máy phát Flysky RF được cung cấp năng lượng thông qua kết nối tín hiệu dây USB + với PC + Phần mềm giả lập miễn phí: 6 bước
Bộ phát RF Flysky được hỗ trợ qua kết nối tín hiệu dây USB + với PC + Phần mềm giả lập miễn phí: Nếu bạn giống tôi, bạn sẽ thích thử nghiệm bộ phát RF của mình và tìm hiểu trước khi bạn gặp sự cố máy bay / máy bay không người lái RF thân yêu của mình. Điều này sẽ mang lại cho bạn niềm vui bổ sung, đồng thời tiết kiệm rất nhiều tiền và thời gian. Để làm như vậy, cách tốt nhất là kết nối thiết bị phát RF với bạn
Ánh sáng xung quanh có thể lập trình cho màn hình bên ngoài: 4 bước
Ánh sáng xung quanh có thể lập trình cho màn hình bên ngoài: Dự án này giúp bạn thiết lập ánh sáng xung quanh cho màn hình bên ngoài hoặc TV của bạn cho phép bạn kiểm soát những điều sau một cách thoải mái bởi BẤT KỲ thiết bị nào có trình duyệt web và được kết nối với bộ định tuyến của bạn. Màu LED Tần suất nhấp nháy tạo hiệu ứng DJ
Giám sát chất lượng không khí với MQ135 và cảm biến nhiệt độ và độ ẩm bên ngoài qua MQTT: 4 bước
Màn hình chất lượng không khí với MQ135 và cảm biến nhiệt độ và độ ẩm bên ngoài qua MQTT: Đây là mục đích thử nghiệm
Hệ thống giám sát Raspberry Pi thông qua mô-đun màn hình OLED: 5 bước
Hệ thống giám sát Raspberry Pi thông qua mô-đun màn hình OLED: Trong hướng dẫn này, tôi sẽ giải thích cách thiết lập mô-đun màn hình OLED 0,96 inch để hiển thị thông tin hệ thống của Raspberry Pi 4 Model B bằng giao diện I2C của nó
IDC2018IOT Hệ thống giám sát, nước và thức ăn cho vật nuôi được kết nối: 7 bước
IDC2018IOT Hệ thống theo dõi, nước và thức ăn cho thú cưng được kết nối: Giới thiệu Cho dù bạn là sinh viên chịu nhiều áp lực, một người làm việc chăm chỉ hay đơn giản là xa nhà hơn vài giờ một ngày. Là một chủ sở hữu thú cưng quan tâm, chúng tôi muốn đảm bảo những con yêu quý của chúng tôi vẫn khỏe mạnh, được cho ăn và tất nhiên KHÔNG nằm trên t