查看原文
其他

宅技能|如何获取城市“体温”数据?树莓派LED数字温度计

柴火菌 柴火创客空间 2021-07-07


疫情当前,除了宅家贡献之外,越来越多的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-devsudo apt-get install python-smbussudo apt-get install python-serialsudo apt-get install python-imaging
  • 运行以下命令,打开配置文件:

sudo nano /etc/modules

         确保以下两行代码要出现在配置文件中,然后退出并重启:

i2c-bcm2708i2c-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_5sudo python setup.py install
  • 输入以下代码,返回主文件夹:

cd /home/pi/1.5inch-OLED-with-RPi/

         或

cd ..

        用同样的方法处理 spidev-3_2.zip。


  • 解压 wiringPi.zip文件:  

unzip wiringPicd wiringPi

        然后,运行以下命令:

chmod 777 build./build

       执行以下代码,检查安装情况:

gpio –v
  • 返回主文件夹,然后解压缩 bcm2835-1_45.zip文件

unzip bcm2835-1_45.zipcd bcm2835-1_45
  • 运行以下命令,安装库:

./configure make sudo make checksudo 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|深圳,河北  


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存