2021年5月31日月曜日

Raspberry Pi Zeroとluma.oledで有機ELディスプレイのコントラストを変更する

Raspberry Pi Zeroとluma.oledで有機ELディスプレイのコントラストを変更するには以下の手順を実行します。

〇接続したRaspberry Pi ZeroとOLED

実行手順

1. 部品の用意&環境の準備
Raspberry Pi Zeroの他、秋月電子さんで購入した以下のOLEDを使用します。
0.96インチ 128×64ドット有機ELディスプレイ(OLED) 青
https://akizukidenshi.com/catalog/g/gP-15870/

環境の準備については、以下の記事を参照してください。
Raspberry Pi Zeroと0.96インチ有機ELディスプレイを使用して、文字列を表示する

2.プログラミングとファイルの実行
以下のファイルをluma_contrast.pyとして保存し、実行します。contrastメソッドでコントラスト値(0~255)を指定します。以下のプログラムでは2秒ごとにコントラストを変えています。
from luma.core.interface.serial import i2c
from luma.core.render import canvas
from luma.oled.device import ssd1306
import time

device = ssd1306(i2c(port=1, address=0x3C))
with canvas(device) as draw:
    draw.rectangle(device.bounding_box, outline="blue", fill="black")
    draw.text((10, 30), "contrast test", fill="blue")

while True:
    device.contrast(32)
    time.sleep(2)
    device.contrast(255)
    time.sleep(2)

実行コマンド
以下のコマンドを実行してOLEDにメッセージのコントラストが変わることを確認します。Ctrl+Cでプログラムを停止させます。
python3 luma_contrast.py

関連項目

Python用ディスプレイドライバーのluma.oledのまとめ

OpenSCADとUltimaker Curaを使用して、0.96インチ有機ELディスプレイのケースを作成する

Raspberry Pi Zeroと小型ターンテーブルをREST APIで制御する

AlmaLinux8.3にGrphviz Visual Editorをインストールする

Graphviz Visual EditorはGraphvizのnode製フロントエンドです。webブラウザからグラフをインタラクティブに描画することができます。

〇Graphviz Visual Editorの画面

インストール方法

以下のコマンドを実行します
1. node.jsのインストール
curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -

sudo dnf -y install nodejs

2. graphviz-visual-editorのインストール
sudo dnf -y groupinstall "Development Tools"

git clone https://github.com/magjac/graphviz-visual-editor

cd graphviz-visual-editor

npm install

make

npm run build

cd ..

sudo mv graphviz-visual-editor /opt

sudo npm install -g serve

cat << EOF | sudo tee /etc/systemd/system/graphizvisualeditor.service
[Unit]
Description=Graphiz Visual Editor
[Service]
Type=simple
ExecStart=/usr/bin/serve -s build -l tcp://0.0.0.0:3000
WorkingDirectory=/opt/graphviz-visual-editor
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable graphizvisualeditor.service

sudo systemctl start graphizvisualeditor.service

3. ポート開放
firewallの3000番ポートを開けます
sudo firewall-cmd --add-port=3000/tcp --permanent

sudo firewall-cmd --reload

関連情報

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

2021年5月30日日曜日

WnckとPythonでのワークスペース・ウインドウの情報取得・操作まとめ

Wnckでワークスペース・ウインドウの情報を取得したり、操作をする事ができます。

ウインドウの情報取得

ウインドウの情報の取得に関しては、以下を参照してください。

WnckとPythonを使用してスクリーンのウインドウ一覧を取得する

WnckとPythonを使用して全ウインドウのプロセスIDを取得する

WnckとPythonを使用して全ウインドウの座標・幅・高さを取得する

ウインドウの状態変化の検出

ウインドウの状態の変化の検出に関しては、以下を参照してください。

WnckとPythonを使用してウインドウの位置が変わるまで待機する

WnckとPythonを使用してアクティブなウインドウが変わるまで待機する

WnckとPythonを使用して新しいウインドウがオープンするまで待機する

WnckとPythonを使用して新しいウインドウがクローズするまで待機する

ウインドウの最大化・最小化に関する状態検出と操作

ウインドウの最小化・最大化に関する状態検出と操作については、以下を参照してください。

WnckとPythonを使用してウインドウが最大化されるまで待機する

WnckとPythonを使用してウインドウが最小化されるまで待機する

WnckとPythonを使用して最小化しているウインドウを最小化解除する

WnckとPythonを使用して全ウインドウを最小化する

WnckとPythonを使用して最大化したウインドウ一覧を取得する

WnckとPythonを使用して最小化したウインドウ一覧を取得する

ワークスペースに関する操作・情報取得

ワークスペースに関する情報の取得や切り替えは以下を参照してください。

WnckとPythonを使用してアクティブなワークスペースが変わるまで待機する

WnckとPythonを使用してアクティブなワークスペースを切り替える

WnckとPythonを使用してワークスペースのlayout位置を取得する

WnckとPythonを使用してワークスペース名を変更する

WnckとPythonを使用してワークスペース名を取得する

WnckとPythonを使用してワークスペース番号を取得する

WnckとPythonを使用してデスクトップ画面数(ワークスペース数)を取得する

アプリケーションに関する情報取得

アプリケーションに関する情報取得に関しては以下を参照してください。

WnckとPythonを使用してアプリケーションがオープンされるまで待機する

WnckとPythonを使用してアプリケーションが閉じられるまで待機する

WnckとPythonを使用してウインドウアプリケーション名を列挙する

スクリーンに関する情報取得

スクリーンに関する情報の取得は、以下を参照してください。

WnckとPythonを使用してスクリーンのウインドウマネージャ名を取得する

WnckとPythonを使用してスクリーンの解像度を取得する

AlmaLinux8.3にKiCADをインストールする

KiCADで回路図やプリント基盤をデザインする事ができます。

〇KiCADの画面

インストール方法

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

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

sudo flatpak -y install --from https://flathub.org/repo/appstream/org.kicad_pcb.KiCad.flatpakref

関連情報

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

・KiCADのwebサイト
https://kicad-pcb.org/

2021年5月29日土曜日

OpenSCADとUltimaker Curaを使用して、ペットボトルからシリコンチューブに接続することのできる穴つきキャップを作成する

OpenSCADとUltimaker Curaを使用して、ペットボトルからシリコンチューブに接続することのできる穴つきキャップを作成するには以下の手順を実行します。
シリコンチューブは、内径4mm外径6mmの物が適合します。

〇作成したキャップとシリコンチューブの写真

作成手順

1. BOSL2ライブラリの導入
ペットボトルのキャップ部分は、BOSL2ライブラリを利用します。以下のBOSL2のgithubリポジトリからコードをdownloadして、OpenSCADのライブラリフォルダに配置します。
https://github.com/revarbat/BOSL2
※ライブラリフォルダの場所は、OpenSCADのFileメニューのShow Library Folder...を選択して確認する事が出来ます。
※zipをダウンロード・解凍した場合、BOSL2-masterというフォルダ名をBOSL2にリネームします。

2. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
シリコンチューブが抜けないように内径より少し大き目のパイプとリング部分を作成しています。シリコンチューブの伸びやすさによって、穴の半径や3Dプリンタ設定を微調整してください。

・ペットボトルからシリコンチューブに接続することのできる穴つきキャップのOpenSCADコード
include <BOSL2/std.scad>
include <BOSL2/bottlecaps.scad>

INNER_RADIUS=1.5;
OUTER_RADIUS=2.3;
OUTER_RADIUS2=2.5;
TUBE_HEIGHT=10;
STOPPER_OFFSET=2;
STOPPER_HEIGHT=3;

CAP_RADIUS=16;
CAP_HOLE_RADIUS=OUTER_RADIUS2+1.4;

