2022年7月31日日曜日

ArduinoにSnekをインストールしてGroveボタン状態を取得する

Snekは組み込みデバイスで実行するために設計されたPython風の言語です。以下の手順でGroveボタンを押されたときArduinoオンボードLEDを点灯させるプログラムを実行します。

○ArduinoとGroveベースシールドとGroveボタンを接続した状態の写真

実行手順

1. snekのインストール(Ubuntu 22.04の場合)
sudo apt-get install snek

2. snekのイメージをArduino Unoに書き込む場合は、以下のコマンドを実行します。
avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -U flash:w:/usr/share/snek/snek-uno-1.7.hex

3. Snek Development Environmentを立ち上げて、F1ボタンを押してArudino Unoを選択します。
次に以下のコードを入力し、F3キーでArduinoにスクリプトを転送して実行します。D2ポートに接続したGroveボタンを押したときにArduino本体のオレンジ色LEDが点灯すればOKです。
def grove_button():
    talkto(D13)
    while True:
        if read(D2):
            on()
        else:        
            off()
grove_button()

4. その他の操作
・Ubuntu側にスクリプトを保存した場合は、F6キーを押します。
・Snek Development Environmentを終了するにはF4キーを押します。

関連情報

Snek言語のホームページ
https://sneklang.org/

2022年7月30日土曜日

Ubuntu 22.04とArduinoにSnekをインストールしてLチカする

Snekは組み込みデバイスで実行するために設計されたPython風の言語です。以下の手順でArduinoオンボードLEDを点滅させるプログラムを実行します。

○Snek Development Environmentの画面

実行手順

1. snekのインストール
sudo apt-get install snek

2. snekのイメージをArduino Unoに書き込む場合は、以下のコマンドを実行します。
avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -U flash:w:/usr/share/snek/snek-uno-1.7.hex

3. Snek Development Environmentを立ち上げて、F1ボタンを押してArudino Unoを選択します。
次に以下のコードを入力し、F3キーでArduinoにスクリプトを転送して実行します。
def blink():
    talkto(D13)
    while True:
        on()
        time.sleep(0.3)
        off()
        time.sleep(0.2)
blink()

4. その他の操作
・Ubuntu側にスクリプトを保存した場合は、F6キーを押します。
・Snek Development Environmentを終了するにはF4キーを押します。

関連情報

Snek言語のホームページ
https://sneklang.org/

2022年7月29日金曜日

Ubuntu 22.04でpymediainfoを使用して動画・音声ファイルのメタ情報を取得する

pymediainfoを使用してPythonから動画・音声ファイルのメタ情報を取得する事ができます。

インストール方法

1. pipenvをインストールしていない場合は、以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.profile

source ~/.profile

2. pymediainfoのインストール
sudo apt-get update

sudo apt-get -y install mediainfo libjpeg-dev

pipenv --python 3

pipenv install pymediainfo

サンプルプログラム

ファイル中のトラックから、コーデックの種類や解像度などの情報を一覧表示します。
※ファイル名は適宜変更してください
mi.py
from pymediainfo import MediaInfo

mi = MediaInfo.parse("/home/debian/hydrangea.mp4")
for track in mi.tracks:
  print("--------------------------")
  for mykey, myvalue in track.to_data().items():
    print("key: {}, value:{}".format(mykey, myvalue))

