【日記】初めての火鍋
今日は初めての火鍋(*'ω'*)
中国ではお祝いの時に食べるらしい。
特にお祝いではないけど、寒くなって来たので中華料理店にGO!
スープは2種類選べたので、四川麻辣とトマトに決定。
中国では鍋にラム肉を入れるのが普通らしいので注文、後は魚団子?というあまり馴染みのなかった具材(中国では良くある
)に決定。適当に野菜を頼みつつ待つこと数分。
何やら息を吸うだけで汗が出そうな匂いがしてきた…(;・∀・)
そして出てきたのが此方。
やはりというか、中々色がやばい。
そして味もやばい。
予想通りといえば、辛い味付けはその通りだが、山椒が強すぎて段々食べ物の味がしなくなっていく…( ;∀;)
30分もたつと、口の中から熱い以外の情報が無くなってきた。
彼女曰く、どうやら中国でも四川の人たちは特別辛いモノを食べる人たちらしい。
お祝いの席でこれが出てくると思うと、中々な覚悟が必要そうだが、辛いもの好きな人にとっては堪らない味なのかもしれない。
というわけで、初めての火鍋は二人とも無事おなか壊しましたとさ( ;∀;)
【Raspberry Pi】LEDの輝度を調整してみる
今回は前回接続したLEDの輝度を調整してみるよ!
LEDの明るさを変えるにはPWMというものを使うようです。
実装
PWMとは:
出力のON、OFFを一定時間内でどれだけスイッチングするかを定義するもの
というわけで早速下記の関数を使って実装
・set_PWM_frequency(ピン番号、PWMの周波数)
・set_PWM_range(ピン番号、PWMの出力範囲 Max値の設定)
・set_PWM_dutycycle(ピン番号、Duty比率)
set_PWM_dutycycleで0 ~ set_PWM_rangeまでの値を設定し、
LEDの明るさを調整してみる。
#set BCM_GPIO 18 as LED pin PIN = 18 #set PWM frequency FREQ = 50 #set PWM range (Max - Low) RANGE = 100 pi = pigpio.pi() pi.set_mode(PIN, pigpio.OUTPUT) pi.set_PWM_frequency(PIN, FREQ) pi.set_PWM_range(PIN, RANGE) while True: print('|*********************|') print('| Increase duty cycle |') print('|*********************|') #increase duty cycle from 0 to 100 for dc in range(0, 101, 4): #change duty cycle to dc pi.set_PWM_dutycycle(PIN, dc) time.sleep(0.1) print('|*********************|') print('| Decrease duty cycle |') print('|*********************|') #decrese duty cycle from 100 to 0 for dc in range(100, -1, -4): #change duty cycle to dc pi.set_PWM_dutycycle(PIN, dc) time.sleep(0.1) break pi.stop()
おわりに
今回は前回の延長だったので簡単だった。
pigpioのドキュメントを覗くと結構いろんなことが出来そうなので、この先が楽しみ
【Raspberry Pi】初めての電子工作
さてさて、ようやくラズパイが我が家に馴染んできた今日この頃・・・・
何時までもPCと同じ運用では、もったいない!
というわけで…
買っちゃいました
OSOYOO(オソヨー) Raspberry Pi 学ぶ電子工作キット
初心者がうれしい説明動画付き!(*'ω'*)
ムムム(; ・`д・´)
全く何に使うのかが分からん電子機器が入っている…
というわけで、Lチカ(LEDの点滅、マイコンボード界隈でのHello,World)まで頑張ってみる。
STEP1
ブレッドボードの取り付け
とりあえずぶっさしてみる…(;・∀・)
これでよいのだろうか…?
不安、そしてケースについていたファンを取り外す必要になったんだけど、温度は大丈夫なのかな・・・?
STEP2
良し、次はブレッドボードにLEDを接続し、GPIO17から信号を出してLEDを光らせる。
LEDとか抵抗を触るのなんて7年ぶりぐらいだ…
説明書を見ると、正しい抵抗を入れないと壊れる的なことが書いてあるので、慎重に読み解く…
いや、抵抗の読み方分からん( ;∀;)
カラーで説明書あるけど、色がそもそも黒なのか青なのか分からん。
何とかググってとりあえず配線完了。
STEP3
PythonでLEDを光らせるプログラムを書いてみる
まぁ、ここは説明書通りでしょー、と安心して読んで言った矢先…
コレC言語じゃん。
いや、Cは書けるので内容はわかるのだけど、私はPythonで書きたいんです( ;∀;)
というわけで、ネットを探して以下の二つのライブラリが有名で、インストールすれば扱えることが分かった。
①RPi.GPIO:
簡単にGPIO通信が使えるようになるライブラリ
②pigpio:
pigpiodというデーモンを裏で起動しておくことで、より精度の高い波形を出力できるライブラリ。(サーボモーターとか使うときはこっちが良さそう。)
とりあえず、pigpioをインストールする。
$ sudo apt install pigpio
で、こんな感じのプログラムを書いてみる。
#!/user/bin/env python # -*-coding: utf-8-*- import pigpio import time #LEDのGPIO番号 gpio_led = 17 pi = pigpio.pi() #LED out put pi.set_mode(gpio_led, pigpio.OUTPUT) for i in range(5): # Rise Level GPIO No.18 pi.write(gpio_led, 1) time.sleep(0.5) # Set Level GPIO No.18 pi.write(gpio_led, 0) time.sleep(0.5)
#!/user/bin/env pythonは、パス環境のある場所からPythonを見つけてくるように指定するための記述。
実行
pigpioを使うためには、pigpiodというデーモンを起動しておく必要があるため、
下のコマンドでラズパイが起動すると自動で実行するようにしておく。
sudo systemctl enable pigpiod sudo reboot
光った!!
おわりに
初めての電子工作でも、何とかLチカまで行けました。
色々問題は会ったけど、目に見える形で電子機器を操作できることに感動(*‘∀‘)
そして…電子工作マニュアルの次のページにPythonのやり方書いてあったわ…(;・∀・)
【Raspberry Pi】固定IPアドレス設定
前回ラズパイに古いHDDを接続して、家のファイルサーバー化を実践したが、数日して接続できない不具合が発生・・・
よくよく考えたらIPアドレスの固定化をしていなかった(;・∀・)
というわけでIPアドレスを固定化する。
ラズパイのネットワーク設定ファイルの編集
設定ファイルは下記の場所にあるので、viで編集
sudo vi /etc/dhcpcd.conf
# fallback to static profile on eth0 #interface eth0 #fallback static_eth0 interfacec eht0 static ip_address = 192.168.1.○○○/24 static routers=192.168.1.○○○ static domain_name_servers=192.168.1.○○
因みに上記の設定内容はこうなっている。
ip_address : IPアドレスとネットマスクを設定
routers : ディフォルトゲートウェイ
domain_name_servers : DNSサーバー
ネットマスクとは、ホストアドレスの事。
IPアドレスは、ネットワークアドレスとホストアドレスに分かれており、ホストアドレスで確保するByte量で割り振れる機器の数が変わる。そのため、どこまでがネットワークアドレスで、ホストアドレスなのかを設定する必要があり、ホストアドレスに1Byte使用する場合は。
192.168.1.0/255.255.255.0 192.168.1.0/24
のどちらかで表現する形になる。2つは同じ意味で、24は単純に24bit目までが1で設定されているという事を表しているだけ。(255は2進数で表すとすべて1になるため)
ディフォルトゲートウェイは、ネットワーク間でのやり取りをする際に通信を可能にするもの。基本的には1つのネットワーク内に1つあり、ルーターがその役割を担っている。
DNSサーバーは、ドメインをIPアドレスに変換するもの。調べたところ、ルーターの中にDNSサーバーのLite版が入っており、それが本DNSサーバーにつながっているらしい。なので、ルーターと同じIPアドレスになっているそうです。(;・∀・)知らんかった・・・
再起動して有効化
というわけで、設定が済んだらネットワークの設定を下記のコマンドで適応して終了
sudo /etc/init.d/dhcpcd restart
おわりに
これで、気が付いたらつながらなくなっている事象からは脱出。リモートメインで使うものが少なかったせいか、見事にはまってしまった…やっぱり基本が大切(;・∀・)
【Raspberry Pi】古いHDD活用SAMBAでファイル共有環境構築!
前回さっくりと基本的な環境構築が完了したので、今回から活用していきます。
とりあえず思いついたのは、手持ちの外付けHDDを毎回PCに接続しなくても使えるようにする
簡易サーバー的な何か!
…と、会社とかでは普通に使っている便利機能が、ふんわりとしたイメージしかもっていなかったので、さっくり調べてみる。
サーバーとは
ネットワーク上に存在し、クライアントからの要求に応じてデータやサービスを提供するもの。
(*‘∀‘)なるほど、大体イメージ通り
サーバーの種類
-
Webサーバ :HTML等のWebページ情報を提供
-
メールサーバー :メールのデータ管理や提供
-
データベースサーバー:データの提供
-
FTPサーバー :クライアントからWebサーバーにデータを送信
-
SSHサーバー :情報の暗号化
色々ある…(;・∀・)
が、たぶん今回使用したいのはデータベースサーバーに近いはず
サーバーの形態
- 共用レンタルサーバー
サーバーPCを複数のユーザーでシェアする - 専用レンタルサーバー
サーバーPCを1台丸ごとレンタルする - VPS
1台のPC内を分割し、複数の専用レンタルサーバーとしてシェアする - クラウド
基本VPSだが、必要に応じてCPUやメモリなどの変更が可能
ついでに利用形態について調べてみたけど、これはあまり関係なさそう・・・
というわけで、データベースサーバーについてもう少し調べる。
データベースサーバーの種類
- ファイルサーバー
サーバー専用PCを1台用意し、みんなでアクセスしてファイル共有する方法
これは研究室とかで古いPCを活用して使ったり、会社でも多く用いられている。
メリットは、細かい閲覧設定が出来たり、セキュリティソフトの導入等、必要に応じて柔軟に対応できるところ。
デメリットは、OSが必要だったり、場所取ったり、細かいアクセス権などの設定が大変なところかなぁ・・・ - NAS(Network-Attached Storage)
ネットワーク上に外付けHDDを取り付けたようなイメージ。ファイルサーバーはネットワーク上にサーバー用PCを用意したけど、外付けHDD+αだけで同じようにデータのやり取りができるようにしたもの。此方はPCじゃないのでOS等いらない分細かいことはできない。
メリットは、導入費用が低く機能が制限されている分、管理が楽なこと。
デメリットは、細かいことができないや、アクセス人数が増えると速度が落ちる
なんで、会社とかだと細かく対応できるファイルサーバーの導入が多く、研究室とか小規模なデータ保存だとNasが多く用いられてるっぽいね(/・ω・)/
というわけで、ファイルサーバーをラズパイで構築していくよ!
ファイル共有プロトコルの種類
プロトコルとは機器同士の通信手段の方式で、耳にしたことがあるのは大体下記の
- SMB(CIFS)
Windowsで用いられる標準的なファイル転送プロトコル。昔はCIFSと呼んでいた時期もあったようだが、現在はSMBが用いられる。MacOSでも使用されているみたい。 - AFP
MacOSで用いられる標準的なファイル転送プロトコル。昔はWindowsにも対応していたが、現在はサポートされていない。 - FTP
1対1でファイルをやり取りするファイル転送プロトコル。前述のFTPサーバーでも出てきたが、インターネットを介したデータ送信などに用いられる - NFS
主にUNIXで使用されるファイル転送プロトコル
我が家では、WindowsとMac両方持ちなのでSMBを用いた環境を構築する。
Samba
SMBをLinuxで使用できるようにするためのソフトウェアSambaのインストール
①Sambaのインストール(-yは全部Yes回答というオプション)
$ sudo apt-get install -y samba
②共有するフォルダを設定
Viで下記のファイルを編集
$ sudo vi /etc/samba/smb.con
ユーザーの追加と権限やファイルの設定するために、下記の[NewPiUser]を
[printers]の設定記述の下に追加する。
[NewPiUser]
comment = Welcome to pi Server
path = /
browseable = yes
wriable = yes
guest ok = no
force create mode = 0666
force directory mode = 0777
read only = no
create mask =0777
directory mask = 0777
因みに
path :共有フォルダのディレクトリパス”path = / "だと全フォルダ共有
writeable: 書き込み許可
force create mode:ファイルのパーミッションを強制的に設定
force directory mode:ディレクトリのパーミッションを強制的に設定
guest ok :アクセスしてきたユーザーをゲストとして扱う
browseable:ネットワークに表示するかしないか
③Sambaユーザーのパスワード設定
$sudo smbpasswd -a NewPiUser
④Sambaを再起動
$sudo service smbd restart
⑤ifconfigでIPアドレスを確認してアクセス
おわり
というわけで、古いHDDとラズパイを使ってファイルサーバーを構築してみた。
一応今のところ問題なく使えているので大満足!
これからの活用が楽しみ(>_<)!
【Raspberry Pi】購入
久々のブログ更新となってしまった・・・・(;・∀・)
遂に我が家もラズパイを導入!
初期設定等で色々忘れそうな内容が多そうだったので、メモ書き場所を探していたら
このBlogを思い出したので、さっそく活用という流れ。
【構成】
・ Raspberry Pi 4 4B(LABISTS の全部セット)
・ELECROW モバイルモニター 5インチ
ラズパイ本体の組み立ては単純にパーツを嵌め合わせるだけなので、特に問題なし。
ただ、ELECROWのmobileモニターはそのままはめ込めないので、HDMIで接続する形になった。
①ラズパイ組み立て
②ELECROWモニターHDMIで接続
③起動して、画面の案内通りに進める
といった、3Stepでほぼラズパイ初期設定が完了。
使用開始してみて早速思ったのは・・・
画面ちいせぇ…
何かしらシステムを作ってからなら十分かもだけど、色々触るには小さすぎる…
というわけで、windows PCからの接続に変更。
windows PCからの接続は、とりあえず VNC Viewerを選択
①ラズパイでVNCを有効(SSHも使うかもなので許可)
②WindowsでVNC Viewerをインストール
③ラズパイで"ifconfig"して、IPアドレスを確認して接続
と、こちらも非常にスムーズに接続完了。
基本的準備は整ったので、明日からが楽しみ!
UML入門
みなさん、こんにちは、先日の社内研修でUMLの話しをしましたので、
学習した知識をみなさんに紹介したいと思います。
まずML(model language)とは何ですかについて紹介します。
モデリング言語の定義:
ルールが定義づけられた構造により、情報・知識・システムを表現するために使われる人工的な言語。
図式形式とテキスト形式2種類があります。
UMLとは:
統一モデリング言語
主にオブジェクト指向や設計のための記法が統一化されたモデリング言語
Q. UMLはソフトウェア仕様ですか?
A. ソフトウェアを中心とするシステムの仕様を記述し、視覚化し、構築し、文書化するために設計
UMLのダイアグラムは構造図と振る舞い図に分類されます。
- 構造図:システムの静的な構造を示す図
- 例:クラス図、オブジェクト図、コンポーネント図、配置図、パッケージ図
- 振る舞い図:システムの振る舞いを示す図
- 例:ユースケース図、シーケンス図、タイミング図、アクティビティ図
※講師がSysmlも少し触れたのですが、ここでは詳しく紹介しません。(SysmlはUMLの拡張と覚えれば大丈夫です)
次は構造図の中にあるクラス図について書きたいと思います。
- クラス図
システムを構成するクラスとそれらの関係を表現する。各クラスが保持する属性(プロパティ)や操作(メソッド)も表現する。
ユーザの要求に対するシステムの振る舞いを表現する図であり、システムの要件定義について俯瞰的情報を提供する。
ユースケース図構成要素:
- シーケンス図
クラスやオブジェクト間のやりとりを時間軸に沿って表現する図である。
シーケンス図の構成要素: