JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

苗の定植

2022-05-15 19:06:09 | 家庭菜園と花
 一昨日、昨日と雨が降り、恵みの雨になりました。

 今朝は、集落の共同作業がありましたので、その後で先日(5月11日)に購入した苗を畑に植えました。

 ナス6本、ピーマン3本、甘トウガラシ2本、トマト6本の苗を植えつけました。

 ナスは、苗間を1mと広くとっています。あまり剪定せず、大きく育てます。昨年は、ナスの生育が悪かったのですが、今年は大きくなってほしいものです。

 トマトは、昨年と同じように横に寝かせて植え付け、茎の下の部分にも土をかけました。こうすると根がたくさん生え、収量が増えます。

 この後、葉物やオクラ、トウモロコシなどの種を順次蒔いていきます。

Raspberry Pi Pico CircuitPython Si5351A テストその2

2022-05-11 13:06:56 | Raspberry Pi Pico
 前の記事の続きです。

 Raspberry Pi Pico CircuitPythonで、Si5351Aに任意の周波数を出力させるテストをします。
 この方法については、JH7UBCホームページのArduinoのページのこちらに詳しい説明をしています。なお、簡単な説明を下に示します。


 7.000000MHzをCLOCK0に出力するスクリプトです。
 Xtal Load Capacitanceを変更する関数がなかったので、レジスタ番号183に、6pFにするためのデータ0x40を書き込んでいます。
 因みに8pFにする場合は、0x80を10pFにする場合は0xC0を書き込みます。
 
----------------------------------------------------------------------------
"""
Raspberry Pi Pico CIrcuitPython Si5351 test
2022.5.11
JH7UBC Keiji Hata

"""

from board import *
import busio

import adafruit_si5351

SCL = GP17
SDA = GP16

# Initialize I2C bus.
i2c = busio.I2C(SCL, SDA)

# Initialize SI5351.
si5351 = adafruit_si5351.SI5351(i2c)
#Si5351 Xtal Load Capacitance=6pF
si5351._write_u8(183,0x40)

frequency = 7000000
XtalFreq = 25000000
denom = 1048575
divider =900000000 // frequency
if divider % 2:
     divider = divider - 1

#PLLA周波数設定
PllFreq = divider * frequency
mult = PllFreq // XtalFreq
L = PllFreq % XtalFreq
num = (L * denom) // XtalFreq

si5351.pll_a.configure_fractional(mult,num,denom)

#CLOCK0出力周波数
si5351.clock_0.configure_integer(si5351.pll_a, divider)

# After configuring PLLs and clocks, enable the outputs.
si5351.outputs_enabled = True

----------------------------------------------------------------------------

 周波数を測定してみました。若干高い周波数を出力します。


Raspberry Pi Pico CircuitPython Si5351A テストその1

2022-05-10 20:23:46 | Raspberry Pi Pico
 Raspberry Pi Pico + CircuitPython + MuIDE環境で、3チャンネル・クロックジェネレーターSi5351Aのテストをします。

 CircuitPythonには、Si5351用のライブラリがありますので、CircuitPythonのLibrariesダウンロードページからmpyライブラリをダウンロードします。

  ダウンロードし、解凍したファイルのlibフォルダ内のadafrit_si5351.mpyをPicoのlibフォルダ内のコピーします。
 今回テストするのは、examplesフォルダ内のsi5351_simpletest.pyです。

 Raspberry Pi PicoとSi5351Aモジュール(秋月電子で販売しているもの)の接続回路図です。 I2C接続で、Pico側は、SCL=GP17,SDA=GP16とします。
このモジュールにはプルアップ抵抗がついていませんので、外付けで10KΩの抵抗でプルアップしました。

 スクリプトです。
 ファイル名は、code.pyとして、Picoのルートの保存し、実行します。
 実際のsi5351_simpletest.pyには、英文の説明が長々としてありますが、割愛して、簡単な説明を加えました。また、そのままでは動きませんでしたので、最初の部分を若干書き換えてあります。
--------------------------------------------------------------------------------
"""
si5351_simpletest.py
"""

from board import *
import busio

import adafruit_si5351

SCL = GP17
SDA = GP16

# Initialize I2C bus.
i2c = busio.I2C(SCL, SDA)

# Initialize SI5351.
si5351 = adafruit_si5351.SI5351(i2c)

#PLLA周波数設定 25MHz×36=900MHz
si5351.pll_a.configure_integer(36)  # Multiply 25mhz by 36
print("PLL A frequency: {0}mhz".format(si5351.pll_a.frequency / 1000000))