〇実行例
pipenv run python mi.py
--------------------------
key: track_type, value:General
key: count, value:333
key: count_of_stream_of_this_kind, value:1
key: kind_of_stream, value:General
key: other_kind_of_stream, value:['General']
key: stream_identifier, value:0
key: count_of_video_streams, value:1
key: count_of_audio_streams, value:1
key: video_format_list, value:AVC
key: video_format_withhint_list, value:AVC
key: codecs_video, value:AVC
key: video_language_list, value:English
key: audio_format_list, value:AAC LC
key: audio_format_withhint_list, value:AAC LC
key: audio_codecs, value:AAC LC
key: audio_language_list, value:English
key: complete_name, value:/home/debian/hydrangea.mp4
key: folder_name, value:/home/debian
key: file_name, value:hydrangea.mp4
key: other_file_name, value:['hydrangea']
key: file_extension, value:mp4
key: format, value:MPEG-4
key: other_format, value:['MPEG-4']
key: format_extensions_usually_used, value:mov mp4 m4v m4a m4b m4p m4r 3ga 3gpa 3gpp 3gp 3gpp2 3g2 k3g jpm jpx mqv ismv isma ismt f4a f4b f4v
key: commercial_name, value:MPEG-4
key: format_profile, value:Base Media / Version 2
key: internet_media_type, value:video/mp4
key: codec_id, value:mp42
key: other_codec_id, value:['mp42 (isom/mp42)']
key: codec_id_url, value:http://www.apple.com/quicktime/download/standalone.html
key: codecid_compatible, value:isom/mp42
key: file_size, value:134478747
key: other_file_size, value:['128 MiB', '128 MiB', '128 MiB', '128 MiB', '128.2 MiB']
key: duration, value:61065
key: other_duration, value:['1 min 1 s', '1 min 1 s 65 ms', '1 min 1 s', '00:01:01.065', '00:01:01:02', '00:01:01.065 (00:01:01:02)']
key: overall_bit_rate, value:17617784
key: other_overall_bit_rate, value:['17.6 Mb/s']
key: frame_rate, value:30.000
key: other_frame_rate, value:['30.000 FPS']
key: frame_count, value:1832
key: stream_size, value:26507
key: other_stream_size, value:['25.9 KiB (0%)', '26 KiB', '26 KiB', '25.9 KiB', '25.89 KiB', '25.9 KiB (0%)']
key: proportion_of_this_stream, value:0.00020
key: headersize, value:3249
key: datasize, value:134452248
key: footersize, value:23250
key: isstreamable, value:No
key: encoded_date, value:UTC 2020-06-12 05:37:22
key: tagged_date, value:UTC 2020-06-12 05:37:22
key: file_last_modification_date, value:UTC 2020-06-12 05:37:22
key: file_last_modification_date__local, value:2020-06-12 14:37:22
key: xyz, value:+00.0000+000.0000/
key: comandroidversion, value:8.0.0
--------------------------
key: track_type, value:Video
key: count, value:376
key: count_of_stream_of_this_kind, value:1
key: kind_of_stream, value:Video
key: other_kind_of_stream, value:['Video']
key: stream_identifier, value:0
key: streamorder, value:1
key: track_id, value:2
key: other_track_id, value:['2']
key: format, value:AVC
key: other_format, value:['AVC']
key: format_info, value:Advanced Video Codec
key: format_url, value:http://developers.videolan.org/x264.html
key: commercial_name, value:AVC
key: format_profile, value:High@L4
key: format_settings, value:CABAC / 1 Ref Frames
key: format_settings__cabac, value:Yes
key: other_format_settings__cabac, value:['Yes']
key: format_settings__reframes, value:1
key: other_format_settings__reframes, value:['1 frame']
key: format_settings__gop, value:M=1, N=30
key: internet_media_type, value:video/H264
key: codec_id, value:avc1
key: codec_id_info, value:Advanced Video Coding
key: duration, value:61065
key: other_duration, value:['1 min 1 s', '1 min 1 s 65 ms', '1 min 1 s', '00:01:01.065', '00:01:01:02', '00:01:01.065 (00:01:01:02)']
key: bit_rate, value:17458076
key: other_bit_rate, value:['17.5 Mb/s']
key: width, value:1920
key: other_width, value:['1 920 pixels']
key: height, value:1080
key: other_height, value:['1 080 pixels']
key: stored_height, value:1088
key: sampled_width, value:1920
key: sampled_height, value:1080
key: pixel_aspect_ratio, value:1.000
key: display_aspect_ratio, value:1.778
key: other_display_aspect_ratio, value:['16:9']
key: rotation, value:0.000
key: frame_rate_mode, value:VFR
key: other_frame_rate_mode, value:['Variable']
key: frame_rate, value:30.000
key: other_frame_rate, value:['30.000 FPS']
key: minimum_frame_rate, value:29.841
key: other_minimum_frame_rate, value:['29.841 FPS']
key: maximum_frame_rate, value:30.141
key: other_maximum_frame_rate, value:['30.141 FPS']
key: frame_count, value:1832
key: standard, value:NTSC
key: color_space, value:YUV
key: chroma_subsampling, value:4:2:0
key: other_chroma_subsampling, value:['4:2:0']
key: bit_depth, value:8
key: other_bit_depth, value:['8 bits']
key: scan_type, value:Progressive
key: other_scan_type, value:['Progressive']
key: bits__pixel_frame, value:0.281
key: stream_size, value:133263312
key: other_stream_size, value:['127 MiB (99%)', '127 MiB', '127 MiB', '127 MiB', '127.1 MiB', '127 MiB (99%)']
key: proportion_of_this_stream, value:0.99096
key: title, value:VideoHandle
key: language, value:en
key: other_language, value:['English', 'English', 'en', 'eng', 'en']
key: encoded_date, value:UTC 2020-06-12 05:37:22
key: tagged_date, value:UTC 2020-06-12 05:37:22
key: colour_description_present, value:Yes
key: colour_description_present_source, value:Stream
key: color_range, value:Limited
key: colour_range_source, value:Stream
key: color_primaries, value:BT.601 PAL
key: colour_primaries_source, value:Stream
key: transfer_characteristics, value:BT.601
key: transfer_characteristics_source, value:Stream
key: matrix_coefficients, value:BT.470 System B/G
key: matrix_coefficients_source, value:Stream
key: mdhd_duration, value:61065
key: codec_configuration_box, value:avcC
--------------------------
key: track_type, value:Audio
key: count, value:278
key: count_of_stream_of_this_kind, value:1
key: kind_of_stream, value:Audio
key: other_kind_of_stream, value:['Audio']
key: stream_identifier, value:0
key: streamorder, value:0
key: track_id, value:1
key: other_track_id, value:['1']
key: format, value:AAC
key: other_format, value:['AAC LC']
key: format_info, value:Advanced Audio Codec Low Complexity
key: commercial_name, value:AAC
key: format_additionalfeatures, value:LC
key: codec_id, value:mp4a-40-2
key: duration, value:60970
key: other_duration, value:['1 min 0 s', '1 min 0 s 970 ms', '1 min 0 s', '00:01:00.970', '00:01:00:38', '00:01:00.970 (00:01:00:38)']
key: source_duration, value:61071
key: other_source_duration, value:['1 min 1 s', '1 min 1 s 71 ms', '1 min 1 s', '00:01:01.071']
key: source_duration_firstframe, value:100
key: other_source_duration_firstframe, value:['100 ms', '100 ms', '100 ms', '00:00:00.100']
key: bit_rate_mode, value:CBR
key: other_bit_rate_mode, value:['Constant']
key: bit_rate, value:156000
key: other_bit_rate, value:['156 kb/s']
key: channel_s, value:2
key: other_channel_s, value:['2 channels']
key: channel_positions, value:Front: L R
key: other_channel_positions, value:['2/0/0']
key: channel_layout, value:L R
key: samples_per_frame, value:1024
key: sampling_rate, value:48000
key: other_sampling_rate, value:['48.0 kHz']
key: samples_count, value:2926560
key: frame_rate, value:46.875
key: other_frame_rate, value:['46.875 FPS (1024 SPF)']
key: frame_count, value:2858
key: source_frame_count, value:2858
key: compression_mode, value:Lossy
key: other_compression_mode, value:['Lossy']
key: stream_size, value:1188928
key: other_stream_size, value:['1.13 MiB (1%)', '1 MiB', '1.1 MiB', '1.13 MiB', '1.134 MiB', '1.13 MiB (1%)']
key: proportion_of_this_stream, value:0.00884
key: source_stream_size, value:1188928
key: other_source_stream_size, value:['1.13 MiB (1%)', '1 MiB', '1.1 MiB', '1.13 MiB', '1.134 MiB', '1.13 MiB (1%)']
key: source_streamsize_proportion, value:0.00884
key: title, value:SoundHandle
key: language, value:en
key: other_language, value:['English', 'English', 'en', 'eng', 'en']
key: encoded_date, value:UTC 2020-06-12 05:37:22
key: tagged_date, value:UTC 2020-06-12 05:37:22
key: mdhd_duration, value:60970

