あらきけいすけのメモ帳

あらきけいすけの雑記帳2

Excel VBA でマクロの引数にマクロ名を渡す、あるいは実行しているマクロ名を表示させたい

自分用の覚書。Application.Run(マクロ名〔,引数1〔,引数2〔,...〕〕〕) を使うと、呼び出すマクロ名を文字列で扱うことができ、呼び出すマクロの切り替えを呼出側で変数の値として切り替えできる。fortran や C より簡単(fortran でサブルーチンの引数にサブルーチンを渡す - あらきけいすけの雑記帳

Option Explicit

Sub test000()
    Dim s As String, v As Variant, v0 As Variant
    s = "マクロ1" ' 呼び出すマクロの名前
    v = 10
    v0 = Application.Run(s, v)
    MsgBox "test000 calls " & s & "(" & v & ")->" & v0
End Sub

Function マクロ0(v As Variant) As Variant
    MsgBox "マクロ0(" & v & ")"
    マクロ0 = v
    If IsNumeric(v) Then: マクロ0 = v + 1
End Function

Function マクロ1(v As Variant) As Variant
    MsgBox "マクロ1(" & v & ")"
    マクロ1 = v
    If IsNumeric(v) Then: マクロ1 = v - 1
End Function

2019年7月12日9時58分頃, M5.8, 奄美大島西, 深さ250km, プレート境界に沿って揺れてる

震度分布がプレート境界に沿って細長く連なっていて、面的な広がりが無いのが、とても興味深かったのでメモしておく。Hi-netはM6.1, depth:210kmとなっていた。この地域の震源として見ても、例外的に深い。「児島で震度2 震源は鹿児島・奄美大島沖」との記事を見たので大地震が起きたのかとビックリして調べた。M6程度なので「大地震」ではある。
www.sanyonews.jp

2019年7月13日9時58分頃 M5.9 深さ250km
気象庁のデータ
2019年7月13日9時58分頃 M6.1 深さ210km
防災科学技術研究所のデータ

Q:高等学校までの勉強でなぜ分母の有理化を強制されるのか?

A:コンピュータがここまで発達しているのに、陋習に囚われた「紙と鉛筆」脳の教師ばかりだから*1

解説

高校までの数学や理科の勉強で「分母の有理化」をやらせるけれども、有理化する理由は

「筆算で」「有効数字3~4桁程度までの値から」「同じく有効数字3~4桁程度までの値を」求める場合に、丸め誤差*2、桁落ち*3による誤差を最小限に抑えるためには、除算の操作で除数がなるべく少ない桁の整数である方が圧倒的にベターだから*4
ということをきちんと書いている教科書、受験参考書は全くない…多分。知らんけど…。
つまり「有効数字3~4桁程度」の「筆算」という前提が崩れたら、有理化をする意味はとてもとてもとても希薄になると思う。関数電卓スプレッドシートMicrosoft ExcelGoogle Docsスプレッドシート)で力任せに計算して問題が無いし*5\displaystyle\cos\frac\pi4=\frac{1}{\sqrt2}でいいじゃない。
しかし、残念ながら日本の高校生の諸君は、大学側が計算の能力、技巧に関して「紙と鉛筆」以外の選抜手段を持たないので、これからも有理化の練習をさせられ続けるであろう。

主張

「筆算で」「90分程度以内で解ける」ような問題しか出せない「受験数学」「受験理科」への対応にチューニングをかけた授業や、その延長のような(まるで「数学IV」とでも呼びたくなるような)大学教養程度の教科書や授業では、この視点はおそらく出てこない。

*1:この辺のメンタリティは、いわゆる「神エクセル」に通じるものがあると思える。この合理的思考の欠如は「プログラマ」や「AI技術者」を量産できるような体制ではないことを示していると思える。

*2:Round-off error - Wikipedia 日本語版は無い。

*3:Loss of significance - Wikipedia 日本語版は無い。

*4:複素数の分母の実数化はこれとは異なる。複素数z=x+iyは2次元のベクトルだから、分数のままでは不明瞭なx座標とy座標の値を出すという役割がある。

*5:これに関連して、むかしむかし有効数字をスプレッドシートで求める方法を書いた:有効数字の求め方の例題:パチンコ玉の直径をノギスで1回だけ測って体積を求める - あらきけいすけの雑記帳

