3manenhosii3のアイコン画像
3manenhosii3 2024年09月20日作成 (2024年10月30日更新)
製作品 製作品 閲覧数 63
3manenhosii3 2024年09月20日作成 (2024年10月30日更新) 製作品 製作品 閲覧数 63

e-天気予報紙

仕様

電子ペーパーに天気の情報が表示される
• 現在の気温
• 最高気温
• 最低気温
• 天気予報
• 降水確率
• 明日・明後日の天気予報
などを表示させる。

システム図

キャプションを入力できます

今回の結果

キャプションを入力できます

うっすらと電子ペーパーを点けることができたが文字やシステム図を表示できず作品を完成させることができなかった。まだコンテストの後も開発できるので精進していきたい。

使用機材・言語

  • RaspberryPi 4

  • Micro SDカード(16GB)

  • 電子ペーパー(7.5 inch ePaper H

  • Python

ソースコード

import time import requests from waveshare_epd import epd7in5_V2 from PIL import Image, ImageDraw, ImageFont # OpenWeatherMapのAPIキーと都市名 API_KEY = "" CITY = "KOCHI" # 例: Tokyo, New Yorkなど def get_weather_data(api_key, city): """OpenWeatherMapから天気データを取得する関数""" url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric" response = requests.get(url) if response.status_code == 200: return response.json() else: print("Failed to retrieve data") return None def display_weather(epd, weather_data): """天気情報を電子ペーパーに表示する関数""" epd.init() epd.Clear() # 天気情報のフォント設定 font = ImageFont.load_default() # 画像を作成 image = Image.new('1', (epd.width, epd.height), 255) # 白背景 draw = ImageDraw.Draw(image) # 天気情報を描画 draw.text((10, 10), f"City: {weather_data['name']}", font=font, fill=0) draw.text((10, 30), f"Temperature: {weather_data['main']['temp']} °C", font=font, fill=0) draw.text((10, 50), f"Weather: {weather_data['weather'][0]['description']}", font=font, fill=0) # 画像を電子ペーパーに表示 epd.display(epd.getbuffer(image)) epd.sleep() def main(): epd = epd7in5_V2.EPD() weather_data = get_weather_data(API_KEY, CITY) if weather_data: display_weather(epd, weather_data) if __name__ == "__main__": main()

考察

全く知識がないところから始めましたが、電子ペーパーは予想していたよりも難しく初心者の自分には大変な開発でした。
自分で一から作ることが難しいと改めて感じました。

将来的には、小型化にし持ち運びを可能にしてどこでも現在の天気や気温、湿度などを確認することができる作品にしたいです。

参考文献

Raspberry Pi × 電子ペーパーで最新のお天気情報を表示する電子版を作ってみた
https://zenn.dev/yutafujiwara/articles/2d568f168c2e65
オープンウェザー
https://openweathermap.org/
ESP32 電子ペーパー天気ディスプレイ
https://hackaday.io/project/189708-esp32-e-paper-weather-display

ログインしてコメントを投稿する