Tại sao tôi muốn làm điều này?
Bởi vì nó vui. Không giống như nhiều hướng dẫn của chúng tôi, trong đó chúng tôi đưa ra một chút băn khoăn ở đầu phác thảo chính xác những lợi ích bạn sẽ thu được từ dự án, điều này khá ngắn trong trường hợp này vì lợi ích chỉ đơn giản là vui vẻ.
Các Raspberry Pi là một thiết bị hoàn hảo để chơi xung quanh với, thử nghiệm với thiết bị điện tử, và tìm hiểu một số chương trình. Không ai nhu cầu một chỉ số mưa môi trường xung quanh trong nhà bếp của họ, ví dụ, nhưng xây dựng một chỉ là một bài tập thú vị và một lời nhắc nhở tuyệt vời để mang chiếc ô của bạn với bạn vào những ngày có khả năng bão.
Tôi cân nhưng gi?
Để làm theo cùng với hướng dẫn, bạn sẽ cần một vài điều. Đầu tiên, chúng tôi giả định rằng bạn đã làm theo hướng dẫn trước đây của chúng tôi: Hướng dẫn HTG về Bắt đầu với Raspberry Pi (và do đó có một số kiến thức cơ bản về cài đặt Rasbian trên Raspberry Pi của chúng tôi).
Nếu bạn đang muốn thực hiện dự án này với ngân sách, chúng tôi có thể tự tin cho bạn biết rằng mẫu Raspberry Pi mới nhất có ý nghĩa quan trọng đối với công việc và chúng tôi khuyến khích bạn thổi bụi từ một chiếc Raspberry Pi cũ mà bạn đã đẩy trong tủ quần áo hoặc mua một chiếc rẻ tiền đã qua sử dụng của eBay hoặc tương tự. Ngân sách khôn ngoan dài-in-the-răng một Raspberry Pi 1 Model A hoặc Model B snagged off eBay cho $ 10-15 là hoàn toàn phù hợp cho dự án này hơn mua một thương hiệu mới $ 35 thế hệ hiện tại Pi.
Ngoài việc có một đơn vị chức năng Pi với Raspbian được cài đặt trên nó, bạn sẽ cần những điều sau đây:
- 1 mô-đun LedBorg (~ $ 5,00 với vận chuyển 4 đô la từ Anh sang Hoa Kỳ, hoạt động với tất cả các mẫu Raspberry Pi).
- 1 Rõ ràng Raspberry Pi Case tương thích với mô hình Pi cụ thể của bạn như trường hợp Raspberry Pi 1 Model B này.
Chú thích: Trường hợp Pi rõ ràng / mờ là hoàn toàn tùy chọn nhưng nếu bạn hiện đang sử dụng một trường hợp mờ thì đèn chỉ báo LED của bạn sẽ bị ẩn bên trong. Bạn sẽ cần phải cắt một lỗ trong trường hợp của bạn để cho ánh sáng ra hoặc sử dụng một cáp mở rộng GPIO với một bộ breakout-như thế này từ Adafruit Industries - để buộc các LedBorg để Raspberry Pi của bạn. Trong khi sử dụng cáp đột phá thêm khoảng 8 đô la vào chi phí của dự án, nó cung cấp nhiều tiềm năng hơn để tùy chỉnh sản phẩm cuối cùng mà bạn có thể dễ dàng đặt đèn LED bên trong đồ vật hoặc dưới thứ bạn muốn chiếu sáng.
Cài đặt LedBorg
Cài đặt mô-đun nhanh chóng như được thiết kế để vừa với các chân GPIO trên Pi. Đầu tiên, tắt nguồn Pi của bạn và mở vỏ máy.
Phần quan trọng nhất của quá trình cài đặt là bạn định hướng mô-đun sao cho biểu tượng LedBorg gần nhất với mô-đun RCA trên bảng Raspberry Pi (và do đó mép của LedBorg được tuôn ra với các cạnh của bảng Pi với phần nhô ra một phần của LedBorg treo trên bảng Pi và không ra khỏi cạnh). Xem hình trên.
Mặc dù bạn đã mở bảng Pi, giờ đây sẽ là thời điểm tuyệt vời để bao gồm các chỉ báo đèn LED tích hợp (bên cạnh cổng USB), đặc biệt nếu bạn đang sử dụng vỏ máy rõ ràng. Bạn không muốn nó khó hiểu khi đọc chỉ báo LedBorg của bạn vì đèn báo nguồn và đèn mạng rất sáng.
Chúng tôi bảo vệ chúng tôi bằng một lớp băng điện màu trắng. Điều này làm mờ chúng đủ để chúng tôi vẫn có thể tham khảo chúng nhưng chúng mờ hơn rất nhiều so với LedBorg, nó không còn mất tập trung nữa.
Một khi bạn đã cài đặt LedBorg và có, tùy chọn, bao phủ các chỉ báo LED của Pi bằng băng điện, đã đến lúc đóng vỏ máy. Khởi động Pi của bạn trước khi chuyển sang giai đoạn tiếp theo của hướng dẫn.
Cài đặt phần mềm LedBorg
PiBorg cung cấp một gói phần mềm tuyệt vời cho LedBorg bao gồm cả bộ điều khiển GUI cũng như trình điều khiển để truy cập LedBorg từ dòng lệnh.
Trước khi chúng tôi bắt đầu, bạn cần đảm bảo bạn đang nắm lấy gói phù hợp cho phiên bản Rasbian của bạn và bản sửa đổi # của bảng Raspberry Pi của bạn.
Nếu bảng Raspberry Pi của bạn không có lỗ gắn, nó là bản sửa đổi 1. Nếu Raspberry Pi của bạn có lỗ gắn (được đặt bởi các cổng USB và giữa cổng nguồn và cổng HDMI) thì đó là Bản sửa đổi 2. Bạn cũng cần biết phiên bản hạt nhân về cài đặt Rasbian của bạn. Mở terminal và nhập vào lệnh sau để kiểm tra:
uname -r
Một khi bạn có số sửa đổi và số hạt nhân, bạn có thể truy cập phần Gói tại đây để lấy liên kết cho gói của bạn. Trong trường hợp của chúng tôi, chúng tôi đang sử dụng bảng Revision 1 với hạt nhân 3.6.11 để chúng tôi lấy tệp raspbian-2013-02-09-rev1.zip.
Để cài đặt tất cả các tính năng, chúng ta cần mở terminal trên Pi. và sau đó nhập các lệnh sau để cài đặt gói LedBorg.
Chú thích: Bạn phải thay thế URL trong lệnh thứ ba bằng URL của gói cho kết hợp bảng / hạt nhân của bạn.
mkdir ~/ledborg-setup cd ~/ledborg-setup wget -O setup.zip https://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip unzip setup.zip chmod +x install.sh./install.sh
Tại thời điểm này, bây giờ bạn có trình bao bọc GUI cho các trình điều khiển LedBorg và các trình điều khiển được cài đặt riêng. Trên màn hình Raspbian của bạn, bạn sẽ thấy biểu tượng cho trình bao bọc GUI:
Nó ở đây trong phần Chế độ Demo mà bạn cũng có thể biến LedBorg của bạn thành đầu tiên của nhiều chỉ số. Bằng cách chọn CPU trong phần Màu sắc, đèn LED sẽ bắt đầu thay đổi từ xanh lục sang vàng sang đỏ để biểu thị tải trên bộ xử lý ARM của Raspberry Pi. Chúng tôi khuyên bạn nên thay đổi Tốc độ thành Chậm khi bạn đang ở đó - Nhanh chóng cập nhật đèn LED quá nhanh và làm cho chỉ báo CPU mất tập trung thay vì hữu ích.
Ngoài việc sử dụng giao diện GUI để chọn màu bạn có thể chọn màu từ thiết bị đầu cuối sử dụng giá trị RGB. Mở terminal và nhập lệnh sau để tắt đèn LED:
echo '000' > /dev/ledborg
Cách LedBorg xử lý các giá trị RGB là 0 có nghĩa là kênh tắt, 1 có nghĩa là kênh là một nửa sức mạnh, và 2 có nghĩa là kênh có toàn bộ sức mạnh. Vì vậy, ví dụ 001 sẽ thiết lập kênh Red ở 0%, kênh Xanh ở 0% và kênh Xanh ở mức 50% công suất.
Thay đổi giá trị thành 002 và đầu ra LED vẫn màu xanh nhưng trở nên sáng hơn vì kênh Xanh hiện ở mức 100% đầu ra. Thay đổi giá trị thành 202 và Đỏ và Xanh ở toàn bộ sức mạnh kết hợp để tạo màu đỏ tươi.
Bây giờ chúng ta đã biết cách thao tác LED theo cách thủ công, hãy xem xét sử dụng tập lệnh để biến LED của chúng ta từ ánh sáng đơn giản thành chỉ báo thực tế.
Cấu hình LedBorg của bạn như một chỉ số mưa
Đầu tiên, chúng ta cần có một khóa truy cập API cho Weather Underground. Để sử dụng cá nhân và các dự án phát triển nhỏ, API miễn phí. Truy cập trang đăng ký API thời tiết tại đây và đăng ký khóa API.
Khi bạn có khóa API, hãy truy cập vào Weather Underground và tìm kiếm thành phố bạn muốn theo dõi. Trong trường hợp của chúng tôi, chúng tôi sẽ theo dõi San Fransisco, CA. URL cho trang dự báo của San Fransisco là:
https://www.wunderground.com/US/CA/San_Francisco.html
Phần quan trọng cho mục đích của chúng tôi là phần cuối của URL: /CA/San_Francisco.html. Chúng tôi sẽ sử dụng điều đó để chỉnh sửa URL dự báo cho công cụ API. URL cơ sở là:
https://api.wunderground.com/api/YOUR API KEY/forecast/q/STATE/CITY.json
Bạn có thể tạo dự báo cho bất kỳ thành phố nào của Hoa Kỳ bằng cách nhập khóa API, mã tiểu bang hai chữ cái và tên thành phố từ URL bạn đã lấy từ kết quả tìm kiếm của Weather Underground.
Khi bạn có URL API bằng khóa API và trạng thái / thành phố được chèn, bạn có thể chỉnh sửa tập lệnh Python sau bằng cách tạo tài liệu văn bản mới trên Pi bằng cách sử dụng Leafpad và dán mã sau vào đó:
from urllib2 import urlopen import json
req = urlopen('https://api.wunderground.com/api/YOUR API KEY/forecast/q/STATE/CITY.json') parsed_json = json.load(req) pop = int(parsed_json['forecast']['txt_forecast']['forecastday'][0]['pop'])
# Sau đây là giá trị gỡ lỗi. # Chỉnh sửa băm và thay đổi # số nguyên đến 0-100 để kiểm tra # phản hồi LED.
# pop = 0
print 'Current chance of precipitation is {}.'.format(pop)
# The default setting is to turn on the LED # for any chance of rain above 20%. You can adjust # the value in 'if pop > 20:' as you wish.
if pop > 20: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('002') del LedBorg print ('Rain!') else: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('000') del LedBorg print ('No rain!')
Lưu tệp dưới dạng wunderground.py trong thư mục / home / pi /. Mở terminal và gõ lệnh sau:
python wunderground.py
Nếu bạn đã nhập khóa API và mã tiểu bang / thành phố của mình đúng cách, nó sẽ trả về một phản hồi giống như sau:
Bước cuối cùng là thiết lập một công việc cron để tự động chạy tập lệnh mà chúng ta vừa lưu trên một khoảng thời gian thông thường để giữ cho chỉ báo LED hiện tại. Vì nhiệm vụ này là cần thiết cho cả tập lệnh này và chỉ báo email sau, chúng tôi sẽ giới thiệu cho bạn việc thiết lập một công việc cron sau khi chúng tôi đã chỉ cho bạn cách thiết lập tập lệnh khác.
Định cấu hình LedBorg của bạn làm chỉ báo Gmail
Chúng ta cần mở rộng chức năng cài đặt Python của chúng ta một chút bằng cách cài đặt FeedParser, một công cụ đọc nguồn cấp dữ liệu RSS RSS / Atom. Mở terminal và nhập vào lệnh sau:
sudo easy_install feedparser
Khi quá trình cài đặt hoàn tất, chúng tôi có thể thiết lập để làm việc tạo tập lệnh kiểm tra Gmail của chúng tôi. Một lần nữa, sử dụng Leafpad, dán văn bản sau đây vào trình soạn thảo. Thay đổi tên người dùng và mật khẩu để khớp với tên người dùng và mật khẩu của tài khoản Gmail mà bạn muốn kiểm tra.
import feedparser
# Enter your Gmail username # and password. Don't include # the @gmail.com portion of # your username.
username = 'username' password = 'password'
mail = int(feedparser.parse('https://' + username + ':' + password +'@mail.google.com/gmail/feed/atom')['feed']['fullcount'])
# Sau đây là giá trị gỡ lỗi. # Chỉnh sửa băm và thay đổi # số nguyên thành 0 hoặc 1 để kiểm tra # phản hồi LED.
# mail = 0
if mail > 0: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('020') del LedBorg print ('Mail!') else: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('000') del LedBorg print ('No mail!')
Lưu tập lệnh dưới dạng gmailcheck.py. Mở terminal và gõ lệnh sau:
python gmailcheck.py
Nếu bạn có email trong hộp thư đến Gmail, đèn LED sẽ chuyển sang màu xanh lục và bạn sẽ nhận được phản hồi như vậy:
Hãy xem phần tiếp theo của hướng dẫn để đặt tập lệnh Gmail của bạn chạy theo lịch biểu.
Thiết lập một công việc cron để chạy kịch bản của bạn
Điều đầu tiên chúng tôi muốn làm là tắt đèn LED nếu nó hiện đang bật từ các thí nghiệm trước đây của chúng tôi. Tại loại thiết bị đầu cuối:
echo “000” > /dev/ledborg
Trong khi vẫn đang ở dòng lệnh, bạn có thể mở trình soạn thảo cron. Nếu bạn chưa bao giờ thiết lập một công việc cron trước đây, chúng tôi khuyên bạn nên kiểm tra hướng dẫn của chúng tôi để sử dụng nó ở đây. Điều đó nói rằng, chúng tôi sẽ hướng dẫn bạn thiết lập lịch biểu cơ bản ngay tại đây.
Tại loại thiết bị đầu cuối:
sudo crontab –e
Điều này sẽ mở ra bảng cronbian Raspbian trong trình soạn thảo văn bản Nano. Sử dụng các phím mũi tên để cuộn xuống dưới cùng. Đây là nơi chúng tôi sẽ thiết lập công việc định kỳ cron cho các tập lệnh Python của chúng tôi.
Nếu bạn muốn thiết lập tập lệnh mưa, hãy nhập dòng sau vào bảng cron:
*/5 * * * * python /home/pi/wunderground.py
Nhấn CTRL + X để thoát; chọn yes để lưu và ghi đè lên bảng cron hiện có. Giá trị chúng tôi đã nhập trong bảng cron “* / 5 * * * *” đặt tập lệnh chạy 5 phút một lần, mãi mãi.
Mỗi 5 phút là một khoảng thời gian tốt cho một tập lệnh kiểm tra mưa dự báo - bạn thậm chí có thể tranh luận rằng nó hơi quá hung hăng - nhưng nếu bạn đang cố gắng cập nhật email của mình thì đó là một khoảng thời gian quá dài để thông báo. Nếu bạn đang thiết lập lịch biểu cho tập lệnh thông báo Gmail, hãy nhập dòng sau vào bảng cron:
*/1 * * * * python /home/pi/wunderground.py
Mục nhập này chạy tập lệnh gmailcheck.py mỗi phút để có thông báo cập nhật nhanh hơn nhiều.
Thats tất cả để có nó! Bạn có thể thử nghiệm với các kịch bản Python của riêng bạn bằng cách nâng các câu lệnh if / else ra khỏi chúng ta và thử chúng với các biến mới. Nếu bạn có thể tìm thấy nguồn đầu vào cho dữ liệu, bạn có thể biến nó thành một biến trong tập lệnh Python - trung bình thị trường chứng khoán, số lượng phấn hoa, Twitter đề cập, nếu có API cho nó, bạn có thể biến nó thành chỉ báo LED xung quanh.
Cuối cùng, tôi muốn cảm ơn tất cả các nguồn tài nguyên tuyệt vời mà tôi đã từng làm trong dự án này. Đã hơn một thập kỷ kể từ khi tôi tích cực viết các chương trình và phải mất vài lần để có được bụi và rỉ sét. Những người đóng góp tại / r / LearnPython đã giúp tôi tìm hiểu về đầu ra API cho Weather Underground, nghiên cứu cách Michael ở Mitch Tech xử lý nguồn cấp dữ liệu Gmail Atom đã phân tích nó cho LedBorg dễ dàng và nghiên cứu các mô-đun học tập Python tại Học viện Code một cách tuyệt vời để nhận cú pháp cơ bản và cấu trúc của ngôn ngữ tôi chưa từng sử dụng trước đây.