Dirichlet 積分 ∫_0^∞ sin(x)/x dx = π/2 が条件収束であることについて

\small\displaystyle\int_0^\infty\frac{\sin x}{x}dx=\frac\pi2が条件収束だ*1ということを示すことにちょっとてこずったのでラフなメモを残す。細かいところでミスがあるかもしれない。
方針:\small\displaystyle I_n:=\int_{n\pi}^{(n+1)\pi}\frac{|\sin x|}{x}dxを評価する。
まず\small\displaystyle\int_{n\pi}^{(n+1)\pi}\frac{|\sin x|}{x}dx=\int_{0}^{\pi}\frac{\sin t}{t+n\pi}dtである。ここで\small\displaystyle\frac{\sin t}{(n+1)\pi}\lt\frac{\sin t}{t+n\pi}\lt\frac{\sin t}{n\pi}より\small\displaystyle\frac{2}{(n+1)\pi}\lt I_n\lt\frac{2}{n\pi}\small n=0のときは上限は\small\displaystyle0<\frac{\sin x}{x}<1より\small1\times\pi=\pi)である。
ここで\small\displaystyle\int_0^\infty\frac{\left|\sin x\right|}{x}dx=\sum_{n=0}^\infty I_nを下から評価すると、\small\displaystyle\sum_{n=0}^\infty I_n \gt \small\displaystyle\frac{2}{\pi} \sum_{n=0}^\infty \frac{1}{n+1} \gt \small\displaystyle\frac{2}{\pi}\int_1^\infty\frac{dt}{t}なので、発散すること、すなわち絶対収束しないことが分かる。
次に隣接する部分の和:\small\displaystyle\int_{2m\pi}^{2(m+1)\pi}\frac{\sin x}{x}dx=I_{2m}-I_{2m+1}を評価すると\small\displaystyle \frac{2}{(2m+1)\pi} \lt 
 I_{2m}\lt\frac{2}{2m\pi}, \small\displaystyle-\frac{2}{(2m+1)\pi}\lt -I_{2m+1}\lt-\frac{2}{(2m+2)\pi}であるから、\small\displaystyle0\lt I_{2m}-I_{2m+1}\lt\underbrace{\frac{2}{2m\pi}-\frac{2}{(2m+2)\pi}}_{\frac{4}{2m(2m+2)\pi}=\frac{1}{m(m+1)\pi}}となって、両サイドをmの-2次で抑えられるので、「\small\displaystyle0\lt I_{2m}-I_{2m+1}より\small\displaystyle\sum(I_{2m}-I_{2m+1})は単調増加列である」「\small\displaystyle\sum_{m=1}^\infty(I_{2m}-I_{2m+1}) \lt \small\displaystyle\frac{1}{\pi}\sum\frac{1}{m^2} \lt \small\displaystyle\frac{1}{\pi}\left(1+\int_1^\infty\frac{dt}{t^2}\right)=\frac2\piより、上に有界である」という条件を満たすので、収束する*2

*1:ディリクレ積分 - Wikipedia Dirichlet integral - Wikipedia どちらも値が\small\displaystyle\frac\pi2であることの計算は書いてあるが、条件収束であることは示していない。

*2:単調収束定理 - Wikipedia

学習指導要領解説からの統計関連の部分の抜き書き

教育用の覚書
高等学校学習指導要領解説 数学編 平成21年11月
http://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2012/06/06/1282000_5.pdf
高等学校学習指導要領(平成30年告示)解説 数学編 理数編 平成30年7月
http://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2019/03/28/1407073_05_1_1.pdf

2015年4月以降入学者

(2012年4月1日に高等学校の第1学年に入学した生徒から)

数学I

(4) データの分析
統計の基本的な考えを理解するとともに,それを用いてデータを整理・分析し傾向を把握できるようにする。

  • ア データの散らばり
    四分位偏差,分散及び標準偏差などの意味について理解し,それらを用いてデータの傾向を把握し,説明すること。
  • イ データの相関
    散布図や相関係数の意味を理解し,それらを用いて二つのデータの相関を把握し説明すること。