2022年7月28日木曜日

Ubuntu 22.04上のpipenv環境にopencv-pythonを入れて動画の情報を取得する

OpenCVを使用して動画の情報を取得することもできます。以下の手順でopencv-pythonをインストールして動画の解像度や長さを取得します。

インストール手順

1. pipenvのインストール
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.profile

source ~/.profile

2. opencv-pythonをインストールした仮想環境の作成
mkdir -p ~/opencv-python

cd ~/opencv-python

pipenv --python 3

pipenv install opencv-python

3. プログラムの作成と実行
※適宜入力ファイル名は変更してください
show_videoinfo.py
import cv2
videofile = "./hydrangea.mp4"
cv2video = cv2.VideoCapture(videofile)

width  = cv2video.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cv2video.get(cv2.CAP_PROP_FRAME_HEIGHT)
print("解像度: {}x{}".format(width, height))

framecount = cv2video.get(cv2.CAP_PROP_FRAME_COUNT)
print("フレーム数: {}".format(framecount))

frames_per_sec = cv2video.get(cv2.CAP_PROP_FPS)
print("秒間フレーム数: {}".format(frames_per_sec))

print("動画の長さ(sec):", framecount / frames_per_sec)

〇実行コマンド
pipenv run python show_videoinfo.py

2022年7月27日水曜日

Ubuntu 22.04にMu Editorをインストールする

Mu Editorは初心者向けのPython IDEです。Pythonの他、MicroPythonやCircuitPythonなどにも対応しています。

〇Mu Editorの画面

インストール手順

以下のコマンドを実行します。
sudo apt-get -y install fuse libfuse2

mkdir -p ~/.local/bin

cd ~/.local/bin

wget https://github.com/mu-editor/mu/releases/download/v1.1.1/Mu_Editor-1.1.1-x86_64.AppImage

sudo chmod +x Mu_Editor-1.1.1-x86_64.AppImage

mkdir -p ~/.local/share/applications/

cat << EOF > ~/.local/share/applications/mu_editor.desktop
Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=bash -c "export QT_QPA_PLATFORM=wayland && ~/.local/bin/Mu_Editor-1.1.1-x86_64.AppImage"
Name=Mu editor
Categories=Utility;Development;
EOF

関連情報

・Mu Editorのプロジェクトサイト
https://codewith.mu/

2022年7月26日火曜日

Ubuntu 22.04にEclipse MosquittoとPython用Eclipse pahoをインストールする

Eclipse mosquittoはMQTT ブローカー(=MQTTのサーバ)、Eclipse pathoはMQTTプロトコルのライブラリです。 Publish/Subscribeモデルでメッセージを送受信できます。

開発手順

1. mosquittoをインストール
以下のコマンドでmosquittoをインストールします。
sudo apt-get -y install mosquitto mosquitto-clients

2. pipenvの導入
pipenvをインストールしていない場合は、以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:/home/ubuntu/.local/bin' >> ~/.profile

source ~/.profile

3. paho-mqttモジュールがインストールされた仮想環境作成
pipenvを使用する場合は以下のコマンドで、paho-mqtt用の仮想環境を作成します。
mkdir -p ~/paho_mqtt

cd ~/paho_mqtt

pipenv --python 3

pipenv install paho-mqtt

pipenv shell

4. Subscribeサンプルプログラム
以下のプログラムで、mosquitto/testというトピックを受信してメッセージを表示します。

mosquitto_sub_test.py
import paho.mqtt.client as mqtt

topic = "mosquitto/test"
host = "localhost"
port = 1883
secs_keep_alive=60

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe(topic)

def on_message(client, userdata, msg):
    print("received: {}:{}".format(msg.topic, str(msg.payload)))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect(host, port, secs_keep_alive)

client.loop_forever()

・実行方法
以下のコマンドで受信プログラムを実行します。止める場合はCtrl+Cで止めてください。
python mosquitto_sub_test.py