difference(){
    translate([0, 0, -TUBE_HEIGHT])
    cylinder(h = TUBE_HEIGHT, r=CAP_RADIUS, $fn=50);
    translate([0, 0, -TUBE_HEIGHT])
    cylinder(h = TUBE_HEIGHT, r=CAP_HOLE_RADIUS, $fn=50);
}

difference(){
    union(){
        pco1810_cap();
        translate([0, 0, -TUBE_HEIGHT])
        cylinder(h = TUBE_HEIGHT, r=OUTER_RADIUS, $fn=50);
        translate([0, 0, -TUBE_HEIGHT+STOPPER_OFFSET])
        cylinder(h = STOPPER_HEIGHT, r1=OUTER_RADIUS, r2=OUTER_RADIUS2, $fn=50);
    }
    translate([0, 0, -TUBE_HEIGHT])
    cylinder(h = TUBE_HEIGHT+5, r=INNER_RADIUS, $fn=50);
}

・OpenSCADの画面

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

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

AlmaLinux8.3にKazamをインストールする

Kazamでデスクトップ画面を録画する事ができます。

〇Kazamの画面

インストール方法

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

sudo pip3 install --upgrade pip

sudo pip3 install kazam

関連情報

・Kazamのプロジェクトwebサイト
https://launchpad.net/kazam

2021年5月28日金曜日

Raspberry Pi Picoとpico displayで1文字ごとに色を変えて描画する

MicroPythonでpico displayに1文字だけを描画するcharacterメソッドが用意されています。ここでは、繰り返しcharacterメソッドを使用して各文字で色の異なるように描画します。

〇Raspberry Pi Picoとpico displayの写真

実行手順

※既に実行環境が整っている場合は手順1-3は飛ばしてください。
1. Raspberry Pi Picoとpico displayを接続します(pico displayの裏にUSBコネクタの絵が印刷されているので、Raspberry Pi PicoのUSBと向きを合わせます)。
pico displayは秋月電子で購入しました。
Pico Display Pack
https://akizukidenshi.com/catalog/g/gM-16238/

2. piromoni-picoのリポジトリの最新releaseのuf2ファイルをダウンロードする
https://github.com/pimoroni/pimoroni-pico/releases
※2021/05/08時点では、以下のファイルが最新でした。
pimoroni-pico-v0.1.5-micropython-v1.15.uf2

3. BOOTSELボタンを接続しながら、パソコンにUSBケーブルで接続します
2でダウンロードしたuf2ファイルをコピーします。

4. Thonnyで以下のプログラムをRaspberry Pi Picoにmain.pyとして保存して、実行します。
import utime
import picodisplay

# initialize
buf = bytearray(picodisplay.get_width() * picodisplay.get_height() * 2)
picodisplay.init(buf)

# clear background
picodisplay.set_pen(0, 0, 0)
picodisplay.clear()

characters = [
    [ord('A'), 255, 0, 0],
    [ord('B'), 0, 255, 0],
    [ord('C'), 0, 0, 255]
]

px=50
py=40
for ch in characters:
    picodisplay.set_pen(ch[1], ch[2], ch[3])
    picodisplay.character(ch[0], px, py, 8)
    px+=50
picodisplay.update()

characterメソッドで文字コードとX/Y座標と文字の大きさを指定します。

関連情報

Raspberry Pi Picoとpico displayで文字列を表示する

Raspberry Pi Picoとpico displayで水玉模様を描画する

Raspberry Pi Picoとpico displayで市松模様を描画する

Raspberry Pi Picoとpico displayでフルカラーLEDを光らせる

Raspberry Pi Picoとpico displayでバックライトの明るさを変更する

Raspberry Pi Picoとpico displayでボタンの状態を取得する

AlmaLinux8.3にKStarsをインストールする

KStarsはオープンソースの天文学ソフトウェアです。

〇KStarsの画面

インストール方法

以下のコマンドを実行します。
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. KStarsのインストール
sudo snap install kstars
※もし「error: too early for operation, device not yet seeded or device model not acknowledged」というメッセージが表示された場合は、しばらく待ってから再実行してください。

コマンドでの実行方法

以下のコマンドで実行します。
snap run kstarts

関連情報

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

2021年5月27日木曜日

Raspberry Pi Picoとpico displayで水玉模様を描画する

MicroPythonでpico displayに円を描画するcircleメソッドが用意されています。ここでは、繰り返しcircleメソッドを使用して水玉模様を描画します。

〇Raspberry Pi Picoとpico displayの写真

実行手順

※既に実行環境が整っている場合は手順1-3は飛ばしてください。
1. Raspberry Pi Picoとpico displayを接続します(pico displayの裏にUSBコネクタの絵が印刷されているので、Raspberry Pi PicoのUSBと向きを合わせます)。
pico displayは秋月電子で購入しました。
Pico Display Pack
https://akizukidenshi.com/catalog/g/gM-16238/

2. piromoni-picoのリポジトリの最新releaseのuf2ファイルをダウンロードする https://github.com/pimoroni/pimoroni-pico/releases
※2021/05/08時点では、以下のファイルが最新でした。
pimoroni-pico-v0.1.5-micropython-v1.15.uf2

3. BOOTSELボタンを接続しながら、パソコンにUSBケーブルで接続します
2でダウンロードしたuf2ファイルをコピーします。

4. Thonnyで以下のプログラムをRaspberry Pi Picoにmain.pyとして保存して、実行します。
import utime
import picodisplay

# initialize
buf = bytearray(picodisplay.get_width() * picodisplay.get_height() * 2)
picodisplay.init(buf)

px=0
py=0
space=20
radius=8
while py < picodisplay.get_height():
    while px < picodisplay.get_width():
        pat = ((py/space)%2+(px/space)%2)%2
        if pat == 0:
            picodisplay.set_pen(0, 0, 0)
        else:
            picodisplay.set_pen(128, 128, 255)
        picodisplay.circle(px, py, radius)
        px += space
    px = 0
    py += space
picodisplay.update()

circleメソッドでX/Y座標と半径を指定します。

関連情報

Raspberry Pi Picoとpico displayで文字列を表示する

Raspberry Pi Picoとpico displayで1文字ごとに色を変えて描画する

Raspberry Pi Picoとpico displayで市松模様を描画する

Raspberry Pi Picoとpico displayでフルカラーLEDを光らせる

Raspberry Pi Picoとpico displayでバックライトの明るさを変更する

Raspberry Pi Picoとpico displayでボタンの状態を取得する

AlmaLinux8.3にEclipse Lua Development Toolsをインストールする

Eclipse Lua Development ToolsはオープンソースのLua言語IDEです。

〇Eclipse Lua Development Toolsの画面

インストール方法

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

sudo mkdir -p /opt/ldt

cd /opt/ldt

sudo wget https://ftp.jaist.ac.jp/pub/eclipse/ldt/products/stable/1.4.2/org.eclipse.ldt.product-linux.gtk.x86_64.tar.gz

sudo tar xvfz org.eclipse.ldt.product-linux.gtk.x86_64.tar.gz

cat << EOF | sudo tee /usr/share/applications/eclipse_ldt.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/ldt/LuaDevelopmentTools
Name=Eclipse Lua Development Tools
Categories=Development;
Icon=/opt/ldt/icon.xpm
EOF

関連情報

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

2021年5月26日水曜日

Raspberry Pi Picoとpico displayで市松模様を描画する

MicroPythonでpico displayに四角形を描画するrectangleメソッドが用意されています。ここでは、繰り返しrectangleメソッドを使用して市松模様を描画します。

〇Raspberry Pi Picoとpico displayの写真

実行手順

※既に実行環境が整っている場合は手順1-3は飛ばしてください。
1. Raspberry Pi Picoとpico displayを接続します(pico displayの裏にUSBコネクタの絵が印刷されているので、Raspberry Pi PicoのUSBと向きを合わせます)。
pico displayは秋月電子で購入しました。
Pico Display Pack
https://akizukidenshi.com/catalog/g/gM-16238/

