« 2023年2月 | トップページ | 2023年4月 »

2023.03.29

目次を自動生成するJavaScriptを導入してみた!

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

今週に入り、今更ながら記事に目次をつけることにしました。

JavaScript を使って目次を自動生成している関係で対象となるのは PC 版のブログだけで、モバイル版の方は変わらず目次はありません。

ココログだと HTML や CSS を変更できるプロ版の契約でもモバイル版の HTML は変更できないため、何とかしたくても制限が多いのです…

実は、18年続いているブログのため、ブログの引っ越しも大変…(;^_^A

余談が長くなったので本題に入りましょう。

目次

目次を生成する JavaScript

参考にさせていただいたのは、CookBook というサイトの記事「見出しから目次を自動で作成」です。

サイトの右側にある目次の「プログラムの完成」のところにある JavaScript のプログラムをベースにしました。

導入時に上記サイトの JavaScript の40行目が間違っていることに気付いたので問い合わせメールを使って連絡させていただいたところ、CookBook の管理者さんがすぐに修正してくれました。(*^^*)

プログラムの解説も上の記事内に書かれており、とても分かりやすかったです。

かげさんは、解説をもとにコメント分を追加し、エラーをキャッチした時にどの関数でエラーが発生したか alert メッセージを出すように修正しました。

今後のメンテナンスをしやすくするためです。

エラーをキャッチした時 alert メッセージを表示するようにしたのは、参考にしたプログラムで40行目が間違っていたため、目次が自動生成されなかったためです(;^_^A

逆にこの alert メッセージを入れたことで、目次挿入場所となる部分の HTML が記載されていないときにもエラーをキャッチしてメッセージが表示されてしまうことになりました。

このため、目次挿入場所となる部分の HTML が記載されていないときにエラーが発生しなくなるように if 文を1つ追加しました。

では、うちのブログでの導入例を書いていきます。

目次挿入場所となる部分の HTML

<div class="contents-toc" id="toc"><span class="box-title">目次</span></div>

目次を入れたいところに、上記のHTMLを埋め込む。

この記述がないと目次は生成されない。

目次に関する CSS

/* ◆記事の目次 */
.contents-toc {
position: relative;
margin: 2em 0;
padding: 25px 10px 7px;
border: solid 2px #72CCF4;
}
.contents-toc .box-title {
position: absolute;
display: inline-block;
top: -2px;
left: -2px;
padding: 0 9px;
height: 25px;
line-height: 25px;
font-size: 17px;
background: #72CCF4;
color: #FFFFFF;
font-weight: bold;
}

目次部分のスタイルシートは、サルワカくんのサイトの「【CSS】おしゃれなボックスデザイン(囲み枠)のサンプル30」を参考にしました。

サルワカくんのサイトは、以前「CSS を決めるときに参考にしているサイト「サルワカくん」と Web アイコンフォント FontAwesome」という記事でも紹介しています。

HTML の body 部最後に導入した JavaScript


先にも書いたように参考にした変更したのは、 下記の通り

  • コメントの追加
  • 関数の最初でfuncnameという変数に関数名を格納
  • エラーをキャッチしたところで「funname:エラー内容」という Alert メッセージを表示するようにした
  • 83行目の if 文を追加し、目次を挿入する場所の html がなかった時にエラーにならないようにする

特に83行目の if 文は、重要です。

これがないと、既存のブログ記事を開くたびにエラーになるんで。

うちみたいに 2000 を超える記事がある状態でこの JavaScript を導入すると、html が埋め込まれていない記事が大半なので、大変なことになる…(;^_^A

具体的には、エラーが出ないページを探す=ウォーリーを探せ みたいな感じになっちゃう(笑)

まとめ

この記事にある html、CSS、JavaScript を使うと今まで目次がなかった記事でも目次を自動生成できるようになります。

ただし、一通り、ブログの html を読み込んでから JavaScript が動くので、ページを開いたときに目次生成されるまで若干タイムラグがあるという難点もあります。

また、最初に書いたように JavaScript を使って目次を自動生成している関係で対象となるのは PC 版のブログだけで、モバイル版の方は変わらず目次はありません。

ココログだと HTML や CSS を変更できるプロ版の契約でもモバイル版の HTML は変更できないため、何とかしたくても制限が多いためです…

それでも目次がないより、あった方が良いと思ったので実装してみました。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2023.03.28

Raspberry Pi Pico に標準搭載の温度センサーで温度を取得してみたが、精度が悪すぎじゃなかろうか

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Raspberry Pi Pico には温度センサーが標準で付いている。

このため、温度取得のプログラムを組めば、プログラム開発した PC 周辺の温度が取得できるんじゃないかと思っていた。

そんな時期もありました…

Raspberry Pi Pico で取得する温度が、実際の温度と大分違うんだが…(´・ω・`)
何か違うのかなぁ?

目次

参考にしたサイト

【Raspberry Pi Pico】温度センサーをMicroPythonで読み取る方法」のプログラム通りのものなんだが・・・(´・ω・`)

実際のプログラムはこんな感じ

import machine
import utime
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

while True:
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706)/0.001721
print(temperature)
utime.sleep(1)

このプログラム自体は、Raspberry Pi の GitHub で公開されているサンプルプログラム temperature.py と同じなのでプログラムが間違っているわけではなさそうだ。

SwitchBot 温湿度計やアナログの温度計と大分違う値になってる

SwitchBot 温湿度計の示す温度は27.0℃。
アナログの温度計のしめす温度も27.0℃。

そして、Raspberry Pi Pico の示す温度が22.36296…

Raspberry Pi Pico の温度センサーの精度がどのくらいかわからないけど、さすがに5℃の差はおかしいんじゃないだろうか?

精度の問題で、しばらくしたら落ち着くかな?と思って1日放置してみたが、5℃の違いは変わらず…(´・ω・`)

プログラムに解説コメントを付け加えてみたら何か分かるかな?

ついでに、思ったことも書いていくよ。(*^^*)

Raspberry Pi Pico の内蔵温度センサの値取得のプログラム解説コメント付き

import machine
import utime

# 温度センサが接続されている4つ目のADC(アナログデジタルコンバータ)の値を取得
sensor_temp = machine.ADC(4)

# ADCの最大電圧3.3Vを16bit(2の16乗である65536、0スタートの値のため、-1して65535)で割って、
# 16bitの 1 目盛りのあたりの電圧(変換係数)を計算( 約 0.00005V)
conversion_factor = 3.3 / (65535)

while True:

# センサから取得した値(0~65535) を16bitの値に変換係数をかけて電圧値に変換
reading = sensor_temp.read_u16() * conversion_factor

# 温度計算
# ・センサは27℃(0.706V)を基準にしている
# ・1℃に付き0.001721V変化する
# 27℃から温度変化量(温度センサの数値から基準値である0.706を引いた値に1℃ごと電圧変化量が何℃分か計算した値)を引いて現在温度を計算
temperature = 27 - (reading - 0.706)/0.001721

print(temperature)
utime.sleep(2)

理屈が分かってみると

センサーから取得された値を温度に変換する計算式は正しいっぽい。

(公式で公開されているプログラムだから正しいんだろうが…)

ということは、Raspberry Pi Pico 内蔵の温度センサーは、標準の実装のままだと、もともとかなりの誤差が生じるか、何か値を補正する処置が必要ってことなんだろう。

つまり、Raspberry Pi Pico 内蔵の温度センサーから値を取得するより、別途環境センサーをつけて温度を取得したほうが精度が良さそう。

正直、これだと Raspberry Pi Pico 単体でできることって「単色 LED による Lチカ」くらいなんで、かなり微妙な気がする。

以前「Raspberry Pi Pico の初期設定(その1)」に書いたように、Raspberry Pi Pico には標準では無線通信( Wi-Fi や Bluetooth )の機能がないため、IoT(モノのインターネット)に向かない上、値を表示するディスプレイも無いのでセンサーを付けたとしても、センサーの値を表現する方法も「単色 LED でできる表現」だけだからだ。

単色 LED でできる表現

単色 LED で表現できることは、かなり限られていると思う。

  • LEDの消灯
  • LEDの点灯

この2つに加えて良いところ、

  • LEDの点滅速度(速い点滅)
  • LEDの点滅速度(遅い点滅)

このあたりだろう。

つまり、最大でも4つの状態を表すのが限界なんじゃなかろうか?

単色でなく RGB 指定可能な LED であれば、色も加えて「色数 x 4つの状態」でかなりの状態を表現ができるんだけどね。(例えば、 Nature Remo や Nature Remo E lite は、RGB LED のおかげで、点滅状態により、いろいろな状態が分かるようになっている

結論

  • Raspberry Pi Pico は、単体の電子工作デバイスとしてかなり微妙。
  • 単体では通信機能がないため、IoT(モノのインターネット)には向かない。
  • 標準で付いている温度センサーの取得値も誤差がありすぎて、使い物にならない。
  • 単色 LED で表現できる状態が4種類までで、他に単体での出力機能がない。

PC に接続してればデバッグ用のUSBシリアルポートの printf ができるけど、PC に繋いでいないと使えないし…。

何か外付けでつなぐにしてもピンヘッダが必要になる。

ピンヘッダ付きの Raspberry Pi Pico が 990 円であり、それに接続する外付け機器が追加で必要になってくる。

最初から Wi-Fi や BLE が使えて GPIO ピンもあり、Grove互換インターフェースもあり、プログラム可能なボタンと RGB LED を持つ M5Atom Lite が 1,353円なのことを考えると(400円で外付けできるものが限られていることから)電子工作用デバイスとしては、Raspberry Pi Pico は、コストパフォーマンスがかなり微妙な気がする。

もっとも printf ができるから MicroPython の学習用デバイスとしては、良いかなぁくらいだと思う。

ただし、ピンヘッダをつけて、外付けで使えるものをいろいろ揃ってしまえば、使い道はあるんじゃないかとは思う。

実際、かげさんも「Groveスターターキット(Raspberry Pi Pico用)」というのを買っていたりする。かげさんが購入した頃より、値上がりしているが…

これについては、別の記事に書こうと思う。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2023.03.26

はんだ付けで Raspberry Pi Pico にピンヘッダとリセットボタン:Captain Resetti (Pico Reset Button) をつけよう(はんだ付け講座動画あり)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Raspberry Pi Pico は単体価格が安いのですが、購入後に何かちょっとしたことをしたい時に割と困るのが、ボタンがBOOTSELしかない、ディスプレイがないこと。

ボタンを押したら何かする、条件を満たした時に何かを表示するといったことができません。

そういったことをしたい場合、ピンヘッダを使ってブレッドボード経由でボタンなどのユーザインタフェースをつけたり、ディスプレイを付けたりする必要があります。

この記事では、 Raspberry Pi Pico にピンヘッダをはんだ付けし、リセットボタン:Captain Resetti (Pico Reset Button) もはんだ付けしています。

目次

Raspberry Pi Pico とピンヘッダ

かげさんの購入当時はピンヘッダ実装版がなかった。

でも、今だとピンヘッダが最初からついている Raspberry Pi Pico も売っているので、ピンヘッダが必要な場合、そちらを購入するのがお手軽な方法です。

他には、Raspberry Pi Pico のピンヘッダをはんだ付けする方法があります。

この記事のメインの内容ですね。

余談ですが、Raspberry Pi Zero だと専用のハンマーを使うとはんだ付けせずにピンヘッダをつけられます。しかし、Pico にはハンマーで叩いてピンヘッダをつけるキットは無いんですよね…(´・ω・`)

かげさんが購入した当時は、Raspberry Pi Pico が550円

ピンヘッダ付きが出てから金額を見ると990円。

かげさんが購入したところでは40ピンのピンヘッダ10本セットが385円。つまり1本38.5円。

Raspberry Pi Pico のピンヘッダは、デバッグ端子除くと20ピンが2つ必要 = 40ピン1本を半分に割ればゲットできます。

つまり、ハンダ付を気にしなければ、550+38.5円で589円で、はんだ付けの料金が400円という計算

かなり割高と感じたのでした…(´・ω・`)

まずはピンヘッダを用意

先にも書いたように Raspberry Pi Pico のピンヘッダは、20ピンが2つ必要です。
デバッグ端子も付けるなら、そちらは3ピンが必要です。

かげさんは、20ピンではなく下記の40ピン10個入りのものを購入しました。



製品名:ピンヘッダー
ピンピッチ:2.54 mm
材質:プラスチック、金属
カラー:ブラック、シルバートーン
20 x 40P単一列 ピンヘッダーストリップ

40ピンも真ん中で2つに割れば、20ピンになるからです。
3ピンだって割れば作れます。ニッパーがなくても、爪で割れます
他のピン数のだって40ピンのなら作れます。

純粋に Raspberry Pi Pico 分だけで良い場合は、スイッチサイエンスでは「Raspberry Pi Pico ピンヘッダキット」というのも売っています。

はんだ付けは敷居が高い?

はんだごてがある場合は、はんだ付けすれば良いだけです。

かげさんの場合、中学生の時に「はんだごて」を作る授業があったので、はんだごては既に持っていました。

ただ、久々すぎるのと、はんだ付けのコツとかあるのかな?と思って Youtube で動画を探しました。

2分でハンダ付け講座 | Raspberry Pi Picoにピンヘッダをハンダ付け超入門

実際にやってみたら、こんな感じになった。

久々すぎて、やってるときは緊張して手がプルプルしてたのは、ここだけの秘密だ(笑)

今回はデバッグ端子は、つけませんでしたが、別売りのリセットボタンをつけてます。

参考情報:デバッグ端子をつける場所は下図の赤枠の部分です。

Photo_20230326223901

Captain Resetti

Raspberry Pi Pico の接続の時、BOOTSELボタンを押しっぱなしで USB ケーブルをつなぐのが辛い。

そんな時に便利なのが、Raspberry Pi Pico に付けるリセットボタン「 Captain Resetti (Pico Reset Button)」です。

これがあると普通に USB 接続してから BOOTLSEL ボタンを押しながらリセットボタンを押すだけで良いので楽ちんです。

海外の PIMORONI で売っている Pico のリセットボタン。

取り付けた画像がコチラ。赤枠のところがリセットボタンです。

Captain-resetti

購入時のURLはコチラ ⇒ https://shop.pimoroni.com/products/captain-resetti-pico-reset-button

Pico の GNDと RUN(物理ピン28と30)の間に Captain Resetti をはんだ付けするだけです。

赤枠の下側の「はんだ」が盛り上がっているところが28~30ピンです。

購入段階の難点は、海外サイトなので住所の入力を日本の住所の逆順で入力するところでしょうか。

そこさえ気をつければ、そんなに難しい買い物じゃありません。

英語の住所入力が不安ならコチラのリンク ⇒君に届け」というサイトで日本語住所を英語住所に変換するのも良いですよ♪

ここまではOKだ



MCU(マイコン):RP2040
RAM:256KB SRAM
電源:1.8V~5.5V
サイズ:21×51.3×3.9mm 約3g
動作環境条件:-20℃~85℃(70℃以下を推奨)
温度センサ搭載


ヘッダー ハンダ付け済み Raspberry Pi Pico
 このエントリーをはてなブックマークに追加

| |コメント (0)

2023.03.25

Raspberry Pi Pico の初期設定から L チカまで

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Raspberry Pi Pico を購入しようという記事「IoTで快適空間を作ろう!(温度管理 検討編)」を書いたものの、その後のセットアップしたりした時の記事を書いていませんでした。

Raspberry Pi Pico の紹介から、初期設定、L チカプログラムの解説までをまとめています。

2022年05月に書いた記事をベースにまとめているので、一部2022年の記述が混ざっています。

目次

Raspberry Pi Pico とは



>MCU(マイコン):RP2040
RAM:256KB SRAM
電源:1.8V~5.5V
サイズ:21×51.3×3.9mm 約3g
動作環境条件:-20℃~85℃(70℃以下を推奨)
温度センサ搭載

名刺サイズのパソコンとして「Raspberry Pi」というシリーズがあります。

2023/03/25現在、半導体不足などの関係であまり出回っていませんが、
初代から数えて第4世代の Raspberry Pi 4 が出ています。
(初代に近い性能でフリスクサイズの Raspberry Pi ZeroRaspberry Pi 400というキーボードタイプのもあります)

(参考)
初代の Raspberry Pi を購入した時(2013/05/25)に書いた記事はコチラです。
Raspberry Piをゲット

Raspberry Pi という名前から同じシリーズに感じますがRaspberry Pi シリーズと Raspberry Pi Pico は別物です。

販売してるところは同じなので Raspberry Pi というブランド名がついているってところでしょうか。

サイズ感はこんな感じで小さいです。まさにピコって感じ。

Raspberrypipicosize

Raspberry Pi シリーズとの大きな違いは、OS 上で動くかどうかです。

Raspberry Pi は「パソコン」なので OS(オペレーティングシステム) をセットアップして、それの上にソフトを入れて使います。後からいろんな用途に活用できる完成されたコンピュータのイメージです。

これに対して Raspberry Pi Pico は「マイコン(マイクロコントローラ/マイクロコンピュータ)」なので、OS はなく、電子機器の制御用に最適化されたコンピュータです。

制御用にプログラムを組み込んで使います。プログラムを組み込んだ部品みたいなイメージです。

かげさんが思うに、 Raspberry Pi Pico は、いろいろあるマイコンの中でも IoT にはあまり向いていないです。(後から発売された  Raspberry Pi Pico W だと向いていると思う)

なぜかというと、 Raspberry Pi Pico では無線通信( Wi-Fi や Bluetooth など)がそのままでは使えないためです。

この点は、SONY から出ている SPRESENSE(スプレセンス) も同様です。

どちらも後付けで Wi-Fi や Bluetooth などが使えるですが、Arduiono や M5Stack 系統や ESP32 が最初から使える機器の方が IoT には向いているように思います。

Raspberry Pi Pico は、向いていなくて Raspberry Pi Pico W は向いていると思うのは、W はワイヤレス通信(2.4GHz 無線LAN 802.11n)対応だからです。

IoT (Internet of Things:モノのインターネット)は、インターネットにつながる=何らかの通信ができることが柱の1つ。

なので、センサーとして使うことができたとしても収集した情報をどこにも送れないと、データ活用が難しいと思うのです。

後付けじゃないと「通信機能」や「画面」を使えないというのが、導入上のデメリットですね。

Raspberry Pi Pico は、なんといっても安さが売りなんで手を出しやすいというメリットはあります。

かげさんが購入した時は、スイッチサイエンスで550円。今は値上がりしていますが、それでも他のマイコンより安い

Python の学習には向いているんじゃないかと思います。

550円の割に「緑の LED 」や「温度センサー」がついているのも良い点だと思います。

ちなみにかげさんの Raspberry Pi Pico の購入動機は、PC 起動中の PC 周辺の温度が知りたかったためです。

夏の暑い時期の PC 周辺の空気を循環させる時の指標に使えるかな?と思ったのです。

PC 起動中という条件だったのでUSBに直刺しで温度が分かれば良かったので丁度良かった。安価な温度センサーとして購入しました。

本格的に IoT 系の何かをする場合、ピンヘッダをはんだ付けするか、ピンヘッダ付きのを Raspberry Pi Pico を購入した方が良いでしょう。

初期設定で用意するもの

  • 作業用 PC ( Windows, Mac, Linux, Raspberry Pi Picoじゃない Raspberry Pi などいずれか)
  • Raspberry Pi Pico
  • PC と Raspberry Pi Pico を接続する USB ケーブル( Raspberry Pi Pico 側は、micro B )

Micro Python のファームウェアをセットアップ

今回は、開発言語として Micro Python を使います。かげさんは、まだやったことがないけど、 C / C++ が使えるように設定することもできます。

後述の Micro Python の開発環境 Thonny にも Raspberry Pi Pico のファームウェアをセットアップする機能があるのですが、うまくセットアップできなかったので、かげさんは、これから紹介する方法でセットアップしました。

下記のURLに移動します。
https://www.raspberrypi.com/documentation/microcontrollers/micropython.html

MicroPythonを使うためのファームウェアは、上記ページの動画の下にある項番1~5の項番1のリンクからダウンロードします。

2022/05/03 現在だとダウンロードされるファームウェアのファイル名は Raspberry Pi Pico の場合、「 rp2-pico-20230323-unstable-v1.19.1-992-g38e7b842c.uf2 」で、Raspberry Pi Pico Wの場合、「 rp2-pico-w-20230323-unstable-v1.19.1-992-g38e7b842c.uf2 」です。

次に USB ケーブルで PC に Raspberry Pi Pico を接続するんですが、ここで注意すべきことがあります、

それは Raspberry Pi Pico の「 BOOTSEL 」ボタンを押しながら接続することです。

PC に「 RPI-RP2 」という大容量ストレージデバイスが認識されるまで「 BOOTSEL 」ボタンを押し続けます。

接続されたら、ダウンロードしたファイル、今回だと「 rp2-pico-20230323-unstable-v1.19.1-992-g38e7b842c.uf2を「 RPI-RP2 」にドラッグ&ドロップします。

正常にファイルがコピーされた場合、 Raspberry Pi Pico が自動的に再起動されて「 RPI-RP2 」の接続が切れます。

Micro Python の開発環境 Thonny(ソニー)のセットアップ

Thonny の公式サイトは「コチラ

thonny00

右上の方にダウンロードのリンクがあります。インストール対象の OS にあわせたものをダウンロードします。

ここでは、Windows 版をダウンロードします。

2022/05/03 現在だとダウンロードされるのはバージョン「 3.3.13 」です。

インストーラを起動します。

thonny01

Install for me only(recommended)」をクリック。

thonny02

Next」をクリック。

I accept the agreement」を選択し「Next」をクリック。

thonny03

thonny04

必要に応じてインストール先のフォルダを指定し「Next」をクリック。

thonny05

スタートメニューの名称はそのままで「Next」をクリック。

thonny06

デスクトップにアイコンを表示したいので「Create desktop icon」をチェックして「Next」をクリック。

thonny07

Install」をクリック。

thonny08

thonny09

Finish」をクリック。

Thonny 初回起動時の設定

Thonny は初回起動時に言語の選択画面が表示されます。

Language で「日本語(ALPHA)」を選択し、「 Let's Go 」ボタンをクリックします。

次に、開発言語を指定します。

Thonny を起動すると、どの Python を使っているかが画面下側のコンソール部分と右下に表示されます。

Thonny バージョン「 3.3.13 」の場合、インストールされると Python 3.7.9 が初期インストールされています。

2022/05/04現在、Python 3.10.x が出ているのでかなり古いバージョンです。

ですが、あくまでこの段階で表示されているのは Python のバージョンです。Raspberry Pi Pico で使う MicroPython ではありません。

MicroPython に切り替えるためには、右下の「 Pyton 3.7.9 」と表示されているところをクリックします。

メニューが表示されます。ここで「MicroPython (Raspberry Pi Pico)」を選択します。

これで MicroPython に切り替わりました。

とりあえず簡単なプログラムを動かしてみる

さて、普通なら最初のプログラムは、定番の「Hello Wolrd」なんですが、「Hello Wolrd」を表示するディスプレイが Raspberry Pi Pico にはありません。

なのでマイコン系の定番のプログラム「 L チカ」を作ります。

「 L チカ」は、「 LED をチカチカさせる」の略です。

Raspberry Pi Pico には緑の LED が最初からついているので、これを使います。

プログラムは、こんな感じです。


import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)

while True:
led_onboard.value(1)
utime.sleep(1)
led_onboard.value(0)
utime.sleep(1)

これを Thonny の中央部分のソースコードエディタに入力します。

入力したソースコードを保存するため、メニュー「ファイル」-「Save as...」をクリックします。

どこに保存するか確認する画面が表示されます。

まず「This Computer」をクリックして PC に保存します。

名前を付けて保存の画面が表示されるので、フォルダやファイル名を指定して保存します。ここではファイル名は、「LedBlink.py」とします。

保存」ボタンをクリックします

もう一度メニュー「ファイル」-「Save as...」をクリックします。

どこに保存するか確認する画面が表示されるので、今度は「Raspberry Pi Pico」をクリックします。

Raspberry Pi Pico に保存する名前を入力する画面が表示されます。ここでは先ほどと同様に「LedBlink.py」と入力します。

OK 」ボタンをクリックします。

これで「 L チカ」プログラムの準備が整いました。

補足説明

先ほどのソースプログラムの保存でセーブのアイコンを使わず、メニュー「ファイル」-「Save as...」を使いました。

また、いきなり「Raspberry Pi Pico」をクリックしても問題ないのに、あえて一度「This Computer」をクリックして PC に保存しています。

これには理由があります。

なぜ一度「This Computer」に保存しているか?

それは今回のように行数の少ない一時的なプログラムなら問題ないのですが、少し複雑なプログラムを組んで翌日続きから作業するといった時に何らかの理由で「Raspberry Pi Pico」に保存したプログラムが消失してしまったときに、最初からプログラムを作り直す必要が出てくるからです。

それを避ける意味で、あえて一度「This Computer」に保存しています。

バックアップがないと不安なのは、システムエンジニアの「職業病」かもしれませんが(笑)

なぜセーブのアイコンを使わず、メニュー「ファイル」-「Save as...」を使うのか?

セーブのアイコンを使う場合、どこに保存するかの画面が表示されないため、「This Computer」に保存しているのか、「Raspberry Pi Pico」に保存しているのか分からなくなるからです。

一応、タイトルバーを見れば「Raspberry Pi Pico::」があるかどうかで分かるといえば分かるのですが、最初は気づかなかったので(;^_^A

なのであえて、どこに保存するか選択する画面が出るメニュー「ファイル」-「Save as...」を使って、意識的に切り替えを使い分けているのです。

プログラムの実行と停止

実行は、メニュー「実行」-「Run current script」か、緑のアイコンの「再生」ボタン
停止は、メニュー「実行」-「Stop/Restart backend」か、赤いアイコンの「STOP」ボタン

で行います。

実行するとLEDが1秒おきに点いたり消えたり、点滅を繰り返します。
プログラムを停止すると LED が点いている時に停止すれば LED が点いたまま、LED が消えている時に停止すれば LED が消えたままとなります。

趣味の問題かもしれませんが、LEDが消えている時に停止した方が良い気がします。(点いている時に止めても何も問題ないんですが)

うまく「 L チカ」が確認できたでしょうか?

L チカプログラムを解説

Raspberry Pi Pico の L チカのプログラムを再掲します。

import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)

while True:
led_onboard.value(1)
utime.sleep(1)
led_onboard.value(0)
utime.sleep(1)
  • 1~2行目
    使用するパッケージを import 宣言。
    4行目で使う machine、8行目、10行目で使う utime を使うので、そのパッケージを宣言しています。

    Pythonにはモジュール・パッケージ・ライブラリと呼ばれるものがあります。
    モジュールやパッケージは、何らかの処理を行う関数、関数や変数をまとめたクラスを1つのファイルにまとめたもののことです。
    モジュールやパッケージのことをライブラリと呼んだりしますので、最初のうちは、そんな名前のグループがある程度で覚えておけば良いです。

  • 4行目
    今後も出てきますが、AA.BBのような記述で「.」は「の」と読むとイメージが湧きやすいです。
    「machine.Pin」なら「machine の Pin」という感じです。
    machine = Raspberry Pi Pico なので、Raspberry Pi Pico の 25番ピンを出力ピンとして使う、という意味です。
    下図のように25番ピンが LED になります。

    Raspberrypipico25led

    led_onboard という名前をつけておき、7行目、9行目で使います。

  • 6行目
    while は、○○の間中ループするという命令です。
    True(真)の間中ということなので、常にTrueであるため、電源を切るまで無限にループするという意味になります。

  • 7行目、9行目
    Raspberry Pi Pico の LED に 1 を出力(LEDを点灯させる)、0 を出力(LEDを消灯させる)という意味です。

  • 8行目、10行目
    Sleep=寝かせる=待たせるという意味で1秒間待つという意味です。
    7~10 行目で 1 秒おきに LED を点滅させる、という意味になります。

ここまではOKだ



>MCU(マイコン):RP2040
RAM:256KB SRAM
電源:1.8V~5.5V
サイズ:21×51.3×3.9mm 約3g
動作環境条件:-20℃~85℃(70℃以下を推奨)
温度センサ搭載


>MCU(マイコン):RP2040
RAM:256KB SRAM
電源:1.8V~5.5V
サイズ:21×51.3×3.9mm 約3g
動作環境条件:-20℃~85℃(70℃以下を推奨)
温度センサ搭載
ヘッダー ハンダ付け済み
 このエントリーをはてなブックマークに追加

| |コメント (0)

2023.03.20

スマートホーム関連記事をまとめたウェブページを作ってみた

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

スマートホーム関連の記事をいろいろ書いたので、「スマートホーム関連記事をまとめたウェブページ」を作りました。

そして、サイドバーに「スマートホーム関連記事をまとめたウェブページ 」のリンクを作りました。

ウェブページにまとめた理由

スマートホームの記事は、時間の都合でその1、その2、その3…といった分割して書いてたりしている。

それも時間が開いて書いたりしていることもある。

一応、各記事同士をリンクでつなげるようにして読みやすくしている。

とは言え、それをカテゴリバックナンバーでみると、あちこちの記事を見ないといけない。

このため、少し整理した形のページがあった方が、自分が見やすいんです(;^_^A

自分が見やすければ、ほかの人も見やすいのでは?と思ったわけです。

ということで、「スマートホーム関連記事をまとめたウェブページ 」をまとめました。

まとめたページも随時更新していきます。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2023.03.18

今後のことも考えて、レゴ (LEGO) クラシック 黄色のアイデアボックス プラス 10696 を購入した

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

みなさんはレゴブロックで遊んだことはありますか?

かげさんも子供のころにレゴブロックでよく遊んでいました。

が、既に手元にレゴブロックはない状態です。

なのになぜレゴブロックの話をし始めたかというと、M5 シリーズや toio を使ったプログラムを考えたときにレゴブロックの必要性を感じたからです。

さて、「我が家の M5Stack シリーズ集合写真」でこんな写真を載せました。

M5

写真中央上の方のケーブルから伸びた半球上の人感センサーのところですが、センサーとケーブルの間に左右に丸い穴があります。

それとオレンジのものにも同じように人感センサーがついていますが、その上の白い四角いのにネズミ色のものが載っているのも分かると思います。

白い四角いのは、キューブ型ロボットの toio で、その上に載っているネズミ色のものは M5ATOM Mate for toio です。

M5ATOM Mate for toio は、toio と M5ATOM をつなぐパーツです。

Toioatom

Atom-mate-for-toio2

M5ATOM Mate for toio に ATOM Lite を載せるとこんな感じ。

Atom-mate-for-toiolite

M5ATOM Mate for toio に ATOM Matrix を載せるとこんな感じ。

Atom-mate-for-toiomatrix

M5ATOM Mate for toio にも丸い穴が開いています。

実は、この丸い穴は、レゴブロックと接続できます。

このように M5 シリーズのものはレゴブロックの接続を意識したものが多数存在します。

ちなみに同じ画像の再掲になりますが、toio 上部の凸凹もレゴブロックの接続に使える物です。

例えば、トイオコレクションのクラフトファイターなどでも使えます。

Toioatom

先の人感センサーのように M5 シリーズで使える Grove ケーブル接続のセンサー類をかげさんは多数持っています。

それを固定するのにもレゴブロックは使えるのです。

ということで、今更ながらレゴブロックを購入しました。



35色のレゴ(R) ブロックのセットで、無限に広がる創造力を組み立てよう! 窓、目、たくさんの車輪がついているので、建物や生き物、乗り物などなんでも組み立てることが可能です。組み立てのヒントになるアイデアが載った説明書付き。創造力を磨くのに理想的な、4歳以上のすべての方むけセットです。他のレゴ(R)セットと組み合わせて楽しむことも可能です。便利なプラスチック製の片づけボックス入り。

いろいろな形状のブロックがあるし、片付けボックスがあるのもポイントです。

ブロックの良いところは、組み合わせの自由度があるから汎用性の高いところです。

これで今まで以上にいろいろと toio や M5 シリーズで遊べそうです(*^^*)

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2023.03.17

我が家の M5Stack シリーズ集合写真

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

我が家にある M5Stack 関連の本体を中心に並べてみた。

センサ類として、人感センサだけが混ざってます。

M5

こうしてみると、結構集めたなぁ(*^^*)

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2023.03.16

CAPTAIN STAG のクリアケースを買って M5 シリーズの本体+人感センサを入れてみた

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

先日、「なんか良い防水クリアケースが無いかなぁ」で書いたようにユニットバスの電球をスマートライトにして、人感センサーに反応して電気が点くようにしたい。

ユニットバスで使うことを考えると、念のため防水ケースに入れたい。

そこで実際に CAPTAIN STAG の防水クリアケースをヨドバシのポイントで購入して、人感センサー部分で使おうと思っているものを入れてみた。

Pirincase

ケース自体は Amazon で見た写真より透明感のあるケースだった。

左側の写真はオレンジの M5StickC Plus に 人勧センサである M5StickC PIR Hat をつなぎ、電源として M5 の TailBat100均で購入したUSBタイプ C を90度に角度変換するアダプタを2つつないで接続したもの。(センサがフタの位置に重ならないように底上げのため、単3電池を入れている

右側の写真は、M5StickC Plus → M5ATOM Matrix にして人感センサを Grove ケーブルを利用して接続した M5Stack PIR センサユニットを接続するようにしたもの。

どちらでも問題なさそうである。

ちなみに見た目スマートなのは左側、金額的に安価なのは右側である。

実際に購入してみるとヒンジピンは、Amazonの書き込み通り、両端が小さいので抜けやすそうだった。

たしかに、はんだごて使って改良しておいた方が良さそうな気がするね。

そのうちやっておこう。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2023.03.07

なんか良い防水クリアケースが無いかなぁ

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

ユニットバスの電球をスマートライトにして、人感センサーに反応して電気が付くようにしたい。

できるできないで言うとできそうなんだけど、ユニットバスで使うことを考えると防水ケースに入れたい。

なんか良い防水クリアケースがないかなぁ。

たばこ+ライターのケースでこんなのがあるけど、どうかねぇ。

サイズを確認してみるか?

Amazonのレビューを見ると
サイズ が(約)95×120×厚さ40mmと表記されていますが、実際は65×100×厚さ20mm
とある。

内寸は 62(上下)~70(中央)mm x 102 x 厚さ 23(端)~28(中央)mm、くらい
という記載ももあるので、62x100x20くらいに考えておけば良さそうかな

ヒンジピンの抜け落ちで使えなくなった」というレビューが多いが
蝶番の鉄棒が抜けてきてしまうので半田ごてで、両端をつぶしてつかっています。

という記載もあるので、半田ごてを持っているかげさんなら、両端を潰せば使えそうかな。

PIR の厚みが 2cm くらいで、M5SticKC Plus か M5ATOM と繋げば、サイズ的には入りそう。

ヨドバシで注文できるみたいだし、ポイントを使って買ってみようかな。

2023/03/17追記

実際に買ってみた記事はコチラ▼

CAPTAIN STAG のクリアケースを買って M5 シリーズの本体+人感センサを入れてみた

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

« 2023年2月 | トップページ | 2023年4月 »