#PLLB周波数設定 25MHz×24 2/3=616.66667MHz
si5351.pll_b.configure_fractional(24, 2, 3)  # Multiply 25mhz by 24.667 (24 2/3)
print("PLL B frequency: {0}mhz".format(si5351.pll_b.frequency / 1000000))

#CLOCK0出力周波数 900MHz/8=112.5MHz
si5351.clock_0.configure_integer(si5351.pll_a, 8)
print("Clock 0: {0}mhz".format(si5351.clock_0.frequency / 1000000))

#CLOCK1出力周波数 616.66667MHz/(45 1/2)=13.55311MHz
si5351.clock_1.configure_fractional(si5351.pll_b, 45, 1, 2)  # Divide by 45.5 (45 1/2)
print("Clock 1: {0}mhz".format(si5351.clock_1.frequency / 1000000))

#CLOCK2出力周波数 616.66667MHz/900=0.68518519MHz
si5351.clock_2.configure_integer(si5351.pll_b, 900)

#CLOCK2ポストデバイダ設定 1/64  CLOCK2出力=685.18519KHz/64=10.706KHz
si5351.clock_2.r_divider = adafruit_si5351.R_DIV_64
print("Clock 2: {0}khz".format(si5351.clock_2.frequency / 1000))

# After configuring PLLs and clocks, enable the outputs.
si5351.outputs_enabled = True
# You can disable them by setting false.
--------------------------------------------------------------------------------
 SI5351Aのブロック図です。

 このスクリプトでは、CLOCK0は、PLLA(900MHz)をMS0で1/8して、112.5MHzにしています。
 CLOCK1は、PLLB(616.66667MHz)をMS1で45 1/2分周して、13.553115MHzにしています。
 CLOCK2は、PLLBをMS2で1/900して、685.18519KHzにして、更にポスト分周期R2で1/64にして、10.706KHzにしています。

 ブレッドボードです。

 Si5351Aの出力周波数を測定してみました。
 CLOCK0の出力です。理論値は112.5MHzです。


 CLOCK1の出力です。理論値は、13.553115MHzです。

 CLOCK2の出力です。理論値は、10.706KHzです。

 ほぼ、理論値通りの出力が得られました。
 
 今後、もう少し勉強して、OLED表示とロータリーエンコーダと組み合わせて、VFOを作ってみようと思っています。


Raspberry Pi Pico CircuitPython 2.2インチTFT表示テスト

2022-05-07 11:03:46 | Raspberry Pi Pico
 Raspberry Pi Pico L CircuitPython + MuIDE環境で、2.2インチTFTの表示テストをします。

 接続回路図です。2.2インチTFTディスプレイは、SPI接続で、コントローラは、ILI9341です。
 TFTとPicoの接続は次のようにしました。
 TFT                  Pico
1 Vcc                  3V3OUT(Pin36)
2 GND                Any Pin
3 CS                   GP13(Pin17)
4 RESET             GP14(Pin19)
5 DC                   GP15(Pin20)
6 SDI(MOSI)        GP7(Pin10)
7 SCK                 GP6(Pin9)
8 LED                 3V3OUT
9 SDO(MISO)     接続しない


 ネット上を探すとPicoでのILI9341 TFT表示例が見つかりました。
 「Hello Raspberry Pi」というサイトの記事とスクリプトを参考にして、表示テストをしました。

 まず、CircuitPythonのLibrariesダウンロードページからライブラリをダウンロードします。赤丸で囲んだmpyライブラリをダウンロードします。

 解凍したファイルのlibフォルダ内のadafruit_ili9341.mpyというファイルをPicoのlibフォルダ内にコピーします。更にadafruit_display_textというフォルダをフォルダごとPicoのlibフォルダ内にコピーします。これで準備は完了です。

 先述の「Hello Raspberry Pi」というサイトの記事の中のExample Codeをコピペして、Picoのルート(CIRCUIPY)にcode.pyとして保存して、実行しました。

 ところが、「TypeError: 余分なキーワード引数があります」というエラーメッセージが出て動きませんでした。あれこれ試して、どうやら「max_size= 」を入れると上記のエラーメッセージがでるようなので、Group指定の中から全てmax_sizeを削除したらエラーメッセージがでず、スクリプトが実行されました。

 ブレッドボードとTFTの画面です。

 文字表示され、5秒ごとに画面が90°ずつ回転します。

 一応文字が表示されたのは、確認したのですが、MicroPythonに比べるとスクリプトがちょっと複雑だなと感じました。また、フラフィックスをどのように表示するか、まだよく分かりません。もう少し勉強してみようと思います。