ブログ内検索

micro:bitページ
とにかく速いブログサイトを目指す

アーカイブ : 2022年01月

 

Pythonでビット演算子の論理和に触れる

/** Geminiが自動生成した概要 **/
Pythonのビット演算子、特に論理和(OR)について解説しています。記事では、UARTとSPIの通信方式の比較を題材に、SPI通信のコードで使われているビット演算を理解しようと試みています。まず、`|=`という演算子がビットごとの論理和を計算し、結果を変数に代入するものであることを説明します。具体例として、`cmdout |= 0x18`というコードを解説しています。初期値0の変数`cmdout`と16進数`0x18`(2進数では`00011000`)の論理和を計算することで、`cmdout`の値が`00011000`となり、10進数では24になることを示しています。最後に、論理和を表す回路図の記号も紹介しています。

 

UARTについてを知る4

/** Geminiが自動生成した概要 **/
この記事では、UARTにおける「非同期」の意味について解説しています。UARTは調歩同期方式を採用しており、これはSPIのような外部クロックを使わずにデータを送受信する方法です。スタートビットとストップビットを利用することで、クロック同期なしにデータのやり取りを実現します。Webアプリで用いられる非同期処理とは異なる概念であることに注意が必要です。SPIのような同期通信方式も理解を深める上で重要ですが、複雑なため、別途学習する必要があると結論付けています。

 

UARTについてを知る3

/** Geminiが自動生成した概要 **/
この記事では、UART通信におけるボーレートについて解説しています。ボーレートとは、1秒間に送受信するデータビット数を表し、送受信側で一致させる必要があります。記事では、一般的なボーレートの値として9600、115200などを紹介し、Micro:bitとRaspberry Piを接続する際のコードを例に、送受信側でボーレートを合わせる必要があることを説明しています。UARTは非同期通信のため、クロック信号を用いずにデータを送受信します。そのため、ボーレートを合わせることでデータの整合性を保っています。

 

UARTについてを知る2

/** Geminiが自動生成した概要 **/
この記事は、micro:bitのMicroPythonを使ってUART通信の基礎を解説しています。UARTではHIGH(1)とLOW(0)の信号でデータを送受信し、文字列をバイト型に変換して送信します。記事では、データ送信の仕組みとして、アイドル状態(1)、スタートビット(0)、データビット、パリティビット、ストップビット(1)からなるシリアル通信の構造を図解で説明しています。特に、パリティビットはデータ送信時の誤り検出符号として、奇パリティと偶パリティがあることを解説し、micro:bitでの設定方法にも触れています。最後に、ボーレートについても触れる予定としていますが、詳細は次回に持ち越しとなっています。

 

UARTについてを知る1

/** Geminiが自動生成した概要 **/
この記事は、UARTを用いたシリアル通信について解説しています。UARTとは何か、Raspberry Piとmicro:bitを接続した図を例に、TXピンとRXピンを用いてどのようにデータがやり取りされるのかを説明しています。具体的には、文字列"abc"をUART通信で送信する際に、コンピュータ内部では文字コードを用いて処理されていることを解説し、Go言語でのバイト型変換例を示しています。さらに、microbitのUART設定における"bits=8"というパラメータを取り上げ、1ビットと8ビットの関係、表現できる数値範囲について触れています。最後に、"0x610x620x63"という16進数表記で送信データ例を示し、次回にuart.initのパラメータ解説を行うことを予告しています。

 

BBC Micro:bitのメンテンスモードから抜ける

/** Geminiが自動生成した概要 **/
BBC Micro:bitがメンテナンスモードになり、フラッシングができなくなった場合の対処法について解説しています。メンテナンスモードは、リセットボタンを押しながらPCに接続すると発生します。解決策は、micro:bitのファームウェアを更新することです。まず、micro:bitのバージョンを確認し、公式サイトから対応するファームウェアをダウンロードします。ダウンロードしたファイルを、PCに接続したmicro:bitのMAINTENANCEフォルダに移動します。しばらく待つと、micro:bitがメンテナンスモードを抜け、通常のモードに戻ります。記事では、Ubuntu環境での画面表示も掲載し、読者の理解を助けています。

 

ESP8266のUARTその2

