ピンポンうさぎ日記

料理レシピや趣味を中心に、日々の気づきを書いています

ボーっと生きてんじゃねー!チコちゃんに叱られるで紹介していた「円周率」の説明を実践してみたら、思ったより難しかった!!

背景

テレビで見た円周率の解説があまりにも分かりやすかったので、自分で計算してみた。

 

円周率を求めることは、円周の長さを求めること!

そもそも円周率の定義は、円の直径と円周の長さの比です。ギリシャ文字のπ(パイ)と表されることが多く、円の半径を r、円周の長さを lとすれば、次の式で表されます。要するに円周率πの値は、半径1の円の円周の長さを2で割った値ということになります。

 

 \pi = \frac{l}{2r}

 

f:id:Pin-Pon-Usagi:20210724174045p:plain

 

円周の長さを正確に測るには?

円周率は円周の長さを直径で割った値なので、実際に円を描いて円周の長さを測ればよいのですが、円周の長さってどうやって測りますか?定規で測ることができるのは、2点間の直線距離です。下の図の曲線PQの長さを定規で測ると、明らかに曲線よりも短くなります。曲線の長さを測るには、曲線上の点と点の距離を測って近似するしかなく、できるだけ細かく区切って精度を上げるしかありません。

 

f:id:Pin-Pon-Usagi:20210724180604p:plain

 

 

 

 

アルキメデスの方法!

問題は、円周の長さが正確に求められないことです。この問題に対し、番組内の解説は次のようなものでした、目からウロコが落ちましたね!どうやら、これはアルキメデスが実施した方法で、アルキメデスの方法と呼ぶそうです。

 

考え方はシンプルで、下の絵にある黒い円の円周の長さは、円に内接する赤色の6角形の長さと円に外接する六角形の長さの間であると考えます。

f:id:Pin-Pon-Usagi:20210724181246p:plain

 

f:id:Pin-Pon-Usagi:20210724182014p:plain

 

円周の長さは、赤色の6角形の長さと緑色の六角形の長の間なので、あとは正6角形を,

12角形、24角形、48角形・・・と細かくしてゆけば円周の長さの精度が上がって、円周率の3.1416・・・も求められるというものでした。これは、アルキメデスの方法と呼ばれるもので、アルキメデスは正96角形まで計算して、小数点第二位までの、3.14を確かめたそうです。

 

6角形の周の長さを考える

自分で計算してみると、ふと大きな疑問にぶつかりました。

6角形の周長はどうやって求めればいいの?

 

赤色の6角形

こちらは簡単で、一辺の長さが1の正三角形が6つ並んでいるので、6です。

 

f:id:Pin-Pon-Usagi:20210724184448p:plain

 

 

緑色の6角形

こちらも、図のように正三角形を半分にした、内角が30度と60度の直角三角形なので、3辺の長さの比、 1:2:\sqrt{3}を使って、 \frac{1}{\sqrt{3}} \times 12 = 4\sqrt{3} と求まります。

f:id:Pin-Pon-Usagi:20210724183656p:plain

 

 

 \sqrt{3}について

 \sqrt{3}が出てきましたが、 \sqrt{3}は少数点以下の値が無限に続く数値です。文献によると、アルキメデスは3の平方根として、 265/153 < √3 < 1351/780 であることを示していたとされています。

 \frac{265}{153}=1.7320261437908497

 \frac{1351}{780}=1.7320512820512821

つまり、 \sqrt{3}

1.7320261437908497< \sqrt{3} < 1.7320512820512821なので、ここでは \sqrt{3}=1.7320として計算します。

 

6六角形の長さから求まる\piの値

とりあえず、正6角形を使ってπの値を計算してみます。

f:id:Pin-Pon-Usagi:20210724182014p:plain

赤色の6角形の長さ(=6) < 円周の長さ(=2\pi)< 緑色の6角形の長さ(=4\times1.7320=6.928)

両辺を2で割れば、

3<\pi<3.464

 

今の所\piは、3〜3.464の間の数というところまでわかりました。

 

6角形から12角形にする

次は、6角形から12角形にして、はさみうちの範囲を狭くします。その際の辺の長さの計算方法は、ここ↓の円周率πの計算についてを参考にしました。

https://www.juen.ac.jp/math/nakagawa/openh20pi.pdf

この中で使われている図形が分かりやすかったので、同じ内容を噛み砕いて説明しますね。

 

 考え方

ここで説明するのは、正6角形の辺の数を2倍にした正12角形の辺の長さの計算方法です。これがわかると、さらに正12角形を正24角形にしたときの辺の長さ、正24角形を正48角形にしたときの辺の長さが分かるようになります。

 

分割の方法

赤色で描かれた、内接正6角形の頂点と頂点の間に、新たに頂点Aを追加して正12角形にします。緑色で描かれた外接正6角形は、円との接点と接点の間に、新しい接点Dを追加することで、正12角形にしています。図のaとbの長さは、正6角形の一辺の半分の値で、既に分かっている値です。一方、a'とb'は正12角形の一辺の半分の長さで、分かっていない値です。すでにわかっているaとbの値から、a'とb'の値が計算できれば、正多角形の角数を増やしても、周長が計算できることになります。

 

 

f:id:Pin-Pon-Usagi:20210725084431p:plain

 

まずは外側の6角形→12角形

内接する12角形の辺の長さa'は、外接する12角形の辺の長さb'が必要になるため、まずはb'を求める方法を説明します。

 

f:id:Pin-Pon-Usagi:20210725093759p:plain





△OABと△EDBはともに直角三角形で、∠DBEを共有しているので相似です。したがって、

 OA:ED=AB:DB

 1:b'=b:DB

 DB=bb' \tag{1}

 

f:id:Pin-Pon-Usagi:20210725092948p:plain

 