中学校では,コンピュータを用いるなどして,ヒストグラムや代表値などにより資料の傾向をとらえることや,資料を整理して活用すること及び標本調査などを扱っている。
ここでは,統計の用語の意味やその扱いについて理解させるとともに,例えば表計算用のソフトウェアや電卓も適宜用いるなどして,目的に応じデータを収集・整理し,四分位数,四分位範囲,四分位偏差,分散,標準偏差,散布図及び相関係数などに着目させ,データの傾向を的確に把握することができるようにする。
なお,様々な事象から見いだされる確率や統計に関するデータを,中学校では「資料」と表していたが,高等学校では生活の中で活用することや統計学とのつながりを一層重視し,一般的に用いられる「データ」という用語を用いることとした。また,従前の「相関図」も,今回の改訂で「散布図」に改めることにした。
指導に当たっては,生徒が意欲をもって学習を進めることができるように,テーマを適切に選び,具体的な事象に基づいた扱いをすることが大切である。また,∑は「数学B」で扱うことに留意する。

ア データの散らばり

ここでは,中学校での学習を更に発展させて,四分位数,四分位範囲,四分位偏差,分散及び標準偏差などの用語を知り,意味を理解させるとともに,それらを利用してデータの傾向を的確にとらえ説明できるようにする。なお,四分位範囲とは第3四分位数から第1四分位数を引いた値であり,四分位偏差とは四分位範囲を2で割った値である。
指導に当たっては,これらの用語を具体的な事象と関連付けて扱うことが大切である。例えば,充電式機器の使用可能時間について,平均値や分散,標準偏差を求めて,それらの意味を理解させることが考えられる。また,四分位数に関連して箱ひげ図を扱うことも考えられる。箱ひげ図とは,次のように,最小値,第1四分位数,中央値(第2四分位数),第3四分位数,最大値を箱と線(ひげ)を用いて一つの図で表したものである。箱の長さが四分位範囲で,全データの真ん中の半数が入っている区間を表している。またこの図中に,平均値を記入して中央値との差を考えたり,第1・第3四分位数と中央値との差を考えたりすることにより,データの散らばり具合が把握しやすくなるので,複数のデータの分布を比較する場合などに使われる。
[箱ひげ図]

イ データの相関

ここでは,散布図及び相関係数の意味を理解させるとともに,それらを利用してデータの相関を的確にとらえ説明できるようにする。例えば,あるクラスの生徒について,100m走と走り幅跳びの計測記録を収集し,散布図に表したり相関係数を求めたりして,これらのデータの間の傾向をとらえさせることが考えられる。特に,多くのデータを扱う場合には,コンピュータなどを積極的に活用するようにする。

数学B

(1) 確率分布と統計的な推測
確率変数とその分布,統計的な推測について理解し,それらを不確定な事象の考察に活用できるようにする。

  • ア 確率分布
    • (ア) 確率変数と確率分布
      確率変数及び確率分布について理解し,確率変数の平均,分散及び標準偏差を用いて確率分布の特徴をとらえること。
    • (イ) 二項分布
      二項分布について理解し,それを事象の考察に活用すること。
  • 正規分布
    正規分布について理解し,二項分布が正規分布で近似できることを知ること。また,それらを事象の考察に活用すること。
  • ウ 統計的な推測
    • (ア) 母集団と標本
      標本調査の考え方について理解し,標本を用いて母集団の傾向を推測できることを知ること。
    • (イ) 統計的な推測の考え
      母平均の統計的な推測について理解し,それを事象の考察に活用すること。

 今回の改訂では,従前の「数学C」の「確率分布」と「統計処理」を一つにまとめ,ここで扱うこととした。
 中学校第3学年では,標本調査の必要性や意味について理解させるとともに,簡単な場合について標本調査を行い,母集団の傾向をとらえ説明することを扱っている。
 「数学Ⅰ」の「(4) データの分析」では,分散,標準偏差及び相関係数などを扱い,データの傾向を把握し,説明することを学習している。また,「数学Ⅱ」の「(1) いろいろな式」では二項定30 理を扱い,「数学A」の「(1) 場合の数と確率」では,場合の数,確率とその基本的な法則,独立
な試行の確率及び条件付き確率などを扱っている。
 ここでは,まず,確率変数や確率分布について理解させる。従前の「数学A」の「場合の数と確率」で扱われた期待値もここで扱い,確率分布としては二項分布と正規分布を扱う。また,標本調査の考え方及びそれを用いて母集団のもつ傾向を推測する方法について理解させる。さらに,確率の理論を統計に応用し,統計的な見方や考え方を豊かにし,それらを活用して母平均などを推定できるようにする。
 なお,これらの内容については理論的な扱いに深入りせず,具体的な例や作業を通して確率分布の考えや統計的な推測の考えを理解させるようにする。例えば,二項分布が正規分布で近似されることなどの数理的現象については,コンピュータなどを用いて直観的に理解できるようにすることが考えられる。また,ここでの学習に関して,「数学Ⅱ」及び「数学A」の該当する内容を履修していない場合には,適宜必要な事項を補足するなどの配慮が必要である。

