tu787878 gửi vào
- 46376 lượt xem
Như các bạn đã biết Raspberry pi là một máy tính mini nên nó rất mạnh về có thể kết nối internet, lậpj trình nhúng trang web một cách dễ dàng, nhưng nó lại không an toàn cho các dự án phần cứng. Còn Arduino thì rất bền kết hợp tốt nhiều phần cứng nhưng về mảng IoT thì cũng hạn chế hơn raspberry pi. Mỗi cái riêng lẻ là một hạn chế, nhưng tại sao chúng ta không kết hợp chúng lại để dự án của mình tối ưu hóa hơn. Vâng, hôm nay mình xin hướng dẫn các bạn một cách để giao tiếp PI với Arduino.
Lời Đầu
Hiện nay có rất nhiều cách để giao tiếp Raspi với arduino, nhưng bài nay mình sẽ hướng dẫn các bạn giao tiếp qua cách đơn giản nhất là thông qua cổng usb.
Với cách này thì mình sẽ dùng thư viện Pyserial.
Chuẩn Bị
- 1. Raspberry pi 3
- 2. Arduino
Nếu khi
import serial
xảy ra lỗi thì bạn hãy cài thư viện cho nó
pip install pyserial
Xong chuẩn bị, chúng ta sẽ qua bước tiếp theo.
Lập Trình
I. Raspberry pi gửi tín hiệu qua Arduino.
1. Với Aruino
int data; void setup() { Serial.begin(9600); } void loop() { data = Serial.read(); Serial.print(data); delay(1000); }
2. Với Raspberry.
Đầu tiên chúng ta phải kiểm tra thử arduino sẽ gắn vào chưa:
ls /dev/ttyUSB*
kết quả in ra /dev/ttyUSBx : x là số thứ tự thôi
Tiếp theo tạo một file test.py
nano test.py
Bạn dùng code này
import serial # Khai báo thưu viện serial ser = serial.Serial(/dev/ttyUSBx,9600) # Lưu ý x là số cổng USB hồi nãy bạn xem While 1: ser.write("1") #gửi số qua arduino thông qua serial
II. Arduino gửi qua Raspberry pi
1. Arduino
void setup() { Serial.begin(9600); } void loop() { Serial.print(data); delay(1000); }
2. Raspberry Pi
test.py
import serial # Khai báo thưu viện serial ser = serial.Serial(/dev/ttyUSBx,9600) # Lưu ý x là số cổng USB hồi nãy bạn xem While 1: ser.readline() #Đọc số từ arduino gửi qua
III. Lưu ý
Đó là trường hợp arduino cảu bạn cắm cố định. Còn khí mà ra rút ra rồi lại cắm vào thì nó raspberry pi sẽ cho port arduino một tên khác như /dev/ttyUSB3 chẳng hạn.
Mình sẽ giới thiệu các bạn một cách là dùng thư viện os.
import os f = os.popen('ls /dev/ttyUSB*') now = f.read() print now
Lời Kết
Như vậy là các bạn đã giao tiếp được thành công giữa arduino và raspberry pi để hoàn thành dự án của mình tối ưu hơn và nhất là an toàn cho mạch rasberry pi bởi nó khá đắt