Mục lục:
Video: Lập trình Arduino qua mạng (OTA) - Ameba Arduino: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Có rất nhiều vi điều khiển Wi-Fi trên thị trường, nhiều nhà sản xuất thích lập trình vi điều khiển Wi-Fi của họ bằng Arduino IDE. Tuy nhiên, một trong những tính năng thú vị nhất mà bộ vi điều khiển Wi-Fi cung cấp có xu hướng bị bỏ qua, đó là lập trình và tải lên mã của bạn từ xa và không dây bằng chức năng OTA (Over-The-Air).
Trong phần có thể hướng dẫn này, tôi sẽ chỉ cho bạn cách thiết lập OTA trên vi điều khiển Wi-Fi của bạn bằng cách sử dụng Arduino IDE phổ biến trên vi điều khiển Wi-Fi Ameba Arduino!
Quân nhu
Ameba Arduino x 1
Bước 1: OTA
OTA (Over-The-Air) đề cập đến cơ chế nâng cấp trực tuyến qua Internet.
Arduino IDE cung cấp tính năng OTA, tuân theo quy trình làm việc trong hình trên.
(i) Arduino IDE tìm kiếm qua mDNS cho các thiết bị có dịch vụ Arduino IDEOTA trong mạng cục bộ.
(ii) Vì dịch vụ mDNS đang chạy trên Ameba, Ameba phản hồi tìm kiếm mDNS và mở cổng TCP cụ thể để kết nối.
(iii) Người dùng phát triển chương trình trong Arduino IDE. Khi hoàn tất, hãy chọn cổng mạng.
(iv) Nhấp vào tải lên. Sau đó Arduino IDE gửi hình ảnh OTA đến Ameba thông qua TCP, Ameba lưu hình ảnh vào địa chỉ cụ thể và đặt tùy chọn khởi động để khởi động từ hình ảnh này vào lần sau.
Quy trình làm việc bao gồm ba phần: quy trình hình ảnh mDNS, TCP và OTA. Chi tiết liên quan đến mDNS được mô tả trong hướng dẫn mDNS. Lập trình cổng TCP được sử dụng để truyền hình ảnh và đã được cung cấp trong API OTA.
Trong phần tiếp theo, chúng ta sẽ thảo luận về cách xử lý ảnh OTA và giới thiệu một số kiến thức cơ bản về cách bố trí bộ nhớ flash Ameba và quy trình khởi động.
Bước 2: Bố cục bộ nhớ Flash của Ameba
Kích thước bộ nhớ flash của Ameba RTL8195A là 2MB, nằm trong khoảng từ 0x00000000 đến 0x00200000. Tuy nhiên, kích thước bộ nhớ flash của Ameba RTL8710 là 1MB. Để phù hợp với việc sử dụng các bo mạch khác nhau, chúng tôi giả định bố cục bộ nhớ flash là 1MB.
Như trong hình trên, chương trình Ameba chiếm ba phần của bộ nhớ flash:
- Hình ảnh khởi động :
Đó là, bộ nạp khởi động. Khi Ameba khởi động, nó sẽ đặt hình ảnh khởi động vào bộ nhớ và thực hiện quá trình khởi tạo. Hơn nữa, nó xác định nơi tiến hành sau bộ nạp khởi động. Bootloader xem xét địa chỉ OTA và chân khôi phục trong vùng dữ liệu hệ thống và xác định hình ảnh nào sẽ được thực thi sau đó. Ở cuối bộ nạp khởi động, nó đặt hình ảnh vào bộ nhớ và tiếp tục thực thi nó.
- Hình ảnh mặc định 2 :
Mã nhà phát triển được đặt trong phần này, địa chỉ bắt đầu từ 0x0000B000. 16 byte đầu tiên là tiêu đề hình ảnh, 0x0000B008 ~ 0x0000B00F bao gồm Chữ ký, được sử dụng để xác minh xem hình ảnh có hợp lệ hay không. Trường chữ ký có hai giá trị hợp lệ để phân biệt hình ảnh mới với hình ảnh cũ.
- Hình ảnh OTA :
Dữ liệu trong phần này cũng là mã của nhà phát triển. Theo mặc định, phần bộ nhớ này bắt đầu từ 0x00080000 (có thể thay đổi). Sự khác biệt chính giữa hình ảnh OTA và Hình ảnh mặc định 2 là địa chỉ bộ nhớ flash và giá trị Chữ ký.
Ngoài mã, có một số khối dữ liệu:
- Dữ liệu hệ thống:
Khối dữ liệu hệ thống bắt đầu từ 0x00009000. Có hai dữ liệu liên quan đến OTA:
1. Địa chỉ OTA : 4 byte dữ liệu bắt đầu từ 0x00009000. Nó cho biết địa chỉ Hình ảnh OTA. Nếu giá trị địa chỉ OTA không hợp lệ (tức là 0xFFFFFFFF), hình ảnh OTA trong bộ nhớ flash không thể được tải chính xác.
2. Chân phục hồi : 4 byte dữ liệu bắt đầu từ 0x00009008, Chân khôi phục được sử dụng để xác định hình ảnh nào (Hình ảnh 2 hoặc Hình ảnh OTA mặc định) sẽ thực thi khi cả hai hình ảnh đều hợp lệ. Nếu giá trị mã pin khôi phục không hợp lệ (tức là 0xFFFFFFFF), hình ảnh mới sẽ được thực thi theo mặc định.
Dữ liệu hệ thống sẽ bị xóa khi chúng tôi tải chương trình lên Ameba qua DAP. Tức là địa chỉ OTA sẽ bị xóa và Ameba xác định không có hình ảnh OTA nào.
- Dữ liệu hiệu chuẩn : Dữ liệu hiệu chuẩn ngoại vi được đặt trong khối này. Thông thường những dữ liệu này không nên bị xóa.
Bước 3: Luồng khởi động
Từ hình ảnh trên, Chúng tôi thảo luận về các tình huống sau: (i) OTA không được sử dụng, hãy sử dụng DAP để tải lên chương trình:
Trong tình huống này, bộ nạp khởi động sẽ kiểm tra chữ ký của hình ảnh mặc định 2 và địa chỉ OTA. Vì địa chỉ OTA bị xóa, hình ảnh 2 mặc định sẽ được chọn để thực thi.
(ii) Hình ảnh OTA được chuyển đến Ameba, địa chỉ OTA được đặt chính xác, mã pin khôi phục chưa được đặt :
Ameba đã nhận được hình ảnh cập nhật qua OTA, chữ ký của hình ảnh mặc định 2 sẽ được đặt thành chữ ký cũ.
Bootloader kiểm tra chữ ký của hình ảnh mặc định 2 và địa chỉ OTA. Nó sẽ tìm thấy địa chỉ OTA có chứa hình ảnh OTA hợp lệ. Vì chân khôi phục không được đặt, nó sẽ chọn hình ảnh mới (tức là hình ảnh OTA) để thực thi.
(iii) Hình ảnh OTA được chuyển đến Ameba, địa chỉ OTA được đặt chính xác, mã pin khôi phục được đặt :
Ameba đã nhận được hình ảnh cập nhật qua OTA, chữ ký của hình ảnh 2 mặc định sẽ được đặt thành chữ ký cũ.
Bootloader kiểm tra chữ ký của hình ảnh mặc định 2 và địa chỉ OTA. Nó sẽ tìm thấy địa chỉ OTA có chứa hình ảnh OTA hợp lệ. Sau đó, kiểm tra giá trị pin khôi phục. Nếu chân khôi phục được kết nối với LOW, hình ảnh mới (tức là hình ảnh OTA) sẽ được thực thi. Nếu chân khôi phục được kết nối với HIGH, hình ảnh cũ (tức là hình ảnh mặc định 2) sẽ được thực thi.
Bước 4: Ví dụ
Để sử dụng tính năng OTA, vui lòng nâng cấp firmware DAP lên phiên bản> 0.7 (v0.7 không được bao gồm). Phần mềm cơ sở DAP mặc định của nhà sản xuất là phiên bản 0.7. Vui lòng làm theo hướng dẫn để nâng cấp firmware DAP:
Mở ví dụ: "Tệp" -> "Ví dụ" -> "AmebaOTA" -> "ota_basic"
Điền thông tin ssid và mật khẩu vào mã mẫu để kết nối mạng.
Có một số thông số liên quan đến OTA:
§ MY_VERSION_NUMBER : Trong phiên bản đầu tiên, chúng tôi cần đặt địa chỉ OTA và mã pin khôi phục. Vì lần này chúng tôi tải lên qua USB là phiên bản đầu tiên nên chúng tôi không cần thay đổi giá trị này.
§ OTA_PORT : Arduino IDE sẽ tìm thấy Ameba thông qua mDNS. Ameba sẽ nói với Arduino IDE rằng nó mở cổng TCP 5000 để đợi hình ảnh OTA.
§ RECOVERY_PIN : Định cấu hình mã pin được sử dụng để khôi phục. Chúng tôi sử dụng pin 18 ở đây.
Sau đó, chúng tôi sử dụng chương trình tải USB lên Ameba. Nhấp vào Công cụ -> Cổng, kiểm tra cổng nối tiếp để sử dụng :
Xin lưu ý rằng Arduino IDE sử dụng một cổng cho chương trình tải lên và nhật ký đầu ra. Để tránh trường hợp không thể xuất nhật ký khi chúng tôi sử dụng OTA, chúng tôi sử dụng thiết bị đầu cuối cổng nối tiếp khác (ví dụ: Tera term hoặc putty) thay vì màn hình nối tiếp để xem thông báo nhật ký.
Sau đó nhấp vào tải lên và nhấn nút đặt lại.
Trong thông báo nhật ký:
1. Giữa “===== Nhập Hình ảnh 1 ====” và “Nhập Hình ảnh 2 ====”, bạn có thể tìm thấy “Hình ảnh Flash 2: Addr 0xb000”. Điều này có nghĩa là Ameba xác định khởi động từ Hình ảnh mặc định 2 tại 0xb000.
2. Sau khi “Nhập Hình ảnh 2 ====”, bạn có thể tìm thấy “Đây là phiên bản 1”. Đây là thông báo nhật ký mà chúng tôi thêm vào trong bản phác thảo.
3. Sau khi Ameba được kết nối với AP và nhận được địa chỉ IP “192.168.1.238”, nó sẽ kích hoạt mDNS và chờ máy khách.
Tiếp theo, chúng tôi sửa đổi "MY_VERSION_NUMBER" thành 2.
Nhấp vào "Công cụ" -> "Cổng", bạn có thể thấy danh sách "Cổng mạng". Tìm "MyAmeba tại 192.168.1.238 (Ameba RTL8195A)", MyAmeba là tên thiết bị mDNS mà chúng tôi đặt trong mã mẫu và "192.168.1.238" là IP của Ameba.
Nếu bạn không thể tìm thấy cổng mạng của Ameba, vui lòng xác nhận:
- máy tính của bạn và Ameba có nằm trong cùng một mạng cục bộ không?
- thử khởi động lại Arduino IDE.
- kiểm tra thông báo nhật ký trong Serial Monitor để xem liệu Ameba có được kết nối thành công với AP hay không.
Sau đó bấm tải lên. Lần này chương trình sẽ được tải lên qua TCP. Trong thiết bị đầu cuối nhật ký, bạn có thể thấy thông tin kết nối máy khách.
Khi hình ảnh OTA được tải xuống thành công, Ameba sẽ khởi động lại và nhật ký tiếp theo sẽ được hiển thị trong thiết bị đầu cuối nhật ký.
- Giữa “===== Nhập Hình ảnh 1 ====” và “Nhập Hình ảnh 2 ====”, bạn có thể thấy thông báo nhật ký “Hình ảnh Flash 2: Trình bổ sung 0x80000”. Điều này có nghĩa là Ameba xác định khởi động từ Hình ảnh OTA ở 0x80000.
- Sau khi “Nhập hình ảnh 2 ====”, nhật ký “Đây là phiên bản 2” là thông báo chúng tôi thêm vào bản phác thảo.
Để khôi phục về hình ảnh trước đó sau khi hình ảnh OTA được tải xuống Ameba, vui lòng kết nối chân khôi phục mà chúng tôi đã đặt trong bản phác thảo (tức là chân 18) với CAO (3.3V) và nhấn đặt lại.
Sau đó, hình ảnh mặc định 2 sẽ được chọn khi khởi động. Lưu ý rằng hình ảnh OTA đã tải xuống sẽ không bị xóa, một khi chốt khôi phục bị ngắt kết nối khỏi HIGH, hình ảnh OTA sẽ được thực thi.
Chúng tôi tóm tắt quy trình phát triển sử dụng OTA trong hình sau.
Đề xuất:
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
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!): 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
(gần như) Lập trình viên MIDI SysEx CC đa năng (và Trình tự lập trình tự ): 7 bước (có Hình ảnh)
(gần như) Lập trình viên MIDI SysEx CC đa năng (và Trình lập trình …): Vào giữa những năm tám mươi, các bộ sản xuất tổng hợp bắt đầu " ít hơn là tốt hơn " quá trình dẫn đến synths barebone. Điều này cho phép giảm chi phí về mặt sản xuất, nhưng làm cho quá trình vá lỗi trở nên thành công nếu không muốn nói là không thể sử dụng cuối cùng
Cách thiết lập trình gỡ lỗi hạt nhân Windows qua mạng của bạn: 6 bước
Cách thiết lập trình gỡ lỗi hạt nhân Windows qua mạng của bạn: Gỡ lỗi là một công cụ phổ biến được sử dụng để tìm ra nguyên nhân gốc rễ của lỗi. Một con bọ có thể tự phát hiện ra theo nhiều cách khác nhau. nó có thể gây ra sự cố hệ thống (màn hình xanh / BSOD), nó có thể gây ra sự cố ứng dụng, nó có thể khiến hệ thống của bạn bị treo để đặt tên là
Hướng dẫn lập trình thú vị cho nhà thiết kế - Kiểm soát quy trình chương trình- Tuyên bố vòng lặp: 8 bước
Hướng dẫn lập trình thú vị cho nhà thiết kế - Điều khiển quy trình chương trình- Tuyên bố vòng lặp: Điều khiển quy trình chương trình- Tuyên bố vòng lặp Từ chương này, bạn sẽ tiếp xúc với một điểm kiến thức quan trọng và mạnh mẽ - Câu lệnh vòng lặp. Trước khi đọc chương này, nếu bạn muốn vẽ 10.000 vòng tròn trong chương trình, bạn chỉ có thể thực hiện với một
Thiết lập để lập trình Picaxe thông qua tập lệnh Shell (linux): 5 bước
Thiết lập để lập trình một Picaxe Thông qua Tập lệnh Shell (linux): Hướng dẫn đơn giản hướng dẫn cách tạo một tập lệnh shell sẽ tải một chương trình từ một trang web ftp, sau đó biên dịch nó rồi tải xuống picaxe. (Đây cũng là lần đầu tiên của tôi có thể hướng dẫn)