Mục lục:
- Bước 1: Những gì bạn cần…
- Bước 2: Hàn bảng
- Bước 3: Thiết lập Arduino
- Bước 4: Thiết lập Python
- Bước 5: Nơi điều kỳ diệu xảy ra
Video: Servodriver-Board Với Python-GUI và Arduino: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Khi thực hiện tạo mẫu hoặc chế tạo máy bay mô hình, bạn thường gặp vấn đề, đó là bạn phải kiểm tra hành trình của servo hoặc đặt servo ở vị trí giữa.
Trong trường hợp bạn không muốn xây dựng toàn bộ hệ thống RC của mình hoặc thử nghiệm, bạn có thể đẩy servo đi bao xa hoặc vị trí giữa ở đâu, thì bảng này là dành cho bạn! Nó cho phép bạn di chuyển servo đến các vị trí được chỉ định hoặc chúng ta hãy di chuyển qua lại.
Nó hoạt động tốt một cách đáng ngạc nhiên, ngay cả với 6 servo chạy đua từ vị trí này sang vị trí khác trong vòng lặp.
Ngoài ra, đây là một dự án tuyệt vời để tìm hiểu về giao tiếp giữa Python-GUI và Arduino bằng cách sử dụng Serial.
Bước 1: Những gì bạn cần…
Đối với dự án này, bạn sẽ cần những thứ sau:
Phần cứng
- Arduino nano với cáp. Tôi đã sử dụng một bản sao và mã Python thực sự mong đợi một chip CH340 của một bản sao
- Một bảng tạo mẫu. 7x5cm là đủ
- Một số tiêu đề và chân 2, 54mm
- 1-6 servo
- Nguồn cung cấp cho Servos (Tôi đã sử dụng một bộ pin có 4 pin)
Phần mềm
- Python 3:
- Trình điều khiển USB cho chip CH340: Chỉ cần google để tìm trình điều khiển cho trình điều khiển CH340
- Arduino IDE:
Bước 2: Hàn bảng
Quá trình hàn thực sự thẳng về phía trước theo Fritzing trên hình. Chỉ cần đảm bảo rằng bạn có thể dễ dàng kết nối các servo với các hàng 3 chân.
- Các hàng 3 chân được gắn vào chân kỹ thuật số 3, 5, 6, 9, 10 và 11 của Arduino nano.
- Dây màu đỏ được gắn vào chân 5V của Arduino
- Dây màu đen được kết nối với chân GND của Arduino
- Cặp chân bên dưới hàng 3 chân dùng để gắn nguồn cấp điện cho bộ thu RC điển hình, bạn có thể thêm các đầu nối tùy thích, chẳng hạn như thiết bị đầu cuối vặn vít, Đầu nối XT, JST hoặc… hoặc…
Cá nhân tôi thích hàng tiêu đề nữ để đặt Arduino vào, nhưng điều đó tùy thuộc vào bạn.
Xin lưu ý rằng các tiêu đề cái bị nối tắt là một jumper, cho phép bạn cung cấp servo bằng cách sử dụng nguồn 5V của Arduino cho mục đích thử nghiệm. Nếu bạn làm căng nó quá nhiều, Arduino sẽ thiết lập lại và mất nhịp độ phù hợp. PHẢI tháo chúng trước khi gắn nguồn điện khác.
Bước 3: Thiết lập Arduino
Cài đặt Arduino IDE và flash Arduino nano với bản phác thảo đính kèm.
Bước 4: Thiết lập Python
Cài đặt Python 3 sau khi tải xuống. Đảm bảo chọn tùy chọn để tạo biến "PATH".
Bạn cần cài đặt thêm hai gói bằng pip. Để làm điều đó, hãy nhấn phím "Windows", gõ "cmd" và nhấn "enter". Trong dấu nhắc lệnh, nhập các lệnh sau:
- pip cài đặt nối tiếp
- piip cài đặt pyserial
- pip cài đặt tkinter
Như bạn có thể thấy, tôi cần nối tiếp mô-đun cũng như nối tiếp, điều này rất có thể không hiệu quả nhất, vì kim nối tiếp nên thay thế nối tiếp. Tuy nhiên, nó hoạt động và tôi chỉ mới bắt đầu tìm hiểu;).
Mở Python-Script trong IDE và chạy nó hoặc chạy nó trực tiếp từ thiết bị đầu cuối.
Trong menu thả xuống, bạn có thể chọn giữa hai chế độ, "Đi thẳng" và "Ping Pong":
- Đi thẳng: Nhập Servo-Position tính bằng micro giây trong cột đầu tiên và nhấn "Bắt đầu" để làm cho servo di chuyển đến vị trí được chỉ định.
- Ping Pong: Nhập ranh giới dưới và ranh giới trên vào cột thứ hai và thứ ba. Đó là vị trí dưới và trên, giữa đó servo sẽ quay đi quay lại. Trong cột "Thời gian Ping Pong", bạn có thể chỉ định thời gian tính bằng mili giây, mà servo sẽ đợi khi nó đạt đến vị trí trên hoặc dưới. Nhấn "Bắt đầu" và servo sẽ bắt đầu di chuyển qua lại, nhấn "Dừng" và servo sẽ dừng lại.
Bước 5: Nơi điều kỳ diệu xảy ra
Cuối cùng nhưng không kém phần quan trọng, tôi muốn chỉ ra một số chi tiết trong mã cho những người muốn tìm hiểu một chút về giao tiếp nối tiếp giữa Python và Arduino.
Bây giờ, điều gì xảy ra trong chương trình Python?
Trước hết, chương trình kiểm tra xem những gì được gắn vào các cổng COM trong dòng này và lưu nó vào danh sách:
self. COMPortsList = list (serial.tools.list_ports.comports ())
Sau đó, nó lặp lại danh sách cho đến khi tìm thấy chip CH340 khét tiếng, lưu nó và sau đó thiết lập kết nối nối tiếp sau vòng lặp for. Lưu ý rằng vòng lặp sẽ phá vỡ ngay khi tìm thấy CH340 đầu tiên.
for p in self. COMPortsList: if "CH340" in p [1]: # Tìm kiếm bản sao Arduino self. COMPort = p [0] break else: pass self. Ser = serial. Serial (self. COMPort, 57600)
Kết nối nối tiếp được thiết lập với cổng COM có tốc độ truyền là 57600.
Và mã Arduino làm gì? Chà, vì Arduino chỉ có một Cổng COM nên kết nối nối tiếp chỉ có một dòng:
Serial.begin (57600);
Bây giờ, chúng ta có thể sử dụng cả hai cổng để giao tiếp. Trong trường hợp này, chỉ các thông báo từ Python đến Arduino. Các tin nhắn được gửi đến đây từ Python. Kết nối nối tiếp truyền các byte như một mặc định. Đó cũng là cách gửi dữ liệu nhanh nhất và theo như tôi biết thì nó vẫn còn khá phổ biến. Vì vậy, các int cho số servo (để Arduino biết servo nào sẽ di chuyển) và vị trí tính bằng micro giây được chuyển thành một byte.
Command = struct.pack ('> B', self. Place) # Biến int "self. Place" được biến thành byte
self. Ser.write (Command) # Viết byte trên Serial-Port Command = int (self. ServoPos.get ()) // 10 # Đọc Input từ trường và nhập int Command = struct.pack (' > B ', Command) # Tự biến int trong một byte. Ser.write (Command) # Ghi byte trên Serial-Port
Ngoài ra, việc phân tích dữ liệu cũng cần thời gian (ví dụ: diễn giải bốn byte "1", "2", "3" và "0" dưới dạng int 1230, không phải là bốn ký tự khác nhau) và tốt hơn là không nên làm điều đó trên Arduino.
Về phía Arduino, thông tin đã gửi được chọn như sau:
if (Serial.available ()> 1) {// Nếu dữ liệu nối tiếp có sẵn, thì vòng lặp được nhập c = Serial.read (); // Byte đầu tiên (số servo) được lưu vào một biến Micros = Serial.read (); // Vị trí của servo được lưu ở đây Micros = Micros * 10; }
Đề xuất:
Esp8266 dựa trên Boost Converter với giao diện người dùng Blynk tuyệt vời với bộ điều chỉnh phản hồi: 6 bước
Esp8266 dựa trên Boost Converter với giao diện người dùng Blynk tuyệt vời với bộ điều chỉnh phản hồi: Trong dự án này, tôi sẽ chỉ cho bạn một cách hiệu quả và phổ biến cách tăng điện áp DC. Tôi sẽ cho bạn thấy việc xây dựng một bộ chuyển đổi tăng cường có thể dễ dàng như thế nào với sự trợ giúp của Nodemcu. Hãy xây dựng nó. Nó cũng bao gồm một vôn kế trên màn hình và một phản hồi
PWM Với ESP32 - Làm mờ đèn LED với PWM trên ESP 32 Với Arduino IDE: 6 bước
PWM Với ESP32 | Làm mờ LED với PWM trên ESP 32 Với Arduino IDE: Trong hướng dẫn này, chúng ta sẽ thấy cách tạo tín hiệu PWM với ESP32 bằng Arduino IDE & PWM về cơ bản được sử dụng để tạo ra đầu ra tương tự từ bất kỳ MCU nào và đầu ra tương tự có thể là bất kỳ thứ gì trong khoảng từ 0V đến 3,3V (trong trường hợp esp32) & từ
Bắt đầu với Esp 8266 Esp-01 Với Arduino IDE - Cài đặt Bo mạch Esp trong Arduino Ide và Lập trình Esp: 4 bước
Bắt đầu với Esp 8266 Esp-01 Với Arduino IDE | Cài đặt bo mạch Esp-01 trong Arduino Ide và Lập trình Esp: Trong phần hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt bo mạch esp8266 trong Arduino IDE và cách lập trình esp-01 và tải lên mã trong đó. điều này và hầu hết mọi người đều phải đối mặt với vấn đề
Chỉnh sửa ảnh nhanh chóng và tuyệt vời với Picasa: 10 bước (với ảnh)
Chỉnh sửa ảnh nhanh chóng và tuyệt vời với Picasa: Với một máy ảnh kỹ thuật số tuyệt vời, trách nhiệm lớn là quản lý hàng nghìn bức ảnh. Điều này có thể là một khó khăn, đặc biệt nếu bạn muốn sử dụng chúng để ghi lại một quy trình cho Các tài liệu hướng dẫn. Tôi biết cách sử dụng Photoshop, nhưng thường xuyên hơn là tôi chuyển sang sử dụng G
Vòi rảnh tay hoặc vòi có bàn đạp hoặc vòi tiết kiệm nước: 5 bước
Vòi rảnh tay hoặc vòi có bàn đạp hoặc vòi tiết kiệm nước: Đây là một phương pháp đơn giản và rẻ để chuyển vòi thoát nước thành vòi rảnh tay (hợp vệ sinh). rửa cả hai tay cùng một lúc và tiết kiệm nước