このブログを検索

2024/11/29

2進数を10進数に変換

工事担任者試験にはIPアドレスとかルーターとかスイッチとかも試験範囲になっている。Ciscoの資格試験やIPAの試験でも勉強したし実務でも日常的に接しているので第2級デジタルで問われる内容についてはここは自信のある分野である。

2進数を10進数に変換する問題が出てくるのだが、そのビット数は普段利用している8とか32とかではない。

原理としては、2進数を十進数に変換するには、下から1,2,4,8,.... を0or1に掛けて、つまり1になっているbitに2^n を掛けて足せばよい。

しかし、たとえば 11111111 という2進数があったときは、8bitで表現できる最大の値であるから255であり、11101111 であれば、255から16を引けばよい。

過去問を解いていて出てきたのは、9桁の2進数であった。

私は、「2^10が1024だから、それに1たりないから1023か」と考えてしまった。

だが、それで計算した結果が選択肢にないので普通に計算したが違う理由で間違っていた。

なんで間違ったのかなと考え直したところ、9桁の2進数でオール1の値は 2^9 - 1 で511である。10桁だったら1023である。

問題は、9桁のうち0が二つくらいしかなかったので、その位置だけ511から引けばよかった。




2024/11/27

ベースクリッパとピーククリッパの構成と波形の見分け方

工事担任者第2級デジタル通信を受けてみようと思っている。

テキストを読んでいると、ダイオードを使用した波形整形回路というものがでてきた。特定の基準電圧以上または以下の部分を取り出したり取り除いたりするクリッパというものがあり、基準電圧以上を取り出すのをベースクリッパ、基準電圧以下を取り出すのをピーククリッパ(リミッタ)という。

テキストにはクリッパ回路の出力電圧の波形から、どの構成かを識別する問題があった。

わからなかったので、テキストの説明を読み返したが何度読んでもしっくりこない。部分的に理解できても、どういうときにダイオードが導通状態となるのか、導通するしないによって出力電圧がどうなるのか、ということの法則性のようなものがつかめない。

わからないのでネットで検索してみると、工事担任者試験ではないが、平成30年の電検三種の理論の試験第13問についての説明をしている人が何人もいる。

よく出る問題なのか、難問なのか.....


それらの説明、ブログやyoutubeの動画をいろいろ見て、ようやく理解することができた。

(細かいところで怪しい部分はあるが.....)


そして、一通り理解してみると、ある構成を一つ覚えれば、他の構成が容易に導けると思い、まとめてみた。


1.クリッパにはベースクリッパ(BCとする)とピーククリッパ(PCとする)の2種類ある

2.それぞれの構成において並列形と直列形がある

3.さらに、すべての構成において基準電圧が+の場合とー(マイナス)の場合がある


というわけで8通りの構成がある。

波形については、

1.BCはベース(土台)をクリップ(切り取る)→基準電圧以下を取り除く

2.PCはピーク(山)をクリップ(切り取る)→基準電圧以上を取り除く

3.基準電圧がマイナスの場合は、以下・以上が逆になる。


BCの直列、基準電圧がプラスの場合を覚える。

上下に2本の線があり、上の線上にダイオードがあるのが直列、上下の線を結ぶ線上にダイオードがあるのが並列。直列の場合、抵抗が上下を結ぶ線上にあり、並列の場合上の線上にある。そして、上下の線の下方に上側がプラスの電源がある。

BCの直列形の場合、ダイオードは右向き(カソードが出力側)


ベースクリッパ、直列形、基準電圧はプラス


波形は、ベースクリッパなので土台部分が取り除かれる。上側の山が残り、その下が消えて上側の山以外は基準電圧値の直線になる。

ベースクリッパの波形(基準電圧はプラス)


並列回路は、以下で求められる。
1.直列回路の抵抗とダイオードの位置を入れ替える
2.ダイオードは右(出力側)を向いていたら(右側がカソードなら)、上向き、左を向いていたら下向きにする
3.電源の+-は同じ
ベースクリッパ、並列形