△OCDと△EDBはともに直角三角形で、∠DBE=∠CDOなので相似です。よって、

 OD:EB=CD:DB

 1:b-b'=a:DB

 DB=a(b-b') \tag{2}

 

(1),(2)式のように、同一辺DBを、bb'とa(b-b')の二通りの方法で表す事ができました。したがって

 bb'=a(b-b')

 b'(a+b)=ab

 b'=\frac{ab}{a+b}

 

つまり、正六角形のaとbの値が分かっていれば、正12角形のb'の長さが分かります。

 

 

次はa'です。

△OFAと△DCAはともに直角三角形で、∠DAC=∠OAFなので相似です。よって、

 

f:id:Pin-Pon-Usagi:20210725111701p:plain



 OA:DA=AF:AC

 1:2a'=a':AC

 AC=2a'^2\tag{3}

 

 

△OAEと△OFAは、ともに直角三角形で∠AOE=∠FOAなので相似です。

△OAFと△DCAは相似でしたね。したがって

△DCAと△OAEは相似です。よって、

f:id:Pin-Pon-Usagi:20210725111741p:plain

 

 OA:DC=AE:CA

 1:a=b':CA

 CA=ab'\tag{4}

 

(3),(4)式のように、同一辺CAを、 2a'^2 ab'の二通りの方法で表す事ができました。したがって

 2a'^2=ab'

 a'=\sqrt{\frac{ab'}{2}}

 

まとめると、正6角形の辺の長さa,bと、正12角形の辺の長さa',b'は、

 b'=\frac{ab}{a+b}

 a'=\sqrt{\frac{ab'}{2}}

 この関係を使って、正6角形を細かくしていくと、表のように値が変化します

 

 

 

 

πの値はどうなったか?

6角形からはじめて、12,24,48,96,192角形まで細かくしてみました。

 

f:id:Pin-Pon-Usagi:20210728084203p:plain

6角形

左側の図は内接多角形(赤)と外接多角形(緑)で、それぞれの周長の半分の値を図の上に示します。つまり黒い円周の半分の長さであるπの値は、この段階では3〜3.4641の間の値となり、小数点第一位以下の値は不確定です。右には内接多角形と外接多角形の長さの半分の値をプロットしています。

 

f:id:Pin-Pon-Usagi:20210728084240p:plain

12角形

一気に、精度がアップしますが、まだ小数点第一が1なのか2なのか不明。

f:id:Pin-Pon-Usagi:20210728084310p:plain

24角形

ここまできて、ようやく3.1は確定。小数点第二位以下は不明。

f:id:Pin-Pon-Usagi:20210728084327p:plain

48角形

f:id:Pin-Pon-Usagi:20210728084349p:plain

96角形

正96角形でようやく3.14確定。アルキメデスはここまで計算したそうです。見た目はほぼ円そのもの。

f:id:Pin-Pon-Usagi:20210728084406p:plain

192角形

正192角形で、ようやく3.141と、小数点第三位まで確定!!

 

 

まとめ

テレビで見たπの求め方があまりにも分かりやすかったので自分でも計算してみましたが、実際計算してみると色々考えさせられる事が多かったです。自分の手を動かすことは大事だなあって思いました。

 

 

【2021年度版】はてなブログ無料版でグーグルアドセンス合格! 結局何をすれば進むのかが分かった!

 

はじめに

はてなブログを始めてひと月ほど、アドセンス広告に興味があり登録してみました。実ははてなブログで書いているもう一つのブログでGoogleアドセンスすでに合格しました!ただ、多くの方々が感じているように審査から合格確定までのプロセスが不明確なままなので、今回こちらのブログを実験台にしてそのあたりを明確にしたいと思います。手順ははてなブログで説明していますが、作業の意味や目的はほかのブログにも共通する内容なので参考にしてみてください。

アドセンス登録の流れ

作業は大きく分けて、以下の3ステップです。

  1. ブログの準備
  2. アドセンス申し込み
  3. 審査結果への対応

僕が実施した内容を説明します。

 

1.ブログの準備

アドセンスの審査を通過するためには、ブログ側には以下の2点が満たされていることが求められています。

  • プライバシーポリシーの設置
  • お問い合わせフォームの設置

それぞれ簡単に説明します。

 プライバシーポリシーの設置

ブログ訪問者が安心して利用できるように、個人情報保護方針をブログに設置します。手順は、

です。

 

プライバシーポリシーをaboutページに記入

管理 -> 設定 -> 基本設定  で、ブログ全体設定ページを表示し、このブログについて の右の方にあるaboutページ編集 をクリック、その中にプライバシーポリシーを書き込みます。書き込む文言はネット上にお手本が沢山あるので、親切な提供サイトから入手してください。僕もそうさせていただきました。

f:id:Pin-Pon-Usagi:20210620111754p:plain

プライバシーポリシーをaboutページ編集に設置

aboutページへのリンクをブログのトップページに作成

作成した問い合わせフォームへのリンクを、僕は問い合わせフォームをブログ画面の最下部中央に設置しました。設置方法は、管理 -> デザイン -> カスタマイズ(スパナマーク) -> フッタ から下記画面を開いて、赤枠のフッタ部分にhtmlコードで先ほど作成したプライバシーポリシーを書き込んだ、このブログについてページへのリンクを貼り付けます。 

 

<center><a href="https://pin-pon-usagi.hatenablog.com/about">プライバシーポリシー</a></center>

※赤色の部分は自分のページのアドレスに書き換えてください。 

 

f:id:Pin-Pon-Usagi:20210620145953p:plain

お問い合わせフォームのリンク作成

htmlコードを書き込んだら、設定を変更するボタンをクリックして設定を反映させます。そうすると、下の赤丸のようなプライバシーポリシーへのリンクが発生して、これをクリックすることで先ほどaboutページ編集で記入した内容をトップページから閲覧できるようになります。これで一つ目の課題であるプライバシーポリシーの設置は完了です。 