2. piromoni-picoのリポジトリの最新releaseのuf2ファイルをダウンロードする
https://github.com/pimoroni/pimoroni-pico/releases
※2021/05/08時点では、以下のファイルが最新でした。
pimoroni-pico-v0.1.5-micropython-v1.15.uf2

3. BOOTSELボタンを接続しながら、パソコンにUSBケーブルで接続します
2でダウンロードしたuf2ファイルをコピーします。

4. Thonnyで以下のプログラムをRaspberry Pi Picoにmain.pyとして保存して、実行します。
import utime
import picodisplay

# initialize
buf = bytearray(picodisplay.get_width() * picodisplay.get_height() * 2)
picodisplay.init(buf)

px=0
py=0
sx=16
sy=16
while py < picodisplay.get_height():
    while px < picodisplay.get_width():
        pat = ((py/sx)%2+(px/sy)%2)%2
        if pat == 0:
            picodisplay.set_pen(0, 0, 100)
        else:
            picodisplay.set_pen(200, 200, 0)
        picodisplay.rectangle(px, py, sx, sy)
        px += sx
    px = 0
    py += sy
picodisplay.update()

rectangleメソッドでX/Y座標と幅・高さを指定します。

関連情報

Raspberry Pi Picoとpico displayで文字列を表示する

Raspberry Pi Picoとpico displayで1文字ごとに色を変えて描画する

Raspberry Pi Picoとpico displayで水玉模様を描画する

Raspberry Pi Picoとpico displayでフルカラーLEDを光らせる

Raspberry Pi Picoとpico displayでバックライトの明るさを変更する

Raspberry Pi Picoとpico displayでボタンの状態を取得する

AlmaLinux8.3にMu Editorをインストールする

Mu Editorは初心者向けPython開発環境です。

〇Mu Editorの画面

インストール方法

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

sudo pip3 install --upgrade pip

sudo pip3 install mu-editor

〇コマンドラインからの実行
以下のコマンドを実行します。
mu-editor

関連情報

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

2021年5月25日火曜日

Raspberry Pi Picoとpico displayでボタンの状態を取得する

MicroPythonでpico displayについているA/B/X/Yボタンの状態を取得する事が出来ます。今回は押されたボタンの文字をディスプレイに表示します。

実行手順

※既に実行環境が整っている場合は手順1-3は飛ばしてください。
1. Raspberry Pi Picoとpico displayを接続します(pico displayの裏にUSBコネクタの絵が印刷されているので、Raspberry Pi PicoのUSBと向きを合わせます)。
pico displayは秋月電子で購入しました。
Pico Display Pack
https://akizukidenshi.com/catalog/g/gM-16238/

2. piromoni-picoのリポジトリの最新releaseのuf2ファイルをダウンロードする
https://github.com/pimoroni/pimoroni-pico/releases
※2021/05/08時点では、以下のファイルが最新でした。
pimoroni-pico-v0.1.5-micropython-v1.15.uf2

3. BOOTSELボタンを接続しながら、パソコンにUSBケーブルで接続します
2でダウンロードしたuf2ファイルをコピーします。

4. Thonnyで以下のプログラムをRaspberry Pi Picoにmain.pyとして保存して、実行します。
import utime
import picodisplay

# initialize
buf = bytearray(picodisplay.get_width() * picodisplay.get_height() * 2)
picodisplay.init(buf)


while True:
    # clear background
    picodisplay.set_pen(0, 0, 0)
    picodisplay.clear()
    picodisplay.set_pen(255, 255, 255)

    message = ''
    # A button
    if picodisplay.is_pressed(picodisplay.BUTTON_A):
        message += 'A'
    # B button
    if picodisplay.is_pressed(picodisplay.BUTTON_B):
        message += 'B'
    # X button
    if picodisplay.is_pressed(picodisplay.BUTTON_X):
        message += 'X'
    # Y button
    if picodisplay.is_pressed(picodisplay.BUTTON_Y):
        message += 'Y'
    picodisplay.text(message, 4, 4, picodisplay.get_width(), 5)
    picodisplay.update()
    utime.sleep_ms(1000)

is_pressedメソッドでボタンの状態を取得します。状態を取得するボタンの指定は引数としてBUTTON_A/BUTTON_B/BUTTON_X/BUTTON_Yを渡します。

関連情報

Raspberry Pi Picoとpico displayで文字列を表示する

Raspberry Pi Picoとpico displayで1文字ごとに色を変えて描画する

Raspberry Pi Picoとpico displayで水玉模様を描画する

Raspberry Pi Picoとpico displayで市松模様を描画する

Raspberry Pi Picoとpico displayでフルカラーLEDを光らせる

Raspberry Pi Picoとpico displayでバックライトの明るさを変更する

AlmaLinux8.3にCインタープリターのpicocをインストールする

picocは、シンプルなCインタプリターです。コンパイルなしにコマンドラインからCを実行する事ができます。

ビルド&インストール方法

以下のコマンドを実行します。
sudo dnf -y groupinstall "Development Tools"

sudo dnf -y install readline-devel

wget https://gitlab.com/zsaleeba/picoc/-/archive/master/picoc-master.tar.gz

tar xvfz picoc-master.tar.gz

sudo mv picoc-master /opt/picoc

cd /opt/picoc

make

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

動作確認

以下のコマンドを実行してHelo Worldを実行します。
cd

cat << EOF > helloworld.c
#include <stdio.h>

char buf[100];
int val=100;

void main()
{
  sprintf(buf, "Hello, World! %d\n", val);
  printf(buf);
}
EOF

picoc helloworld.c

関連情報

picocプロジェクトのリポジトリ
https://gitlab.com/zsaleeba/picoc

2021年5月24日月曜日

AlmaLinux8.3にRedis Commanderをインストールする

Redis CommanderでブラウザからRedis Serverのコマンドを実行する事ができます。

〇Reddis Commanderの画面
ブラウザからhttp://<ホスト名またはIPアドレス>:8081/ にアクセスします。

インストール方法

以下の手順を実行します。

1. Redisのインストール
sudo dnf -y install redis

sudo systemctl enable redis

sudo systemctl start redis

動作確認は以下のコマンドを実行します。
redis-cli << EOF
ping
flushall
set mykey "hello world."
get mykey
EOF

2. node.jsとredis-commanderのインストール
以下のコマンドを実行して、nodeとredis-commanderをインストールします。
curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -

sudo dnf -y install nodejs

sudo npm install --no-optional -g redis-commander

cat << EOF | sudo tee /etc/systemd/system/rediscommander.service
[Unit]
Description=redis-commander

[Service]
Type=simple
ExecStart=/usr/bin/redis-commander

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable rediscommander.service

sudo systemctl start rediscommander.service

3. ポート開放
firewallの8081番ポートを開けます
sudo firewall-cmd --add-port=8081/tcp --permanent

sudo firewall-cmd --reload

関連情報

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

2021年5月23日日曜日

AlmaLinux8.3にThonnyをインストールする

Thonnyは初心者向けPython開発環境です。

〇Thonnyの画面

インストール方法

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

sudo pip3 install thonny

コマンドラインからの実行

以下のコマンドを実行します。
thonny
※初回起動時には言語や設定を確認するダイアログが表示されるので「日本語」を選択します。
※権限のエラーが発生する場合は、以下のコマンドを実行してdialoutグループにユーザを追加します。
sudo usermod -a -G dialout $USER

関連情報

・Thonnyのプロジェクトサイト
https://thonny.org/

2021年5月22日土曜日

Groveデバイスまとめ

Seeed社のGroveデバイスによって、はんだ付けなしに簡単に様々なデバイスをRaspberry Pi/microbit/Arduino/M5StickCなどに接続することができます。Groveデバイスに関する記事を纏めました。

・Groveボタン
タクトスイッチが付いたデバイスです。ON/OFFのみのデジタルデバイスです。