/** Geminiが自動生成した概要 **/
この記事は、ESP8266をUARTの受信側としてRaspberry Piと通信する方法を解説しています。前回の記事ではESP8266から送信したデータにREPLの情報が含まれていましたが、今回は受信側にすることでREPL情報を含まないデータを受信できることを確認しています。具体的には、ESP8266側で受信したデータを少し変更してRaspberry Piに送り返すPythonコードを記述し、Raspberry Pi側では"send from pi."というメッセージを繰り返し送信するPythonコードを記述しています。その結果、Raspberry Pi側で"received:send from pi."というメッセージが表示され、REPL情報を含まないデータが受信できていることが確認できました。

 

ESP8266のUART

/** Geminiが自動生成した概要 **/
ESP8266のREPLは、シリアル接続を通じてMicroPythonと対話するためのコマンドラインインターフェースです。UART0がデフォルトで使用され、ボーレートは115200bpsです。REPLでは、コードの実行、変数の確認、関数の呼び出しなどが行えます。Ctrl-Aでプロンプトの先頭、Ctrl-Eで末尾に移動できます。Ctrl-Bで一文字戻り、Ctrl-Fで一文字進めます。Ctrl-DでREPLを終了し、プログラムの実行を再開します。REPLはMicroPythonの開発やデバッグに役立つ強力なツールです。

 

BBC Micro:bitのUART

/** Geminiが自動生成した概要 **/
BBC Micro:bit (microbit) の UART 通信では、microbit から Raspberry Pi へのデータ送信と、その逆の受信が可能。microbit は `uart.any()` 関数を使用して受信データを待ち受け、Raspberry Pi はシリアルポートを介して通信する。データの送受信を確実に行うには、microbit と Raspberry Pi 間の TX/RX ピンの正しい接続と、双方で一致するボーレートの設定が重要。また、microbit では `uart.init(115200)` を使用してシステムを初期化することも推奨される。これらの手順に従うことで、microbit と Raspberry Pi 間の双方向 UART 通信を実現できる。

 

ESP8266とRaspberry Piでソケット通信を試す

/** Geminiが自動生成した概要 **/
この記事では、ESP8266モジュールをクライアント、Raspberry Piをサーバーとしたソケット通信を試みています。まず、ESP8266側でWiFi接続を行い、サーバー側のIPアドレスとポート番号を指定してソケット通信を行います。記事では、ESP8266から"send socket from esp8266"というメッセージをサーバーに送信し、サーバー側で受信できていることを確認しています。これにより、ローカルネットワーク内でESP8266からRaspberry Piにデータを送信できることが確認できました。今後は、温度などのデータを送受信する方法を検討していく予定です。

 

コンピュータ二台でソケット通信を試す

/** Geminiが自動生成した概要 **/
この記事は、二台のコンピュータ間でローカルネットワークを通じてソケット通信を行う方法を解説しています。まず、Raspberry Piをサーバー側にして、そのローカルIPアドレスを調べます。次に、Pythonで記述したサーバープログラムを、調べたIPアドレスを使って修正します。クライアント側にはLinuxマシンを使用し、同様にローカルIPアドレスを調べます。その後、クライアントプログラムを実行し、サーバープログラムが実行されているRaspberry PiのIPアドレスとポート番号を指定して接続します。記事では、接続が成功したことを確認後、NodeMCUとRaspberry Piでのソケット通信に進むことを示唆しています。

 

コンピュータ一台でソケット通信を試す

/** Geminiが自動生成した概要 **/
この記事では、マイコンを用いたデータ送信システム構築に向けて、まずは一台のPCでのソケット通信を試行しています。具体的には、Pythonを用いて、受信側(サーバー)と送信側(クライアント)のプログラムを作成し、同一PC上で動作させています。サーバー側はポート番号12345で接続を待ち受け、クライアント側からの接続があると、入力されたデータを受信し、"Successed!"というメッセージを返信します。記事では、それぞれのプログラムのコード例と実行結果を示し、実際にデータの送受信が成功していることを確認しています。今後は、2台のPC間でのソケット通信に挑戦する予定です。

 

SOY CMSでWebP形式の画像ファイルのアップロードに対応しました

/** Geminiが自動生成した概要 **/
SOY CMSがWebP画像形式のアップロードに対応しました。WebPはGoogleが開発した次世代画像フォーマットで、JPEGやPNGと比べてファイルサイズが小さく、画質を落とさずにWebサイトの表示速度を向上できます。現在では世界中の95%のブラウザでサポートされており、SOY CMSでもこのフォーマットに対応することで、より高速なWebサイト構築が可能になりました。最新版は公式サイトからダウンロードできます。

 