5. Publishサンプルプログラム
以下のプログラムで、mosquitto/testというトピックにメッセージを送信します。

mosquitto_pub_test.py
import paho.mqtt.publish as publish

topic = "mosquitto/test"
host = "localhost"
port = 1883
secs_keep_alive=60

publish.single(topic, "message test", hostname=host, port=port, keepalive=secs_keep_alive)

・実行方法
以下のコマンドで送信プログラムを実行します。
python mosquitto_pub_test.py

Mosquittoのコマンドによる送受信

mosquittoのコマンドで、メッセージを送受信する事も出来ます。

・送信用コマンド
mosquitto_pub -t mosquitto/test -h localhost -m "test message by command."

・受信用コマンド
mosquitto_sub -t mosquitto/test -h localhost

2022年7月25日月曜日

Ubuntu 22.04にPySimpleGUIをインストールして、簡単なウインドウを表示する

PySimpleGUIでGUIを簡単に作成する事が出来ます。

インストール方法

1.pipenvのインストール
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:/home/ubuntu/.local/bin' >> ~/.profile

source ~/.profile

2. PySimpleGUI用の仮想環境作成
pipenvを使用する場合は以下のコマンドで、PySimpleGUI用の仮想環境を作成します。
sudo apt-get -y install python3-tk tk-dev

mkdir -p ~/pysimplegui

cd ~/pysimplegui

pipenv --python 3

pipenv install PySimpleGUI

pipenv shell

サンプル実行手順

以下のファイルを保存して、実行します。
simple_window.py
import PySimpleGUI as sg

sg.theme('SystemDefault')
layout = [[sg.Text('サンプルです')]]

window = sg.Window('サンプル', layout)
# イベントループ
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break

window.close()

実行コマンド
python simple_window.py

〇実行結果
以下の小さなウインドウが表示されます。

2022年7月24日日曜日

AlmaLinux 9/Rocky Linux 9にスタンドアローン版のOmniDBとMariaDBをインストールする

OmniDBはオープンソースのデータベース管理ツールです。

〇スタンドアローン版OmniDBの画面(ALmaLinux9)

〇スタンドアローン版OmniDBの画面(Rocky Linux9)

インストール方法

以下のコマンドを実行します。
1. (任意)MariaDBをインストール
※ローカルでMariaDBを試したい場合は、以下のコマンドを実行します。
sudo dnf -y install mariadb mariadb-server

sudo systemctl enable mariadb.service

sudo systemctl start mariadb.service

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"
※パスワードは適宜変更してください

2. OmniDBのインストール
sudo dnf -y install libXScrnSaver

wget https://github.com/OmniDB/OmniDB/releases/download/3.0.3b/omnidb-app-3.0.3b_linux_x86_64.rpm

sudo dnf -y install omnidb-app-3.0.3b_linux_x86_64.rpm

関連情報

・OmniDBのwebサイト
https://omnidb.org/en/

2022年7月23日土曜日

Rocky Linux 9にOpenSCADをインストールする

OpenSCADはプログラムで3Dモデリングを行う事ができるソフトウェアです。

〇OpenSCADの画面

インストール方法

以下のコマンドを実行します。
sudo mkdir -p /opt/openscad

cd /opt/openscad

sudo wget https://files.openscad.org/OpenSCAD-2021.01-x86_64.AppImage

sudo chmod +x OpenSCAD-2021.01-x86_64.AppImage

cat << EOF | sudo tee /usr/share/applications/openscad.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/openscad/OpenSCAD-2021.01-x86_64.AppImage
Name=OpenSCAD
EOF

関連情報

・OpenSCADに関する記事はこちらを参照してください。

・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2022年7月22日金曜日

Ubuntu 22.04にguakeをインストールする

guakeはF12キーで素早く起動できる端末です。ウインドウが手前に配置されるので、いつでもコマンドを実行できます。

〇guakeの画面(Ubuntu 22.04)

インストールと設定方法

1.以下のコマンドを実行します
sudo apt-get update

sudo apt-get -y install guake

ウインドウマネージャがWaylandの場合はF12による起動が効かないので、代わりにキーボードショートカットを実行します。
2. Ubuntuの設定を起動して、左側メニューから「キーボード」を選択し、「ショートカットの表示とカスタマイズ」をクリックします。

3.「独自のショートカット」を選択します

4. 独自のショートカットとして、名前に「guake」、コマンドに「/usr/bin/guake -t」、ショートカットにF12を設定します。これで、Ubuntu 22.04でもF12キーでguakeが立ち上がります。

関連情報

・guakeのウェブサイト
http://guake-project.org/

2022年7月21日木曜日

Ubuntu 22.04/AlmaLinux 9でAWKのgo言語実装のGoAWKをインストールする

GoAWKはGo言語実装のAWKです。CSV入出力の拡張が行われています。

GoAWKのインストール方法

以下のコマンドを実行します。
sudo mkdir -p /opt/goawk

cd /opt/goawk

sudo wget https://github.com/benhoyt/goawk/releases/download/v1.19.0/goawk_v1.19.0_linux_amd64.tar.gz

sudo tar xvfz goawk_v1.19.0_linux_amd64.tar.gz

sudo ln -s /opt/goawk/goawk /usr/local/bin/goawk

サンプル実行

cat << EOF > test.csv
name,userid
"Brian, Greenwood", 1234
"Tom White", 5678
EOF