f:id:Pin-Pon-Usagi:20210620151927p:plain

プライバシーポリシーの設置状態

 


お問い合わせフォームの設置

googleアドセンスの登録条件として、ブログ運営者への問い合わせ先が明確であることが必要です。 問い合わせフォームはこちらのGoogle フォーム作成無料サービスで作りました。

docs.google.com

 

フォーム作成サービスで生成したhtmlコードをコピーしておいて、はてなブログで通常の記事を作成し、html編集に貼り付けると、下のようにはてなブログにお問い合わせフォームが記事として作成できます。作成日時を意図的1年以上前の2020年4月1日にしているのは、複数の記事が並んだ時に最新の記事として表示したくないためです。

f:id:Pin-Pon-Usagi:20210620113348p:plain

お問い合わせフォームを通常の記事として作成

 

 あとは、作成したお問い合わせフォームのアドレスにブログのトップページからアクセスできるように設定するだけです。僕は、サイドバーにお問い合わせフォームとプライバシーポリシーを追加しました。作り方を説明します。

 

あらかじめ、作成したお問い合わせフォームとプライバシーポリシーのアドレスをメモ帳などにコピーしておきます。

 

管理 -> デザイン -> カスタマイズ(スパナマーク) -> フッタ から下記画面を開いて、赤枠のモジュールの追加をクリックします。

f:id:Pin-Pon-Usagi:20210620160221p:plain

サイドバーにお問い合わせ先を設置するには、モジュールの追加をクリック

モジュールの追加で、リンクを選択し先に準備しておいたお問い合わせフォームとプライバシーポリシーのリンクを貼り付けます。

f:id:Pin-Pon-Usagi:20210620161155j:plain

モジュール内のリンクを編集して、プライバシーポリシーとお問い合わせフォームを追加

以上、記入完了したら適用ボタンをクリックしてモジュール追加画面を閉じ、変更を保存ボタンをクリックして設定を反映させます。

f:id:Pin-Pon-Usagi:20210620164933p:plain

サイドバーにお問い合わせフォームとプライバシーポリシーが追加されればOK

このようにサイドバーにプライバシーポリシーとお問合せフォームが追加されて、ブログのトップページから開くことができるようになります。以上で、お問い合わせフォームの設置も完了です。

 

2.アドセンスの申し込み

 Googleアドセンスの申し込みとして以下を実施しました。

  • Googleアカウントを作成する
  • AdSenseアカウントを開設する
  • お客様情報を入力する
  • 電話認証をする(自分の場合は不要でした)
  • サイトをアドセンスに紐づける

Googleアカウントの作成および、AdSenseアカウントの開設手順は多くのサイトに書かれていて、僕も特に迷うことはなかったので省略します。備忘録としてサイトをアドセンスに紐づける手順を書いておくので必要な方は参考にしてください。

 

サイトをアドセンスに紐づける

審査してもらいたいページを登録します。アドセンスのサイト -> サイトを追加をクリック。

 

f:id:Pin-Pon-Usagi:20210622214828p:plain

審査するサイトの追加

 

審査したいブログのトップページのアドレスをコピーします。自分の場合は、

https://pin-pon-usagi.hatenablog.com のように最後のスラッシュ/を外して入力しました。

f:id:Pin-Pon-Usagi:20210622215344p:plain

審査するブログのサイト(トップページ)を追加

 

 

サイトのアドレスを入力したら、保存して次へをクリック

f:id:Pin-Pon-Usagi:20210622221227p:plain

図1:審査用のAdSenseコードをコピーしてブログに貼り付ける

 

AdSenseコードが表示されるので、赤枠のコードをこぴーして審査してもらいたいブログに挿入します。はてなブログの場合、

管理 -> 設定 -> 詳細設定 -> headに要素を追加 の部分にコピーしたコードを貼り付けます。ページ最下部の変更ボタンを押して設定を保存します。申請用のコードをコピーした後に、アドセンス画面のサイトをクリックすると、下のような画面が表示され、申請サイトが審査対象となっていることが確認できます。こうなれば、あとは審査結果を待つだけです。 

f:id:Pin-Pon-Usagi:20210622222525p:plain

申請中

このまま待っても良いし、この段階で広告を貼り付けてもOKです。 

 

広告を貼っておく(審査後に実施してもOK)

承認待ち状態になったら、その間に広告を貼ります。この作業は承認が通ってから実施しても問題ありません。広告を貼っていない状態で承認が降りると、Googleから次のようなメールがきます。

f:id:Pin-Pon-Usagi:20210622223507p:plain

審査終了を通知するメール

自分は1回目の申請時にはこのメールが来た後に広告を貼り付けました。今回はこのメールを待たずに広告を貼り付けました。ここがポイントですが、アドセンス申請も、広告貼り付けも、はてなブログの場合、管理 -> 設定 -> 詳細設定 -> headに要素を追加 の部分にコードを貼り付けます。審査申し込みのコードを貼って、承認待ち状態になったら、審査申し込み用のコードの役割は終了です。次は広告貼り付けのために、同じ箇所に前のコードを消して、広告貼り付けのコードを貼り付けます。同じ箇所に時間差で異なるコードを貼り付けるこの作業が最大の難所であると言えるでしょう。

 

広告の貼り付け手順は、アドセンスの、広告 -> サマリー ->  コードの取得 をクリック

 

 

f:id:Pin-Pon-Usagi:20210622224402p:plain

aaa

 

貼り付けるコードが以下のように表示されるので、コードをコピーします。

f:id:Pin-Pon-Usagi:20210622224115p:plain

広告用のAdSenseコード

 

はてなブログで、管理 -> 設定 -> 詳細設定 -> headに要素を追加 の部分にコピーしたコードを貼り付けます(下記のコード1)。アドセンスは審査が全然進まないと聞きますが、多くの方がこの部分で混乱していると思います。