○Groveボタンの写真

Raspberry Pi ZeroとGrove Base HAT for Raspberry PiとGroveボタンのイベント(押下・離す)を取得する

Raspberry Pi Zero上のEclipse Mosquittoとpaho MQTTで、Grove Base HAT for Raspberry PiとGroveボタンのイベントを送受信する

Raspberry PiからBluetooth経由でmicrobitに接続したGroveボタンの値を取得する

MicroPythonを使用してmicro:bitに接続したGroveボタンの状態を取得・USBシリアルで送信する

microbitのGrove Shieldに接続したボタンの状態を、USBシリアル通信を通して取得する

microbitに接続したボタンの状態値をBluetoothのAdvertiseでRaspberry Piに表示する

M5StickCにGroveボタンを接続して、MicroPythonで取得したボタン状態を表示する

・Groveブザー
ブザー音を鳴らすことのできるデバイスです。

○Groveブザーの写真

Raspberry Pi ZeroとGrove Base HAT for Raspberry PiとGroveブザーでブザー音を鳴らす

Raspberry PiからBluetooth経由でmicrobitに接続したGroveのブザーを鳴らす

microbitのGrove Shieldに接続したブザーを、USBシリアル通信を通して鳴らす

M5StickCにGroveブザーを接続して、MicroPythonでブザーを鳴らす

M5StickCにGroveボタンを接続して、MicroPythonでM5ボタンを押したときにブザーを鳴らす

・Grove LEDモジュール
LEDがついていて、光らせることが出来ます。
Raspberry Pi ZeroとGrove Base HAT for Raspberry PiとGrove LEDモジュールでLEDを点灯・消灯する

Raspberry Pi Zero上のEclipse Mosquittoとpaho MQTTで、Grove Base HAT for Raspberry Piに繋いだGrove LEDモジュールを制御する

Raspberry Pi ZeroとGrove Base HAT for Raspberry PiとGrove LEDモジュールでLED点灯・消灯を制御するREST APIを作成する

microbitのGrove Shieldに接続したGrove LEDを、USBシリアル通信を通して光らせる

Raspberry PiからBluetooth経由でmicrobitに接続したGrove LEDを点滅させる

MicroPythonでmicrobitのGrove Shieldに接続したGrove LEDを、USBシリアル通信を通して光らせる

・Grove光センサー
明るさを測定する事が出来ます。光の強さによって電圧が変化するアナログデバイスです。

○Grove光センサーの写真

Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと光センサーで、明るさを取得する

microbitのGrove Shieldに接続した光センサーの値を、USBシリアル通信を通して取得する

Raspberry PiからBluetooth経由でmicrobitに接続したGrove光センサーの値を取得する

microbitに接続した光センサー値をBluetoothのAdvertiseでRaspberry Piに表示する

Raspberry Pi Zero上のEclipse Mosquittoとpaho MQTTで、Grove Base HAT for Raspberry Piと光センサーの明るさのデータを送受信する

Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと光センサーで取得した明るさのデータを返すREST APIを作成する

Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと光センサーで取得した明るさのデータをPostgreSQLに保存する

MicroPythonを使用してmicro:bitに接続したGrove光センサーの値を取得・USBシリアルで送信する

M5StickCにGroveの光センサーを接続して、MicroPythonで取得した値を表示する

M5StickCにGroveの光センサーを接続して、MicroPythonで取得した値を返すREST APIサーバーを作成する

Lazurite MJ2001とGrove光センサーを接続して、明るさを取得する

Lazurite MJ2001とGrove光センサーを接続して、取得した明るさを920MHz無線でRaspberry Pi Zeroに送信する

OpenSCADとUltimaker Curaを使用してGrove Light Sensorのケースを作成する

・Grove角度センサー
昔のオーディオのボリュームのように回転ツマミの回転値を取得できます。
Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと回転ボリュームセンサーで回転角度を取得する

microbitのGrove Shieldに接続したRotary Angleセンサーの値を、USBシリアル通信を通して取得する

Raspberry PiからBluetooth経由でmicrobitに接続したGrove Rotary Angleセンサーの値を取得する

microbitに接続したRotary Angleセンサー値をBluetoothのAdvertiseでRaspberry Piに表示する

・Grove音センサー
音量を測定する事が出来ます。
Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと音センサモジュールで音量を取得する

Raspberry PiからBluetooth経由でmicrobitに接続したGrove音センサーの値を取得する

Raspberry Pi Zero上のEclipse Mosquittoとpaho MQTTで、Grove Base HAT for Raspberry Piと音センサモジュールの音量データを送受信する

Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと音センサモジュールで音量を返すREST APIを作成する

Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと音センサモジュールで音量データをPostgreSQLに保存する

microbitに接続したGrove音センサー値をBluetoothのAdvertiseでRaspberry Piに表示する

microbitのGrove Shieldに接続した音センサーの値を、USBシリアル通信を通して取得する

OpenSCADとUltimaker Curaを使用してGrove Sound Sensorのケースを作成する

・Grove超音波距離センサー
超音波によって、距離を測定する事が出来ます。
Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと超音波距離センサモジュールで距離を取得する

Raspberry Pi Zero上のEclipse Mosquittoとpaho MQTTで、Grove Base HAT for Raspberry Piと超音波距離センサモジュールで距離データを送受信する

Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと超音波距離センサモジュールで距離を返すREST APIを作成する

Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと超音波距離センサモジュールで距離をPostgreSQLに保存する

Raspberry PiからBluetooth経由でmicrobitに接続したGrove超音波距離センサーの値を取得する

・Grove温度センサー
温度を測定する事が出来ます。温度によって出力電圧が変わるアナログデバイスです。

○Grove温度センサーの写真

Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと温度センサーで温度を取得する

Raspberry Pi Zero上のEclipse Mosquittoとpaho MQTTで、Grove Base HAT for Raspberry Piと温度センサーのデータを送受信する

Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと温度センサーで取得したデータを返すREST APIを作成する

Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと温度センサーで取得したデータをPostgreSQLに保存する

Raspberry Pi PicoとGrove温度センサーを接続して、温度を取得する

M5StickCにGrove温度センサーを接続して、MicroPythonで温度を取得する

OpenSCADとUltimaker Curaを使用してGrove温度センサー(Grove Temperature Sensor)のケースを作成する

・Groveタッチセンサー
センサーに触れたかどうかを調べることが出来ます。
Raspberry Pi ZeroとGrove Base HAT for Raspberry PiとGroveタッチセンサーのイベント(押下・離す)を取得する

Raspberry Pi Zero上のEclipse Mosquittoとpaho MQTTで、Grove Base HAT for Raspberry Piとタッチセンサーのイベントを送受信する

microbitに接続したタッチセンサーの値をBluetoothのAdvertiseでRaspberry Piに表示する

microbitのGrove Shieldに接続したタッチセンサーの値を、USBシリアル通信を通して取得する

Raspberry PiからBluetooth経由でmicrobitに接続したGroveタッチセンサーの値を取得する

・水分センサー
土壌中の水分を測定する事が出来ます。
Raspberry PiからBluetooth経由でmicrobitに接続したGrove水分センサーの値を取得する

microbitに接続した水分センサー値をBluetoothのAdvertiseでRaspberry Piに表示する

・4桁ディスプレイ
4桁の数値を表示する事のできるデバイスです。
Raspberry PiからBluetooth経由でmicrobitに接続した4桁表示ディスプレイに値を表示する

・Groveスクリューターミナル
Groveコネクタを持たない機器とGroveデバイスを接続するのに役立ちます。

○Groveスクリューターミナルの写真

Raspberry Pi PicoとGrove温度センサーを接続して、温度を取得する

Raspberry Pi Picoと赤外線受信モジュールとサーボモーターで赤外線リモコンカーを作成する