# 通常だと、ダブルクオートなどしても,や空白などで文字列が分割されてしまう
goawk '{ print $1 }' test.csv
name,userid
"Brian,
"Tom

# CSV入力モードを使用すると、ちゃんとダブルクオートを認識してハンドリングしてくれる
goawk -i csv '{ print $1 }' test.csv
name
Brian, Greenwood
Tom White

関連情報

・プロジェクトGithubリポジトリ
https://github.com/benhoyt/goawk

2022年7月20日水曜日

AlmaLinux 9でRSSリーダーのNewsFlashをインストールする

AlmaLinux 9でRSSリーダーのNewsFlashをインストールするには、以下の手順を実行します。

〇NewsFlashの画面(AlmaLinux 9)

インストール方法

以下のコマンドを実行します。
sudo dnf -y install flatpak

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

sudo flatpak -y install com.gitlab.newsflash

関連情報

・NewsFlashのwebサイト
https://gitlab.com/news-flash/news_flash_gtk

2022年7月19日火曜日

Ubuntu 22.04にBookStackをインストールする

BookStackはブック・ページといった単位で管理できるWikiソフトウェアです。

〇BookStackの画面

インストール方法

1. Ubuntu 22.04用のインストール用スクリプトが用意されているので、ダウンロードして実行します。
wget https://raw.githubusercontent.com/BookStackApp/devops/main/scripts/installation-ubuntu-22.04.sh

chmod a+x installation-ubuntu-22.04.sh

sudo ./installation-ubuntu-22.04.sh

2. 「Enter the domain (or IP if not using a domain) you want to host BookStack on and press [ENTER].」というメッセージが表示されるので、ドメインかIPアドレスを入力します

3. ブラウザから、http://<ホスト名またはIPアドレス>/ にアクセスします。
デフォルトアカウントは admin@admin.com/password です。

関連情報

・BookStackのウェブサイト
https://www.bookstackapp.com/

2022年7月18日月曜日

Ubuntu 22.04にBlockbenchをインストールする

Blockbenchで3Dモデルの編集を行うことができます。

〇Blockbenchの画面

インストール方法

以下のコマンドを実行します。
wget https://github.com/JannisX11/blockbench/releases/download/v4.2.5/Blockbench_4.2.5.deb

sudo dpkg -i Blockbench_4.2.5.deb

関連情報

・Blockbenchに関する他の情報はこちらを参照してください。

・Blockbenchのウェブサイト
https://blockbench.net/

2022年7月17日日曜日

Ubuntu 22.04にバックアップアプリBack In Timeをインストールする

Back In Timeは手軽に差分バックアップを取得する事ができるアプリケーションです。

〇Back In Timeの画面(Ubuntu 22.04)

Ubuntu Softwareによるインストール方法

1. Ubuntu Softwareを起動して、backintimeを検索します。

2.Back In Timeのインストールボタンをクリックします

コマンドによるインストール方法

以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install backintime-qt

2022年7月16日土曜日

AlmaLinux 9にBlueJをインストールする

BlueJはJava言語の学習に適したIDEです。

〇BlueJの画面

インストール方法

以下のコマンドを実行して、BlueJをインストールします。
sudo yum -y install flatpak

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

sudo flatpak -y install https://flathub.org/repo/appstream/org.bluej.BlueJ.flatpakref

関連情報

・BlueJに関する他の記事は、こちらを参照してください。

・BlueJのウェブサイト
https://www.bluej.org/

2022年7月15日金曜日

AlmaLinux 9にArduino IDEをインストールする

Arduino IDEでArduino Unoなどの様々なボードのプログラミングをする事ができます。

〇Arduino IDEの画面

インストール方法

以下のコマンドを実行します。
1. OpenJDKのインストール
sudo dnf install -y java-11-openjdk

2. Arduino IDEのダウンロードとインストール
wget https://downloads.arduino.cc/arduino-1.8.19-linux64.tar.xz

tar -xvf arduino-1.8.19-linux64.tar.xz

sudo mv arduino-1.8.19 /opt

cd /opt/arduino-1.8.19

mv java java.bak
# バンドルされているjavaを使用しないようにする

sudo ./install.sh

sudo usermod -a -G dialout $USER

関連情報

・Arduinoに関する他の記事はこちらを参照してください。

2022年7月14日木曜日

AlmaLinux 9に画像編集コマンド(aaphoto)をインストールする

aaphotoはコマンドラインから画像の自動調整・リサイズ・回転・反転などを行うことができます


コマンド例

自動調整
aaphoto ./test.png -a -o .

画像を50%にリサイズ
aaphoto ./test.png --resize50% -o .

画像を90度回転
aaphoto ./test.png --rotate90 -o .

画像を横方向反転
aaphoto ./test.png --flipx -o .

インストール方法

シェルから以下のコマンド実行します
cd /usr/local/bin

sudo wget http://log69.com/downloads/aaphoto_linux.tar.gz

sudo tar xvfz aaphoto_linux.tar.gz

2022年7月13日水曜日

Another Redis Desktop ManagerをAlmaLinux 9にインストールする

Another Redis Desktop ManagerはElectronを使用したクロスプラットフォームで動作するオープンソースのRedis管理アプリケーションです。

〇Another Redis Desktop Managerの画面(AlmaLinux 9)

インストール手順

以下のコマンドを実行します。
1. snapのインストール(※既に導入済みの場合はスキップしてください)
sudo dnf -y install epel-release