f:id:Pin-Pon-Usagi:20210622225929p:plain

広告用の貼り付けコード

 

はてなブログでは、アドセンス広告の貼り付けはサイトごとではなく、広告ユニットごとのコードを生成し、記事の上下に貼り付ける方法をとることで広告が正しく表示されるようになるようで、自分もそうしました。

この方法については、ネットで詳しく説明されているのでここでは割愛します。

 

 

結果報告

ふと気がつくとメールボックスに新着メールが・・・開けてみると

f:id:Pin-Pon-Usagi:20210622213715p:plain

知らないうちに通知メールが・・・あっという間だったな。

前日の朝に申請と広告貼り付けまで実施しておいて、翌日の朝の8:55に着信していたので1日で通過したことになります。

 

まとめ

とにかく混乱しがちなのは、同じ箇所に異なるコード(どちらも呼び名はAdSenseコード)の貼り付けを2回実施することです。ここさえクリアすれば問題なくアドセンス登録できると思います。

  • はてなブログでの貼り付け箇所は、管理 -> 設定 -> 詳細設定 -> headに要素を追加
  • アドセンス申請時には、審査用のAdSenseコードを貼る
  • 申請の承認待ち以降は、審査用のコードを消して、広告貼付けのAdSenseコードを貼る

 以上

【レシピ】ヤングコーンのヒゲを美味しく食べる!夏野菜と鳥肉のトマトソース炒め

近所のコンビニが八百屋みたいになってきた

 朝の散歩をしていたら、ヤングコーンがコンビニで売っていました! 近頃はコンビニが八百屋みたいになってきた気がするが、気のせいかな?スーパーの定番野菜に飽きていたので、勢いで購入。

f:id:Pin-Pon-Usagi:20210606114333j:plain

ヤングコーンが売っていた!!

ヤングコーンをそのまま食べてみた

数枚皮を残して、280度設定のトースターで8分焼いたものを朝からいただきました。最近、朝食は温野菜を食べるようにしています。我が家のトースターは温度調節が付いていて、280度で焼くとグラタンでも餅でもあっという間に焼けるので、とても気に入っています。

f:id:Pin-Pon-Usagi:20210606115042j:plain

オーブントースターで280度で8分焼いてみた(時間は適当です。窓掃除しなきゃ^^;)

 

ヤングコーンはひげが美味い!

焼き上がりはこんな感じです。茹でるよりも旨みが残ると思って焼きました。肝心の味ですが、ブロッコリーの味を少し薄くして、タケノコの歯応えと香りを足したようなような味です。岩塩とオリーブオイルで食べてみました。コーンの粒一つ一つからひげがビヨーンと伸びていて食べるか捨てるか迷いましたが、試しに食べてみました。

f:id:Pin-Pon-Usagi:20210606115741j:plain

ひげに岩塩とオリーブオイルかけて食べてみたら、美味い!

正直、本体のコーンよりもひげが美味い!ザクッと歯応えよくしかもコーンの甘味と旨みがたっぷり。若干青みを感じるこの味は、夏野菜の炒め物に加えたら間違いないと思い作ってみました。

 

ヤングコーンのひげを美味しく食べる!夏野菜と鳥肉のトマトソース炒め

【材料】2人分

  • ヤングコーン:3本
  • 鶏胸肉:少量(親子丼用にカットして売っている物を使いました)
  • ズッキーニ:1/2本(緑と黄色合わせて)
  • ピーマン:1個
  • スイートバジル:1本
  • トマトソース:大さじ3(カゴメのアンナマンマアラビアータがピリ辛で美味い)
  • 塩、胡椒、オリーブオイル

野菜は大きめにカット。ズッキーニは珍しく黄色を見つけたので試しに使ってみました。ヤングコーンのひげは、先端のチリチリで黒っぽいところは捨てましたが、残りは一緒に炒めます。スイートバジルが1本余っていたので、仕上げに加えてイタリアンっぽさを追加。

f:id:Pin-Pon-Usagi:20210606125549j:plain

夏野菜は大きめにカット。ヤングコーンのひげもたっぷり

 

材料はこんな感じ。カゴメのアンナマンマ、アラビアータは炒め物の仕上げによく使っています

f:id:Pin-Pon-Usagi:20210606125759j:plain

材料はこんな感じ。Anna mama のアラビアータが少し辛めでおすすめ

肉や魚を野菜を炒めるときは、

  • まず野菜のみをオリーブオイルで炒めて一旦盛り付け皿に取り出す
  • 同じフライパンで肉を炒める
  • 肉に火が通ったら取り出しておいた野菜を戻して味付け

の流れがおすすめです。肉と野菜を一緒に炒めると、肉に十分火が通った時には、野菜が炒めすぎでしんなりしてしまうからです。

f:id:Pin-Pon-Usagi:20210606130457j:plain

夏野菜は油と相性抜群!油を大量に吸うので、負けずにオリーブオイル投入!

オリーブオイルで野菜を炒めていると、ズッキーニやヤングコーンのひげが油をどんどん吸って炒めにくくなります。僕は、こんな時は遠慮なくオリーブオイルをドバドバ追加します。オリーブオイルだから大丈夫!のはず。

 

f:id:Pin-Pon-Usagi:20210606131350j:plain

ソースをからめて2、3分炒めて完成。パスタと絡めてもうまそう。

ソースを絡めて少し炒めたら完成。お皿に盛り付けて黒胡椒をかけました。

 

実食してみての感想

オリーブオイルたっぷりの夏野菜のトマトソース炒めは、味の濃い少し甘でシュワッと爽やかな微発泡赤ワインでいただきました。

f:id:Pin-Pon-Usagi:20210606131546j:plain

トマトソースの野菜炒めは、微発泡の赤ワインといただきました、うまい!