Raspberry Pi Picoと赤外線受信モジュールとサーボモーターを組み合わせて、赤外線リモコンカーを作成します。電源はエネループ3本と5V出力昇圧DCDCコンバーターを使用します。

〇赤外線リモコンカーの写真

作成手順

1. 電子部品の準備
以下の電子部品を準備します
・Raspberry Pi Pico ベーシックセット
https://akizukidenshi.com/catalog/g/gK-16149/

・5V出力昇圧DCDCコンバーター
https://akizukidenshi.com/catalog/g/gK-13065/

・赤外線リモコン受信モジュールOSRB38C9AA(2個入)
https://akizukidenshi.com/catalog/g/gI-04659/

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

・360°連続回転サーボ(ローテーションサーボ) SG90-HV
https://akizukidenshi.com/catalog/g/gM-14382/
左右それぞれに使用するので2つ用意します。

・電池ボックス 単3×3本 リード線
https://akizukidenshi.com/catalog/g/gP-02667/

以下は配線用のジャンパー線です。必須ではないですが、あると便利です。
・コネクタ付コード 3P (黒赤黄)
https://akizukidenshi.com/catalog/g/gC-15384/

・ブレッドボード・ジャンパーワイヤ(オス-メス) 15cm(赤) (10本入)
https://akizukidenshi.com/catalog/g/gC-08933/

・ブレッドボード・ジャンパーワイヤ(オス-メス) 15cm(黒) (10本入)
https://akizukidenshi.com/catalog/g/gC-08932/

・ブレッドボード・ジャンパーワイヤ(オス-メス) 15cm(黄) (10本入)
https://akizukidenshi.com/catalog/g/gC-08936/

・ブレッドボード・ジャンパー延長ワイヤ(メス-メス) 15cm赤 (10本入)
https://akizukidenshi.com/catalog/g/gP-03474/

・ブレッドボード・ジャンパー延長ワイヤ(メス-メス) 15cm黒 (10本入)
https://akizukidenshi.com/catalog/g/gP-03475/

以下は、5V出力昇圧DCDCコンバーターとの接続用基板の部品として使用しました。必要に応じて使用してください。
・ICソケット ( 6P)
https://akizukidenshi.com/catalog/g/gP-08616/

・ピンヘッダ 2×40 (80P)
https://akizukidenshi.com/catalog/g/gC-00082/

・両面スルーホールガラスコンポジット・ユニバーサル基板 Fタイプ
https://akizukidenshi.com/catalog/g/gP-12731/

2. 電子回路の配線
以下の回路図に基づいて、配線します。

※赤外線受光モジュールとRaspberry Pi Picoとの接続は以下の様に行います。
OSRB38C9AAのピン配列を受光面&足を下にした面から見て、
OSRB38C9AAの左側のピン -> Raspberry Pi PicoのGP0ピン
OSRB38C9AAの中央のピン -> Raspberry Pi PicoのGNDピン
OSRB38C9AAの右側のピン -> Raspberry Pi Picoの3V3(OUT)ピン(36番ピン)

※サーボモータとRaspberry Pi Picoとの接続は以下の様に行います
SG90-HVの赤い線 -> 5V出力昇圧DCDCコンバーターのOUT端子
SG90-HVの茶色線 -> 5V出力昇圧DCDCコンバーターのGND端子
SG90-HVの黄色線 -> Raspberry Pi PicoのGP2またはGP4ピン

※5V出力昇圧DCDCコンバーターとRaspberry Pi Picoの接続は以下の様に行います
Raspberry Pi PicoのVSYS -> 5V出力昇圧DCDCコンバーターのOUT端子
Raspberry Pi PicoのGND -> 5V出力昇圧DCDCコンバーターのGND端子

〇結線を行った電子回路の写真

3. リモコンカーの部品の準備
以下の部品または相当するものを準備します。

・TAMIYAユニバーサルプレート (2枚セット)
https://www.tamiya.com/japan/products/70157/index.html

・TAMIYAトラックタイヤセット (36mm径)
https://www.tamiya.com/japan/products/70101/index.html

・OpenSCADとUltimaker Curaを使用して、サーボモーターにつける事ができるホイールを作成する https://serverarekore.blogspot.com/2021/05/openscadultimaker-cura.html

・自在ゴム車
※ホームセンターで大きさにもよりますが、以下の様な自在ゴム車が70円~100円位で手に入ります。

・3Dプリンタで作成したタミヤのユニバーサルプレートとRaspberry Pi Picoを固定する部品
作成方法については以下を参照してください。
OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレートにRaspberry Pi Picoを固定する事のできるマウンタを作成する

・3Dプリンタで作成したタミヤのユニバーサルプレートとサーボモーターを固定する部品
作成方法については以下を参照してください。
OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレート用のサーボモーター固定部品を作る

・低頭タイプのM3ネジとナット
TAMIYAのユニバーサルプレートに合うネジのM3のネジ・ナットを用意します。

4. 赤外線リモコンカーの作成
以下の様に、3Dプリントした部品をユニバーサルプレートにつけます。電池ボックスも穴が空いているので、低頭M3ネジとナットを使用してユニバーサルプレートに固定します。Raspberry Pi Picoとユニバーサルプレートの固定は、上記で作成した3Dプリンタのマウンタを使用します。
下から見た場合、以下のように固定します。

5. プログラミング
Thonnyを使用して、以下のプログラムをRaspberry Pi Picoに書き込みます。
import time
from machine import Pin, PWM
from ir_rx.nec import NEC_8

keydata = {
0xD8:"Power button",
0xF8:"A button",
0x78:"B button",
0x58:"C button",
0xB1:"Upper left button",
0xA0:"Up button",
0x21:"Upper right button",
0x10:"Left button",
0x20:"Center button",
0x80:"Right button",
0x11:"Bottom left button",
0x00:"Down button",
0x81:"Bottom right button",
0xFF:"N/A"
}
last_code=0xFF

def callback(data, addr, ctrl):
    global last_code
    if data < 0:  # repeat code
        print(keydata[last_code])
    else:
        last_code = data
        print(keydata[data])
    if last_code == 0xA0: # Up button -> foward
        pos=20
        servo1.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        pos=-20
        servo2.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        time.sleep_ms(1000)
        pos=0
        servo1.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        servo2.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
    elif last_code == 0x00: # Down button -> Back
        pos=-20
        servo1.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        pos=20
        servo2.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        time.sleep_ms(1000)
        pos=0
        servo1.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        servo2.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
    elif last_code == 0x10:    # Left button -> turn left
        pos=-20
        servo1.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        pos=-20
        servo2.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        time.sleep_ms(1000)
        pos=0
        servo1.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        servo2.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
    elif last_code == 0x80:    # Right button -> turn right
        pos=20
        servo1.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        pos=20
        servo2.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        time.sleep_ms(1000)
        pos=0
        servo1.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))
        servo2.duty_u16(int((1.5 + (pos / 180)) * 65535 / 20 + 0.5))

6. Raspberry Pi Picoリモコンカーの動作確認
単3電池3本を電池ボックスに挿入し、赤外線リモコンを使用して動作を確認します。
上ボタンで全身・左ボタンで左旋回・右ボタンで右旋回。下ボタンで後進します。

関連情報

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレートにRaspberry Pi Picoを固定する事のできるマウンタを作成する

OpenSCADとUltimaker Curaを使用して、サーボモーターにつける事ができるホイールを作成する

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレート用のサーボモーター固定部品を作る

AlmaLinux8.3にNotableをインストールする

Notableで、Markdown記法を使用してノートを作成・管理する事ができます。ノートはタグ付け・お気に入り・ピン止めで整理します。

〇Notableの画面

インストール方法

以下のコマンドを実行します。
wget https://github.com/notable/notable/releases/download/v1.8.4/notable-1.8.4.x86_64.rpm

sudo dnf -y install notable-1.8.4.x86_64.rpm

関連情報

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

2021年5月21日金曜日