NodeMCUでHTTP GETリクエストを試してみた

/** Geminiが自動生成した概要 **/
NodeMCUを使ってHTTP GETリクエストを試行した記録です。記事では、MicroPythonのソケット通信を使って"http://www.example.com/"にGETリクエストを送信し、"200 OK"レスポンスとHTMLを取得できました。しかし、"https://saitodev.co/"のようにHTTPSのURLでは失敗しました。これは、HTTPS通信に対応するためにコードを修正する必要があるためです。記事では、将来WiFi経由でデータ送信を行う際にHTTPS通信が必要になると述べています。

 

NodeMCUをWebサーバにしてみた

/** Geminiが自動生成した概要 **/
NodeMCU(ESP8266)をWebサーバにする実験。MicroPythonのサンプルコードを参考に、GPIOピンの状態をWebページに表示する仕組みを作成。NmapでNodeMCUのIPアドレスを特定しブラウザからアクセスした結果、GPIOピンの状態がリアルタイムに確認できた。HTTP通信の基礎を学ぶ良い機会となり、今後は外部からのリクエストに応じて処理を行う仕組みも試したい。

 

NodeMCUをWiFiのアクセスポイントにしてみる

/** Geminiが自動生成した概要 **/
この記事は、NodeMCU(ESP8266)をWiFiのアクセスポイントにする方法を解説しています。筆者は、サンプルコードを参考に、NodeMCUにWiFi接続とアクセスポイント設定のコードを記述し実行しました。その結果、コードに記述した「ESP-AP」という名前のアクセスポイントが作成されたことを確認しました。しかし、パスワードが設定されていないため、現時点では接続できない状態です。記事では、引き続きWiFi用語の解説や接続方法について掘り下げていくことを示唆しています。

 

NodeMCUにファームウェアをインストールする

/** Geminiが自動生成した概要 **/
ESP8266 NodeMCUモジュールにMicroPythonファームウェアをインストールするには、esptoolツールを使用します。ファームウェアのbinファイルをダウンロードし、`esptool`コマンドを使用してフラッシュを消去してから、新しいファームウェアを書き込みます。ファームウェアがインストールされたら、Thonny IDEを使用してLチカプログラムを作成します。ThonnyをESP8266に接続し、`main.py`という名前でプログラムを保存します。プログラムを実行すると、NodeMCUのLEDが点滅します。

 

ESP8266のWiFiモジュールを購入した

/** Geminiが自動生成した概要 **/
## ESP8266を使って、PicoからWebアプリにデータを送信する方法を探る筆者は、pH測定データをWebアプリに送信するために、WiFiモジュール「ESP8266」を購入しました。目的は、Raspberry Pi Picoなどのマイコンで取得したデータを、WiFi経由でWebアプリに送信することです。ESP8266はTCP/IPスタックを搭載したWiFiモジュールで、GPIOピンも備えているため、単体でのデータ処理も期待できます。今後の記事では、PicoからWiFiを介してWebアプリにデータを送信するために必要な手順を一つずつ解説していく予定です。

 

SOY CMSのMIMEタイプの制限設定でページ毎の設定を追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのファイルアップロード制限をページごとに設定できるようになりました。記事投稿画面とファイルマネージャで許可するMIMEタイプを分けたいという要望に応え、設定ファイルにELFINDER_MODEという定数を追加。これにより、例えば記事投稿画面では画像ファイルのみ、ファイルマネージャではCSSやJSファイルのみ許可するといった設定が可能になりました。設定は /CMSインストールディレクトリ/common/config/upload.config.php 内でELFINDER_MODEの条件分岐を用いて$mimetypes配列を定義することで行います。最新のパッケージは公式サイトからダウンロードできます。

 

AD変換器の基準電圧とは何だろう?

/** Geminiが自動生成した概要 **/
AD変換器の基準電圧(VREF)とは、アナログ電圧をデジタル値に変換する際の基準となる電圧です。MCP3208の場合、VREFは2.7V〜5Vの範囲で設定でき、高い電圧ほどデジタル値の分解能が向上します。記事では、VREFを5Vにすることでサンプリング精度を高め、ノイズの影響を抑えるためにVREFに入力フィルターを入れることを推奨しています。さらに、AGND(アナロググランド)とDGND(デジタルグランド)についても今後の課題としています。

 

Raspberry PiにPH4502Cを繋いでみた

