資料介紹
動機
每天早上從查看短信、天氣、電子郵件開始,有時,當您感覺非常好并且最重要的是,新聞。但是,要查看這些,您需要在手機上打開手機短信應用、天氣應用和新聞應用,或者至少滾動瀏覽手機上的所有通知。
為了讓我的早晨,希望你的早晨更輕松一些,我的目標是為你的床頭柜制作一個屏幕,顯示每日預報和當前溫度,以及當天的新聞頭條。一目了然,您可以看到開始新的一天所需了解的所有信息:如何穿著得體以及昨晚發生的時事。
概述:系統和電源框圖
1 / 2 ?系統框圖
使用 Wifi Dongle 連接到 Wifi
要連接到 wifi,我需要一個 microUSB 接口、USB 轉 microUSB 適配器和一個 wifi 加密狗。在PocketBeagle上,我首先將引腳VBUS(P1_5)和VIN(P1_7)焊接在一起,并將引腳ID(P1_13)和GND(P1_15)焊接在一起,以備使用。然后,我將 microUSB 分線板連接到 PocketBeagle 上的 USB1 總線(引腳 7-15)。最后,我將 wifi 適配器插入 USB 轉 microUSB 適配器。有了 wifi 加密狗的硬件,我繼續進行連接到 wifi 的軟件方面。
USB-A 適配器和 wifi 加密狗。
在 Linux Cloud9 終端中,我運行以下代碼來連接到 wifi:
debian@beaglebone:/var/lib/cloud9/ENGI301/Project_01$ connmanctl
connmanctl》 enable wifi
Error wifi: Already enabled
connmanctl》 scan wifi
Scan completed for wifi
connmanctl》 services
*AR Rice IoT wifi_74da38de508b_5269636520496f54_managed_none
*A Rice Visitor wifi_74da38de508b_526963652056697369746f72_managed_none
Rice Owls wifi_74da38de508b_52696365204f776c73_managed_ieee8021x
eduroam wifi_74da38de508b_656475726f616d_managed_ieee8021x
DIRECT-f3-HP M15 LaserJet wifi_74da38de508b_4449524543542d66332d4850204d3135204c617365724a6574_managed_psk
connmanctl》 agent on
Agent registered
connmanctl》 connect wifi_74da38de508b_526963652056697369746f72_managed_none
Connected wifi_74da38de508b_526963652056697369746f72_managed_none
檢索天氣數據
為了檢索每日預報,我使用了 PyOWM,它是 OpenWeatherMap 的客戶端 Python 包裝庫。OpenWeatherMap ( http://openweathermap.com/ ) 是一種 API,可用于通過 API 密鑰檢索天氣數據。
from pyowm import OWM
我創建了一個免費帳戶并收到了一個 API 密鑰(免費訂閱*)。
API_key = ‘ada0a3424a34c9445c81fba49df33410’
owm = OWM(API_key)
接下來,對于我想要收集數據的位置,我找到了得克薩斯州休斯頓市的城市 ID,即 4699006。
#For Houston (city ID = 46990066)
obs = owm.weather_at_id(4699066)
定義這些變量后,我使用 get_weather 和 get_temperature 收集了三個溫度測量值。可以在 PyOWM 文檔的以下鏈接中找到其他查詢和電話:
https://buildmedia.readthedocs.org/media/pdf/pyowm/latest/pyowm.pdf
# Retrieve daily lows and highs as well as the current temperature
w = obs.get_weather()
temp = w.get_temperature(‘fahrenheit’)
*免費訂閱對您可以調用和訪問的數據有限制。幸運的是,我可以訪問當前溫度以及當天的高低溫。有關訂閱訪問的更多信息,請訪問http://openweathermap.com/。
檢索新聞標題
為了檢索每日新聞標題,我導入了許多庫:
要求
bs4(美麗湯)
JSON
約會時間
“requests”是一個庫,當我從紐約時報網站上抓取數據(頭條新聞)時,它可以幫助我們發出 HTTP 請求。
import requests
url = “https://www.nytimes.com/”
r = requests.get(url)
“bs4”是一個幫助從 HTML 中解析數據的庫。有關 bs4 用法的更多信息,請訪問:https ://www.crummy.com/software/BeautifulSoup/bs4/doc/ 。
from bs4 import BeautifulSoup
r_html = r.text
soup = BeautifulSoup(r_html, “html.parser”)
scripts = soup.find_all(‘script’)
“json”是一個可以編碼和解碼 JSON 的庫,JSON 是用 JavaScript 對象表示法編寫的文本。我使用 json 將 JSON 從網絡抓取的數據解碼為 Python。
import json
for script in scripts:
if ‘preloadedData’ in script.text:
jsonStr = script.text
jsonStr = jsonStr.split(‘=’, 1)[1].strip()
jsonStr = jsonStr.rsplit(‘;’, 1)[0]
jsonObj = json.loads(jsonStr)
使用這些庫,我可以找到并抓取新聞標題,以便稍后在 LCD 屏幕上顯示。
設置 LCD 屏幕
硬件:
從 LCD 屏幕到 PocketBeagle 上的 GPIO 和 SPI0 的連接。
為了將 LCD 屏幕物理連接到 PocketBeagle,我在 LCD 屏幕上使用了引腳 Vin、GND、CLK、MISO、MOSI、CS、D/C 和 RST。我將這些引腳連接到 PocketBeagle(SPI0 和 GPIO)上它們各自的引腳。可以在本文檔末尾的燒結圖中找到這些連接。
我遵循了 LCD 屏幕制造商提供的說明,可在此處找到:https://learn.adafruit.com/adafruit-2-dot-8-color-tft-touchscreen-breakout-v2/overview。*
*起初,盡管連接正確,但我的 LCD 屏幕并未與 PocketBeagle 連接。后來我發現是因為我錯過了關鍵的一步;必須通過焊接閉合 LCD 屏幕背面的 IM1、IM2 和 IM3 跳線:
使用前先將液晶屏上的IM1、IM2、IM3插孔焊好。
軟件:
為了在 PocketBeagle 上設置和使用 LCD 屏幕,我導入了幾個庫。我設置和使用 LCD 屏幕的分步過程基于制造商在此處提供的一組基本說明:http ://learn.adafruit.com/adafruit-2-dot-8-color- tft-touchscreen-breakout-v2 。
木板
太平船務
adafruit_rgb_display
Adafruit_BBIO
時間
文本換行
“digitalio”是一個提供基本數字引腳支持的庫。
“板”是一個庫,用于描述和設置使用的引腳和板。“digitalio”和“board”一起使用:
import board
import digitalio
cs_pin = digitalio.DigitalInOut(board.P2_2)
dc_pin = digitalio.DigitalInOut(board.P2_4)
reset_pin = digitalio.DigitalInOut(board.P2_6)
spi = board.SPI()
“PIL”是 Python 圖像庫。我特別發現此鏈接對于了解模塊和與模塊相關的用法非常有用:https ://pillow.readthedocs.io/en/stable/ 。該庫用于實際顯示文本(天氣更新和新聞標題)液晶屏。
from PIL import Image, ImageDraw, ImageFont
“adafruit_rgb_display”是用于連接 LCD 屏幕 (ILI9341) 的庫。該庫是通過 LCD 屏幕的供應商推薦的。我按照此驅動程序的說明操作:https ://github.com/adafruit/Adafruit_CircuitPython_RGB_Display 。
import adafruit_rgb_display.ili9341 as ili9341
disp = ili9341.ILI9341(spi, rotation=90, cs=cs_pin, dc=dc_pin, rst=reset_pin,
baudrate=BAUDRATE)
為了遵循這一點,我還必須在安裝驅動程序之前安裝驅動程序的依賴項。說明可在此處找到:https ://github.com/adafruit/CircuitPython_Community_Bundle 。為了將此驅動程序用于 ILI9341,還進行了其他安裝(在驅動程序的 README 文件中進行了描述)。通常,我按照以下步驟安裝必要的驅動程序:
sudo pip3 install Adafruit_Blinka
# if the Adafruit_Blinka installation does not work:
# sudo apt-get install python-setuptools
# sudo apt-get install python-dev
pip3 install adafruit-circuitpython-lis3dh
# Download the bundle zip file from the (CircuitPython_Community_Bundle link)
git submodule init
git submodule update
sudo apt-get install python3-venv
python3 -m venv .env
source .env/bin/activate
pip install circuitpython-build-tools
source .env/bin/activate
circuitpython-build-bundles --filename_prefix adafruit-circuitpython-bundle --library_location libraries --library_depth 2
sudo pip3 install adafruit-circuitpython-rgb-display
Adafruit_Blinka 鏡像 CircuitPython,這樣我就可以使用其他庫,例如“board”和“digitalio”。Digitalio 和板用于定義和描述 PocketBeagle 的引腳輸出,以便我們可以設置顯示。
使用“Adafruit_BBIO”以便我可以使用 GPIO 引腳,特別是按鈕。使用這個庫,用戶可以通過按下按鈕來控制顯示。
import Adafruit_BBIO.GPIO as GPIO
“時間”是一個庫,我專門用來記錄按下按鈕時經過的時間。記錄時間是必不可少的,因為當按下按鈕超過 2 秒時,設備將停止運行腳本。當按下按鈕少于 2 秒時,用戶可以在查看當天的天氣預報和新聞標題之間切換。
在液晶屏上顯示
為了在 LCD 屏幕上顯示內容,我們使用 PIL 庫,如下所示。此外,我還下載了一個不同字體的 zip 文件來幫助定義“fnt”。
def createRGB(disp):
if disp.rotation % 180 == 90:
height = disp.width # we swap height/width to rotate it to landscape!
width = disp.height
else:
width = disp.width # we swap height/width to rotate it to landscape!
height = disp.height
image = Image.new(‘RGB’, (width, height))
# Reset the display
draw = ImageDraw.Draw(image)
draw.rectangle((0, 0, width, height), outline=0, fill=(0, 0, 0))
disp.image(image)
# Display the desired output
fnt = ImageFont.truetype(‘Pillow-master/Tests/fonts/FreeMono.ttf’, 16)
draw.text((0,0), text=cleand, fill = (255,255,255), font=fnt)
disp.image(image)
return createRGB(disp)
使用按鈕控制顯示
我的設備允許用戶通過按下按鈕來控制他們希望看到的信息(天氣預報或新聞標題)。
我使用一個 1k 歐姆電阻將按鈕添加到從一個輸入到按鈕的 3.3V 輸入,并將對角線引腳從 3.3V 輸入連接到 PocketBeagle 上的 GPIO(白線)。
按鈕的電路連接。
具體來說,如果按鈕被按下的次數是奇數,則顯示天氣預報。連接后,設備將開始運行。如果用戶按下按鈕一次,就會顯示當天的天氣預報。如果再按一次該按鈕,新聞標題就會顯示在 LCD 屏幕上。連續按下按鈕將導致新聞標題和天氣預報在 LCD 屏幕上交替顯示。
- 使用PocketBeagle板創建樂器
- 多合一Arduino PCB板設計
- 二合一雷達系統開源
- Beagleboard的PocketBeagle解釋:動手回顧
- Pocketbeagle LED音樂展示臺
- 多傳感器系統開源分享
- PocketBeagle藥物分配器開源分享
- Arduino ESP32多合一機器人開源
- 移動電源二合一管理芯片SY6926開源
- 基于FPGA的多圖片動態顯示VGA系統 27次下載
- 基于FPGA的VPX時間統一系統設計與實現 4次下載
- 基于多標簽策略進行答案搜索的CKBQA系統 10次下載
- 如何使用物聯網操作系統Zephyr實現“連續集成”開源軟件的詳細說明
- FPIR系統多通道射頻干擾信號檢測技術的優化 9次下載
- N合一無線遙控系統的設計與應用 68次下載
- 三合一電驅系統可靠性試驗研究與應用 1099次閱讀
- 三合一電驅系統可靠性試驗研究與應用 745次閱讀
- 利用開源軟件的最佳實踐 464次閱讀
- 什么三網合一?三網合一如何建設? 4610次閱讀
- 什么是多合一動力總成組合架構? 6410次閱讀
- 德州儀器多合一動力總成系統解決方案,為用戶提供在任意級別上的探索設計 1635次閱讀
- dfrobotRomeo BLE多合一控制器簡介 2399次閱讀
- 開源與云的一些爭論 3200次閱讀
- 聯智通達科技人證合一核驗終端產品介紹 1906次閱讀
- 多表合一的信息采集系統的原理及設計 2574次閱讀
- 多表合一遠程抄表系統的原理及設計 2482次閱讀
- 利用Java寫開源庫 覆蓋70多種推薦算法 8141次閱讀
- 移動電源三合一方案都有哪些_移動電源三合一方案哪種最穩定 1.6w次閱讀
- 移動電源三合一方案解析_移動電源三合一方案的優點介紹 9727次閱讀
- 利用AD5380多通道DAC實現輸出通道監控 3088次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多