1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pico2W × OpenWeatherAPI で天気情報をLCDに表示してみた

Posted at

目次

  1. 概要
  2. デモ動画
  3. GitHub
  4. 回路図
  5. 環境
  6. who are you?
  7. 今回の作成の経緯
  8. 環境構築
    1. Raspberry Pi Pico 2 wにArduino IDEからプログラムを書き込むためのセットアップ
    2. OpenWeatheAPIのAPIキー取得
  9. プログラムについて
  10. 最後に

1. 概要

本記事は、Raspberry Pi Pico 2 WOpenWeatherAPIを用いて、LCDに天気情報を表示するものになります。
pico2wじゃなくても、Arduinoが書き込めれば使えます。
本記事は、3. GitHubまで読んでいただければ、コード等はご使用できます。
3. GitHubより後の項は説明になります。

2. 完成品デモ動画

3. GitHub

今回のソースコードが置いてあるgithubです

4. 回路図

ユニバーサル基盤を用いて、LCDモジュールを拡張?したので、その回路図を頑張って書いてみました。以下はpdfファイルのスクリーンショットになります。元のpdfファイルはgithubに上げてます。こちらです。
間違ってそうなら、ぜひ教えてほしいです!

circuit_diagram.png

5. 環境

6. who are you?

自己紹介がまだでした…。
Wadoyoka(ワドヨカ)といいます。
普段は、Next.jsを使ってWebアプリを作っている学生です。今年(2025年)の1月ごろから、電子工作に触れだして、楽しく工作してます。
何気にこれがQiita初記事になります。
よろしくお願いします。

7. 今回の作成の経緯

電子工作をする中で、Rasberry Pi Pico に興味を持っていたとことろ、丁度、秋月電子通商でRaspberry Pi Pico 2 Wが発売したので、購入しました。また、同時期にSHARPキャラクターディスプレイモジュール(16×2行バックライト有)LM162AT1が長期保存品で1000円→300円と安くなっていて、購入しました。
どちらも、せっかく買ったので何かに使いたいと思い、この度このプログラムを作成いたしました。
Pico2wに関してはまだまだ色々使えそうなので、今後はWebアプリとの連携もしていきたいですね。AWS IoT Core等と連携させたいですね。何か面白い使い方が思いついたらまた、作ります。

8. 環境構築

環境構築!頑張ろう!

8.1 Raspberry Pi Pico 2 wにArduino IDEからプログラムを書き込むためのセットアップ

基本的に以下記事と同じことを説明します。

まずは、ファイル→基本設定をクリック

construct_1.png

次に、「追加のボードマネージャのURL」をクリック

construct_2.png

以下のURLを追加しましょう!

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

construct_3.png

インストールが完了したら、次はボードマネージャに「Pico2」と入力して。「Raspberry Pi Pico/RP2040/RP2350」を追加しましょう。

construct_4.png

次に、COMとボードを対応付けましょう!
左上から、「他のボードとポートを選択」を押します。

construct_5.png

「pico2w」と入力して検索します。
また、対応するCOM番号を選択してOKを押します。

construct_6.png

最後に、プログラム用に「ライブラリマネージャ」から「ArduinoJson」を追加します。
ArduinoJson.png

以上でArduinoIDE側では完了です。

8.2 OpenWeatheAPIのAPIキー取得

以下記事を参考にOpenWeatheAPIキーを取得してください。

9. プログラムについて

今回、プログラムについては、ほとんどChatGPTとV0に書いて貰ったのですが、要点だけ説明します。
色々改善したいですね。

weather_station.ino(メインファイル)

本プロジェクトのメインファイルです。TODO部分を書き換えて使用してください。
Todoの以下部分は、ご使用するGPIOピンによって変わります。LCDモジュールの使い方は以下記事を参考にしました。

Arduinoで遊ぼう(17,LCDモジュール)


// LCDピン設定(ご自身の接続に合わせて変更してください)
const int rs = 0;
const int en = 1;
const int d4 = 2;
const int d5 = 3;
const int d6 = 4;
const int d7 = 5;

文字が左に流れる部分

for (int positionCounter = 0; positionCounter < 36; positionCounter++) {
    // scroll one position left:
    lcd.scrollDisplayLeft();
    // wait a bit:
    delay(600);
}

lcd.scrollDisplayLeft();で、文字が1文字左に流れます。これを0.6秒間隔で36回やってます。
これにより、文字が左に移動していきます。

OpenWeatherClient.ino このファイルは、OpenWeatherとの接続等を担っています。 以下の部分で、取得した天気の名前を英語→カタカナに変換して、LCDで表示できるようにしています。

String OpenWeatherClient::getWeatherInKatakana(String weather) {
    if (weather == "Thunderstorm") return "	\xd7\xb2\xb3";//ライウ
    if (weather == "Drizzle") return "\xb7\xd8\xbb\xd2";//キリサメ
    if (weather == "Rain") return "\xb1\xd2";//アメ
    if (weather == "Snow") return "\xd5\xb7";//ユキ
    if (weather == "Clear") return "\xca\xda";//ハレ
    if (weather == "Clouds") return "\xb8\xd3\xd8";//クモリ
    if (weather == "Mist") return "\xd3\xd4";//モヤ
    if (weather == "Smoke") return "\xb9\xd1\xd8";//ケムリ
    if (weather == "Haze") return "\xb6\xbd\xd0";//カスミ
    if (weather == "Dust") return "\xce\xba\xd8";//ホコリ
    if (weather == "Fog") return "\xb7\xd8";//キリ
    if (weather == "Sand") return "\xbd\xc5";//スナ
    if (weather == "Ash") return "\xca\xb2";//ハイ
    if (weather == "Squall") return "\xbd\xba\xb0\xd9";//スコール
    if (weather == "Tornado") return "\xc4\xd9\xc8\xb0\xc4\xde";//トルネード

    return "\xcc\xd2\xb2"; // 該当なしの場合
}

10. 最後に

ここまで、読んでいただきありがとうございます。自宅の経度緯度を入力して、天気情報を表示させて流しとくと外の気温や状態が簡単に把握できるのに加えて、可愛いのでお勧めです。
Pico2Wを使って色々と遊びたいですね。主にWeb連携……
またね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?