ア 確率分布
  • (ア) 確率変数と確率分布

ここでは,確率変数とその分布について理解させる。
ここで扱う確率変数は,標本空間の各要素に対し一つの実数を対応させる写像のことである。
例えば,互いに区別できる2枚の硬貨を投げる試行についての標本空間を
S={(表,表),(表,裏),(裏,表),(裏,裏)}
とする。この試行において,Sのそれぞれの根元事象に対して表の出る枚数を確率変数Xとすれば,(表,表)のときX=2,(表,裏)のときX=1,(裏,表)のときX=1,(裏,裏)のときX=0となり,次のような確率分布表が得られる。
[表]
このような具体例を通して,確率変数とその分布の意味を十分に理解させることが大切である。また,確率分布の特徴を示す確率変数の平均(期待値),分散及び標準偏差について理解させ,確率分布の特徴をとらえることができるようにする。なお,それらの計算に際しては,電卓などの活用を積極的に図るようにする。

  • (イ) 二項分布

基本的な離散型確率分布として,二項分布を扱う。
一つの試行において,ある事象Eが起こる確率を p,起こらない確率を q とする。すなわち,P(E)=pq=1-p0\lt p\lt1とする。この試行を独立に n 回だけ繰り返したとき,事象Eの起こる回数を確率変数Xとすれば,Xは二項分布 B(n,p)に従い,Xが値 k をとる確率は次のようになる。
P(X=k)={}_nC_kp^kq^{n-k} (k=0, 1, 2, ..., n)
また,二項分布 B(n,p)に従う確率変数Xの平均は np標準偏差\sqrt{npq}である。
例えば,1個のさいころを5回投げるとき,1の目の出る回数を X 回とすると,確率変数 X は二項分布 B(5,\frac16)に従い,1の目が k 回出る確率は P(X=k)={}_5C_k\left(\frac16\right)^k\left(\frac56\right)^{5-k}で与えられる。
指導に当たっては,生徒の実態等に応じて適切な具体例を工夫することが大切である。

正規分布

統計学において重要な役割を果たす正規分布について,その意味を直観的に理解させるようにする。
変量 X に対応する関数 f(x)\geqq0があって,確率P(a\leqq X\leqq b)が,区間[a,b]に対応する曲線y=f(x)x軸との間の面積で定められるとき,X を連続型確率変数,f(x)確率密度関数という。ここでは,これらについて具体的な事象を基に理解させる。例えば,身長などの計測においては,測定値 X はある範囲のすべての実数値をとると考えられるので,X は連続型確率変数である。
 また,\sigma>0-\infty\lt\mu\lt\inftyを定数とするとき,f(x)=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)確率密度関数とする連続分布が正規分布であることや,その平均は\mu標準偏差\sigmaであることを扱う。なお,正規分布確率密度関数 f(x)=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)に現れる自然対数の底 e については,数学Ⅲで扱われることに留意する。
 確率変数 X正規分布 N(\mu,\sigma^2)に従うとき,Y=\frac{X-\mu}{\sigma} と置くと Y は標準正規分布N(0,1)に従う。この Y については,y\gt0に対する確率P(0\leqq Y\leqq y)が数表に表されているので,この数表を用いて確率P(a\leqq X\leqq b)を求めることができる。なお,確率変数 X に関しては,P(\mu-\sigma\leqq X\leqq\mu+\sigma)P(\mu-2\sigma\leqq X\leqq\mu+2\sigma)P(\mu-3\sigma\leqq X\leqq\mu+3\sigma)の値について触れることも大切である。
 次に,n の値が大きいとき,二項分布が正規分布で近似できることについて扱う。
 n自然数0\lt p\lt1q=1-p とする。二項分布B(n,p)に従う確率変数Xは離散型であり,
