Trạm khí tượng dự báo thời tiết với ESP8266

Mình xin chia sẻ với các bạn cách làm trạm khí tượng dự báo thời tiết đơn giản sử dụng ESP8266.

Ở bài trước chúng ta đã thử tạo webserver để lấy dữ liệu nhiệt độ, độ ẩm từ DHT11 , với dữ liệu hiện tại là dữ liệu thực tế tại môi trường mình đang sống, cụ thể nơi mình đang test DHT11 là trong nhà, giờ mình muốn thêm một chút thông tin về nhiệt độ, độ ẩm ngoài trời, các thông tin về áp suất, gió, mây,… thậm chí là mình muốn biết được tình hình thời tiết trong vài giờ, vài ngày tới như thế nào thì phải làm sao ?

Trạm khí tượng

Trước khi vào cách thực hiện thì mình sẽ tìm hiểu một chút về trạm khí tượng, mình chỉ quan tâm tới 2 vấn đề

Trạm khí tượng là gì ?

Trạm khí tượng là một nơi ở trên biển hoặc đất liền, có các dụng cụ và thiết bị để đo lường tình trạng khí quyển và cung cấp các thông tin để nghiên cứu và dự báo thời tiết/ khí hậu.

Vậy chúng ta có thể hiểu đơn giản là các thông tin dự báo thời tiết hàng ngày sau mỗi bản tin thời sự chúng ta nhận được cũng có 1 phần công của các trạm khí tượng này đây.

Các thành phần cơ bản của trạm khí tượng

Một trạm khí tượng sẽ có  các thiết bị

  • Nhiệt kế để đo nhiệt độ
  • Thiết bị đo độ ẩm
  • Thiết bị đo khí áp
  • Thiết bị đo gió
  • Thiết bị đo mưa

 

Chuẩn bị

Nếu bạn chưa biết bắt đầu từ đâu thì có thể xem qua các bài chia sẻ về ESP8266

Phần cứng

  • Node MCU hoặc ESP8266 + USB2UART PL2303
  • DHT11
  • Dây nối

Phần mềm

  • Arduino IDE

 

OpenWeatherMAP

Để tạo ra được một trạm khí tượng chất lượng đòi hỏi rất nhiều tiền của, với những người như mình chỉ muốn có thông tin thời tiết để sử dụng trong lập trình mà phải mua rất nhiều thiết bị như thế thì đúng là không thể chịu nổi. Thật may mắn là có một cơ sở dữ liệu về thời tiết rất lớn là OpenWeatherMAP cho mình có thể sử dụng các thông tin về thời tiết được cập nhật liên tục mỗi giây thông qua các API.

Về công nghệ của OpenWeatherMAP sử dụng là như thế nào thì bạn có thể tham khảo thêm ở trang của nó, mình hướng dẫn qua về cách lấy API để cho ESP có thể truy cập được thôi

Bước 1: Đăng ký tài khoản tại mục Sign Up

Bước 2: Đăng nhập vơi tài khoản vừa tạo

Bước 3: Vào thẻ API Keys, sử dụng Key default hoặc tạo key mới thông qua Create Key, lưu Key này lại để sử dụng trong chương trình

Nếu chúng ta vào thẳng trang chủ của OpenweatherMAP và nhập địa điểm vào thì có thể xem được dự báo thời tiết luôn, còn sử dụng API thì phải qua trang http://openweathermap.org/api

Ví dụ: muốn lấy thông tin thời tiết tại hà nội

  • Vào google map để lấy tọa độ nơi mình đang ở, nó sẽ có dạng https://www.google.com/maps/@xxxx,yyyy,15z, 2 thông số tô màu sau @ cần quan tâm, đó là kinh độ và vĩ độ
  • Truy cập vào API OpenWeatherMAP: http://api.openweathermap.org/data/2.5/weather?lat=xxx&lon=yyyy&units=metric&appid=api_cua_ban, thay xxx,yyy, và api_cua_ban tương ứng sẽ hiện ra các thông số như hình

Phần khoanh đỏ là phần dữ liệu mà mình cần lấy, nếu bạn cần biết ý nghĩa tất cả dữ liệu có thể xem tại đây

Tạo webserver lấy dữ liệu

Nói qua về webserver thì nó cũng giống với tcp server nhưng sẽ giao tiếp với client (ở đây là máy tính/ điện thoại có web browser) thông qua http responsehttp request. Mỗi khi client muốn lấy thông tin gì từ server thì sẽ gửi một http request cho server và server sẽ trả lời lại bằng một http response, bạn có thể xem hình minh họa

Mỗi khi có request từ Web browser (cụ thể là dùng điện thoại/ laptop truy cập vào địa chỉ IP của ESP8266) thì Web Server này(ESP8266) sẽ tạo ra  một file html với các thông tin lấy từ DHT11 và OpenWeatherMAP hiển thị lên lên trình duyệt.

Các bạn có thể xem thêm về HTTP requestHTTP response, Ajax

Đây là cách để tạo web html lấy dữ liệu hiển thị lên Web Browser

Chương trình

Kết quả

Trên máy tính

Trên điện thoại

Tạm kết

Vậy là mình đã chia sẻ về cách làm một trạm khí tượng dự báo thời tiết vô cùng đơn giản, ở đây mình chỉ đưa ra cách tiếp cận tạo ra một webserver trên ESP8266 để thu thập dữ liệu từ nhiều nguồn khác nhau, đúng ra là mình tận dụng thông tin từ nhiều trạm khí tượng khác nhau đưa lên openweather. Kết hợp thông tin từ openweather với thông tin thực tế từ môi trường mình có thể thực hiện nhiều mục đích khác nhau dựa trên các thông tin về thời tiết.

1
Leave a Reply

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Johny Jackson Recent comment authors

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

  Subscribe  
newest oldest most voted
Notify of
Johny Jackson
Guest

Hey There. I discovered your blog using msn. This is an extremely neatly written article.
I’ll be sure to bookmark it and return to read more of your helpful information.
Thank you for the post. I will certainly return.