资料介绍
动机
每天早上从查看短信、天气、电子邮件开始,有时,当您感觉非常好并且最重要的是,新闻。但是,要查看这些,您需要在手机上打开手机短信应用、天气应用和新闻应用,或者至少滚动浏览手机上的所有通知。
为了让我的早晨,希望你的早晨更轻松一些,我的目标是为你的床头柜制作一个屏幕,显示每日预报和当前温度,以及当天的新闻头条。一目了然,您可以看到开始新的一天所需了解的所有信息:如何穿着得体以及昨晚发生的时事。
概述:系统和电源框图
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次下载 | 免费
评论
查看更多