"Đi học thoai": Phần 5 - Gửi thông tin lên mây với Pi và Arduino

Mô tả dự án: 

Bài này tui sẽ hướng dẫn các bạn thiết lập một hệ thống đo nhiệt độ + độ ẩm truy xuất qua website. Ưu điểm là bạn có thể sử dụng bất kỳ thiết bị nào có khả năng truy cập web để xem thông tin. Bài được tham khảo từ trang: http://webiopi.trouch.com/Tutorial_Serial.html

Nguyên lý

Ta dùng Arduino đo nhiệt độ và độ ẩm với sensor DHT11 và xuất ra cổng USB. Sau đó Raspberry Pi sẽ đọc dữ liệu từ USB và gửi lên web với ứng dụng WebIOPi. Bạn chỉ việc mở trình duyệt (nội mạng) và đọc thông tin. Nếu bạn muốn truy xuất từ xa thì ta sẽ dùng thêm ứng dụng Weaved. 

Chuẩn bị

  • Raspberry Pi (ở đây tui dùng Pi 3)
  • Arduino (tui dùng Arduino Zero)
  • DHT11. Các bạn vào đây để tải thư viện, sau đó giải nén ra thư mục libraries của Arduino. 

Arduino

Cảm biến DHT11 có 4 chân (1,2,3,4) từ trái sang phải. Các bạn nối như sau:

 

DHT11 Arduino
1 (VCC) 3.3V
2 (DATA) A0
4 (GND) GND

 

Lưu ý là tui dùng Arduino Zero có điện áp 3.3V nên chân 1 của DHT11 phải nối vào nguồn 3.3V. Các bạn dùng các Arduino phiên bản 5V khác thì chân 1 nối vào 5V cũng được.

Sau đó các bạn nạp code:

#include <dht.h>
#define dht_dpin A0  //đặt chân tín hiệu cho dht11

dht DHT;

void setup() {
  Serial.begin(9600);
  delay(500);  // Delay 500ms cho vui
  Serial.println("Humidity and temperature");  
  delay(1000);//chờ 1 s
  // nên có delay trước khi đọc dht11
}  // end "setup()"

void loop() {  // This is the "heart" of the program.  
  DHT.read11(dht_dpin);

  Serial.print("Current humidity = ");
  Serial.print(DHT.humidity);
  Serial.print("%  ");
  Serial.print("temperature = ");
  Serial.print(DHT.temperature);
  Serial.println("C  ");
  delay(1000);  // Don't try to access too frequently... in theory   //should
                // be once per two seconds, fastest,   //but seems to work
                // after 0.8 second.
}  // end loop()

Sau khi upload code xong thì các bạn cắm Arduino vào cổng USB của Raspberry Pi.

Raspberry Pi

  • Đầu tiên ta tải ứng dụng WebIOPi và cài đặt trên Pi. Các bạn vào đây tải tập nén tar.
  • Mở terminal và giải nén: 
    tar xvzf WebIOPi-0.7.1.tar.gz
  • Di chuyển đến thư mục vừa giải nén: 
    cd WebIOPi-0.7.1
  • Cài đặt ứng dụng:
    sudo ./setup.sh
  • Vậy là các bạn đã cài đặt xong ứng dụng WebIOPi. Việc cần làm tiếp theo là xem thử Arduino và Pi giao tiếp với nhau qua cổng USB nào:
    dmesg

  • Trong ví dụ này thì cổng là ttyACM0. Ta vào tập tin config và chỉnh:
    sudo nano /etc/webiop/config
  • Kéo xuống phần [DEVICES] và thêm vào dòng:
    [DEVICES]
    arduino = Serial device:ttyACM0 baudrate:9600

 

  • Tiếp theo ta tìm IP của Pi với lệnh:
    ifconfig
  • Lưu lại IP và chay ứng dụng WebIOPi:
    sudo webiopi -c /etc/webiopi/config
  • Mở trang web, thay raspberry bằng IP của Raspberry Pi và tận hưởng thành quả: 
    http://raspberry:8000/app/serial-monitor

Vươn ra biển lớn với Weaved

