宅技能|如何获取城市“体温”数据?树莓派LED数字温度计
疫情当前,除了宅家贡献之外,越来越多的maker通过投入自身技能,探讨开放科技如何助力抗击疫情。
其中,既有体现草根创新精神之力的wuhan2020,3000多人自发参与,运用开源软件搭建出的疫情实时信息系统,方便各方调用,有效调配社会资源;
也有个人创客,在家自制『新型冠状病毒』数据显示器,应用网络爬虫,实时显示感染、疑似、死亡、治愈人数;
还有因为买不到体温计,就自制红外测温枪,在家实时检测家人体温;
今天柴火菌给大家推荐的项目,则是个人maker如何应用树莓派,获取、调用城市“体温”数据,并对其加以呈现的项目——树莓派LED数字温度计。该项目由丹麦创客Anders Severinsen制作。他使用树莓派 Zero W、LED 灯带、OLED 显示屏和定制的 PCB等硬件,基于Raspbian操作系统,打造了这款温度计。
温度计默认工作模式下,循环显示设置好的特定城市列表的各城市温度,在OLED显示屏和LED灯带上呈现。但你也可以通过温度计侧面的按钮,手动选择显示一个特定城市的温度。进行这一操作时,温度计会自动关闭 LED 灯带和 OLED 显示器,进入几分钟的休眠期。当光敏电阻检测到明显的光线变化时,温度计会自动重启,显示手动选择城市的温度。
项目所需物料
树莓派 Zero W × 1
SD 卡 × 1
Raspbian操作系统
1.5 英寸OLED屏 × 1
5V 2.4A 电源 × 1
5米长WS2812B LED 灯条(1米含30个灯珠) × 1
螺钉、垫圈、螺栓、支架 × 若干
定制 PCB (上带按钮、开关、光敏电阻、接口等)× 1
烙铁&焊锡 × 1
热熔胶 × 1
木板胶 × 1
4mm & 6mm胶合板 × 1
3mm 白亚克力板 × 1
步骤1:获取城市天气数据
特别鸣谢 StuffWithKirby 共享的使用python读取JSON城市天气数据的代码
登录OpenWeatherMap.org获取免费的城市天气数据,这个网站很多国家的大城市的天气数据。可以通过以下步骤获取数据:
在OpenWeatherMap.org上创建一个免费帐户:https://openweathermap.org/
复制你的apikey,方便后面使用。
下载、解压缩并打开 city.list.json.gz文件,然后搜索你想要温度计显示的城市,然后复制城市 ID。
city.list.json.gz文件下载链接:https://www.instructables.com/id/Digital-RPi-LED-Thermometer/
步骤2:设置树莓派以及编程
首先,根据OLED屏厂商提供的教程,将OLED屏与树莓派链接,安装OLED屏所需的库。
在 raspi-config的接口选项下,启用 I2C和SPI接口。退出并重启。
运行以下程序进行更新:
sudo apt-get update
运行以下命令,来安装相应的库:
sudo apt-get install python-dev
sudo apt-get install python-smbus
sudo apt-get install python-serial
sudo apt-get install python-imaging
运行以下命令,打开配置文件:
sudo nano /etc/modules
确保以下两行代码要出现在配置文件中,然后退出并重启:
i2c-bcm2708
i2c-dev
运行以下命令,复制所用的GitHub repo:
git clone https:/ /github.com/Anders644PI/1.5inch-OLED-with-RPi .git
进入新文件夹,解压RPi_GPIO-0_6_5.zip文件:
unzip RPi_GPIO-0_6_5.zip
运行以下命令安装库:
cd RPi_GPIO-0_6_5
sudo python setup.py install
输入以下代码,返回主文件夹:
cd /home/pi/1.5inch-OLED-with-RPi/
或
cd ..
用同样的方法处理 spidev-3_2.zip。
解压 wiringPi.zip文件:
unzip wiringPi
cd wiringPi
然后,运行以下命令:
chmod 777 build
./build
执行以下代码,检查安装情况:
gpio –v
返回主文件夹,然后解压缩 bcm2835-1_45.zip文件
unzip bcm2835-1_45.zip
cd bcm2835-1_45
运行以下命令,安装库:
./configure
make
sudo make check
sudo make install
再次返回到 /home/pi/1.5inch-OLED-with-RPi/,然后运行以下命令,测试OLED:
cd /Demo_Code/Python/
sudo python main.py
接着参考以下教程,安装WS2812B LED灯带的库:https://tutorials-raspberrypi.com/connect-control-raspberry-pi-ws2812-rgb-led-strips/
最后,编写代码。可以参考Anders放在GitHub的代码:https://github.com/Anders644PI/1.5inch-OLED-with-RPi
步骤3:配置天气API
打开LED_Thermometer_Code_and_OLED_driver文件:
cd LED_Thermometer_Code_and_OLED_driver
用nano编辑器编辑Official_Digital_LED_Thermometer_v1-0.py文件
nano Official_Digital_LED_Thermometer_v1-0.py
接着,向下滑动,并将你从openweathermap.org获得的api-key复制进去(见下图)。并将里面的城市 ID和城市名称更改为你想要显示的城市。
步骤4:定制PCB
在确定了电子架构功能之后,Anders设计了自己的PCB,集成各个模块功能。
步骤5:外壳激光切割
设计温度计的外壳,并用激光切割机切出了结构部件,部件使用了4mm和6mm的复合板。
用3mm的白亚克力板,切出了LED挡板。
用胶水将所有电子件和LED灯带粘到到激光切割好的胶合板上。然后组装外壳。
为了方便使用按钮,3D打印了按钮和开关。
所有 3D 打印文件可以在Anders的GitHub下载。备注:可能要将SVG文件缩小到75%。
https://github.com/Anders644PI/1.5inch-OLED-with-RPi
步骤6:完工
希望你喜欢这个项目。柴火菌个人觉得这是一个兼具实用和美观于一体的项目,放在家里也是一个很棒的装饰呢。
树莓派作为全球最受欢迎的单板机之一,广受社区用户欢迎。每年2-3月,全球大大小小树莓派社区都会通过各种活动庆祝树莓派生日。今年3月14日,柴火也会延续传统,联合社区内资深的树莓派玩家,发起树莓派主题分享的线上直播。
目前主播还在火热招募中哟。只要你
热爱、熟悉树莓派
有树莓派项目经验,如项目与联合国可持续发展目标SDG相关,我们会优先考虑
扫码报名 参与柴火树莓派硬核主播计划
🤖️🤖️🤖️
文末互动话题
在抗击疫情中产生的草根创新
无数人开放协作,共抗疫情
你如何看待?
----END----
Chaihuo x.factory|深圳,河北