波形は直列も並列も同じ。


今度は、BCの直列型をPCに変更する。この場合はダイオードの向きを逆にすればよい。

ピーククリッパ、直列形

BCと同じようにして並列を求める。
ダイオードと抵抗の位置を逆にし、ダイオードは直列形で左向きなので下向きにする。

ピーククリッパ、並列形

波形はピークをクリップするので、山が取り除かれる。取り除いたところは基準電圧の値の直線になる。

ピーククリッパの波形(基準電圧はプラス)



基準電圧がマイナスの場合は、構成ではダイオードの向きと電源の向きを逆にする。

波形は、横軸と入力波形の交点を基準とした点対称の形となる。


BCの直列形(基準電圧はプラス)

BCの直列形(基準電圧はマイナス


BCの並列形(基準電圧はプラス)

BCの並列形(基準電圧はマイナス


BCの出力波形(基準電圧はプラス)

BCの出力波形(基準電圧はマイナス



PCの直列形(基準電圧はプラス)

PCの直列形(基準電圧はマイナス



PCの並列形(基準電圧はプラス)

PCの並列形(基準電圧はマイナス

PCの出力波形(基準電圧はプラス)

PCの出力波形(基準電圧はマイナス



これはど素人ならではなのだろうが、
クリッパ回路の「入力電圧は交流」である、ということに気づくのに時間がかかった。
波形が正弦波なんだからそんなの当たり前だろ、ということなのだろうが。

あと、以下のような疑問も持った。

「ダイオードが導通状態になったとき、入力電圧に基準電圧が足されて出力されないのか?

「交流電圧はプラスになったりマイナスになったりするが、基準電圧による電流とぶつかるようなことにならないのか?」

「抵抗は何のためにあるのか?抵抗がなかったらどうなるのか?」

あと、入力電源が図から省略されているので、出力側も同様に省略されていて導通しているのかと思ったり。



2024/11/19

抵抗の並列接続について

オームの法則というものを中学生で習う。

そして、抵抗の直列接続と並列接続というのを習う。

直列接続時は抵抗値は単純に足せばよいが、並列接続の場合は、

1/R = 1/R1 + 1/R2 

となる、という風にならう。ネットで「抵抗 並列」と検索するとこの式がたくさん出てくる。youtubeでも、動画がたくさん出てくる。

それを見て、そういえばそんなこと習ったな、とは思うのだが、並列接続時にどうしてそんな風になるのかな、というのを疑問に感じた。

感覚的に把握しにくいというか。もっというと、「本当にそうなのか?」という感じ。納得できないというか、腹落ちしないというか。

工事担任者試験(デジタル2級から)を受けてみようかなと思い、テキストを読んでいたら出てきて、ん?となった。

最近、簡単な電子工作をやっている。ラジオを作ったり、ラズパイやarduinoでLチカみたいなことをやってみたり。その時に「抵抗」というものは当たり前のように出てくるが、自分で抵抗値を計算することはない。


抵抗とは何か?

テキストには、「抵抗とは自由電子が導体の分子から受ける摩擦抵抗である」と書いてあった。

抵抗というのは日常的に使う言葉、概念で、人間が何かをするときに妨げとなるもの、という意味で使う。

それで考えると、直列の抵抗というのは、ある人が旅行に行こうと思ったがAさんに反対され、Aさんを説得したら今度はBさんに反対されてBさんも説得した。その時に労力を費やす必要になった抗う力になる。これは(Aさんの抵抗値)+(Bさんの抵抗値)でよいだろう。

並列の抵抗は、AさんとBさんを同時に説得する場合だ。この場合も抵抗値は直列と同じように2人の抵抗値の合計になりそうなものだが、電気回路ではそうならない。


電気回路の場合、電圧と電流を考える。

オームの法則は E=IR であると習う。

それは、R=E/I、I=E/R とも言える。

しかし、このE(電圧)、I(電流)、R(抵抗)の三者は、数式の文字のように本当に交換可能なものなのだろうか?

三者について、どんなものかのイメージは湧く。電圧は電気の強さのようなもの、電流は流れる電気の量、抵抗は電流に逆らう強さ。

E=IR であるなら、流れる電流と抵抗があったときに、そこから電圧が生成されるのか?

そうではなく、電圧があるから電流が発生し、抵抗があるからその電流の量がそれに応じて変化するのだ。

R=E/I を考えるときにも、電圧の値と電流の値があり、そこから抵抗が形成されるのではなく、抵抗が初めに存在していて、そこに電圧がかかるから抵抗に応じた電流が発生し、電圧と電流の値がわかれば抵抗値がわかる、ということである。

抵抗を2つ並列に接続した場合、回路は2つに分岐する。このとき、電流の総和は分岐した2つの回路にながれる電流の和となる。

2つの抵抗の値が同じであれば電流は全体の半分ずつとなる。

では、電圧はどうか?2つの抵抗値が同じであれば、電圧も半分ずつになるのか?

結論はわかっていて、2つの抵抗にかかる電圧は等しいがその電圧は全体にかかる電圧と等しい。つまり、10Vの電圧をかけるとR1にもR2にも10Vの電圧がかかる。

直列の場合は、2つの抵抗値にかかる電圧は等しくない。


ここまで考えてくると、「電圧」「電流」「抵抗」というものが、単純な「電気の強さ」「電気の量」「電気に逆らう力の強さ」みたいには置き換えられないことがわかる。

もし電圧が単なる「強さ」であるなら、並行に存在している抵抗に対して同じ強さでかかることはありえない。半分ずつになるはずだ。

そして、この「並列抵抗には同じ強さの電圧がかかる」ということから、抵抗値が求められる。というか、このことが前提されないと抵抗値が、電流値が求められない。

10Ωの抵抗が二つ並列に存在する回路に10Vの電圧をかける。

I1=10(V)/10(Ω) = 1(A)
I2=10(V)/10(Ω) = 1(A)

電流を合計すると2Aである。

ということは、抵抗の合計は R=10(V)/2(A)=5となる。

1/R=1/R1+1/R2 を計算すると

1/R = 1/10 + 1/10 
=2/10=1/5

1/R=1/5

R=5 
となる。


I=E/R
I1=E/R1
I2=E/R2

I=I1+I2

E/R=E/R1+E/R2
両辺をEで割って
1/R=1/R1+1/R2


ここまで考えて計算してみて、ようやく「1/R=1/R1+1/R2」が腹に落ちる。

つまり、抵抗が並列にされたときにどれだけの電流が流れるか、回路全体の抵抗の和はどうなるか、というのは、「抵抗が並列に接続されたときにそれぞれの抵抗にかかる電圧はどうなるか」ということを言っているのである。

そして、二つの抵抗にかかる電圧から電流値を求め、その二つの電流値を足して、
その和をオームの法則にあてはめて全体の抵抗値を出しているのである。



・・・

でも、同じ電圧をかけて、2つの同じ抵抗値がその回路に存在しているのは同じなのに、流れる電流の量が変わるというのはやっぱり受け入れがたい・・・・。

(参考)









2024/11/15

raspi zero2その後

動作が不安定である。というか、止まる。sshできなくなる。pingも通らなかったかな?

なんか重いのだろうか?os(bookworm)をliteで入れなおす。

まっさらな場合、libcamerifyのためには以下が必要

libcamera-tools
libcamera-v4l2


2024/11/13

iPhoneのアップデートに失敗、復元もできなくなる

家で仕事をしていて暇なのでiPhoneのアップデートをした。普段はだいたい家のWifi経由でやっているのだが、CDをiTunesライブラリに追加してそれと同期させるために久しぶりにiTuneにつないだらアップデートがあると表示されたのでついでにやっておこうと思った。

ダウンロードに結構時間がかかっていて、別のことをして放っておいた。しばらくたってアップデートが始まり、iPhoneの画面が黒い背景に白いリンゴと進行を示す白い横線になった。

が、横線が数ミリくらい進んだ状態で止まってしまった。

どれくらいの時間がたったかは定かではないが20分くらい止まったままだったと思う。

どう見ても進んでいないので強制的に電源を落としリカバリモードで起動しアップデートを再実行しようとしたができない。仕方がないので「復元」を選ぶがそれもできない。

何度か試してダメなので、とりあえずもう一台あるiPhoneにSIMを差し替えた。apple idを変えたりlineやpaypayが入ってないので入れたりいろいろやって1時間くらいかかる。とりあえず「ケータイがなくて困る」という事態はなんとかなった。

アップデートに失敗したiPhoneも、そう簡単に壊れないだろうと再度復元を試みる。調べると、MS StoreからダウンロードしたiTunesで失敗することがあるという情報があった。appleサイトからダウンロードしたものを使えばうまくいく、とある。

appleのサイトにもMS Storeのリンクがあるが、「ほかのバージョンをお探しですか?」のリンクからstore経由でなくダウンロードできる。(本当に違うものなのか確かめていないが)

iTunesを入れなおすと、失敗していた復元が進むようになった。

が、途中で失敗する。

lightningケーブルを変えたり、接続するUSBポートを変えたりいろいろやるがどうしてもうまくいかない。

appleに問い合わせると、appleデバイスというソフトがあるのでそれでやってみてというのでやってみたがiTunesと同じような状態。

「別のPCにつないでなおった」「macにつないでなおった」などの情報があったので別のノートPCにiTunesやappleデバイスを入れてやってみるが、同じ。

Lightningケーブルを変えると、止まる場所が多少変わったりするが、途中で失敗するのは同じ。

失敗したときに表示されたメッセージで検索してみるが、参考になる解決方法は見つからない。サポートに伝えてもそのメッセージはアップルが公開していない、と言う。


iPhoneはリセットすると通常通り起動せず、「リカバリモード」と呼ばれるらしい、黒い背景にライトニングケーブルとノートPCの絵が描かれた画面が表示されて止まる。

機種は13 miniで、iOS 18.1 にしようとして失敗した。上げる前のバージョンがなんだったか覚えていないが、18系だったはず。

リカバリモードでPCにつなぐとiTunesで認識され、「アップデートまたは復元してください、アップデートならデータは残るが復元だと初期化される」というようなメッセージが表示され、アップデートしてみるとすぐ失敗し、復元してみると更新が始まるがリンゴマークが表示され下に進行度を示す白い線が出るが止まる。


表示されたメッセージは以下のようなもの。

iPhone "iPhone"をアップデートできませんでした。不明なエラーが発生しました(75)。067E.004B

iPhone "iPhone"を復元できませんでした。不明なエラーが発生しました(1109)。0634.0000

iPhone "iPhone"を復元できませんでした。不明なエラーが発生しました(53)。


一番惜しいパターンは、appleデバイスを使って、純正ケーブルでつないで復元したときで、
進捗の線がちょうど真ん中あたりで止まり、appleデバイス側のメッセージが「更新しています」から「確認しています」みたいなメッセージに変わってしばらくたって、53のエラーになる。

これを見ていると復元自体はしているがなんらかのチェックがうまくいかず正常終了とみなされない、みたいな感じに見える。まだ新しいし、濡らしたことはないし落としたことはあることはあるがケースをつけていてそんなに激しい衝撃を与えたことはない。ハードウェア的に破損しているようには思えない。

appleサポートにappleデバイスでやってもダメでメッセージ内容を伝えると店舗に持ち込んで見てもらうように言われる。

予約状況を見るとすぐにはできず、送る場合はさらに日数がかかる。そんな重症とは思えず、ちょっとしたことで治りそうだと思うので、appleではない一般の修理店を探してみる。ここならなおしてもらえそうかなという店があって、費用は1.5万くらい。電話してみると治るかどうかはやってみないとわからないし、費用ももっとかかる場合もある、という。ただ、その日の夜に持ち込めるということなのでとりあえず予約した。

その後も復元にトライし続け、調べていくうちにDFUモードというものがあることを知る。リカバリモードと似ているが、appleが公式には公開していないモードらしく、とにかく強制的にファームウェアを書き換えるようなモードらしい。

DFUモードへの切り替え方を説明している人は何人かいて、タイミングが少し微妙なのだが何度か入ることができ、試したが通常の復元とほとんど変わらない状況だった。

最後に、「修復ソフト」の使用を検討した。この問題について調べているときに、ずっと修復ソフトの情報が出てきてはいたが、どうも怪しく、信用できないので避けていたのだが万策尽きたので試してみることにした。

まず、広告しか出てこないものは避ける。一般のユーザーがレビューしたりブログや信用できるサイトで紹介しているようなものを探し、なかなかなかったが比較的信用できそうだったのが iMyFone Fixppo である。

一応無料で使用できるとなっているが、他のソフトも同様なのだが、無料で実施できることはごくわずかで、それで修復することはできなかった。

仕方なく5000円弱の料金を払って、名前は忘れたがアドバンストモードだかなんだかを実施すると、「Apple Mobile Device Serviceのドライバが壊れている」みたいなメッセージが表示されてそのドライバを修復するような動作がおこなわれた後、復元できるようになった。

ということはiPhone本体ではなく、PC側(ソフト)の問題だったということか。

とりあえず治ったのでよいが、PC側の問題が違うPCでも起きていたとすると、もはやそれは破損とか故障とかではなくて「不具合」ではないだろうか?

もしかしたら下記とかをやっていれば治っていたのかもしれない。

あるいは、Macにつないだら治っていたとか。MacはUSB-Cしかインターフェースがなく、iPhoneをつなげられなかったので試せなかったのだが。

ショップの予約はキャンセルした。

2024/11/08

さくらのVPSのパケットフィルタ

さくらのVPSでsquidを設定してあったので、使ってみようと思ったのだが、使えない。

クライアントで プロキシ設定してもサーバに到達しない。firewalldやssやtcpdumpやnmapで確認する限り、どう考えてもサーバの前で止まっている。

ssで表示される、listenしているポートはすべて利用可能でsquidだけが通らない。

さくらインターネットが止めてるんじゃないか?サポートに問い合わせてみようか、と思って思い出した。さくらインターネットがパケットフィルタを提供していることを。

以前、こんなのfirewalldでやるからいらない、と無効にしたと思っていたのだが、見たら動いていて、自分が使っているポートが許可されていてsquidだけが空いてなかった。

 

2024/11/07

fail2ban

以前から気にはなっていたのだが、メールサーバに大量の不正アクセス(ブルートフォースアタック)がある。アドレスはまちまちでアカウント名をテキトーに変えてアクセスしてくる。ログインに成功したり不正なメールリレーしてしまったことは多分ないと思うし、特にサーバに負荷がかかっているとかいういこともないので放っておいたのだが、fail2banを使ってみた。

/etc/fail2ban/jail.conf にいろんなサービスの定義が書いてある。

jail.localというファイルを作って、監視したいサービスだけを書くと、その部分だけ設定を上書きしてくれる。
私は以下のようにした。(centos)

[DEFAULT]
ignoreip = xxx.xxx.xxx.xxx/32
bantime  = 1w
findtime  = 1h
maxretry = 3
backend = auto

filter = %(__name__)s

#
# ACTIONS
#
destemail = hoge@example.com
banaction = firewallcmd-ipset
banaction_allports = firewallcmd-allports
action = %(action_mwl)s
#
# JAILS
#
#
# SSH servers
#
[sshd]
enabled = true

[postfix-sasl]
enabled = true

[cyrus-imap]
enabled = true

[postfix]
enabled = true

ignoreipは、監視対象外とするIPアドレス
1時間以内に3回の不正アクセスがあると1週間バンする。

バンアクションのところは、ubuntuだったらufw、とかに書き換える。

バンが発生するとログが記録されるが、destemailに書いたアドレス宛にメールが送信される。
action_mwl というのは、アドレスと、whois情報と、ログ情報がメールに記載される。

私はwhoisをインストールしておらず、メールに「whoisがない」と書いてあったのでインストールしたらwhois情報が載るようになった。

postfix + dovecot (TLS有効)のメールクライアント設定

メールサーバのfqdnが mail.example.com
ユーザー名が taro
メールアドレスが taro@example.com
とする
サーバにtaroというユーザがあること
(Maildirが必要?調べればすぐわかるはず)

thunderbird

サーバ設定
 サーバの種類:IMAPメールサーバー
 サーバー名:mail.example.com
 ポート:993
 ユーザー名:taro

セキュリティ設定
 接続の保護:SSL/TLS
 認証方式:通常のパスワード認証
 送信(SMTP)サーバー
 サーバー名:mail.example.com
 ポート番号:465

セキュリティと認証
 接続の保護:SSL/TLS
 認証方式:通常のパスワード認証
 ユーザー名:taro
 
Thunderbirdの設定
 プライバシーとセキュリティ→証明書→証明書を管理→インポートをクリックして
 CA証明書をインポートする
 ※windowsにインストールしてもダメみたい


iPhone(英語)

Settings > Apps > Mail > Mail Accounts > Add Account > other > Add Mail Account 
 Name: (表示名)
 Email: taro@example.com
 Description: (説明)

INCOMING MAIL SERVER
 Host Name: mail.example.com
 User Name: taro
 Password: (パスワード)

OUTGOING MAIL SERVER > SMTP > mail.example.com
 PRIMARY SERVER: mail.example.com   が On
 > Server が有効
 Host Name: mail.example.com
 User Name: taro
 Password: (パスワード)
 Use SSLが有効
 Authentication: Password
 Server Port: 587

Advanced > INCOMING SETTINGS
 Use SSLが有効
 Authentication: Password
 IMAP Path Prefix /
 Server Port: 993

あれ、thunderbirdとiphoneでSMTPのポート番号が違うな?
どっちでもいいのか?

証明書について
postfixとdovecotでそれぞれサーバー証明書とサーバーの秘密鍵が必要。
同じものを使う。
サーバー証明書はCA証明書とチェーンになったものを使用する。
CA証明書はクライアントにインポートし、信頼する


その他
以前、DKIMとかSPFを設定したが、とくになくてもgmailとかに送れる。
(gmailと自分のサーバしか試してないが)

dovecotでsslv3エラーが出るときの証明書

postfix & dovecotでSSL化していたメールサーバーの証明書の期限が切れていたため、更新したのだが下記のエラーが表示される。

2024-11-07T04:35:55.635061+09:00 jesus dovecot: imap-login: Disconnected: Connection closed: SSL_accept() failed: error:0A000412:SSL routines::sslv3 alert bad certificate: SSL alert number 42 (no auth attempts in 0 secs): user=<>, rip=xxx.xxx.xx.xxx, lip=xxx.xxx.xxx.xxx, TLS handshaking: SSL_accept() 


以前は送受信できていて変えたのは証明書だけだから証明書の問題かなと思い、何度も証明書を作り直したのだがなおらない。

ログをみると sslv3 と書いてあるが、sslv3はもう使用されない、使用すべきでない古いプロトコルである。

postfix&dovecot でプロトコルバージョンの設定をしたが変わらない。

ログの内容でググると、「証明書が中間証明書を含んだチェーンんになっていない」という情報が出てくるのだが、チェーン証明書など使わないでも以前は送受信できていたので関係ないと思っていた。

DovecotのSSLエラー - GentooやIoTの覚え書きブログ

しかしどうしてもなおらないので、下記を参考にチェーン証明書を作って置き換えてみたらうまくいった....

OpenSSLでチェーン証明書を作成する方法 #OpenSSL - Qiita

しかしなんでチェーン証明書でないとsslv3のエラーになるのか... 納得いかない...

チェーン証明書の作り方なんて知らなかったから、間違いなく以前は普通のサーバー証明書で動いていたはず。


ちなみに証明書はopensslを使って作った自己CA(?)で署名したヤツである。


2024/11/06

CA構築 2024

ubuntu 
サーバはj***、digital oceanのvps
Ubuntu

opensslのconfigは /etc/ssl/openssl.cnf

/etc/pki/CA に移動する。
ここで全部やる。

openssl.cnfを /etc/pki/CAにコピーする。

openssl.cnfを編集

[ CA_default ]
dir             = .            # Where everything is kept
private_key     = $dir/cakey.pem # The private key

[ req_distinguished_name ]
国とかcityとかのデフォルト値を入れておく


v3_ca
というファイルを作って下記を記載し、署名時に使う
(opnessl.cnfの[v3_ca]セクションに書いたら行けると思ったがだめだったので)
 
basicConstraints = critical, CA:true
keyUsage = critical, cRLSign, keyCertSign
subjectKeyIdentifier=hash


#これをやっておく

touch index.txt
echo 00 > serial

#ca証明書のcsr発行

 openssl req -new -key ./cakey.pem -out ./ca.csr

※openssl.cnfにkeyの場所を書いたつもりだが効かないので指定した
なぜ効かないとわかったかというとパスワードを聞かれたから


#CA証明書のCSRにサイン

openssl ca -in ca.csr -selfsign \
-notext -config openssl.cnf -outdir . \
-extfile v3_ca -out cacert.pem\
-startdate 241101000000Z -enddate 251031235959Z

いつもつけていなかったが、-notextを指定すると読める情報が書かれない(あっても問題ない)

-extfile v3_ca がさっきのCA情報

これもいつもやらないが、-startdate -enddateを明示的に指定。
指定しないと作った時間になって切りが悪いのでこっちの方がいい。

openssl x509 -in cacert.pem -text

中身を確認

 Version: 3 であること

下記があること

 X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign

※この後別のcentos9のサーバでCA証明書を作ったが上記オプションがなくても問題なく使えた。

#iPhoneにCA証明書をインストール

証明書をテキストにコピーし、拡張子.crt (.pemでもいいはず)にして
メールでiPhoneに送る。

証明書をiPhoneにダウンロードして開き、インストールする。
(私はapple watchを使っているので、iphoneとapplewatchのどちらにインストールするかと聞かれた)

※私はiPhoneの言語を英語に設定している

すると、Settings > General > VPN & Device Management の、
DOWNLOADED PROFILE に表示されるのでタップして開くと、Not Verified と表示されている。
中身を見て、「Certificate Authority」がYesになっていること
Versionが3であること
を確認

最初に戻って、右上のInstallをタップ

ここで終わりではない。

General > About > Certificate Trust Settings > ENABLE FULL TRUST FOR ROOT CETIFICATES
で、インストールした証明書を信頼する。


2024/11/05

Raspberry Pi zeroのライブカメラの首振り

pi zeroにカメラをつけてケースに収めたものにサーボモーター(SG92R)をくっつけて、本体ごと回転させてカメラを首振りさせてみた。

pythonのソース

#!/usr/bin/python
import pigpio
import time
gpio_pwm = 18
pig = pigpio.pi()
pig.set_mode(gpio_pwm, pigpio.OUTPUT)

para_max = 110000
para_min = 70000
para = para_min
interval=20
delta=10000

try:
  while True:
    if para >= para_max:
        flag=-1
    elif para <= para_min:
        flag=1
    para = para + (delta*flag)
    pig.hardware_PWM(gpio_pwm, 50, para)
    time.sleep(interval)
except KeyboardInterrupt:
  pig.set_mode(gpio_pwm, pigpio.INPUT)
  pig.stop()



Piとの接続は、SG924Rの茶→GND、赤→5V、オレンジ→GPIO18

これを実行するためには pi gpio daemonが起動している必要がある。

sudo pigpiod

そして、motionをバックグラウンドで動かしておく。

libcamerify motion -b


このやり方はPWM制御といってduty比というものを指定する。

hardware_PWM に3つの引数を渡しているが順にGPIOのピン番号(今回は18を使用)、動作周波数(50Hz)、duty比である。

動作周波数はモータによるようだ。SG92RのデータシートがみつからないのだがSG90Rはあって、そこに50Hzと書いてあった。

duty比が大きいと大きく回転することはわかったがどこが基準でどれだけ大きくするとどれだけ回転するのかがいまいちよくわからない。

誰かのソースを動かしてみて、値を変えながら確認していった。

モーターをpi zeroのケースの下にくっつけたのだがその時の角度はテキトーである。

duty比は70000~110000の範囲で変えると、正確に測っていないが大体120度くらいの範囲で首振りできた。

初期値を70000にして、大きくしていくと半時計周りに回転する。そして11000を超えたら、こんどは小さくしていくと時計回りに回転する。70000を下回ったらまた大きくする。これを繰り返して「首振り」動作が実現できた。

モータを回してsleepする時間と、duty比の変化量を変えることでゆっくり首振りしたり、なめらかにさせたり、ガクンガクンと大幅に首振りさせることができる。


電源ケーブルやgpioと接続しているケーブルが邪魔にならないように余裕をもたせてたるみをもたせつつ固定しておく。ある程度重みのある台となるものにモーターを固定しpi zeroのケースをつけた。

仮なので両面テープやビニールテープを使っている。




2024/11/04

びんぼうでいいの nano

よくみるyoutuberが、電子工作ではarduino nanoを使う、UNOは使わない、と言っていた。

私はUNOやraspberry piを使っていたがnanoは持っていない。raspberry pi picoは最近買った。

じゃあarduino nanoを買っておこうかと思ったが、arduinoはびんぼうでいいので問題なく動くので、nanoも互換機でいいだろうと思った。

aitendoで NN328CH340A という名前で600円で売っている。ピンヘッダが付属しているがはんだ付けが必要。「びんぼうでいいの」とは書いていない。

秋月電子でピンヘッダ実装済みのものは3560円だ。


ピンヘッダをはんだ付けして使ってみる。USB-Cケーブルを挿すと L というLEDがチカチカ点滅する。「故障か?半田ミスか?」と思ったが、デフォルトで本体のLEDを点滅させるスケッチが有効になっているとのことだった。

自分でスケッチを書いて外付けのLED+抵抗につなぐと動いた。



----------------------
void setup()
{
  pinMode(2, OUTPUT);
}

void loop()
{
   digitalWrite(2, HIGH);
   delay(1000);
   digitalWrite(2, LOW);
   delay(1000);
}
-----------------------

本体のLEDがまぶしいのでビニールテープを貼って隠した。

2024/11/01

Raspberry Pi Zero 2 WH で カメラモジュールv3

スイッチサイエンスで本体とカメラ(広角)とケースとカメラ用ケーブル(zero用短め)を買った。

普通のカメラでよかったのだが売り切れていて広角しかなかった。


OSは、imagerでrecommendされた 64-bitのデスクトップこみのBookwormである。

imagerでOSをインストールするときにwifiとsshを有効にしておく。

起動したらdhcpサーバーで割り当てられたIPアドレスを確認しsshする。

raspberry piでのdhcpのIPアドレス固定設定はもう dhcpcd.confでやらなくなったようだ。

面倒くさいのでdhcpサーバの方でアドレスを固定した。


いったんshutdownしてカメラをつないで起動し、apt update/upgradeして再起動した。

libcamera-hello を実行する。sshなのでプレビュー画面は表示されないがカメラは認識されている。

motionをインストールする。

いつもの設定をして

libcamerify motionを実行

pi5のときと同じエラーになったので

同じように

apt install libcamera-v4l2

を実行すると、motionが動いた。

IPA moduleのエラーが出るのも同じだが無視。


zeroだから非力かなと思ったが、2048x1536でも大丈夫だった。