sudo dnf -y install snapd

sudo systemctl enable --now snapd.socket

sudo ln -s /var/lib/snapd/snap /snap

2. Another Redis Desktop Managerのインストール
sudo snap install another-redis-desktop-manager
※「error: too early for operation, device not yet seeded or device model not acknowledged」というエラーメッセージが表示された場合は、少し待って再度実行します。

関連情報

・Another Redis Desktop Managerのリポジトリ
https://github.com/qishibo/AnotherRedisDesktopManager

2022年7月12日火曜日

AlmaLinux 9にGnome Geniusをインストールする

Gnome Geniusは汎用計算機の機能を持つ他、Matlab/Mathmaticaと似た点を持つプログラミング言語です。

〇Gnome Geniusの画面

インストール方法

以下のコマンドを実行します。
sudo dnf -y install flatpak

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

sudo flatpak -y install flathub org.gnome.Genius

関連情報

・Gnome Geniusに関する他の記事は、こちらを参照してください。

2022年7月11日月曜日

AlmaLinux 9にFreeplaneをインストールする

Freeplaneでマインドマップを作成する事ができます。

〇Freeplaneの画面

インストール方法

以下のコマンドを実行します。
sudo dnf install -y java-11-openjdk

cd /opt

sudo wget 'https://sourceforge.net/projects/freeplane/files/freeplane%20stable/freeplane_bin-1.10.3.zip'

sudo unzip freeplane_bin-1.10.3.zip

sudo mv /opt/freeplane-1.10.3 /opt/freeplane

cat << EOF | sudo tee /usr/share/applications/freeplane.desktop
#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/freeplane/freeplane.sh
Name=Freeplane
Icon=/opt/freeplane/freeplane.png
EOF

関連情報

・Freeplaneに関する他の記事は、こちらを参照してください。

2022年7月10日日曜日

Maker Pi RP2040で赤外線リモコンを受信する

Maker Pi RP2040とCircuitPythonで赤外線リモコンを受信するには、以下の手順を実行します。

・Maker Pi RP2040と赤外線センサーを接続した写真

実行手順

1. 部品の用意
Maker Pi RP2040以外に以下の部品を用意します。
・赤外線リモコン受信モジュールOSRB38C9AA(2個入)
https://akizukidenshi.com/catalog/g/gI-04659/

・オプトサプライ赤外線リモコン
https://akizukidenshi.com/catalog/g/gM-07245/

2. 部品の接続
OSRB38C9AAのピン配列を受光面&足を下にした面から見て、以下のように接続します。
OSRB38C9AAの左側のピン -> Maker Pi RP2040のコネクター1のGP1ピン
OSRB38C9AAの中央のピン -> Maker Pi RP2040のコネクター1のGNDピン
OSRB38C9AAの右側のピン -> Maker Pi RP2040のコネクター1の3V3(OUT)ピン

3. adafruit_irremoteモジュールのダウンロード
以下のページからモジュールのソースコードをダウンロードして、Maker Pi RP2040のlibフォルダに保存します。
https://github.com/adafruit/Adafruit_CircuitPython_IRRemote/blob/main/adafruit_irremote.py

4. code.pyを開いて、以下のプログラムを書き込みます。
オプトサプライの赤外線リモコンのA,B,CボタンでRGB LEDの発光が変化し、電源ボタンで消灯することを確認します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import time
import board
import pulseio
import digitalio
import adafruit_irremote
import neopixel_write

pulsein = pulseio.PulseIn(board.GP1, maxlen=108, idle_state=True)
decoder = adafruit_irremote.NonblockingGenericDecode(pulsein)

keydata ={
  27:"Power",
  31:"A",
  30:"B",
  26:"C",
  141:"Upper Left",
  5:"Up",
  132:"Upper Right",
  8:"Left",
  4:"Center",
  1:"Right",
  136:"Bottom Left",
  0:"Down",
  129:"Bottom Right",
}

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT

while True:
    for message in decoder.read():
        if isinstance(message, adafruit_irremote.IRMessage):
            if len(message.code) == 4 and message.code[3] in keydata:
                print(keydata[message.code[3]]) 
                if message.code[3] == 31:
                    # Aのボタンの場合は2つのRGBLEDを緑色で点灯(GRB)
                    pixel_buf = bytearray([128, 0, 0, 128, 0, 0])
                    neopixel_write.neopixel_write(dio18, pixel_buf)
                if message.code[3] == 30:
                    # Bのボタンの場合は2つのRGBLEDを赤色で点灯(GRB)
                    pixel_buf = bytearray([0, 128, 0, 0, 128, 0])
                    neopixel_write.neopixel_write(dio18, pixel_buf)
                if message.code[3] == 26:
                    # Cのボタンの場合は2つのRGBLEDを青色で点灯(GRB)
                    pixel_buf = bytearray([0, 0, 128, 0, 0, 128])
                    neopixel_write.neopixel_write(dio18, pixel_buf)
                if message.code[3] == 27:
                    # 電源のボタンの場合は2つのRGBLEDを消灯(GRB)
                    pixel_buf = bytearray([0, 0, 0, 0, 0, 0])
                    neopixel_write.neopixel_write(dio18, pixel_buf)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2022年7月9日土曜日

MONOSTICKとTWELITE DIPとSHT31を使用して、温度・湿度を計測する

TWELITE製品を使用して、無線を活用した電子工作を簡単に行うことができます。MONOSTICKとTWELITE DIPとSHT31センサーを使用して、温度・湿度を計測するには、以下の手順を実行します。

〇TWELITE DIPとSHT31センサーの写真

twelite側の手順

1. 部品の準備
MONOSTICK/TWELITE DIPの他、以下の部品を準備します(適宜単3電池2つが入る電池ボックス等も準備してください)

・SHT31使用 高精度温湿度センサモジュールキット
https://akizukidenshi.com/catalog/g/gK-12125/

・片面ガラス・ユニバーサル基板 Cタイプ(72×47.5mm) めっき仕上げ
https://akizukidenshi.com/catalog/g/gP-00517/

・丸ピンICソケット (28P) 600mil 桟ありタイプ
https://akizukidenshi.com/catalog/g/gP-00033/
 ※tweliteを基盤に直にハンダ付けしたくない場合はこちらを使用します。

・ピンソケット(メス) 1×5(5P)
https://akizukidenshi.com/catalog/g/gC-02762/
 ※SHT31を基盤に直にはんだ付けしたくない場合はこちらを使用します。

2. 配線
以下の回路図に基づいて、上記の部品を配線します。
回路図

3.以下のページからTWELITE STAGE SDKをダウンロード
https://mono-wireless.com/jp/products/stage/index.html

4.ダウンロードしたファイル名を/optなどに移動して、解凍します(以下はMWSTAGE-2021-12_linux-1.zipの場合)
unzip MWSTAGE-2021-12_linux-1.zip

5.以下のようなシェルを作成し、TWELITE STAGEを起動します。実行後/dev/ttyUSB0が消えますので、MONOSTICKやTWELITEを抜き差ししてください。
※/optにインストールした場合、適宜パスは読み替えてください(Ubuntu 20.04で動作確認) runtw.sh
#!/bin/bash
sudo rmmod usbserial
sudo rmmod ftdi_sio
/opt/MWSTAGE/TWELITE_Stage.run

sudo chmod +x ./runtw.sh

sudo ./runtw.sh

TWELITE STAGE起動後は、各デバイスの初期設定を行います。
・MONOSTICK
アプリを出荷時から書き換えていた場合は、App_Wingsアプリのイメージに更新します。
Application IDを任意の数値に設定します(例: 0x11223344 -> 入力時は0xを省いて11223344)

・TWELITE DIP
アプリをActエクストラのActEx_Sns_BME280_SHT30イメージに更新します。
Application IDは通信するためにMONOSTICKと同じIDを指定します
Device ID: 任意の値(1や2など)

PC側の操作手順

1.pipenvのインストール
pipenvをインストール済みでない場合は、以下のコマンドでインストールします。
sudo apt-get -y install python3

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

source ~/.bashrc

2. pyserialのインストール
以下のコマンドでpyserialをインストールした仮想環境を作成します
mkdir twelite
cd twelite
pipenv --python 3

pipenv install pyserial

pipenv shell

3. 以下のように相手端末からの状態通知データをシリアル通信で受信してパースするサンプルプログラムを作成して、実行します。
※データ構造についての詳細は以下のページの「アクト」タブを参照してください。
https://mono-wireless.com/jp/products/TWE-APPS/App_Wings/parent.html

twelite_sht31.py
import serial
import time
import datetime

def parse_act_notification(line):
  if line[0:1] != ':'.encode('utf-8'):
    return []
  # 送信元のデバイスID(1byte)
  device_id = line[1:3]
  # コマンド(1byte) -> 0xAA固定
  command = line[3:5]
  # 応答ID(1byte)
  resp_id = line[5:7]
  # 送信元シリアルID(4byte)
  sender_serial_id = line[7:15]
  # 送信先シリアルID(4byte)
  receiver_serial_id = line[15:23]

  # LQI値(1byte)
  lqi = line[23:25]

  # データのバイト数(2byte)
  data_len = line[25:29]

  # 識別子(4byte) "SBS1" -> 0x53425331
  data_id = line[29:37]
  # SHT3Xの温度(C)x100(2byte)
  sht3x_temp = line[37:41]
  # SHT3Xの湿度x100(2byte)
  sht3x_humi = line[41:45]
  # BME280の温度(C)x100(2byte)
  bme280_temp = line[45:49]
  # BME280の湿度x100(2byte)
  bme280_humi = line[49:53]
  # BME280の気圧(2byte)
  bme280_pres = line[53:57]
  # volt_vcc(2byte)
  volt_vcc = line[57:61]
  # volt_a1(2byte)
  volt_a1 = line[61:65]

  # チェックサム(1byte)
  csv = line[65:67]
  cs = format(256-(sum([ int(line[li:li+2], 16) for li in range(1, len(line)-4, 2) ]) & 0x000000ff), '02x')
  csr = True if csv.decode('utf-8').lower() == cs.lower() else False
  result = {"device_id":device_id, "command":command, "resp_id":resp_id, "sender_serial_id":sender_serial_id, "lqi":lqi, "data_len":data_len,  "data_id":data_id, "sht3x_temp":sht3x_temp,"sht3x_humi":sht3x_humi, "bme280_temp":bme280_temp, "bme280_humi":bme280_humi, "volt_vcc":volt_vcc, "volt_a1":volt_a1,"csr":csr, "sht3x_temp_value":int(sht3x_temp, 16)/100,"sht3x_humi_value":int(sht3x_humi, 16)/100}
  return result
  