ヤングコーン自体は、青みがやや強めなので、もっとしっかり炒めるか、中華飯のような濃い味付けにしたほうがもっと美味しくなると思います。一方、ヤングコーンのひげは、青みも少なく歯応え、甘味とも申し分なし、他の夏野菜とも喧嘩することなく、美味でした。初めて食べてみた黄色いズッキーニですが、緑のズッキーニよりも少し甘味を感じました。ほんのわずかにカボチャっぽい甘味を感じます。

 

結論、ヤングコーンは油多めで濃いめの炒め物が最高!

翌日のランチに、前日に感じた改善点を生かして、味の濃い炒め物作ってみました。基本的には同じ作り方ですが、味付けを、めんつゆ+ごま油ベースにすることで中華飯っぽくしてみました。昼から飯をバクバクいただきました、満足^^)

みなさんも、今が旬の食材ヤングコーンを楽しんでみてはいかがでしょうか?

f:id:Pin-Pon-Usagi:20210606132636j:plain

おまけレシピ、豚バラと夏野菜のめんつゆ炒め

写真は、残り物のさつま揚げも入ってます

夏野菜と鳥肉のトマトソース炒め

【材料】2人分

  • ヤングコーン:3本
  • 豚バラ:少量
  • ズッキーニ:1/2本(緑と黄色合わせて)
  • ピーマン:1個
  • めんつゆ:大さじ1
  • 料理酒:大さじ1
  • 塩、胡椒、ごま油

 

 

この方法で出来た! M5STACKにMicroPythonファームウエアをMacBookAirからインストールする方法

 

背景

M5STACKをMicroPythonで開発するためのファームウエアをインストールする手順を備忘録としてまとめました。

このページで伝えたいこと

最低限の手間と時間で、Pythonを使ったM5STACKの開発が始められる事を目指しました。自身、ネット上のいくつかの方法を試しましたが、うまくいかないものがあまりに多いことに驚きました。同じような困りごとにぶつかっている人が、理屈はさておき前に進められるようにと思い残しました。 

ゴールイメージ

ゴールは、M5STACKとPCをUSBケーブルでつないで、パイソン対話モードでM5STACKを動かせること。今回はティスプレイに文字を表示するHello worldプログラム、すなわち

>>> from m5stack import lcd
>>> lcd.print('This is the goal!!')

 

と打ったら、この写真のようにディスプレイ画面に表示されることがゴールです。

f:id:Pin-Pon-Usagi:20210523152119j:plain

M5STACKをPythonでうごかすのがここでのゴール!

 

前提条件 

開発環境はMacBookAir M1 2020で、macOS Big Sur バージョン11.2.2 を使っています。 なお、M5STACKは Basicです。

Arduino IDEではなく、なぜMicroPythonなのか?

個人的にPythonが好きだからです 

M5STACKの開発環境といえば、Arduino IDEが標準的ですね

自分はArduino IDEも使いますが、ライブラリやトラブルシュート情報もネットに充実・・・

やりたいことを最小限の努力で実現するならArduinoをおすすめします

 

うまくいった方法(ここからがメイン) 

ここからは実際に、うまくいったファームウエアのインストール方法を紹介します。

 

早速ですが、自分が使ったファームウエアはここにあります。

github.com

 

ここのディレクトリにある、m5stack-20180516-v0.4.0.bin を使いました。

拡張メモリpsram無しバージョンで、最新の物を選択しました。

f:id:Pin-Pon-Usagi:20210523153122p:plain

使ったファームウエア

ファームウエア書き込みの流れ

ファームウエア書き込みの流れは、

  1. 拡張子.binのファームウェアをローカルにコピー
  2. esptoolを使ってM5STACKのフラッシュメモリデータを消去
  3. esptoolを使って新しいファームウエアをフラッシュメモリに書き込み
  4. 動作確認

順番に説明しますね。

 

1.ファームウエアファイルをローカルにコピー

Macのターミナルで作業したいフォルダに移動、

そのディレクトリでgitコマンドを使ってファームウエアの置いてあるディレクトリを丸ごとコピーしました。

 

usagi@usagi-mba work % git clone https://github.com/m5stack/M5Cloud
Cloning into 'M5Cloud'...
remote: Enumerating objects: 510, done.
remote: Total 510 (delta 0), reused 0 (delta 0), pack-reused 510
Receiving objects: 100% (510/510), 25.65 MiB | 17.66 MiB/s, done.
Resolving deltas: 100% (230/230), done.
usagi@usagi-mba work %

 

ここでは、ファームウエアが格納されている階層の2階層上のディレクトリ以下をまとめてコピーしています。ファームウエアが置いてある、もっと下位のフォルダでgit clone できないかと思って試しましたが、そんなリポジトリはないと言われて進みませんでした。

 

2.esptoolを使ってM5STACKのフラッシュメモリデータを消去

esptoolを使って、M5STACK内のフラッシュメモリを消去します。

esptoolが使える状態か、確認するには、ターミナルで下記のコマンドを実行します。

 

usagi@usagi-mba ~ % esptool.py version
esptool.py v3.0
3.0

 

バージョン情報が返ってきたら、OK。

command not found などエラーっぽいメッセージが返ってきたらなんらかの問題があります。esptoolをまだインストールしていないという方も含めて、自分が以前に実施して成功したこちらを真似してみてください。

pin-pon-usagi.hatenablog.com

 

フラッシュメモリの消去は以下のコマンドを使います

 

esptool.py --port /dev/tty.usbserial-0203ACAE erase_flash

 

ここで、/dev/tty.usbserial-0203ACAEが、M5STACKのデバイス名です。

この部分は使っているデバイスや環境によって異なるため、自身の環境で確認が必要です。

確認方法は次のように行ってください。

 

まず、M5STACKをUSB接続していない状態で、デバイス情報をlsコマンドで確認 