/** Geminiが自動生成した概要 **/
この記事では、Raspberry PiにpHメーターPH4502Cを接続し、pHのアナログ値をデジタル値に変換して取得する方法を解説しています。筆者は、MCP3208というAD変換器を用い、GPIO Zeroのライブラリを使ってRaspberry Piで値を読み取っています。記事内では、回路図やコード例、実験中の問題点と解決策が詳しく説明されています。最終的には、水道水のpHを測定し、約2.8Vの電圧値を得ることに成功しましたが、値のばらつきが課題として残りました。筆者は、今後さらに知識を深め、GPIO Zeroを使わない方法やpH測定の精度向上に取り組む予定です。

 

PH4502CのpHの計算方法を調べる

/** Geminiが自動生成した概要 **/
この記事は、PH4502C pHメーターのpH計算方法を解説しています。まず、起電力とpHの関係式を求めるために、既知のpH値と対応する起電力値から係数と定数を算出します。次に、ADCを用いる場合の計算式を導出し、ADCのビット数とpHの関係式を確立します。最終的に、任意のADCビット数に対して、ADC出力値からpH値を計算する式を提示しています。ただし、精度の高い測定には電圧計を用いたキャリブレーションが必要であると結論付けています。

 

AD変換器から出力されたデジタル値を読み込む

/** Geminiが自動生成した概要 **/
この記事では、AD変換器を使ってアナログ値をデジタル値として読み取る方法を解説しています。AD変換器からのデータ送信には、複数のピンを使ったSPI通信という方式が使われています。SPI通信では、マスター(Raspberry Pi)とスレーブ(AD変換器)間でデータのやり取りが行われます。重要な点は、AD変換器からのデジタルデータは1本のピンではなく、SCLK、MISO、MOSI、SSの4本のピンを使ってやり取りされることです。

 

AD変換器の概要に触れる

/** Geminiが自動生成した概要 **/
diymoreのLiquid PH Value Detection Detect Sensor Moduleは、Arduinoやマイクロコントローラと連携して水溶液のpH値を測定するセンサーモジュールです。pH測定範囲は0~14で、精度は±0.1pHです。動作電圧は3.3~5Vで、出力はアナログ信号とTTLレベルのデジタル信号の両方を選択できます。校正は付属の校正液を用いて簡単に行えます。このモジュールは、水耕栽培、水質監視、化学実験など、pH値の測定が必要な幅広い用途に最適です。

 

BBC Micro:bitでpHメーターから得られるアナログ値を読み込んでみた

/** Geminiが自動生成した概要 **/
施設栽培で鉄欠乏が起きると、収量低下や品質低下に繋がるため注意が必要です。鉄欠乏は初期症状の見落としが課題となります。本記事では、鉄欠乏の症状と対策、そして早期発見に役立つ簡易的な測定方法について解説しています。初期症状は葉脈間が黄化するクロロシスで、進行すると葉全体が白化し、枯死に至ることもあります。対策としては、pH調整や鉄資材の施用が有効です。早期発見には、葉緑素計を用いた測定が有効で、数値の低下は鉄欠乏の初期段階を示唆します。日々の観察と葉緑素計による測定を組み合わせることで、鉄欠乏を予防し、収量と品質を確保しましょう。

 

アナログとデジタル

/** Geminiが自動生成した概要 **/
記事では、そろばんがデジタルである理由をアナログとデジタルの違いを説明しながら解説しています。アナログは水銀体温計のように、値が連続的に変化し、無限に細かい値をとります。デジタルは電子体温計のように、飛び飛びの値で表現されます。そろばんは玉を1つずつ動かすことで数を表現するため、値は飛び飛びになります。そのため、そろばんはデジタルに分類されます。

 

pH測定で用いるガラス電極法に触れてみる

/** Geminiが自動生成した概要 **/
筆者はpH測定器の仕組みを理解するため、ガラス電極法について調べています。ガラス電極法は、pHガラス電極と比較電極を用い、pHガラス応答膜の内側と外側のpHの違いにより生じる起電力を測定することでpHを算出します。pHガラス応答膜の内側にはpH7の塩化カリウムが用いられ、測定したい液体に当てると、pHの差に応じて起電力が発生します。この起電力は温度によって変動するため、測定前にキャリブレーションが必要です。筆者はpH測定器をRaspberry Piに接続しようとしましたが、A/D変換が必要なため、接続は保留となっています。

 

