続・Raspberry Pi Pico と気圧センサーで気圧計を作る

小型化&表面実装部品に変更した基板が届いたので

ミニホットプレートプリヒーターなるMHP50を使用してSMD部品を実装してみる(*´ェ`)

試しに2枚の基板ではんだはソルダーペーストを爪楊枝に乗せて銅箔部分に付けていく・・・
初めてのホットプレート&ソルダーペーストなので適量が分からない
結構はんだの量が偏っている・・・

チップ部品の実装も初めてでこんなに小さいとは・・・(キャパシタが1個どこかに転がり落ちて無くしてしまった)

上手くいくかな、いくといいな(*゚ェ゚*)

はんだペーストが溶ける様子は見ていて気持ちがいい(*´ェ`)

一つ目の基板、上手く行っているところもあれば・・・はんだの量が多いようで繋がってしまっているところも∑(*゚ェ゚*)



続いて二つ目の基板、一つ目の基板と比べてはんだの量を気持ち少なめにして・・・

SMD部品を載せて・・・

むぐぐ、一つ目の基板の時より残念な感じになっている・・・

はんだが多いところははんだ吸取り線で取り除く(*´ェ`)

7セグメントLED と Raspberry Pi Pico、気圧センサーを取り付けて動作確認をしてみる(*゚ェ゚*)
あらら、7セグメントLEDは点灯しているけれど気圧センサーの値が取得できていない?∑(*゚ェ゚*)

二つ目も確認してみるとこちらは点灯すらしていない・・・(*´ェ`)

調べてみよう・・・
一つ目の基板、症状としてはディスプレイに0000は表示される。
センサーと通信できていない、もしくは値が取得できていない。
テスターで調べてみると4番PINと8番PINはGNDで繋がっているはずなのに導通していない。
基板設計図を見直してみると4番PINのGNDが孤立している・・・DRC(デザインルールチェック)したはずなのに、もう一度DRCを走らせるとGNDが繋がっていないエラーが出ていた・・・(*´ェ`)

二つ目の基板、症状としてはディスプレイに何も表示されていない。7セグメントLED周りが怪しい。
ソースICの9番PINがはんだ不良で(はんだが少なく)導通していない。
こっちも基板設計がおかしいのでセンサー部分の4番PINと8番PINをジャンプさせる。

ピンクの四角同士(一つ目と二つ目の基板)と青い四角同士(二つ目の基板)が導通していない。

というわけで基板設計の修正を行う(*゚ェ゚*)

原因はセンサーの4番PINのGNDが浮いている孤島のようになっているので4番と8番PINをジャンプさせればとりあえずは動きそう(*´ェ`)

これで1つ目と2つ目の基板で動作することを確認できた。

修正した基板とステンシル(はんだペーストを載せるのが楽になる)を発注して待つ。。。(*´ェ`)

Raspberry Pi Pico と気圧センサーで気圧計を作る

気圧を知りたくて作ってみた(*´ェ`)

使用した部品は
・TBD62783APG 1つ
・TBD62083APG 1つ
・4桁7セグメントLEDアノードコモン OSL40562 1つ
・抵抗47Ω 8つ
・キャパシタ0.1μF 1つ
・Raspberry Pi Pico 1つ
・気圧センサー AE-LPS25HB 1つ

まずはブレッドボードで動作確認(*´ェ`)

Raspberry Pi PicoはCoreを2つ持っているので片方を気圧センサーの値を読み取り、もう片方を読み取った値を7セグLEDに表示する処理に分けた(*´ェ`)

回路図やフットプリントを用意して(*´ェ`)

基板設計(*´ェ`)

基板を発注して届いた(*´ェ`)

DIP部品を実装(*´ェ`)

ICやRaspberry Pi Pico、気圧センサーはソケットを使い再利用できるようにした(*゚ェ゚*)

ブレッドボードとPCBを比較(*´ェ`)

ICや抵抗、キャパシタをDIP部品からSMD部品に変える計画が進行中…(*´ェ`)

温度をLEDの色で表示する

部屋の温度をLEDの色で表示する機器を作ってみたくなった(*´ェ`)

使用した部品は
・マイコン内蔵RGBLED WS2812B 7つ
・温湿度センサー モジュール AHT25 7つ
・TCA9548A I2C Multiplexer 2717 1つ

温度の取得や色の設定は Arduino UNO R4 Minima で行う(*´ェ`)