ser = serial.Serial(port='/dev/ttyUSB0',baudrate=115200,timeout=10)
try:
  while True:
    rl = ser.readline()
    print(rl)
    result = parse_act_notification(rl)
    if "sht3x_temp_value" in result:
      print(datetime.datetime.now())
      print("temp:{}".format(result["sht3x_temp_value"]))
      print("humidity:{}".format(result["sht3x_humi_value"]))
except KeyboardInterrupt:
  # close
  print("stopped.")
finally:
  ser.close()

・実行コマンド
python twelite_sht31.py

関連情報

MONOSTICKとTWELITE DIPと土壌水分センサーを使用して、水分を計測する

2022年7月8日金曜日

AlmaLinux 9にFreeCADをインストールする

FreeCADはオープンソースのCADアプリケーションです。

〇FreeCADの画面

インストール方法

以下のコマンドを実行します。
sudo mkdir -p /opt/freecad

cd /opt/freecad

sudo dnf -y install libXScrnSaver

sudo wget https://github.com/FreeCAD/FreeCAD/releases/download/0.20/FreeCAD-0.20.0-Linux-x86_64.AppImage

sudo chmod +x FreeCAD-0.20.0-Linux-x86_64.AppImage

cat << EOF | sudo tee /usr/share/applications/freecad.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/freecad/FreeCAD-0.20.0-Linux-x86_64.AppImage
Name=FreeCAD
Categories=Development;
EOF

関連情報

・FreeCADに関する他の記事はこちらを参照してください。

・FreeCADのウェブサイト
https://www.freecadweb.org/?lang=ja

2022年7月7日木曜日

Ubuntu 22.04に音声合成プログラムFestival Speech Synthesis Systemをインストールする

Festival Speech Synthesis Systemで英文を音声出力する事ができます。

インストール方法

以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install festival

使用方法例

・指定の英文を再生
echo "Hello, World!" | festival --tts

・音声出力をファイルへ出力する
echo "Hello, World!" > helloworld.txt
text2wave helloworld.txt -o helloworld.wav

・ゆっくりと発音させる
cat << EOF > test.txt
(Parameter.set 'Duration_Stretch 2.5)
(SayText "Good evening.")
EOF
festival -b test.txt

関連情報

・Festival Speech Synthesis Systemのホームページ
http://www.cstr.ed.ac.uk/projects/festival/

2022年7月6日水曜日

AlmaLinux 9にGlimpse Editorをインストールする

Glimpse Editorはオープンソースの画像処理ツールです。

〇Glimpse Editorの画面

インストール方法

シェルから以下のコマンド実行します
sudo dnf -y install flatpak

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

sudo flatpak -y install flathub org.glimpse_editor.Glimpse

関連情報

・Glimpse Editorに関する他の情報はこちらを参照してください。

2022年7月5日火曜日

AlmaLinux 9にディスク使用量・空き容量をCUIでグラフ表示してくれるdufコマンドをインストールする

dufコマンドで、ディスク使用量・空き容量を分かりやすくCUIでグラフ表示する事が出来ます。

〇AlmaLinux 9上のdufの画面

インストール手順

以下のコマンドを実行します。
wget https://github.com/muesli/duf/releases/download/v0.8.1/duf_0.8.1_linux_amd64.rpm

sudo dnf -y install https://github.com/muesli/duf/releases/download/v0.8.1/duf_0.8.1_linux_amd64.rpm

関連情報

・dufのプロジェクトリポジトリ
https://github.com/muesli/duf

2022年7月4日月曜日

Ubuntu 22.04にdigiKamをインストールする

digiKamはオープンソースの写真管理・編集ソフトウェアです。

〇digiKamの画面(Ubuntu 22.04)

インストール方法

以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install digikam

関連情報

・digiKamに関する他の記事は、こちらを参照してください。

2022年7月3日日曜日

AlmaLinux 9にBlockbenchをインストールする

Blockbenchで3Dモデルの編集を行うことができます。

〇Blockbenchの画面

インストール方法

以下のコマンドを実行します。
wget https://github.com/JannisX11/blockbench/releases/download/v4.2.5/Blockbench_4.2.5.rpm

sudo dnf -y install ./Blockbench_4.2.5.rpm

関連情報

・Blockbenchに関する他の情報はこちらを参照してください。

・Blockbenchのウェブサイト
https://blockbench.net/

2022年7月2日土曜日

AlmaLinux 9にメモアプリケーションをインストールする

メモアプリケーションで付箋紙のようにメモする事ができます。

〇メモアプリケーション

インストール方法

以下のコマンドを実行します。
sudo dnf -y install flatpak

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

sudo flatpak -y install flathub org.gnome.Notes

関連情報

・メモアプリケーション(Bejiben)に関する他の記事は、こちらを参照してください。

2022年7月1日金曜日

AlmaLinux 9にPyCharm2022.1.2をインストールする

PyCharmはPython言語のIDEです。

〇PyCharmの画面

インストール方法

以下のコマンドを実行します。
wget https://download.jetbrains.com/python/pycharm-community-2022.1.2.tar.gz

tar xvfz pycharm-community-2022.1.2.tar.gz

sudo mv pycharm-community-2022.1.2 /opt/pycharm-community

cat << EOF | sudo tee /usr/share/applications/pycharm.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/pycharm-community/bin/pycharm.sh
Name=PyCharm
Icon=/opt/pycharm-community/bin/pycharm.png
Categories=Development;
EOF

関連情報

・PyCharmに関する他の記事は、こちらを参照してください。