KiCADにRaspberry Pi Picoのシンボルを追加する

KiCADにRaspberry Pi Picoのシンボルを追加するには、以下の手順を実行します。

シンボル追加手順

1. ライブラリファイルのダウンロード
任意の場所に、ライブラリファイルをダウンロードします。
wget https://github.com/blippy/rpi/raw/master/pico/kicad/pico_rp2040.dcm

wget https://github.com/blippy/rpi/raw/master/pico/kicad/pico_rp2040.lib

2. ライブラリの追加
Eeschemaを起動してPreferencesメニューからManage Symbol Libraries...を選択します。次に、Symbol LibrariesダイアログのGlobal Librariesタブの一覧の下の+ボタンをクリックして、任意のニックネームを入力し、libファイルを選択します。

3. 確認
EeschemaでRaspberry Pi Picoのシンボルが利用できることを確認します。

関連情報

・Githubリポジトリ
https://github.com/blippy/rpi/tree/master/pico/kicad

AlmaLinux8.3にosqueryをインストールする

osqueryでシステムの様々な情報をSQLで参照する事が事ができます。

インストール方法

以下のコマンドを実行します
wget https://pkg.osquery.io/rpm/osquery-4.7.0-1.linux.x86_64.rpm

sudo rpm -i osquery-4.7.0-1.linux.x86_64.rpm

