カテゴリー: RaspberryPi

  • Raspberry PiからLGのディスプレイをRS232C経由で制御する

    Raspberry PiからLGのディスプレイをRS232C経由で制御する

    LGの4Kモニター「43UD79-B」を利用していますが,赤外線リモコンでは電源トグル操作のみ可能です.一方でRS232C経由でコマンドを送信することで,電源のon/offを個別に制御できるようです.

    必要なハードウェア

    Raspberry Pi

    Raspberry PiのGPIOはUART(シリアル通信)をサポートしていますが,3.3Vロジックレベルです.そのため,直接RS232C機器に接続するとRaspberry Piが壊れる恐れがあります.

    レベル変換基板

    Raspberry PiとRS232Cの間にレベル変換基板を挟むひつようがあります.今回は秋月電子通商にて3V・3.3V・5V系-RS232レベル変換基板のAE-ADM3202を購入しました.

    クロスケーブル

    LG 43UD79のRS232C端子は3.5mm 4極ジャック(TRS)のクロスケーブルが必要となります.今回は不要なイヤフォンを切断してAE-AMD3202に直接接続します.

    接続方法

    配線

    AE-ADM3202とTRSケーブルの接続

    AE-ADM3202 CN2TRSケーブル
    2 (TXD)Ring
    3 (RXD)Tip
    5 (GND)Sleeve

    AE-ADM3202とRaspberry Piの接続

    AE-ADM3202 CN1Rapsberry Pi GPIO
    1 (GND)Ground
    2 (TX-IN)GPIO 14
    3 (RX-OUT)GPIO 15
    4 (VCC) [U1の電源入力]3.3V Power
    5 (電源) [U2の電源流力]無接続

    Raspberry Piの設定

    Raspberry Piでシリアル通信を有効にするために,ターミナルでraspi-configを起動します.

    $ sudo raspi-config

      メニューから Interface Options > Serial Port を選択し,以下の質問に答えます.

      • Would you like a login shell to be accessible over serial? → No
      • Would you like the serial port hardware to be enabled? → Yes

      これにより,/dev/ttyAMA0が有効になります.

      動作確認

      電源ONコマンドを送信してみます.

      $ echo -e "ka 01 01\r" > /dev/ttyAMA0

      電源OFFコマンドを送信してみます.

      $ echo -e "ka 01 00\r" > /dev/ttyAMA0

      トラブルシューティング

      接続ピンの確認

      ケーブルの接続が正しいか確認してください.

      ディスプレイの Set ID を確認

      ディスプレイのSetIDは「01〜10」の範囲で設定可能です.ディスプレイの「menu>General>Set Id」を確認してください.Set IDが02の場合,コマンドは ka 02 01\r のようになります.

      あとはスマートホームなどと連携すれば「ディスプレイ点けて/消して」を操作できるようになりますね.

    1. Raspberry piでPPPoE接続する

      Raspberry piでPPPoE接続する

      Raspberry piでPPPoE接続してルータとして動作するように設定する.

      インストール

      pppoeconfをインストールします

      # apt install pppoeconf

      起動

      # pppoeconf
      1. ネットワークインタフェースを検出
      2. ユーザ名とパスワードを入力
      3. 設定の保存

      接続の開始

      # pon dsl-provider

      接続の終了

      # poff dsl-provider

      自動起動設定

      # vi /etc/network/interfaces
      
      auto dsl-provider
      iface dsl-provider inet ppp
      pre-up /bin/ip link set eth1 up
      provider dsl-provider

      確認

      $ ip addr
      
      ...中略
      X: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1454 qdisc pfifo_fast state UNKNOWN group default qlen 3
          link/ppp 
          inet xxx.xxx.xxx.xxx peer xxx.xxx.xxx.xxx/32 scope global ppp0
             valid_lft forever preferred_lft forever
    2. Raspberry Pi (buster) のアップグレード

      Raspberry Pi (buster) のアップグレード

      長らく放置していたRaspberry Pi 3 Model Bが3台,busterな機体をアップグレードします.

      /etc/apt/sources.listおよび/etc/apt/sources.list.d/*.listのすべての「buster」という単語を「bullseye」に置き換えます

      その後アップデートを行います.

      $ sudo apt update

      依存関係によりアップグレードに失敗するので以下をインストールします.インストール中の選択肢は全て「Yes」

      $ sudo apt install libgcc-8-dev gcc-8-base

      アップグレードします.アップグレード中の選択肢は全て「Yes」

      sudo apt full-upgrade

      そして/boot/config.txt を編集します.

      「dtoverlay=vc4-fkms-v3d」を含む行の先頭に # 記号を付けてコメント アウトします.
      ファイルの下部の [all] セクションに「dtoverlay=vc4-kms-v3d」という行を追加します.これは「kms」であり「fkms」ではないことに注意.

      再起動して無事に起動すれば成功.

      参考:https://forums.raspberrypi.com/viewtopic.php?t=323279

    3. Raspberry Pi でオーディオサーバを作る

      Raspberry Pi でオーディオサーバを作る

      Raspberry Pi model B と Sound Blaster X-Fi Go! Pro が転がっていたので,これらを利用してオーディオサーバを構築します.

      今回はShairport-Syncとmpd (Music Player Daemon)を構築します.

      インストールと設定

      # apt install shairport-sync mpd

      Sound Blasterのハードウェア番号を確認します.

      $ aplay -l
      **** List of PLAYBACK Hardware Devices ****
      card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
        Subdevices: 8/8
        Subdevice #0: subdevice #0
        Subdevice #1: subdevice #1
        Subdevice #2: subdevice #2
        Subdevice #3: subdevice #3
        Subdevice #4: subdevice #4
        Subdevice #5: subdevice #5
        Subdevice #6: subdevice #6
        Subdevice #7: subdevice #7
      card 1: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
        Subdevices: 1/1
        Subdevice #0: subdevice #0
      card 2: Pro [Sound Blaster X-Fi Go! Pro], device 0: USB Audio [USB Audio]
        Subdevices: 0/1
        Subdevice #0: subdevice #0

      Sound Blaster X-Fi Go! Pro が hw:2,0と分かったので,shairport-syncの設定ファイル(/etc/shairport-sync.conf)を編集します

      # 抜粋
      general = 
      {
          interpolation = "soxr";
          output_backend = "alsa";
      };
      
      alsa =
      {
          output_devce = "hw:2.0";
          mixer_control_name = "PCM";
          mixer_device = "PCM";
      };

      Shairport-syncを起動します.

      # systemctl enable --now shairport-sync

      次にmpdの設定ファイル(/etc/mpd.conf)を編集します.ただし,NASのmpd用のディレクトリを/mnt/mpdにマウントしている前提です.

      # 抜粋
      music_directory    "/mnt/mpd/music"
      playlist_directory "/mnt/mpd/playlists"
      bind_to_address    "0.0.0.0"
      port               "6600"
      
      audio_output {
          type           "alsa"
          name           "Alsa Device"
          device         "hw:2,0"
          mixer_type     "software"
      }

      mpdを起動します.

      # systemctl enable --now mpd
    4. Raspberry Pi でWordPressを動かす

      Raspberry Pi でWordPressを動かす

      備忘録を残すために,すでに運用していたRaspberryPi上にWordPressを構築します.環境は以下の通り.

      • Raspberry Pi 3 Model B+
      • apache2 + php
      • mariadb-server

      パッケージのインストール

      必要なパッケージをインストールします.

      # apt install -y apache2 php mariadb-server

      データベースの作成

      WordPressで利用するデータベースとユーザを作成します.

      # mysql
      MariaDB [(none)]> create user 'wp'@'localhost' identified by 'password';
      MariaDB [(none)]> create database wordpress;
      MariaDB [(none)]> grant all privileges on wordpress.* to 'wp'@'localhost';

      WordPressのダウンロード

      WordPressの最新版をダウンロードします.

      $ wget wget https://ja.wordpress.org/latest-ja.tar.gz

      展開して配置します.

      $ tar zxf latest-ja.tar.gz
      # mv wordpress /var/www/wordpress
      # chown -R www-data:www-data /var/www/wordpress

      設定ファイルを編集します.

      # mv /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php
      # vi /var/www/wordpress/wp-config.php
      
      define( 'DB_NAME', 'wordpress' );
      define( 'DB_USER', 'wp' );
      define( 'DB_PASSWORD', 'password' );
      define( 'DB_HOST', 'localhost' );
      
      define( 'AUTH_KEY',         '乱数' );
      define( 'SECURE_AUTH_KEY',  '乱数' );
      define( 'LOGGED_IN_KEY',    '乱数' );
      define( 'NONCE_KEY',        '乱数' );
      define( 'AUTH_SALT',        '乱数' );
      define( 'SECURE_AUTH_SALT', '乱数' );
      define( 'LOGGED_IN_SALT',   '乱数' );
      define( 'NONCE_SALT',       '乱数' );

      Apacheの設定

      phpを有効にします.

      # a2enconf php7.4-fpm 

      rewriteを有効にします.

      # a2enmod rewrite

      DocumentRootを変更します.

      # vi /etc/apache2/sites-enabled/000-default.conf
      
      DocumentRoot /var/www/wordpress

      Apacheを再起動します.

      # systemctl restart apache2

      WordPressの初期設定

      Webブラウザからアクセスして初期設定すれば完了.リバースプロキシ下でhttpsアクセスの場合はwp-config.phpに以下の設定を忘れずに.

      if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
          $_SERVER['HTTPS'] = 'on';
      }