P(X=k)={}_nC_kp^kq^{n-k} (k=0, 1, 2, ..., n)
である。このとき,n の値が大きくなると X の分布が,正規分布 N(np,npq)に近づいていくことをコンピュータなどを用いて直観的に理解させる。そこで,Z=\frac{X-np}{\sqrt{npq}} と置いて離散型の確率変数Zを考えると,n の値が十分大きいとき,Zの分布は標準正規分布で近似できる。これを用いて,例えば,さいころを 400 回投げたとき,1の目が 100 回以上出る確率などを簡単に求めることができる。なお,「二項分布が正規分布で近似できることを知ること」とは,二項分布で表わされる確率を正規分布を活用して求めることに重点を置くことを表現したものである。

ウ 統計的な推測
  • (ア) 母集団と標本

 統計調査には,調査の対象となるものをもれなく調べる全数調査もあるが,全数調査では多くの時間,費用及び労力がかかり,実用的でないこともある。そこで,標本を抽出して調査し,その結果から全体の性質を推測する標本調査が必要となる。中学校第3学年では,標本調査の必要性や意味とともに簡単な場合についての標本調査が扱われている。ここでは,中学校における学習を踏まえながら標本調査の考え方について理解を深める。
 なお,「標本を用いて母集団の傾向を推測できることを知ること」とは,乱数表やコンピュータなどで作った擬似乱数などを用いて実際に標本を抽出するなどの具体的な活動を行い,標本のもつ傾向から母集団のもつ傾向が推測できることの理解に重点を置くことを表現したものである。

  • (イ) 統計的な推測の考え

 母平均の推測を扱う。母平均 m,母標準偏差\sigmaをもつ母集団から大きさ n の標本 X_1X_2,…,X_n を無作為に抽出するとき,n の値が十分に大きければ標本平均 \frac{X_1+X_2+X_3+\cdots+X_n}{n}の値はm に近い。さらに,標本平均と m の差を \frac{\sigma}{\sqrt{n}}で割って,Z=\frac{X_1+X_2+X_3+\cdots+X_n-nm}{\sqrt{n}\sigma}と置くと,Zは平均0,標準偏差1の分布に従う。そして,n の値が十分大きければ,Zの分布は標準正規分布N(0,1)と近似的に等しい。このことに基づいて母平均の統計的な推測が可能になる。例えば,大量に生産された製品の中から無作為に抽出された製品に関するあるデータについて,そのデータの平均値と母標準偏差が与えられているとする。このとき,このデータの平均値を用いて信頼度 95 %で母平均を推測することなどに統計的な推測の考えは活用できる。
 母平均の信頼区間の意味を生徒に理解させるために,幾つもの標本を抽出し,標本平均を計算することが考えられる。その際,コンピュータなどを積極的に活用させるようにする。このような学習を通して,統計的な推測の意味やよさを理解させ,活用する態度を育てることが大切である。

2025年4月入学者

『高等学校学習指導要領(平成30年告示)解説 数学編 理数編』(2022年4月1日以降に高等学校の第1学年に入学した生徒が対象)より抜き書き

「データの分析」では,四分位数など(箱ひげ図を含む。)を中学校に移行して,「仮説検定の考え方」を取り扱うこととした。仮説検定については「数学 B」の「統計的な推測」で取り扱うが,この科目の履修だけで高等学校数学の履修を終える生徒もいることから,実際的な場面を考慮し,具体例を通して「仮説検定の考え方」を直観的に捉えさせるようにした。
第1部 第1章 第2節 2 (3) ア (ア)「数学I」(3単位)

 今回の改訂で,従前の「数学 B」の「ベクトル」を「数学 C」に移行し,「確率分布と統計的な推測」を「統計的な推測」に名称を変更するとともに,従前の「数学活用」の「社会生活における数理的な考察」の「社会生活と数学」及び「データの分析」を移行して「数学と社会生活」としてまとめて「数学 B」に位置付けた。この科目は,「数学Ⅰ」より進んだ内容を含み,数学的な素養を広げるとともに,数学の知識や技能などを活用して問題解決や意思決定をすることなどを通して数学的に考える資質・能力を養う科目で,次の①から③までの内容で構成した。
 ① 数列   ② 統計的な推測   ③ 数学と社会生活
 「統計的な推測」では,区間推定及び仮説検定も取り扱う。また,「数学と社会生活」では,散布図に表したデータを一次関数などとみなして処理することも取り扱うこととした。