usagi@usagi-mba ~ % ls /dev/tty.*

/dev/tty.Bluetooth-Incoming-Port
/dev/tty.wlan-debug
/dev/tty.debug-console

 

つぎに、M5STACKをUSB接続している状態で、デバイス情報をlsコマンドで確認します

usagi@usagi-mba ~ % ls /dev/tty.*

/dev/tty.Bluetooth-Incoming-Port
/dev/tty.wlan-debug
/dev/tty.debug-console 
/dev/tty.usbserial-0203ACAE

 

一つ増えた。/dev/tty.usbserial-0203ACAEがM5STACKです

以下は、メモリ消去実施結果です。

 

usagi@usagi-mba OFF-LINE % esptool.py --port /dev/tty.usbserial-0203ACAE erase_flash
esptool.py v3.0
Serial port /dev/tty.usbserial-0203ACAE
Connecting.....
Detecting chip type... ESP32
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: b8:f0:09:c5:c5:10
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 25.5s
Hard resetting via RTS pin...
usagi@usagi-mba OFF-LINE %

 

Chip erase completed successfullyと表示されればOK!

 

3.esptoolを使って新しいファームウエアを書き込み

 

ターミナルでcd コマンドを使い、ファームウエアの置いてあるディレクトリまで移動します

 

usagi@usagi-mba work % cd M5Cloud/firmwares/OFF-LINE 

 

ls コマンドでファームウエアが表示されればOK!

usagi@usagi-mba OFF-LINE % ls 
m5stack-20180323-v0.3.8.bin
m5stack-20180516-v0.4.0.bin
m5stack-psram-20180419-v0.3.9.bin
m5stack-20180419-v0.3.9.bin
m5stack-psram-20180323-v0.3.8.bin
m5stack-psram-20180516-v0.4.0.bin

ファームウェアの書き込みは、フラッシュメモリ消去の時と同様に、esptoolをつかいます

書き込むファームウエアを選んで下記のコマンドを実行します

 

esptool.py --chip esp32 --port /dev/tty.usbserial-0203ACAE write_flash -z 0x1000 m5stack-20180516-v0.4.0.bin

 

/dev/tty.usbserial-0203ACAEの部分は、みなさんの環境によって異なるので、上の方の「2.esptoolを使ってM5STACKのフラッシュメモリデータを消去」を参考に確認してください。

 

書き込みを行うと以下のメッセージが流れます。

usagi@usagi-mba OFF-LINE % esptool.py --chip esp32 --port /dev/tty.usbserial-0203ACAE write_flash -z 0x1000 m5stack-20180516-v0.4.0.bin
esptool.py v3.0
Serial port /dev/tty.usbserial-0203ACAE
Connecting.......
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: b8:f0:09:c5:c5:10
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Compressed 1747296 bytes to 1119059...
Wrote 1747296 bytes (1119059 compressed) at 0x00001000 in 98.6 seconds (effective 141.8 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
usagi@usagi-mba OFF-LINE %

 

うまくいくとM5STACKのディスプレイが、プツッという音とともに光ります。

f:id:Pin-Pon-Usagi:20210523164109j:plain

プッ・・という音とともに突然ディスプレイが光ります(ビックリします)。

 この状態になれば、ファームウエアの書き込みは完了です!

 

4.動作確認

USB接続した状態で、screenコマンドでM5STACKにアクセスします。

screenコマンドに続いて、M5STACKのデバイス名を引数に指定し、通信速度は115200とします 

 

usagi@usagi-mba work % screen /dev/tty.usbserial-0203ACAE 115200

 

コマンド実行すると、下記のようにはじめは真っ白な画面が出ますが、リターンキーを押すとプロンプトが表示されて、Pythonの対話モードにはいります。 

 

  • まずはターミナルでscreenコマンド入力

f:id:Pin-Pon-Usagi:20210524082806p:plain

ターミナルに、screenコマンドを入力しM5STACKとUSB接続

 

  • 直後は真っ白な画面が表示されます

f:id:Pin-Pon-Usagi:20210524082915p:plain

はじめは真っ白な画面だが、これで大丈夫!
  • リターンキーを押すと、プロンプト>>>が表示され、Pythonの対話モード開始

f:id:Pin-Pon-Usagi:20210524082958p:plain

リターンキーを押すと、Pythonの対話モードに入り、プロンプト>>>が表示!!


動作確認は、対話モードでおこないます。
対話モードは、コマンド入力すると応答が即座に得られます。

たとえば、以下のような計算を行うと答えが表示されます。

 

>>> 1+1
2
>>>

 

以下はm5stackのlcdに文字を表示するコマンドで、一行づつ実行します。

m5stackパッケージから、lcdモジュールをインポート

m5stackのlcd(液晶ディスプレイ)をクリア

m5stackのlcdに文字を表示

>>> from m5stack import lcd
>>> lcd.clear()
>>> lcd.print('This is the goal!')
>>>

 

f:id:Pin-Pon-Usagi:20210523152119j:plain

LCDに入力した文字が表示されればOK.

以上が、M5STACKにMicroPythonファームウエアを、MacBookAirからインストールする方法でした。

この記事が、誰かのお役に立つことを願っています^^)

 

 

 

 

 

【Pythonネタ】オンライン英会話の人気講師の空き状況をスマホに通知するアプリ作ったら、感謝された話

 

どうも、暇人です

プログラミング言語で最近注目のPython(パイソン)で何か作りたくなったので、

オンライン英会話の人気講師に空きが出たらLineでスマホに通知してくれるアプリを作ってみました。

 

コロナで英会話ブーム?

小学生の息子がオンライン英会話を保育園の頃からやっています

日本語での会話もビミョーな園児が英語って意味あるのか? 

と見ていましたが、学校の不平不満を先生に話して憂さ晴らしするほど上達!!

自分もやっておけばよかった・・・失われた5年間。

 