最近の肥料でよく見かける酸化還元電位

/** Geminiが自動生成した概要 **/
農薬や化学肥料の使用が土壌環境を悪化させるという意見に対して、反論を展開しています。著者は、土壌中の微生物の量と多様性は有機物量に影響を受け、農薬や化学肥料の影響は限定的だと主張。また、連作障害の原因は特定の栄養素の過不足や病害虫の発生であり、農薬や化学肥料が直接の原因ではないと説明しています。さらに、土壌pHの変化は施肥の影響を受けやすく、適切な土壌管理が必要だと指摘。結論として、農薬や化学肥料の使用と土壌環境悪化の因果関係は薄いと結論付けています。

 

ボルタ電池

/** Geminiが自動生成した概要 **/
ボルタ電池は、金属のイオン化傾向の違いを利用して電気を発生させる装置です。この記事ではレモンを用いたボルタ電池を例に、その仕組みを解説しています。レモンの酸性度により、亜鉛板と銅板はそれぞれイオン化し電子を放出します。亜鉛は銅よりもイオン化傾向が高いため、電子を多く放出しマイナス極となります。電子は導線を伝って銅板側へ移動し、そこで水素イオンと結合して水素ガスを発生させます。この電子の流れが電流となり、電球を光らせることができます。

 

リトマス試験紙は植物等が持つpHで色が変わる色素を利用する

/** Geminiが自動生成した概要 **/
花の色を決める4大色素とは、カロテノイド、アントシアニン、フラボノイド、ベタレインのこと。カロテノイドは黄~橙色、アントシアニンは赤~青紫、フラボノイドは白~黄色、ベタレインは赤~黄色を呈する。これらの色素の種類や量、さらには細胞のpHや金属イオンとの結合によって、花の色は多様に変化する。例えば、アジサイの色が土壌のpHによって変化するのは、アントシアニンと金属イオンの結合状態が変わるためである。

 

pHの測定を理解する為にリトマス試験紙から触れる

/** Geminiが自動生成した概要 **/
この記事は、栽培用の測定器について理解を深めるための導入として、リトマス試験紙を取り上げています。リトマス試験紙は、水溶液のpHを測定し、酸性かアルカリ性かを判定するために用いられます。記事では、リトマス試験紙の由来である「リトマスゴケ」について触れ、それが地衣類の一種であることを説明しています。地衣類は藻類と菌類の共生体で、空気のきれいな場所に生息し、大気汚染の指標にもなっています。そして、リトマスゴケやウメノキゴケの色素がpH測定にどのように関わっているのか、次の記事で詳しく解説することが予告されています。

 

生ゴミを埋める日課を介して思い出す師の言葉

/** Geminiが自動生成した概要 **/
栽培の師は「土が良くなると石が上に上がって減る」と言っていた。庭で生ゴミを埋める日課を通して、その意味を実感している。生ゴミを埋めると土が柔らかくなり、以前は掘り出せなかった石が容易に取れるようになった。これは、生ゴミの分解により土壌が改良され、周りの土が柔らかくなったためだと考えられる。この現象は、トラクターでの耕起にも当てはまるだろう。土に生ゴミを入れることで、土壌改良の効果を実感し、師の言葉を再認識した。

 

小さな葉も良いものだ

/** Geminiが自動生成した概要 **/
庭の一角にある落葉が堆積した場所🌱。 掘り返さずに放置しておいたところ、春になると小さな葉をつけたナデシコ科らしき植物が顔を出しました🌿。小さな葉は巧みに落葉を避け、日光を求めています☀️。 落葉の隙間から芽吹く姿は、生命力の強さを感じさせます💪。この草が落葉を覆うことで、地面の湿気を保ち、他の生物にとっても住みやすい環境を作るのでしょうね🌎。

 

クローバは寒さに強い

/** Geminiが自動生成した概要 **/
記事では、厳しい寒さの中でもシロツメクサが青々と茂っていることに感心し、その耐寒性の理由と活用法について考察しています。著者は大阪北部在住で、薄っすらと雪が積もる寒さの中、シロツメクサが緑の葉を保っていることに驚きを感じています。そして、以前に書いた「野菜の美味しさとは何か?耐寒性」という記事を参考に、シロツメクサの耐寒性のメカニズムと、その特性を活かせる方法について探求したいと締めくくっています。


Powered by SOY CMS  ↑トップへ