第1部 第1章 第2節 2 (3) イ (イ)「数学B」(2単位)

小学校算数科

「データの活用」領域に関係する内容として,データを分類整理することや,表やグラフに表すこと,相対度数や確率の基になる割合を取り扱っている。また,それらを活用して,日常生活の具体的な事象を考察し,その特徴を捉えたり,問題解決したりする力を養っている。

中学校数学科

上記の小学校算数科における学習の上に立ち,主に,次の内容を取り扱っている。

  • ア 第 1 学年では,目的に応じてデータを収集し,コンピュータを用いるなどしてデータを表やグラフに整理し,データの分布の傾向を読み取り,批判的に考察して判断すること。
  • イ 第 2 学年は,複数の集団のデータの分布に着目し,四分位範囲や箱ひげ図を用いてデータの分布の傾向を比較して読み取り批判的に考察して判断すること。
  • ウ 第 3 学年では,母集団から標本を取り出し,標本の傾向を調べることで母集団の傾向を推定し判断したり,調査の方法や結果を批判的に考察したりすること。

高等学校数学科

 これらを踏まえ,ここでは,データの散らばり具合や傾向を数値化する方法を考察する力,目的に応じて複数の種類のデータを収集し,適切な統計量やグラフ,手法などを選択して分析を行い,データの傾向を把握して事象の特徴を表現する力,不確実な事象の起こりやすさに着目し,主張の妥当性について,実験などを通して判断したり,批判的に考察したりする力などを培う。

(4)データの分析
 データの分析について,数学的活動を通して,その有用性を認識するとともに,次の事項を身に付けることができるよう指導する。

  • ア 次のような知識及び技能を身に付けること。
    • (ア)分散,標準偏差,散布図及び相関係数の意味やその用い方を理解すること。
    • (イ)コンピュータなどの情報機器を用いるなどして,データを表やグラフに整理したり,分散や標準偏差などの基本的な統計量を求めたりすること。
    • (ウ)具体的な事象において仮説検定の考え方を理解すること。
  • イ 次のような思考力,判断力,表現力等を身に付けること。
    • (ア)データの散らばり具合や傾向を数値化する方法を考察すること。
    • (イ)目的に応じて複数の種類のデータを収集し,適切な統計量やグラフ,手法などを選択して分析を行い,データの傾向を把握して事象の特徴を表現すること。
    • (ウ)不確実な事象の起こりやすさに着目し,主張の妥当性について,実験などを通して判断したり,批判的に考察したりすること。

[用語・記号] 外れ値

pigpio ライブラリのサンプルコード PCA9685.py を用いて Raspberry Pi 3B から I2C 接続経由でサーボモータを動作させる

