Raspberry Pi Kết Hợp Arduino

Mô tả dự án: 

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.coolangelenlightenedheartyes

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.winkwink

Chuẩn Bị

 

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  cheekyheartyes

lên
12 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Hướng dẫn sử dụng cảm biến nhiệt độ DS18B20 (-55°C đến +125°C) sai số ±0.5°C

Lại quay về vấn đề đo nhiệt độ, như ở bài trước, mình đã dùng cả LM35, cả TMP36. Nhưng rốt cuộc vẫn không hiệu quả, lần này mình đang sử dụng con DS18B20 này và cảm thấy khá ổn hơn so với lần trước. Nhiệt độ ít bị chênh lệch hơn và như quảng cáo là chỉ có sai số ±0.5°C thôi (nếu nhiệt độ trong phạm vi -10°C to +85°C, đáng để thử phải không nào?

lên
17 thành viên đã đánh giá bài viết này hữu ích.

Hướng dẫn sử dụng cảm biến nhiệt độ TMP36 - Khoảng đo từ -40 đến 125 độ C

Mình thấy cảm biến nhiệt độ LM35 rất rẻ và hoạt động cũng tương đối chính xác. Tuy nhiên, độ bền của nó không cao vì mình thấy mình chỉ dùng cảm biến LM35 trong khoảng thời gian 3 tháng, sau đó phải thay cảm biến khác (để đo nhiệt độ luộc gà). Bản thân mình không thích điều đó nên thử dùng một cảm biến khác cũng có chức năng tương tự là TMP36 và thấy nó hoạt động bền hơn (đã đến tháng thứ 4 nhưng chưa hư). Mình xin chia sẻ với các bạn nhé. Loại này hơi khó tìm và không thông dụng, nhưng nó bền hơn hẳn LM35 các bạn nhé.

lên
10 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Tôi tự làm Robot với Raspberry Pi và Arduino như thế nào? - Phần 6: Sử dụng NRF24L01 với Raspberry Pi

Hú Hú, Chúng ta cùng tiếp tục với bài 6 trong tutorial của mình laughHôm nay mình sẽ hướng dẫn cách bạn giao tiếp Raspberry và Arduino thông qua module NRF24L01 nhé.

lên
14 thành viên đã đánh giá bài viết này hữu ích.