温度と色の関係は色相環の赤(0°)を40℃上限として、青(255°)を下限(0℃)で表すことにした(*゚ェ゚*)

25℃くらいなので緑色になっている(*´ェ`)

温湿度センサーを手で覆って温めると黄色く変化した(*´ェ`)

Arduino UNO R4 WiFi で https接続してGETできない原因を探る

ArduinoのWiFiからHTTPS接続でデータをGETしたいと思いサンプルスケッチを元に自宅サーバーへ接続を試してみるも接続できない…(*´ェ`)

11:48:22.111 -> Starting connection to server...
11:48:22.375 ->
11:48:22.375 -> disconnecting from server.

サンプルスケッチのWiFiWebClientSSLをそのまま実行するとGETできることを確認した(*´ェ`)

  • 自宅サーバーのアドレスに変えると繋がらないしGETできない。
  • レンタルサーバーへ接続してみると繋がらない。

ルート証明書を設定しないと繋がらないようなのでルート証明書(自宅・レンタル共にLet’s Encrypt [ ISRG Root X1 ])をsetCACert()関数で設定して繋いでみるとレンタルサーバーへは繋がりGETできるけれども自宅サーバーへは繋がらない・・・(*´ェ`)
これはもうサーバーの設定の違いかなとApacheのSSLの設定を確認するとSSLProtocolにTLS 1.2を使用しないように指定していたので一旦使用できるように設定して接続確認してみると繋がった(*゚ェ゚*)
ArduinoはTLS 1.2で接続しようとしてできなかったのか…(*´ェ`)

TLS 1.3で接続するにはどうしたら良いのだろうか(*´ェ`)
ESP32-S3はTLS 1.3に対応しているみたいだしなんとかなるのかな(*゚ェ゚*)

TLS 1.2での接続を許可するかTLS 1.3で接続できるように調べるかどちらか…(*´ェ`)

Androidのファームウェアは 0.3.0 でも 0.4.1 でも同じ挙動だった(*´ェ`)

目指すはAndroidのファームウェア 0.4.1 で TLS 1.3 で接続∑(*゚ェ゚*)

続々・12桁の7セグメントLEDでIPv4を表示

IPv4表示機をどうやって残しておこうかな(*´ェ`)
ブレッドボードにそのまま置いておいてもいいかなと思ったけれども折角なので基盤化したい∑(*゚ェ゚*)
というわけで回路図の作成と基板のデザインをしてPCBの発注をしてみた∑(*゚ェ゚*)
KiCadというソフトを使って回路図の作成からガーバファイルの作成までを行った(*゚ェ゚*)

ブレッドボードで作っていた回路から変更した点はNOT2つとアナログスイッチを3つ追加したこと(*´ェ`)

回路図がこちら(*´ェ`)

基板デザインがこちら(*´ェ`)
OSL30301-LXのフットプリントが無かったので自作(*´ェ`)


というのが先週の土日の出来事で12日の夕方に発注して届いたのが18日の今日なので思っていたより早い∑(*゚ェ゚*)

黒色かっこいい…(*´ェ`)

部品はこんな感じ(*゚ェ゚*)

早速部品を実装して動作チェック ワク₍₍ (ง ˘ω˘ )ว ⁾⁾ワク

グゥ動いたぁ∑(*゚ェ゚*)

初めての回路図や基板のデザインを行なったけれどもすんなり発注まで出来て、さらにはんだのやり直しも無しで一発動作でびっくり感動(*゚ェ゚*)

今回IPv4の表示させるためのデータを送っているのは Arduino Uno R4 WiFi で固定値を使っている(*´ェ`)

今後はWiFiで外部に接続したりルーターに問い合わせたりしてグローバルIPを取得したりして表示させる予定(*´ェ`)
Raspberry Pi Pico W でも表示させてみたい ワク₍₍ (ง ˘ω˘ )ว ⁾⁾ワク

DIPパッケージをSOPやSOICに変えたりキャパシターや抵抗も表面実装にしてみたい(*゚ェ゚*)

12桁の7セグメントLEDでIPv4を表示

3桁の7セグメントLEDを見た時に真っ先に思いついたのがIPv4を表示させること(*´ェ`)

というわけで早速3桁7セグメントLEDを4つ買ってIPv4を表示させてみた(*゚ェ゚*)