Nếu bạn đã đi đến bước này thì bài toán đặt ra là làm sao truy cập vào trang web từ bất cứ nơi nào trên thế giới. Để làm được bước này thì ta cần ứng dụng Weaved.

  • Các bạn vào trang của Weaved ở đây tạo một tài khoản miễn phí: https://developer.weaved.com/portal/
  • Mở terminal trên Raspberry Pi và tải về 
    sudo apt-get install weavedconnectd
  • Tiếp đó:
  • sudo weavedinstaller
  • Chọn option 1 (Đăng nhập), đăng nhập username và password của tài khoản Weaved và đặt 1 tên cho hệ thống Pi + Arduino của m (my_Pi_001 chẳng hạn)

  • Sau khi đăng nhập xong các Weaved sẽ hỏi tiếp. Các bạn chọn 1 (Attach/reinstall remot3.it to a service) => 4 (Custom (TCP) ) => y => http => 8000 => temperature_sensor
  • Như vậy các bạn đã cài đặt xong Weaved và bây giờ có thể truy cập nhiệt độ từ bất kỳ nơi nào có wifi/3G. Bạn vào tài khoản Weaved, nhấp vào temperature_sensor. Username là webiopi và pass là raspberry. Thế là các bạn an tâm đi học không lo cháy nhà. Lưu ý là Weaved cũng có apps cho Android và iOS nên các bạn tha hồ chọn lựa.

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

ST7565 và ESP8266 - Màn hình LCD bự chà bá chưa đến 100k cho thế giới IoT

Mình rất thích LCD ST7565 này, và đã đặt liền 4 con mà mỗi con quá rẻ có 20k. Nhưng khổ một điều, điện áp hoạt động và IO của LCD ST7565 có 3.3V. Bản thân mình lại không thích việc chơi điện trở để chơi LCD này với Arduino. Lý do đơn giản là phải hàn quá nhiều, mình lại lười crying. Hổm nay, mình đang làm loạt bài về ESP8266 và cũng phải gặp vấn đề điện trở để làm cầu phân áp khi giao tiếp giữa ESP8266 và Arduino.

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

Thư viện ST7565 trên Arduino Create - Thử nghiệm đầu tiên: Hoàn hảo!

Mình rất tự hào và hãnh diện, khi thư viện made in Việt Nam đầu tiên của Thái Sơn (Nick Chung) được mình tải lên tại Arduino Create với mục đích thử nghiệm việc biên dịch code online trên Arduino Create đã hoàn thành công việc của nó ngay trong lần thử đầu tiên. Qua bài viết này, mình xin hướng dẫn các bạn lập trình Arduino với Arduino Create thông qua việc làm một ví dụ mẫu về việc cài thư viện và sử dụng nó trên Arduino Create.

lên
7 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ả

Áo yếm cho em - Cách làm hộp đựng (case) tiêu biểu cho con cưng Arduino

Con người còn có nhu cầu ăn diện, huống chi là "con cưng" arduino của bạn. Ngoài việc tăng tính chuyên nghiệp cho đề án của bạn, case còn là bộ giáp bảo vệ cho board mạch "mồ hôi xương máu" khỏi các tai nạn bất ngờ, đặc biệt là với việc vô tình làm đoản mạch với các dụng cụ kim loại vô tình rơi phải. Bài này tui sẽ hướng dẫn các bạn một số cách làm case tiêu biểu nha!

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

Giới thiệu bo mạch 5 giao tiếp không giây đầu tiên trên thế giới | FiPy

Bạn đang muốn thực hiện dự án Internet của Vạn Vật nhưng vẫn đang loay hoay chọn chuẩn giao tiếp không dây? Nên dùng bluetooth để tiết kiệm năng lượng? Nên dùng wifi để truy cập từ mọi nơi trên thế giới? Nên dùng GPRS để điều khiển khắp ở những nơi có sự hiện diện của ông chú Viettel? Nên dùng LoraWAN để truyền thông tin cách hàng chục km? Nên dùng Sigfox vừa xa vừa miễn phí? Bạn yêu thích ngôn ngữ Python đơn giản? Bài này tui sẽ giới thiệu về bo mạch sắp ra lò từ xứ sở hoa tulip xinh đẹp mang tên FiPy. Giá của bo là 33 eur nếu đặt trên Kickstarter và 40 eur nếu bạn mua sau khi dự án kết thúc.Bài viết thu thập thông tin từ Kickstarter.

lên
13 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: