資料介紹
動(dòng)機(jī)
每天早上從查看短信、天氣、電子郵件開(kāi)始,有時(shí),當(dāng)您感覺(jué)非常好并且最重要的是,新聞。但是,要查看這些,您需要在手機(jī)上打開(kāi)手機(jī)短信應(yīng)用、天氣應(yīng)用和新聞應(yīng)用,或者至少滾動(dòng)瀏覽手機(jī)上的所有通知。
為了讓我的早晨,希望你的早晨更輕松一些,我的目標(biāo)是為你的床頭柜制作一個(gè)屏幕,顯示每日預(yù)報(bào)和當(dāng)前溫度,以及當(dāng)天的新聞?lì)^條。一目了然,您可以看到開(kāi)始新的一天所需了解的所有信息:如何穿著得體以及昨晚發(fā)生的時(shí)事。
概述:系統(tǒng)和電源框圖
1 / 2 ?系統(tǒng)框圖
使用 Wifi Dongle 連接到 Wifi
要連接到 wifi,我需要一個(gè) microUSB 接口、USB 轉(zhuǎn) microUSB 適配器和一個(gè) wifi 加密狗。在PocketBeagle上,我首先將引腳VBUS(P1_5)和VIN(P1_7)焊接在一起,并將引腳ID(P1_13)和GND(P1_15)焊接在一起,以備使用。然后,我將 microUSB 分線板連接到 PocketBeagle 上的 USB1 總線(引腳 7-15)。最后,我將 wifi 適配器插入 USB 轉(zhuǎn) microUSB 適配器。有了 wifi 加密狗的硬件,我繼續(xù)進(jìn)行連接到 wifi 的軟件方面。
USB-A 適配器和 wifi 加密狗。
在 Linux Cloud9 終端中,我運(yùn)行以下代碼來(lái)連接到 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
檢索天氣數(shù)據(jù)
為了檢索每日預(yù)報(bào),我使用了 PyOWM,它是 OpenWeatherMap 的客戶端 Python 包裝庫(kù)。OpenWeatherMap ( http://openweathermap.com/ ) 是一種 API,可用于通過(guò) API 密鑰檢索天氣數(shù)據(jù)。
from pyowm import OWM
我創(chuàng)建了一個(gè)免費(fèi)帳戶并收到了一個(gè) API 密鑰(免費(fèi)訂閱*)。
API_key = ‘a(chǎn)da0a3424a34c9445c81fba49df33410’
owm = OWM(API_key)
接下來(lái),對(duì)于我想要收集數(shù)據(jù)的位置,我找到了得克薩斯州休斯頓市的城市 ID,即 4699006。
#For Houston (city ID = 46990066)
obs = owm.weather_at_id(4699066)
定義這些變量后,我使用 get_weather 和 get_temperature 收集了三個(gè)溫度測(cè)量值。可以在 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’)
*免費(fèi)訂閱對(duì)您可以調(diào)用和訪問(wèn)的數(shù)據(jù)有限制。幸運(yùn)的是,我可以訪問(wèn)當(dāng)前溫度以及當(dāng)天的高低溫。有關(guān)訂閱訪問(wèn)的更多信息,請(qǐng)?jiān)L問(wèn)http://openweathermap.com/。
檢索新聞標(biāo)題
為了檢索每日新聞標(biāo)題,我導(dǎo)入了許多庫(kù):
要求
bs4(美麗湯)
JSON
約會(huì)時(shí)間
“requests”是一個(gè)庫(kù),當(dāng)我從紐約時(shí)報(bào)網(wǎng)站上抓取數(shù)據(jù)(頭條新聞)時(shí),它可以幫助我們發(fā)出 HTTP 請(qǐng)求。
import requests
url = “https://www.nytimes.com/”
r = requests.get(url)
“bs4”是一個(gè)幫助從 HTML 中解析數(shù)據(jù)的庫(kù)。有關(guān) bs4 用法的更多信息,請(qǐng)?jiān)L問(wèn):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”是一個(gè)可以編碼和解碼 JSON 的庫(kù),JSON 是用 JavaScript 對(duì)象表示法編寫(xiě)的文本。我使用 json 將 JSON 從網(wǎng)絡(luò)抓取的數(shù)據(jù)解碼為 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)
使用這些庫(kù),我可以找到并抓取新聞標(biāo)題,以便稍后在 LCD 屏幕上顯示。
設(shè)置 LCD 屏幕
硬件:
從 LCD 屏幕到 PocketBeagle 上的 GPIO 和 SPI0 的連接。
為了將 LCD 屏幕物理連接到 PocketBeagle,我在 LCD 屏幕上使用了引腳 Vin、GND、CLK、MISO、MOSI、CS、D/C 和 RST。我將這些引腳連接到 PocketBeagle(SPI0 和 GPIO)上它們各自的引腳??梢栽诒疚臋n末尾的燒結(jié)圖中找到這些連接。
我遵循了 LCD 屏幕制造商提供的說(shuō)明,可在此處找到:https://learn.adafruit.com/adafruit-2-dot-8-color-tft-touchscreen-breakout-v2/overview。*
*起初,盡管連接正確,但我的 LCD 屏幕并未與 PocketBeagle 連接。后來(lái)我發(fā)現(xiàn)是因?yàn)槲义e(cuò)過(guò)了關(guān)鍵的一步;必須通過(guò)焊接閉合 LCD 屏幕背面的 IM1、IM2 和 IM3 跳線:
使用前先將液晶屏上的IM1、IM2、IM3插孔焊好。
軟件:
為了在 PocketBeagle 上設(shè)置和使用 LCD 屏幕,我導(dǎo)入了幾個(gè)庫(kù)。我設(shè)置和使用 LCD 屏幕的分步過(guò)程基于制造商在此處提供的一組基本說(shuō)明:http ://learn.adafruit.com/adafruit-2-dot-8-color- tft-touchscreen-breakout-v2 。
木板
太平船務(wù)
adafruit_rgb_display
Adafruit_BBIO
時(shí)間
文本換行
“digitalio”是一個(gè)提供基本數(shù)字引腳支持的庫(kù)。
“板”是一個(gè)庫(kù),用于描述和設(shè)置使用的引腳和板?!癲igitalio”和“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 圖像庫(kù)。我特別發(fā)現(xiàn)此鏈接對(duì)于了解模塊和與模塊相關(guān)的用法非常有用:https ://pillow.readthedocs.io/en/stable/ 。該庫(kù)用于實(shí)際顯示文本(天氣更新和新聞標(biāo)題)液晶屏。
from PIL import Image, ImageDraw, ImageFont
“adafruit_rgb_display”是用于連接 LCD 屏幕 (ILI9341) 的庫(kù)。該庫(kù)是通過(guò) LCD 屏幕的供應(yīng)商推薦的。我按照此驅(qū)動(dòng)程序的說(shuō)明操作: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)
為了遵循這一點(diǎn),我還必須在安裝驅(qū)動(dòng)程序之前安裝驅(qū)動(dòng)程序的依賴項(xiàng)。說(shuō)明可在此處找到:https ://github.com/adafruit/CircuitPython_Community_Bundle 。為了將此驅(qū)動(dòng)程序用于 ILI9341,還進(jìn)行了其他安裝(在驅(qū)動(dòng)程序的 README 文件中進(jìn)行了描述)。通常,我按照以下步驟安裝必要的驅(qū)動(dòng)程序:
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,這樣我就可以使用其他庫(kù),例如“board”和“digitalio”。Digitalio 和板用于定義和描述 PocketBeagle 的引腳輸出,以便我們可以設(shè)置顯示。
使用“Adafruit_BBIO”以便我可以使用 GPIO 引腳,特別是按鈕。使用這個(gè)庫(kù),用戶可以通過(guò)按下按鈕來(lái)控制顯示。
import Adafruit_BBIO.GPIO as GPIO
“時(shí)間”是一個(gè)庫(kù),我專門(mén)用來(lái)記錄按下按鈕時(shí)經(jīng)過(guò)的時(shí)間。記錄時(shí)間是必不可少的,因?yàn)楫?dāng)按下按鈕超過(guò) 2 秒時(shí),設(shè)備將停止運(yùn)行腳本。當(dāng)按下按鈕少于 2 秒時(shí),用戶可以在查看當(dāng)天的天氣預(yù)報(bào)和新聞標(biāo)題之間切換。
在液晶屏上顯示
為了在 LCD 屏幕上顯示內(nèi)容,我們使用 PIL 庫(kù),如下所示。此外,我還下載了一個(gè)不同字體的 zip 文件來(lái)幫助定義“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)
使用按鈕控制顯示
我的設(shè)備允許用戶通過(guò)按下按鈕來(lái)控制他們希望看到的信息(天氣預(yù)報(bào)或新聞標(biāo)題)。
我使用一個(gè) 1k 歐姆電阻將按鈕添加到從一個(gè)輸入到按鈕的 3.3V 輸入,并將對(duì)角線引腳從 3.3V 輸入連接到 PocketBeagle 上的 GPIO(白線)。
按鈕的電路連接。
具體來(lái)說(shuō),如果按鈕被按下的次數(shù)是奇數(shù),則顯示天氣預(yù)報(bào)。連接后,設(shè)備將開(kāi)始運(yùn)行。如果用戶按下按鈕一次,就會(huì)顯示當(dāng)天的天氣預(yù)報(bào)。如果再按一次該按鈕,新聞標(biāo)題就會(huì)顯示在 LCD 屏幕上。連續(xù)按下按鈕將導(dǎo)致新聞標(biāo)題和天氣預(yù)報(bào)在 LCD 屏幕上交替顯示。
- 使用PocketBeagle板創(chuàng)建樂(lè)器
- 多合一Arduino PCB板設(shè)計(jì)
- 二合一雷達(dá)系統(tǒng)開(kāi)源
- Beagleboard的PocketBeagle解釋:動(dòng)手回顧
- Pocketbeagle LED音樂(lè)展示臺(tái)
- 多傳感器系統(tǒng)開(kāi)源分享
- PocketBeagle藥物分配器開(kāi)源分享
- Arduino ESP32多合一機(jī)器人開(kāi)源
- 移動(dòng)電源二合一管理芯片SY6926開(kāi)源
- 基于FPGA的多圖片動(dòng)態(tài)顯示VGA系統(tǒng) 27次下載
- 基于FPGA的VPX時(shí)間統(tǒng)一系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 4次下載
- 基于多標(biāo)簽策略進(jìn)行答案搜索的CKBQA系統(tǒng) 10次下載
- 如何使用物聯(lián)網(wǎng)操作系統(tǒng)Zephyr實(shí)現(xiàn)“連續(xù)集成”開(kāi)源軟件的詳細(xì)說(shuō)明
- FPIR系統(tǒng)多通道射頻干擾信號(hào)檢測(cè)技術(shù)的優(yōu)化 9次下載
- N合一無(wú)線遙控系統(tǒng)的設(shè)計(jì)與應(yīng)用 68次下載
- 三合一電驅(qū)系統(tǒng)可靠性試驗(yàn)研究與應(yīng)用 1355次閱讀
- 三合一電驅(qū)系統(tǒng)可靠性試驗(yàn)研究與應(yīng)用 902次閱讀
- 利用開(kāi)源軟件的最佳實(shí)踐 572次閱讀
- 什么三網(wǎng)合一?三網(wǎng)合一如何建設(shè)? 5129次閱讀
- 什么是多合一動(dòng)力總成組合架構(gòu)? 6812次閱讀
- 德州儀器多合一動(dòng)力總成系統(tǒng)解決方案,為用戶提供在任意級(jí)別上的探索設(shè)計(jì) 1688次閱讀
- dfrobotRomeo BLE多合一控制器簡(jiǎn)介 2557次閱讀
- 開(kāi)源與云的一些爭(zhēng)論 3292次閱讀
- 聯(lián)智通達(dá)科技人證合一核驗(yàn)終端產(chǎn)品介紹 2010次閱讀
- 多表合一的信息采集系統(tǒng)的原理及設(shè)計(jì) 2678次閱讀
- 多表合一遠(yuǎn)程抄表系統(tǒng)的原理及設(shè)計(jì) 2646次閱讀
- 利用Java寫(xiě)開(kāi)源庫(kù) 覆蓋70多種推薦算法 8300次閱讀
- 移動(dòng)電源三合一方案都有哪些_移動(dòng)電源三合一方案哪種最穩(wěn)定 1.6w次閱讀
- 移動(dòng)電源三合一方案解析_移動(dòng)電源三合一方案的優(yōu)點(diǎn)介紹 9999次閱讀
- 利用AD5380多通道DAC實(shí)現(xiàn)輸出通道監(jiān)控 3160次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論