人気講師はすぐに埋まってしまう!!

当然ですが、英会話の講師にも当たりハズレがあります。

人気の講師は受付を開始すると、数分で空きが埋まってしまうほどです。

 

いつ空きが出るかわからない講師のスケジュールを、ずっとスマホでチェックしている

細君を見て、空きが出たら通知してくれるアプリがあれば喜ばれるのではと思い、素人ながらアプリ作ってみることにしました。

 

なぜPythonで作るのか?

流行りのプログラミング言語が使えるようになりたかったからです。

 

どんなアプリを作ったのか? 

オンライン英会話のHPは、講師ごとに空き時間を示す時間割表ページがあります。

レッスンしたい日時が空いていたら、クリックして予約します。

 

作ったのは、レッスンを予約したい先生のスケジュールページを時々見に行って、予約できる時間が見つかったら、Lineでスマホに送るという単純なアプリです。

 

どんな感じで通知されるか?

お目当ての先生のスケジュールに空きが出ると、こんな感じのLineが飛んできます・・ 

f:id:Pin-Pon-Usagi:20210521103233p:plain

空き時間をLineで通知、Line notifyという無料サービス機能を使っています

 

空き情報が飛んでくるので、あとは大急ぎで講師のHPを開いてライバルよりも早くクリックするだけです。

 

この写真からもお分かりかと思いますが、人気の先生は1分くらいで空きがなくなってしまいます・・・みんなどんな方法で空きを見つけているのかな?

 

とにかくお金をかけずに構築

長期に渡って講師のHPを定期的にチェックする必要があるので、

昼夜を問わずプログラムを走らせておく必要があります。

 

プログラムを、自分のパソコン上でずっと走らせておくわけにもいかないので、

一年中休まず動かすサーバーコンピュータを準備して、その上でプログラムを走らせました。

 

サーバーにはラズパイ4を使いました 

余っていたラズパイ4で、フリーソフトApache HTTP Serverを動かし、

Apacheサーバー上で自作したPythonプログラムを動かしました。

 

ラズパイ上でPythonプログラムが定期的に実行されて、お目当ての講師のHPをチェックします。空きが見つかると、Line Nofityでスマホに通知します。

f:id:Pin-Pon-Usagi:20210520174432j:plain

ラズパイ4 ハードは一年以上付けっ放しだが、今も元気に稼働中 

 ラズパイは長期間、動かしっぱなしにするので、一応ファン付きのケースと電源のセットを買いました。

 

 

 構造がよく考えられており、組み立てやすくて非常に満足しています。この記事を書いている今はラズパイzeroとかpicoが主流なのであまり需要ないかもしれませんが、サーバーとして使うのであれば、ラズパイ4はまだまだ現役なので、念の為リンク貼っておきますね。

 

  

Webサービスからの通知をLINEで受信

Webサービスからの通知をLINEで受信する無料のサービス、Line Notiryを使っています。

通常のラインメッセージと同じように、ピロリローンとスマホに通知が来ます。

 

難しかったところ

Pythonの売りは、

やりたいことを実現してくれる高機能で洗練されたモジュールが無償で使えること

だと思います。

 

今回のアプリのキモとなる部分は、オンライン英会話のHPのソースコードから自分に必要な情報を効率よく抽出する、BeautifulSoupと呼ばれるスクレイピングモジュールです。

 

実際、数行のコードでhtml内の必要な情報をスプレイピング(集める)してくれます。ただし、これまでHTMLとかxmlといったホームページのソースコード分析をしたことなかったので、htmlソースのどの部分に情報が入っているかを自力で調べるのに時間がかかりました。

 

1年以上運用しての感想

過去最大の感謝を細君からいただきました。

これ、売れるかな?と聞いたところ、うちの子がオンライン英会話卒業したらOKとの反応でした、・・・納得。

ラズパイの消費電力から計算すると、電気代は月あたり100円程度。

年間1200円・・・まあ、レンタルサーバーよりは安いし、何よりラズパイが生活の役に立っているのが嬉しいので良いと思いました。

 

 

 

 

漢方薬【五苓散】で梅雨のお天気病を乗り切る! めまい、二日酔い対策ににも! 

どうも、「お天気病」です

みなさんも、お天気病ですか?

 

これから梅雨を迎えますが、自分はこの季節が苦手でした・・・

お天気病に悩まされていたからです。

 

お天気病の症状

僕は雨降り前に、肩や首がコリ始めて、雨が降る直前には頭痛が酷くなります

雨がドバドバふり始めると、肩凝りはスッと消えて行きます

 

湿気が多く、少し気温の下がった日が特にダメ、

普段はなんともないバスも、乗り物酔いしちゃいます、弱・・・

f:id:Pin-Pon-Usagi:20210519225729p:plain

雨が降る前はフラフラ・・・

こんな弱っちい体質ですが、数年前に出会った漢方薬「五苓散」でだいぶ楽になりました。

 

五苓散(ゴレイサン)との出会い

ある年の秋、だるくてなかなか起きられませんでした。

無理矢理起きると、ふわふわっとめまいが・・・俺どうしちゃったの?

 

ビビりなので、すぐに病院に行くと、血圧が下がっているとの診断

そこで出されたのが五苓散でした。

 

f:id:Pin-Pon-Usagi:20210519231431j:plain

ツムラの五苓散 台湾料理を彷彿とさせる複雑な味


 

飲み方と飲み始めのタイミング(オレ流)

実はこれ、先生に教えてもらった裏ワザですが、初めは2回分一気に飲みます。

漢方薬は効き方がやんわりなので、とりあえず大量に体に吸収させる方法

1日のトータル量を守っていれば問題ないとの事

 

確かに子供がインフルエンザになった時、体内の熱を放出する目的で、やはり漢方薬麻黄湯(マオウトウ)を処方されました。