自分用の書きかけの覚書。pigpio の i2c 関連の関数のパラメータの与え方がよくわかっていない状態だが、〔Raspberry Pi 3B/3B+/Zero W + Python + pigpio ライブラリ + pigpio コード PCA9685.py*1〕と〔PCA9685 16channel 12bit pwm サーボドライバー*2〕を使ってサーボモータを動かすことができた。これでラズパイ側は(電源を除けば)[03:GPIO02(SDA1,I2C)] [05:GPIO03(SCL1,I2C)]の2個のGPIOピンを使うだけで最大16個までのサーボを動かせるようになった*3

  • ハードウェア側(Adafluit製)
    次のようにピン接続する。ピン接続がきちんとしていて、ラズパイに電源がつながっていたら(ラズパイのOSが起動していても、いなくても電力が供給されているので)ドライバー上の赤いLEDが点灯する。
    1. ドライバー[GND]⇔RPi[06:Ground]*4
    2. ドライバー[0E] not connected
    3. ドライバー[SCL]⇔RPi[05:GPIO03(SCL1,I2C)]
    4. ドライバー[SDA]⇔RPi[03:GPIO02(SDA1,I2C)]
    5. ドライバー[VCC]⇔RPi[02:5V]
    6. ドライバー[V+]⇔サーボモータに供給する電源(RPi[04:5V]でOK)
  • プログラム側
    1. まず pigpio のサイトの Examples のページ(http://abyz.me.uk/rpi/pigpio/examples.html)から PCA9685_py.zip をダウンロードする
    2. この zip ファイルを解凍して Python コード PCA9685.py を取り出す
    3. コマンド "sudo python PCA9685.py" で実行。*5ドライバーに接続されているすべてのサーボモータが一斉に同じ動作をする
  • Pythonプログラムの自作
    • 最小限のコード:0番ポートのサーボモータを(多分、約)90度のポジションに動かす。これを"runPCA9685.py"の名前で"PCA9685.py"と同じフォルダに保存する
# -*- coding: utf-8 -*-
if __name__ == "__main__":
   # ライブラリを読み込む部分
   import PCA9685
   import pigpio

   # ライブラリを使うためのインスタンスを立ち上げる部分
   pi = pigpio.pi()
   if not pi.connected:
      exit(0)
   pwm = PCA9685.PWM(pi) # defaults to bus 1, address 0x40

   # サーボモータを動作させるPWM信号の周波数を決める部分
   pwm.set_frequency(50) # suitable for servos

   # サーボモータを動作させる部分
   ch = 0
   pw = 1500
   pwm.set_pulse_width(ch, pw)

   # プログラムの終了処理の部分
   pwm.cancel()
   pi.stop()
    • コマンド "sudo python runPCA9685.py" で実行。

*1:"pigpio" i2c PCA9685 - Google 検索; pigpio library Examples

*2:pca9685 16channel 12bit pwm サーボドライバー - Google 検索 Adafluit製のものがあちこちで売られているようだ。

*3:ただし電力の供給をラズパイに頼ると、サーボモータの数が増えたときに、ラズパイが落ちるかもしれない。
I2C通信の使い方に記載の接続法を見ると、何台でもつなげそう。

*4:GroundのピンならどれでもOK

*5:この前に "sudo pigpiod" を実行しておく。

Raspberry Pi 3BとWindows 10 PCをLANケーブル(と給電用のUSBケーブル)で直接つないで操作する

自分用の書きかけの覚書。ネット環境が無いところでラズパイをWindowsから動かすためののメモ。

要点

bonjour*1をインストールした?*2Windows 10 PC*3Raspberry Pi 3 Model BをLANケーブル(と給電用のUSB A-micro B ケーブル)で直接つないで、ウィンドウズからラズベリーパイにリモートログインできる。

しくみ

Windows 10 はリンクローカルアドレスで繋いだラズパイのホスト名(デフォルトでは"raspberrypi")を探して繋ぐことができる*4。作業の要点は

  • Raspberry Pi
    • 起動時にsshあるいはvnc(あるいはxrdp)が起動されるようにして、いつでもリモートログインできる状態にしておく。
    • Raspberry Pi の hostname (マシン名)を把握しておく(と、リンクローカルアドレスを調べなくてもつなげられる)。初期設定は raspberrypi である。これを別の名前にするには /etc/hostname と /etc/hosts を書き換える。
    • hostname がわからないときは、リンクローカルアドレスで接続する。ユーザ名は把握していないといけない。
  • Windows
    • Bonjourをインストールしておく不要[2020.1.19]
    • ラズパイとWindowsPCをケーブルを繋いで、ラズパイを起動した後で、コマンドプロンプトで"arp -a"*5コマンドを打ち込んで、有線LANが動作していることを確認する
    • Windows PCから(初期設定をいじっていないなら)"raspberrypi.local"に(sshならTeraTermなどで、vncならVNC Viewerなどで、xrdpならリモートデスクトップで)リモートログインする

ここに書いていないこと

WindowsとRPiの間の通信はできてはいるけれど、(例えばRPiでソフトのアップデート sudo apt-get update をしたいときに)RPiからインターネットにどのようにアクセスすればよいか。参考にしたサイトの「ブリッジ接続もしてみる」を参照。

参考にしたサイト

qiita.com

*1:bonjour Zeroconf - Google 検索

*2:[2019.3.31]bonjourサービスをアンインストールした状態でも動作した。169.254.*.*のリンクローカルアドレスが勝手に振られている状態でホスト名"raspberrypi.local"のIPアドレスの解決どうやっているんだろう?

*3:バージョン1803(OSビルド 17134.648)

*4:[2020.1.19]以前は以下のように書いていたが、新品のWin10PCでもBonjourなしでつながることを確認した。「Bonjourとは、自動的にインターネットのネットワークを構成する技術であるZeroconfZeroconf - Google 検索に基づいたApple社製のソフトで、ネットワークアドレスが分からないラズパイのアドレスを自動で探して繋ぐようにするために必要。」

*5:windows arp - Google 検索