まずは1つだけで表示させてみる、これがダイナミック点灯と呼ばれる目の残像を利用した表示方法か(*゚ェ゚*)

目で見ると確かに高速で切り替えているように見えない∑(*゚ェ゚*)

なんとなくわかってきたところで4つの3桁7セグメントLEDを繋げてIPv4を表示させてみる(*´ェ`)
シフトレジスタを使ってArduinoとの配線は3本の信号線で済んだ(*´ェ`)
IPの表示はシフトレジスタにIPアドレス1桁の数字と4つのオクテット(3桁7セグメントLED)のうちどれかという位置と、どの桁かという情報を1byteで送っている
例えば1つ目のオクテット(一番左の3桁7セグメントLED)の2桁目は9という数字の場合
00011001 という8bit 1byte分のデータを送る
左から 2bit は 4つのオクテットのうちどれかという位置(1つ目)
次の 2bit は 3桁のうち何桁目か(2桁目)
次の 4bit は 表示したい数字(9)
00 01 1001
となっている(*´ェ`)

7セグメントLED周りの配線が悲しいけれども表示はできた(*゚ェ゚*)
今回は指定したIPを表示させている(*´ェ`)
いずれネットワークからグローバルIPなどを取得させたい(*゚ェ゚*)

最初はチラついていたのでバイパスコンデンサをICの近くに設置したらチラつかなくなって感動した(*゚ェ゚*)
12桁だとちょっと発色が弱いような色が薄い..(*´ェ`)

別の電源からトランジスタを使って増幅させる必要がある?
と思っていたけれど一旦今の回路で使用しているICを減らせそうと気がついたので減らしてみた(*゚ェ゚*)
2to4デコーダとインバータ(NOT)x2、NANDx3を1つのIC 4to16デコーダ(74xx154)でできそうだ∑(*゚ェ゚*)
だがしかし74xx154のDIPが売り切れ..(*´ェ`)生産終了..(*´ェ`)悲しい
SOICの74HC154はあるのでDIPに変換するアダプターと共に注文(*゚ェ゚*)
届くまで4to16デコーダを3to8デコーダ(74xx138)2つ使って置き換えてみることにした(*゚ェ゚*)機能的には同じ(*´ェ`)
だいぶスッキリした∑(*゚ェ゚*)

あら少し色が濃くなった∑(*゚ェ゚*)

SONY SPRESENSE で取得したNMEAセンテンスをシリアル通信で他の端末へ流す

やってみたかった事ができた(*゚ェ゚*)

先日作った SONY SPRESENSE で取得したNMEAセンテンスのデータをシリアル通信で Arduino に繋いだディスプレイに表示させるから発展させて複数のArduino端末へデータを送り各端末でデータを加工し表示させたかったのだ(*´ェ`)

SONY SPRESENSE はNMEAセンテンスをシリアル接続で送るだけ(*゚ェ゚*)
受け取る側のArduinoはそれぞれ表示に必要NMEAセンテンスを取捨選択する(*´ェ`)

一つ目のArduinoは$xxGSV をフォーマットして衛星の位置を表示させて、二つ目のArduinoは$xxZDA をフォーマットして日時の表示をさせている(*´ェ`)

Arduino と LCD  の AE-ATOM0130B3

Arduino R4 Minima を追加で1つ買ってしまった(*´ェ`)

今日は先日買った3つのLCDのAE-ATM0130B3を繋いでみる(*゚ェ゚*)

解像度が240pixel × 240pixel なので図が表示できそうだなと触っているとGNSSロガーで取得したNMEAセンテンスのうちGSVのビューアーに使えるのでは思ったので作ってみることにした(*´ェ`)

なんだかいい感じに作れそう(*゚ェ゚*)

なんだかいい感じに作れそう(*゚ェ゚*)

NMEAセンテンス(GSV)に含まれる1番目の要素 $xxGSV のxx部分で色分けをしたり、衛星番号と組み合わせて辞書のキーにしてみたりした(*´ェ`)

シリアル通信でGSVデータが送られてくる度にデータと表示を更新しているのでデータだけは更新して表示は5秒に1回再描画するくらいがいいのかもしれない(*゚ェ゚*)

SONY SPRESENSE で作成したGNSSロガーからシリアル通信でNMEAセンテンスを垂れ流しにして各センテンスごとのビューアにデータを表示させることができそう(*´ェ`)