Xây dựng đèn chỉ báo LED với Raspberry Pi (cho Email, thời tiết hoặc bất cứ điều gì)
Raspberry Pi tạo ra một nền tảng nhỏ gọn đẹp mắt để gắn đèn chỉ báo cho tất cả các loại dự án - thông báo thời tiết, email mới, v.v. Đọc tiếp khi chúng tôi chỉ cho bạn cách nối mô-đun LED với Pi của bạn và thiết lập một số thông báo cơ bản.
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, nơi chúng tôi bao gồm một chút blurb ở đầu phác thảo chính xác lợi ích mà bạn sẽ nhận được từ dự án, blurb khá ngắn trong trường hợp này vì lợi ích chỉ đơn giản là vui chơi.
Raspberry Pi là một thiết bị hoàn hảo để chơi xung quanh, thử nghiệm với thiết bị điện tử và học một số chương trình. Không ai nhu cầu một chỉ báo mưa xung quanh trong nhà bếp của họ, ví dụ, nhưng xây dựng một cái 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 theo bạn trong 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. Trước 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 để bắt đầu với Raspberry Pi (và do đó có những điều cơ bản được đề cập để cài đặt Rasbian trên Raspberry Pi của chúng tôi).
Nếu bạn đang tìm cách thực hiện dự án này với ngân sách, chúng tôi có thể tự tin nói với bạn rằng mẫu Raspberry Pi mới nhất là quá mức cần thiết cho công việc và chúng tôi khuyến khích bạn thổi bay bụi Raspberry Pi cũ mà bạn đã bỏ đi trong tủ quần áo hoặc chọn một thứ rẻ tiền được sử dụng từ eBay hoặc tương tự. Ngân sách khôn ngoan, một chiếc Raspberry Pi 1 Model A hoặc Model B dài hạn đã đánh cắp eBay với giá $ 10-15 là một sự phù hợp hoàn hảo cho dự án này khi mua một chiếc Pi thế hệ mới 35 đô la hoàn toàn mới.
Ngoài việc cài đặt một đơn vị Pi chức năng với Raspbian, bạn sẽ cần những điều sau đây:
- 1 mô-đun LedBorg (~ $ 5,00 với vận chuyển $ 4 từ Anh sang Mỹ, hoạt động với tất cả các mẫu Raspberry Pi).
- 1 Hộp đựng Raspberry Pi tương thích với mẫu Pi cụ thể của bạn như hộp đựng Raspberry Pi 1 Model B này.
Chú thích: Vỏ Pi rõ ràng / mờ hoàn toàn là tùy chọn nhưng nếu bạn hiện đang sử dụng vỏ mờ đục thì đèn 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 để tắt đèn hoặc sử dụng cáp mở rộng GPIO với bộ công cụ đột phá - như cái này từ Adafbean Industries - để buộc LedBorg vào Raspberry Pi của bạn. Trong khi sử dụng cáp đột phá làm tăng thêm khoảng 8 đô la cho chi phí của dự án, nó mang lại nhiều tiềm năng hơn cho việc tùy chỉnh sản phẩm cuối cùng để bạn có thể dễ dàng đặt đèn LED bên trong mọi thứ hoặc dưới thứ gì đó bạn muốn chiếu sáng.
Cài đặt LedBorg
Mặc dù bạn chắc chắn có thể tự tạo cho mình một đèn LED hoàn toàn từ đầu (và một cuộc điều tra về công cụ tìm kiếm sẽ cho ra rất nhiều người đã làm như vậy), tổ chức Piborg sản xuất một mô-đun LED nhỏ gọn và rẻ tiền như vậy, LedBorg, mà chúng tôi không thể ' Không thể sử dụng nó làm cơ sở cho dự án đèn LED Raspberry Pi của chúng tôi.
Việc cài đặt mô-đun rất nhanh chóng vì nó được thiết kế để khớp trực tiếp 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 đó cạnh của LedBorg được làm phẳng 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 nằm ngoài rìa). Xem bức ảnh trên.
Trong khi bạn mở bảng Pi, bây giờ sẽ là thời điểm tuyệt vời để che các đèn LED trên bảng (bên cạnh các cổng USB), đặc biệt nếu bạn đang sử dụng hộp đựng rõ ràng. Bạn không muốn nhầm lẫn khi đọc chỉ báo LedBorg của mình vì đèn chỉ báo nguồn và mạng quá sáng.
Chúng tôi phủ lên chúng tôi một lớp băng keo điện màu trắng. Điều này làm mờ chúng đủ để chúng ta vẫn có thể tham chiếu chúng nhưng chúng mờ hơn rất nhiều so với LedBorg, nó không còn gây mất tập trung.
Khi bạn đã cài đặt LedBorg và tùy ý, phủ các đèn LED của Pi bằng băng keo điện, đã đến lúc đóng vỏ máy lại. 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 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 rằng bạn đã lấy đúng gói 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 bo mạch Raspberry Pi của bạn không có lỗ lắp, thì đó là Bản sửa đổi 1. Nếu Raspberry Pi của bạn có lỗ lắp (nằm ở 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 kernel cài đặt Rasbian của bạn. Mở terminal và nhập lệnh sau để kiểm tra:
uname -r
Khi bạn có số Sửa đổi và số 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 mình. 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 kernel 3.6.11, vì vậy chúng tôi sẽ lấy tệp raspbian-2013-02-09-rev1.zip.
Để cài đặt tất cả các tính năng, chúng tôi cần mở thiết bị đầu cuối 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 / kernel của bạn.
mkdir ~ / ledborg-setup
cd ~ / ledborg-setup
wget -O setup.zip http://www.piborg.org/doads/ledborg/raspbian-2013-02-09-rev1.zip
giải nén setup.zip
chmod + x install.sh
./install.sh
Tại thời điểm này, bạn đã có trình bao bọc GUI cho trình điều khiển LedBorg và trình điều khiển tự cài đặt. Trên máy tính để bàn Raspbian của bạn, bạn sẽ thấy một biểu tượng cho trình bao bọc GUI:
Hãy tiếp tục và nhấp vào biểu tượng LedBorg để khởi chạy trình bao bọc GUI. Bạn sẽ được đối xử với giao diện chọn màu như vậy:
Bây giờ là thời điểm hoàn hảo để đảm bảo mô-đun của bạn hoạt động. Chọn bất kỳ màu nào, lưu lại cho màu đen, để thử nó. Chúng tôi sẽ kiểm tra nó bằng cách chọn một vài màu:
Có vẻ tốt! Nó sáng và nhựa mờ của trường hợp chúng tôi đặt hàng cho dự án cung cấp độ khuếch tán vừa phải. Nếu bạn muốn chơi với mô-đun LED nhiều hơn trước khi tiếp tục, hãy nhấp vào Chế độ demo:
Trong chế độ demo, bạn có thể chuyển qua tất cả các màu ở nhiều tốc độ khác nhau, kiểm tra đầu ra cao / thấp và nếu không thì đặt mô-đun LED qua các bước.
Ở đây trong phần Chế độ demo, bạn cũng có thể biến LedBorg của mình thành đầu tiên trong số 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ừ màu lục sang màu vàng sang màu đỏ để 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 trong khi bạn đang ở đó - Nhanh chóng cập nhật đèn LED quá nhanh và làm cho chỉ báo CPU bị phân tâm 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 bằng các giá trị RGB. Mở terminal và nhập lệnh sau để tắt đèn LED:
tiếng vang "000"> / dev / ledborg
Cách LedBorg xử lý các giá trị RGB là 0 có nghĩa là kênh bị tắt, 1 có nghĩa là kênh có một nửa công suất và 2 có nghĩa là kênh có toàn bộ công suất. Vì vậy, ví dụ 001 sẽ đặt kênh Đỏ ở mức 0%, kênh Xanh lục ở mức 0% và kênh Xanh lam ở mức 50%.
Thay đổi giá trị thành 002 và đầu ra LED vẫn có màu xanh nhưng trở nên sáng hơn vì kênh Blue hiện ở mức đầu ra 100%. Thay đổi giá trị thành 202 và Đỏ và Xanh kết hợp với toàn bộ sức mạnh để tạo thành màu đỏ tươi.
Bây giờ chúng ta đã biết cách điều khiển đèn LED bằng tay, hãy xem xét việc sử dụng các tập lệnh để biến đèn LED của chúng ta từ một ánh sáng đơn giản thành một chỉ báo thực tế.
Định cấu hình LedBorg của bạn dưới dạng chỉ báo mưa
Đối với phần này của hướng dẫn, chúng tôi sẽ kết hợp nhiều thứ lại với nhau để biến mô-đun LED LedBorg của chúng tôi thành một chỉ báo mưa dựa trên dự báo thời tiết cho vị trí của chúng tôi. Chúng tôi sẽ sử dụng tập lệnh Python để gọi API thời tiết, lần lượt sẽ đọc khả năng mưa trong ngày và sau đó chuyển đèn LED từ màu xanh sang màu xanh sáng để biểu thị cơn mưa dự báo.
Trước tiên, chúng ta cần lấy khóa truy cập API cho Weather Underground. Đối với sử dụng cá nhân và các dự án phát triển nhỏ, API là 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 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à:
http://www.wunderground.com/US/CA/San_Francisco.html
Phần quan trọng cho các mục đích của chúng tôi là phần cuối cùng 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à:
http://api.wunderground.com/api/YOUR API KEY / dự báo / q / STATE / CITY.json
Bạn có thể tạo dự báo cho bất kỳ thành phố nào ở Hoa Kỳ bằng cách nhập khóa API, mã trạng thái hai chữ cái và tên thành phố từ URL bạn đã lấy từ kết quả tìm kiếm Weather Weather của bạn.
Khi bạn đã nhập URL API với 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 của mình bằng Leafpad và dán mã sau vào đó:
từ urlllen nhập urllib2
nhập khẩu json
req = urlopen ('http://api.wunderground.com/api/YOUR API KEY / dự báo / q / STATE / CITY.json')
Parsed_json = json.load (req)
pop = int (Parsed_json ['dự báo'] ['txt_forecast'] ['ngày dự báo'] [0] ['pop'])# Sau đây là giá trị gỡ lỗi.
# Chỉnh sửa hàm băm và thay đổi
# số nguyên thành 0-100 để kiểm tra
# phản ứng LED.# pop = 0
in 'Cơ hội lượng mưa hiện tại là .'. format (pop)
# Cài đặt mặc định là bật đèn LED
# cho bất kỳ cơ hội mưa trên 20%. Bạn có thể điều chỉnh
# giá trị trong "nếu pop> 20:" như bạn muốn.
nếu bật> 20:
LedBorg = mở ('/ dev / ledborg', 'w')
LedBorg.write ('002')
del LedBorg
in ('Mưa!')
khác:
LedBorg = mở ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
in ('Không mưa!')
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 đúng khóa API và mã tiểu bang / thành phố của mình, mã này sẽ phản hồi lại như sau:
Nếu lượng mưa được dự đoán cho khu vực của bạn, đầu ra LedBorg của bạn sẽ giống như sau:
Bây giờ chờ đợi một ngày mưa để kiểm tra đúng kịch bản sẽ là tẻ nhạt. Nếu hôm nay không có mưa trong khu vực của bạn và bạn muốn thấy đèn LED sáng lên, hãy chỉnh sửa tập lệnh wunderground.py và thay thế giá trị của dòng nhạc pop pop = pop Thẻ thông qua trong dòng 13 bằng giá trị lớn hơn 20 như 60 rằng dự báo của chúng tôi trở lại. Chỉ cần nhớ thay đổi dòng trở lại thành pop pop = pop 'khi bạn đã hoàn tất.
Bước cuối cùng là thiết lập một công việc định kỳ để tự động chạy tập lệnh mà chúng ta vừa lưu trong một khoảng thời gian thông thường để giữ cho đèn chỉ báo LED hiện tại. Vì tác vụ này là cần thiết cho cả tập lệnh này và chỉ báo email tiếp theo, chúng tôi sẽ đề cập đến việc thiết lập công việc định kỳ 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
Ai không thích bản sửa lỗi dopamine đi kèm khi thấy email mới trong hộp thư đến của họ? Trong phần hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng LedBorg làm chỉ báo Gmail mới. Giống như lần trước, chúng tôi sẽ kết hợp một đầu vào bên ngoài (trong trường hợp này là nguồn cấp dữ liệu Atom thay vì API) và tập lệnh đơn giản để điều khiển đèn LED của chúng tôi.
Chúng ta cần mở rộng chức năng cài đặt Python 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 / Atom của Python. Mở terminal và nhập lệnh sau:
sudo easy_install feedparser
Sau khi cài đặt hoàn tất, chúng tôi có thể thiết lập để tạo tập lệnh kiểm tra Gmail của chúng tôi. Một lần nữa, bằng cách sử dụng Leafpad, dán văn bản sau vào trình chỉnh sửa. 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.
nhập liệu
# Nhập tên người dùng Gmail của bạn
# và mật khẩu. Không bao gồm
# phần @ gmail.com của
# tên người dùng của bạn.
tên người dùng = "tên người dùng"
mật khẩu = "mật khẩu"
mail = int (feedparser.parse ("https: //" + tên người dùng + ":" + mật khẩu + "@ mail.google.com/gmail/feed/atom")["feed"[[=fullcount"])
# Sau đây là giá trị gỡ lỗi.
# Chỉnh sửa hàm băm và thay đổi
# số nguyên thành 0 hoặc 1 để kiểm tra
# phản ứng LED.# thư = 0
nếu thư> 0:
LedBorg = mở ('/ dev / ledborg', 'w')
LedBorg.write ('020')
del LedBorg
in ('Thư!')
khác:
LedBorg = mở ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
in ('Không có thư!')
Lưu tập lệnh dưới dạng gmailcheck.py. Mở terminal và gõ lệnh sau:
con trăn gmailcheck.py
Nếu bạn có email trong hộp thư đến Gmail, đèn LED sẽ chuyển sang màu xanh và bạn sẽ nhận được phản hồi như sau:
Nếu bạn có thư trong hộp thư đến Gmail, LedBorg của bạn sẽ trông như vậy:
Giống như kịch bản kiểm tra mưa, chúng tôi đã bao gồm một giá trị gỡ lỗi. Nếu bạn không có bất kỳ email mới nào, bạn có thể tự gửi email để tăng số lượng hộp thư đến của mình lên 1 hoặc bạn có thể chỉnh sửa hàm băm nhận xét và thay đổi dòng gỡ lỗi thành Thư mail = 1 Thẻ để kiểm tra tập lệnh. Nhớ hoàn nguyên dòng khi bạn hoàn thành kiểm tra.
Tham gia vào 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 trình.
Thiết lập công việc định kỳ để chạy tập lệnh của bạn
Bây giờ chúng tôi có hai tập lệnh để chơi, chúng tôi cần thiết lập một công việc định kỳ để chạy chúng trong suốt cả ngày để giữ cho đèn chỉ báo LED hiện tại.
Điều đầu tiên chúng tôi muốn làm là tắt đèn LED nếu nó hiện đang được bật từ các thử nghiệm trước đó của chúng tôi. Tại loại thiết bị đầu cuối:
echo Hồi 000 000> / dev / ledborg
Trong khi bạn vẫn ở 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 định kỳ 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 một lịch trình 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ở bảng cron 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 phía dưới cùng. Đây là nơi chúng ta sẽ thiết lập công việc định kỳ cho các tập lệnh Python của chúng tôi.
Nếu bạn muốn thiết lập kịch bản 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 có để 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 cứ sau 5 phút, mãi mãi.
Cứ sau 5 phút là một khoảng thời gian tốt cho một kịch bản kiểm tra mưa dự báo - bạn thậm chí có thể cho rằng nó hơi quá khích - nhưng nếu bạn đang cố gắng giữ 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 trình 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 để 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 các tập lệnh Python của riêng bạn bằng cách loại bỏ các câu lệnh if / other ra khỏi chúng ta và thử chúng với các biến hoàn toà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 trung bình thị trường chứng khoán Python, số lượng phấn hoa, Twitter đề cập, nếu có API cho nó, bạn có thể biến nó thành một chỉ báo LED xung quanh.
Cuối cùng, tôi muốn cảm ơn tất cả các nguồn lực tuyệt vời mà tôi đã sử dụng để làm việc trong dự án này. Đã hơn một thập kỷ trôi qua kể từ khi tôi tích cực viết chương trình và phải mất vài tiếng gõ để thoát 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 qua tại Mitch Tech xử lý nguồn cấp dữ liệu Gmail Atom giúp phân tích cú pháp cho LedBorg dễ dàng và nghiên cứu các mô-đun học Python tại Code Academy một cách tuyệt vời để chọn cú pháp và cấu trúc cơ bản của ngôn ngữ mà tôi chưa từng sử dụng trước đây.