その時も、飲み始めは、汗がだらだら出るまでどんどん飲ませるように、と指導されました。

 

飲むタイミングは、首回りにこりを感じて頭痛がくる!

と感じた時に五苓散を飲みます。

 

五苓散の効果

五苓散を飲むと驚くほど、おしっこが出ます

体内の不要な水分を排出する作用があるそうで、妊婦さんのむくみ治療にも使われるそうです。

 

顔のむくみもスッキリするため、五苓散を飲むと目がぱっちり大きく開きます。

バス酔いや頭痛にも陥りにくくなります。

 

もう一つの効果

二日酔いに効くそうです。

先ほど、五苓散2個飲みの話をしましたが、これを教えてくれた先生は二日酔いの日には、五苓散2個飲みするそうです。

 

自分はビールを飲みすぎてお腹チャプチャプの日には寝る前に五苓散飲んで寝ます。

おかげで朝はスッキリ起きられます。

 

五苓散の入手方法

薬局で買えますよ〜

 

ただし、お値段がそれなりにするので、面倒でも内科の病院に行って処方箋書いてもらうことをお勧めします。

 

自分は毎年この季節になると、行きつけの医院に出かけて、

「いつもの」と、まるで行きつけのバーのようなノリで薬をもらいに行きます。

 

湿気と寒さには弱いじぶんですが、夏場の暑さにはめっぽう強く、エアコンもほとんどかけずに過ごします。

料理もタイ料理など、南国の食べ物が性に合っているみたいで、あちらの血が流れているのかも・・・

 

みなさんの中に、同じ症状で困っている方がいれば、

五苓散、一度試してみることをオススメしますよ^^)

 

 

 

【悲報】スーパードライのジョッキ缶!!を飲んでみたが・・・

派手なパッケージのチューハイ・・・

と思ったら、スーパードライ様でした。

 

f:id:Pin-Pon-Usagi:20210517214922j:plain

アサヒスーパードライにジョッキタイプが!!

売場に、お一人様3本までとか書いてあったので何事?と思ったら、缶の上面が缶詰めみたくフルオープンしてジョッキに変身する、スーパードライのジョッキ缶だった!!

 

価格は普通の缶ビールと同じ・・・と思ったけど▲10mlで、340ml

 

晩酌の準備

昨日、近所の釣り人に頂いたイサキを塩焼きにしてジョッキ風ビールで初夏の味覚を楽しむことにしました。

f:id:Pin-Pon-Usagi:20210517220551j:plain

近所の方に頂いたでかいイサキ 今日は塩焼きでいただきます

我が家のキッチン自慢はいわゆる魚焼きグリルが付いていて、いつでも焼き魚が楽しめることです。

 

パナソニックの人気システムキッチン、リビングステーションの中の魚焼きグリル付きバージョンですが、魚焼きグリルのインストールは家を建てるときに強く主張して勝ち取りました。

 

ちなみにこちらが、魚焼きグリルなしバージョン、いやぁーオシャレ

f:id:Pin-Pon-Usagi:20210517220330j:plain

Panasonic リビングステーション 三連コンロ

なお、イサキは3尾いただいて、昨日のうちに2尾を↓こんな感じでいただきました。

pin-pon-usagi.hatenablog.com

 

珍しいつぶ貝を勢いで購入

夕方のスーパー、鮮魚店は絶賛値引き中!!

珍しくつぶ貝を見つけたのでもビールのつまみに購入、とりあえず茹でてみた

f:id:Pin-Pon-Usagi:20210517215526j:plain

半額になっていたつぶ貝(4つ)

 

つぶ貝は、炒め物の具に・・・

茹でたつぶ貝をどう食べようかと考えましたが、同時進行で作っていた鶏肉とズッキーニの炒め物に、放り込んで事なきを得ました(結局家族には、これが一番人気でした)

 

f:id:Pin-Pon-Usagi:20210517221348j:plain

鳥肉とつぶ貝とズッキーニとキノコのペペロンチーノ炒め、ニンニクと鷹の爪たっぷり

つまみ(家族の夕飯のおかず)は完成

あとはジョッキ缶ビールを・・・

 

事件発生!!

そんなに激しく振った記憶はありませんでした

缶のプルタブを開けた瞬間、パンッと軽快なサウンドとともにビールが流出!!

f:id:Pin-Pon-Usagi:20210517221941j:plain

この躍動感!! ビールが湧き水のように溢れ出す、何とかしてくれ・・・

 

確かにジョッキビールのような、リアルな泡、もったいない・・・

 

復旧作業に5分くらい使ったものの、気を取り直してジョッキ缶をいただく

感想としてはジョッキ未満、缶ビール以上(割とジョッキ寄り)、うまい!!

 

f:id:Pin-Pon-Usagi:20210517222416j:plain

ジョッキビールの気分は味わえます。

うまいですよスーパードライだし

でも、爆発のショックがデカすぎて・・・

f:id:Pin-Pon-Usagi:20210517230326j:plain

落ち着いたら、ようやく注意書きが見えてきた

缶を眺めると、12℃以上は吹きこぼれ注意書きが、もう遅いよ・・・

 

結局ジョッキ缶はありなのか?

ありです。

若い方は知らないと思いますが、昔の缶ビールは瓶ビール以上のうまさでした。

 

昔の缶ビールは、リングプルを開封後に缶から完全に取り外す形状でした。

そのため飲むときは、飲み口からビールがドバドバと舌にぶつかって、旨みをダイレクトにエンジョイできました。

 

ポイ捨てが問題から、リングプルが取り外しできない形状になったため、缶ビールは不味くなりました。

 

缶の内側に折り畳まれたふたの部分がビールの流れを妨げ、不快に泡立てられたビールが舌に力なく当たるためなんとなく酸っぱい味がする、これが僕の感想です。

 

あの美味い缶ビール、もう一度味わえたらなぁ・・・・