・サンプル実行
sudo osqueryi "select * from device_partitions where device = '/dev/sda'"
+----------+-----------+-------------------------------------+-------------+------------+-------------+-----------+--------+-------+
| device   | partition | label                               | type        | offset     | blocks_size | blocks    | inodes | flags |
+----------+-----------+-------------------------------------+-------------+------------+-------------+-----------+--------+-------+
| /dev/sda | 0         | Primary Table (#0)                  | meta        | 0          | 512         | 1         | -1     | 4     |
| /dev/sda | 1         | Unallocated                         | unallocated | 0          | 512         | 2048      | -1     | 2     |
| /dev/sda | 2         | Linux (0x83)                        | normal      | 1048576    | 512         | 2097152   | -1     | 1     |
| /dev/sda | 3         | Linux Logical Volume Manager (0x8e) | normal      | 1074790400 | 512         | 165672960 | -1     | 1     |
+----------+-----------+-------------------------------------+-------------+------------+-------------+-----------+--------+-------+

関連情報

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

2021年5月20日木曜日

Raspberry Pi Picoとpico displayでフルカラーLEDを光らせる

MicroPythonでpico displayのフルカラーLEDを光らせる事が出来ます。赤・緑・青・白の順に繰り返して点灯します。

〇Raspberry Pi Picoとpico displayの写真

実行手順

※既に実行環境が整っている場合は手順1-3は飛ばしてください。
1. Raspberry Pi Picoとpico displayを接続します(pico displayの裏にUSBコネクタの絵が印刷されているので、Raspberry Pi PicoのUSBと向きを合わせます)。
pico displayは秋月電子で購入しました。
Pico Display Pack
https://akizukidenshi.com/catalog/g/gM-16238/

2. piromoni-picoのリポジトリの最新releaseのuf2ファイルをダウンロードする
https://github.com/pimoroni/pimoroni-pico/releases
※2021/05/08時点では、以下のファイルが最新でした。
pimoroni-pico-v0.1.5-micropython-v1.15.uf2

3. BOOTSELボタンを接続しながら、パソコンにUSBケーブルで接続します
2でダウンロードしたuf2ファイルをコピーします。

4. Thonnyで以下のプログラムをRaspberry Pi Picoにmain.pyとして保存して、実行します。
import utime
import picodisplay

# initialize
buf = bytearray(picodisplay.get_width() * picodisplay.get_height() * 2)
picodisplay.init(buf)

# clear background
picodisplay.set_pen(0, 0, 0)
picodisplay.clear()
picodisplay.update()

while True:
    # red
    picodisplay.set_led(255, 0, 0)
    utime.sleep_ms(1000)
    # green
    picodisplay.set_led(0, 255, 0)
    utime.sleep_ms(1000)
    # blue
    picodisplay.set_led(0, 0, 255)
    utime.sleep_ms(1000)
    # white
    picodisplay.set_led(255, 255, 255)
    utime.sleep_ms(1000)
set_ledメソッドでR, G, Bの値を0-255の範囲で指定します。

関連情報

Raspberry Pi Picoとpico displayで文字列を表示する

Raspberry Pi Picoとpico displayで1文字ごとに色を変えて描画する

Raspberry Pi Picoとpico displayで水玉模様を描画する

Raspberry Pi Picoとpico displayで市松模様を描画する

Raspberry Pi Picoとpico displayでバックライトの明るさを変更する

Raspberry Pi Picoとpico displayでボタンの状態を取得する

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレートにRaspberry Pi Picoを固定する事のできるマウンタを作成する

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレートにRaspberry Pi Picoを固定する事のできるマウンタを作成するには以下の手順を実行します。
ユニバーサルプレートとの固定にはM3のネジ、Raspberry Pi Picoの固定にはM2くらいのネジを使用します。

〇作成したマウンタとRaspberry Pi Picoの写真
OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレートにRaspberry Pi Picoを固定する事のできるマウンタを作成する

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
穴の半径など3Dプリンタや設定によって微調整してください。

・Raspberry Pi Picoを固定する事のできるマウンタのOpenSCADコード
LEG_HEIGHT=5;
LEG_DISTANCE=8;
LEG_SIZE=4;
LEG_HOLE_DIAMETER=1.5+1;

PLATE_W=10;
PLATE_D=20;
PLATE_H=3;

HOLE_DIAMETER=3+1;
HOLE_DISTANCE=5;
HOLE_HEIGHT=3;
NUM_HOLE_W=11;
NUM_HOLE_D=1;
OFFSET_D=5;
difference(){
    union(){
        translate([(LEG_DISTANCE+LEG_SIZE)/2-LEG_SIZE/2, 0, PLATE_H])
        linear_extrude(height=LEG_HEIGHT){
            square([LEG_SIZE, LEG_SIZE]);
        }
        translate([-(LEG_DISTANCE+LEG_SIZE)/2-LEG_SIZE/2, 0, PLATE_H])
        linear_extrude(height=LEG_HEIGHT){
            square([LEG_SIZE, LEG_SIZE]);
        }
        translate([-PLATE_D/2, 0, 0])
        linear_extrude(height=PLATE_H){
            square([PLATE_D, PLATE_W]);
        }
    }
    union(){
        translate([(LEG_DISTANCE+LEG_SIZE)/2, LEG_SIZE/2, PLATE_H])
        linear_extrude(height=LEG_HEIGHT){
            circle(LEG_HOLE_DIAMETER/2, $fn=50);
        }
        translate([-(LEG_DISTANCE+LEG_SIZE)/2, LEG_SIZE/2, PLATE_H])
        linear_extrude(height=LEG_HEIGHT){
            circle(LEG_HOLE_DIAMETER/2, $fn=50);
        }

        for( lw = [0 : NUM_HOLE_W-1] ){
            for( ld = [0 : NUM_HOLE_D-1] ){
                translate([-PLATE_D/2+HOLE_DISTANCE*lw+HOLE_DIAMETER/2+0.5, HOLE_DISTANCE*ld+HOLE_DIAMETER/2+OFFSET_D, 0])
                linear_extrude(height=HOLE_HEIGHT){
                    circle(HOLE_DIAMETER/2, $fn=50);
                }
            }
        }

    }
}

・OpenSCADの画面

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

Raspberry Pi Picoと赤外線受信モジュールとサーボモーターで赤外線リモコンカーを作成する

OpenSCADとUltimaker Curaを使用して、サーボモーターにつける事ができるホイールを作成する

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレート用のサーボモーター固定部品を作る

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

AlmaLinux8.3にPencil2Dをインストールする

Pencil2Dで、アニメーションを作成する事ができます。

〇Pencil2Dの画面

インストール方法

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

cd /opt/pencil2d

sudo wget https://github.com/pencil2d/pencil/releases/download/v0.6.6/pencil2d-linux-amd64-0.6.6.AppImage

sudo chmod +x pencil2d-linux-amd64-0.6.6.AppImage

cat << EOF | sudo tee /usr/share/applications/pencil2d.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/pencil2d/pencil2d-linux-amd64-0.6.6.AppImage
Name=Pencil2D
EOF

関連情報

Pencil2Dでタイムラプス動画を作成する

Pencil2Dで動画の上に重ねた手書きアニメーションを作成する

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

2021年5月19日水曜日

OpenSCADとUltimaker Curaを使用して、サーボモーターにつける事ができるホイールを作成する

OpenSCADとUltimaker Curaを使用して、サーボモーターにつける事ができるホイールを作成するには以下の手順を実行します。
ホイールはタミヤのトラックタイヤセットのゴムタイヤをつける事が出来ます。

〇作成したサーボモータにつける事ができるホイールの写真

左がトラックタイヤセットのホイール、真ん中と右の白色のホイールが今回作成するホイールです。真ん中のホイールにはサーボモーターのアームとゴムタイヤを取り付けています。

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
穴の半径など3Dプリンタや設定によって微調整してください。

・サーボモーターにつける事ができるホイールのOpenSCADコード
TIRE_DIAMETER_L=28.6;
TIRE_HEIGHT_L=12.6;
TIRE_DIAMETER_S=12;
TIRE_HEIGHT_S=3;

LARGE_HOLE_HEIGHT=0.5;
LARGE_HOLE_DIAMETER=7.8;
ARM_HEIGHT=2;
SPACE_HOLE=15;
SMALL_HOLE_RADIUS=4.2/2;

SCREW_HOLE_POS=8.5;
SCREW_HOLE_DIAMETER=1+1;
SCREW_HOLE_HEIGHT=10;

difference(){
    union(){
        translate([0, 0, 0])
        linear_extrude(height=TIRE_HEIGHT_S){
            circle(TIRE_DIAMETER_S/2, $fn=50);
        }
        translate([0, 0, TIRE_HEIGHT_S])
        linear_extrude(height=TIRE_HEIGHT_L){
            circle(TIRE_DIAMETER_L/2, $fn=50);
        }
    }
    union(){
        translate([0, 0, TIRE_HEIGHT_S+TIRE_HEIGHT_L-(LARGE_HOLE_HEIGHT+ARM_HEIGHT)])
        linear_extrude(height=LARGE_HOLE_HEIGHT+ARM_HEIGHT){
            circle(LARGE_HOLE_DIAMETER/2, $fn=50);
        }
        translate([0, 0, TIRE_HEIGHT_S+TIRE_HEIGHT_L-ARM_HEIGHT])
        linear_extrude(height=ARM_HEIGHT){
            polygon(points = [ 
              [0, LARGE_HOLE_DIAMETER/2], 
              [0, -LARGE_HOLE_DIAMETER/2],
              [SPACE_HOLE, -SMALL_HOLE_RADIUS], 
              [SPACE_HOLE, SMALL_HOLE_RADIUS]
            ]);
            polygon(points = [ 
              [0, LARGE_HOLE_DIAMETER/2], 
              [0, -LARGE_HOLE_DIAMETER/2],
              [-SPACE_HOLE, -SMALL_HOLE_RADIUS], 
              [-SPACE_HOLE, SMALL_HOLE_RADIUS]
            ]);
        }
        translate([SCREW_HOLE_POS, 0, TIRE_HEIGHT_S+TIRE_HEIGHT_L-(ARM_HEIGHT+SCREW_HOLE_HEIGHT)])
        linear_extrude(height=ARM_HEIGHT+SCREW_HOLE_HEIGHT){
            circle(SCREW_HOLE_DIAMETER/2, $fn=50);
        }
        translate([-SCREW_HOLE_POS, 0, TIRE_HEIGHT_S+TIRE_HEIGHT_L-(ARM_HEIGHT+SCREW_HOLE_HEIGHT)])
        linear_extrude(height=ARM_HEIGHT+SCREW_HOLE_HEIGHT){
            circle(SCREW_HOLE_DIAMETER/2, $fn=50);
        }

    }
}

・OpenSCADの画面

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

Raspberry Pi Picoと赤外線受信モジュールとサーボモーターで赤外線リモコンカーを作成する

OpenSCADとUltimaker Curaを使用して、サーボモーターのギヤに直接つける事ができるホイールを作成する

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレートにRaspberry Pi Picoを固定する事のできるマウンタを作成する

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレート用のサーボモーター固定部品を作る

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

AlmaLinux8.3にSpyderをインストールする

SpyderはオープンソースのPyton統合開発環境です。

〇Spyderの画面

インストール方法

以下の手順を実行します。
1. Anacondaのインストール
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh

sudo chmod +x Anaconda3-2020.11-Linux-x86_64.sh

sudo ./Anaconda3-2020.11-Linux-x86_64.sh -b -p /opt/anaconda

sudo dnf -y install libXScrnSaver

2. spyderのインストール
sudo bash -c "source /opt/anaconda/bin/activate && pip install --upgrade pip && pip install pyqt5==5.12 PyQtWebEngine==5.12 && pip install spyder"

cat << EOF | sudo tee /usr/share/applications/spyder.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=bash -c "source /opt/anaconda/bin/activate && /opt/anaconda/bin/spyder"
Icon=/opt/anaconda/share/icons/spyder3.png
Name=Spyder
Categories=Development;
EOF

関連情報

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

2021年5月18日火曜日

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレート用のサーボモーター固定部品を作る

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレート用のサーボモーター固定部品を作るには以下の手順を実行します。
サイズはサーボモーターSG90-HVに合わせてあります。

〇作成したサーボモーター固定部品の写真

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
穴の半径など3Dプリンタや設定によってパラメータを微調整してください。

・タミヤのユニバーサルプレートにつける事のできるサーボモーター固定部品のOpenSCADコード
// servo mounter
MOUNTER_THICK=2;

MOUNTER_W=23;
MOUNTER_D=9;
HOLE_RADIUS=1;

HANDLE_W = 5;
HANDLE_H=12.2;

SHAFT_DIAMETER=3+0.1;
SHAFT_DISTANCE=5;
SHAFT_HEIGHT=3;
NUM_SHAFT_W=6;
NUM_SHAFT_D=2;
D_OFFSET=0.5;
W_OFFSET=1.25;
W_MARGIN=1.3;


module tamiya_servo_mounter()
{
    difference()
    {
        union()
        {
            translate([-HANDLE_W, 0, 0])
            linear_extrude(height=MOUNTER_THICK){
                square([MOUNTER_W+HANDLE_W*2, MOUNTER_D]);
            }

            translate([-HANDLE_W, 0, MOUNTER_THICK])
            linear_extrude(height=HANDLE_H){
                square([HANDLE_W, MOUNTER_D]);
            }
            translate([MOUNTER_W, 0, MOUNTER_THICK])
            linear_extrude(height=HANDLE_H){
                square([HANDLE_W, MOUNTER_D]);
            }
        }
        rotate([-90,0,0])
        translate([-HANDLE_W/2, -MOUNTER_THICK-HANDLE_H/2, 0])
        linear_extrude(height=MOUNTER_D){
            circle(HOLE_RADIUS, $fn=50);
        }
        rotate([-90,0,0])
        translate([MOUNTER_W+HANDLE_W/2, -MOUNTER_THICK-HANDLE_H/2, 0])
        linear_extrude(height=MOUNTER_D){
            circle(HOLE_RADIUS, $fn=50);
        }

    }   


    for( lw = [0 : NUM_SHAFT_W-1] ){
        for( ld = [0 : NUM_SHAFT_D-1] ){
            translate([SHAFT_DISTANCE*lw+SHAFT_DIAMETER/2+W_OFFSET-SHAFT_DISTANCE+W_MARGIN, SHAFT_DISTANCE*ld+SHAFT_DIAMETER/2+D_OFFSET, -SHAFT_HEIGHT])
            linear_extrude(height=SHAFT_HEIGHT){
                circle(SHAFT_DIAMETER/2, $fn=50);
            }
        }
    }


}
rotate([180,0,0])
tamiya_servo_mounter();

・OpenSCADの画面

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

追加情報

下図のように固定位置を高くしたい場合は、MOUNER_THICKパラメータの値を大きくしてください(下図ではMOUNTER_THICK=2+10;に設定しています)。

関連情報

Raspberry Pi Picoと赤外線受信モジュールとサーボモーターで赤外線リモコンカーを作成する

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレートにRaspberry Pi Picoを固定する事のできるマウンタを作成する

OpenSCADとUltimaker Curaを使用して、サーボモーターにつける事ができるホイールを作成する

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

AlmaLinux8.3にRemminaをインストールする

RemminaはLinux上で動作するRemote Desktop Clientです。VNC/SSHにも接続することが出来ます。

〇Remminaの画面

インストール方法

以下のコマンドを実行します。
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

sudo snap install remmina
※「error: too early for operation, device not yet seeded or device model not acknowledged」というエラーが出た場合は、しばらく待って再実行します。

Remminaをコマンドから実行する場合は、以下を実行します。
snap run remmina

関連情報

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

2021年5月17日月曜日

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレート互換のユニバーサルプレートを作成する

3Dプリンタでタミヤのユニバーサルプレートと同じの穴のユニバーサルプレートを作成します。ちょっと大きさの小さいプレートが欲しいといった時などに使用します。
OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレート互換のユニバーサルプレートを作成するには以下の手順を実行します。

〇作成したユニバーサルプレート(白色)の写真

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
NUM_HOLE_DとNUM_HOLE_Wで穴の数を調整する事が出来ます。3Dプリンタの種類や設定によって、HOLE_DIAMETERで穴の直径などのパラメータを微調整してください。

・タミヤのユニバーサルプレートにつける事のできるキューブのOpenSCADコード
// tamiya universal plates compatible
HOLE_DIAMETER=3+1;
HOLE_DISTANCE=5;
HOLE_HEIGHT=3;
PLATE_H=3;
NUM_HOLE_W=11;
NUM_HOLE_D=4;
PADDING=2.5;
OFFSET=1;

module tamiya_plates_compatible()
{
    difference()
    {
        translate([0, 0, 0])
        linear_extrude(height=PLATE_H){
            square([NUM_HOLE_W*HOLE_DISTANCE+PADDING*2, NUM_HOLE_D*HOLE_DISTANCE+PADDING*2]);
        }
        union()
        {
            for( lw = [0 : NUM_HOLE_W-1] ){
                for( ld = [0 : NUM_HOLE_D-1] ){
                    translate([HOLE_DISTANCE*lw+HOLE_DIAMETER/2+OFFSET+PADDING, HOLE_DISTANCE*ld+HOLE_DIAMETER/2+OFFSET+PADDING, 0])
                    linear_extrude(height=HOLE_HEIGHT){
                        circle(HOLE_DIAMETER/2, $fn=50);
                    }
                }
            }
        }

    }
}
tamiya_plates_compatible();

・OpenSCADの画面

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

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

OpenSCADとUltimaker Curaを使用して、タミヤのユニバーサルプレート互換の四角形フレームを作成する

AlmaLinux8.3にSweetHome3Dをインストールする

SweetHome3Dはインテリアデザインアプリケーションです。

〇SweetHome3Dの画面

SweetHome3Dのインストール

以下のコマンドを実行します。

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

sudo snap install sweethome3d-homedesign
※「error: too early for operation, device not yet seeded or device model not acknowledged」というエラーメッセージが出た場合は、しばらく待って再実行します。

家具ライブラリのダウンロード(任意)

以下を実行後、家具メニューの「家具ライブラリをインポート」で各ファイルをインポートしてください。

mkdir ~/models

cd ~/models

wget https://sourceforge.net/projects/sweethome3d/files/SweetHome3D-models/3DModels-1.8/3DModels-Contributions-1.8.zip

wget https://sourceforge.net/projects/sweethome3d/files/SweetHome3D-models/3DModels-1.8/3DModels-LucaPresidente-1.8.zip

wget https://sourceforge.net/projects/sweethome3d/files/SweetHome3D-models/3DModels-1.8/3DModels-Trees-1.8.zip

wget https://sourceforge.net/projects/sweethome3d/files/SweetHome3D-models/3DModels-1.8/3DModels-Scopia-1.8.zip

wget https://sourceforge.net/projects/sweethome3d/files/SweetHome3D-models/3DModels-1.8/3DModels-KatorLegaz-1.8.zip

wget https://sourceforge.net/projects/sweethome3d/files/SweetHome3D-models/3DModels-1.8/3DModels-BlendSwap-CC-0-1.8.zip

wget https://sourceforge.net/projects/sweethome3d/files/SweetHome3D-models/3DModels-1.8/3DModels-BlendSwap-CC-BY-1.8.zip

wget https://sourceforge.net/projects/sweethome3d/files/SweetHome3D-models/3DModels-1.8/3DModels-Reallusion-1.8.zip

unzip -o "*.zip"

関連情報

・SweetHome3Dのホームページ
http://www.sweethome3d.com/ja/

2021年5月16日日曜日

AlmaLinux8.3にLifereaをインストールする

LifereaはオープンソースのRSSリーダーです。

〇Lifereaの画面

インストール方法

シェルから以下のコマンド実行します
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

sudo snap install liferea
※「error: too early for operation, device not yet seeded or device model not acknowledged」というエラーメッセージが出た場合は、しばらく待って再実行します。

・実行方法
コマンドで実行する場合は、以下を実行します
snap run liferea

・補足情報
このブログのRSS: http://serverarekore.blogspot.com/feeds/posts/default

関連情報

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

Raspberry Pi ZeroとGrove Base HAT for Raspberry PiとGroveブザーでブザー音を鳴らす

Raspberry Pi ZeroとGrove Base HAT for Raspberry PiとGroveブザーでブザー音を鳴らすには、以下の手順を実行します。

実行手順

1. 部品の用意と配線
以下の部品を用意して、接続します。

・Grove Base HAT for Raspberry Pi Zero
https://akizukidenshi.com/catalog/g/gM-13879/

・GROVE - ブザー
https://www.switch-science.com/catalog/804/

〇Grove Base HAT for Raspberry PiとGroveブザー
Grove ブザーをPWMポートに接続します

2. grove.pyのインストール
以下のコマンドを実行します
curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s -

3. ブザー音を鳴らすプログラムの作成と実行
以下のプログラムを保存して実行します。
grove_buzzer.py
import time
from mraa import getGpioLookup
from upm import pyupm_buzzer as upmBuzzer

print(getGpioLookup("GPIO12"))
buzzer = upmBuzzer.Buzzer(getGpioLookup("GPIO12")) # PWM port

data = [upmBuzzer.BUZZER_DO, upmBuzzer.BUZZER_RE, upmBuzzer.BUZZER_MI,
  upmBuzzer.BUZZER_FA, upmBuzzer.BUZZER_SOL, upmBuzzer.BUZZER_LA,
  upmBuzzer.BUZZER_SI]

buzzer.setVolume(0.5)

for sound in data:
  buzzer.playSound(sound, 500000)
  time.sleep(0.1)

以下のコマンドでブザー音を鳴らします。
sudo python3 grove_buzzer.py

関連情報

Groveデバイスまとめ

Raspberry Pi Zeroと小型ターンテーブルをREST APIで制御する