- 必要なコンポーネント
- 回路図
- EasyEDAを使用したRaspberryPi RGB LCDHAT用のPCBの製造
- EasyEDAを使用してPCBサンプルをオンラインで計算および注文する
- LCDハット用のRaspberryPiセットアップ
- Raspberry Pi LCDHATのPythonコード
- Raspberry Pi RGB LCDHATのテスト
Raspberry Pi Hatは、Arduinoのシールドと同じで、Raspberry Piの上部に直接取り付けることができ、それ以上の接続は必要ありません。ここでは、PCB上にRaspberryPi用のRGBLCDハットを作成します。このLCDハットは、16x2 LCDモジュール、5つのスイッチ、および3つのNeoPixelLEDで構成されています。ここでは、スイッチを使用してディスプレイ上のテキストを変更し、NeoPixelLEDをインジケーターとして使用しています。これらのスイッチとNeoPixelsは、スイッチを使用して温度や湿度などのセンサー値を表示したり、Neoピクセルを使用してエラーを示す赤やデータの受信中に緑などのステータスを表示したりするなどの要件に応じてプログラムできます。
ここでは、使用するEasyEDAこのパイHATための回路およびPCBを設計するオンラインソフトウェアを、そしてJLCPCB PCBを注文します。
必要なコンポーネント
- ラズベリーパイ4
- 16 * 2LCDディスプレイモジュール
- ネオピクセルLED(3)
- コンデンサ
- スイッチ(5)
回路図
Raspberry Pi RGB LCDHATの完全な回路図を以下に示します。回路図はEasyEDAを使用して描かれました。ご覧のとおり、16x2 LCDモジュール、3つのNeoPixel LED、5つのスイッチをRaspberryPiとインターフェースしています。コネクタは、NeoPixelLEDを有効または無効にするためにも使用されます。
EasyEDAを使用したRaspberryPi RGB LCDHAT用のPCBの製造
Raspberry Pi RGB LCD HAT用のPCBを設計する際、最も困難な部分はフットプリントを正しくすることでした。寸法が間違っていると、コンポーネントはPCBに適合しません。しかし幸運なことに、EasyEDAは市場のほぼすべてのコンポーネントにフットプリントを提供します。これは、ユーザーがフットプリントを作成し、それを一般の人々がプロジェクトで使用できるようにする広大なユーザーコミュニティのためです。
EasyEDAは、私が以前に何度も使用したオンラインEDAツールであり、フットプリントのコレクションが豊富で、オープンソースであるため、非常に便利であることがわかりました。PCBを設計した後、低コストのPCB製造サービスであるJLCPCBによってPCBサンプルを注文できます。また、電子部品の在庫が豊富な部品調達サービスも提供しており、ユーザーはPCBの注文と一緒に必要な部品を注文できます。
回路とPCBを設計する際に、回路とPCB設計を公開して、他のユーザーがそれらをコピーまたは編集して作業を活用できるようにすることもできます。また、このPi RGBLCDハット設計を公開しました。以下を確認してください。リンク:
- https://easyeda.com/CircuitDigest/Pi-RGB-LCD-HAT
[レイヤー]ウィンドウからレイヤーを選択すると、PCBの任意のレイヤー(上、下、トップシルク、下のシルクなど)を表示できます。これとは別に、製造後にPCBがどのように見えるかについてのPCBの3Dモデルビューも提供します。LCDHATの最上層と最下層のスナップショットは次のようになります。
EasyEDAを使用してPCBサンプルをオンラインで計算および注文する
このPIRGB LCD HATの設計が完了したら、JLCPCB.comからPCBを注文できます。JLCPCBからPCBを注文するには、ガーバーファイルが必要です。以下のリンクからガーバーファイルをダウンロードできます。
- Raspberry Pi RGBLCDハットのガーバーファイル
PCBのガーバーファイルを生成するには、EasyEDAエディターページの [Generate Fabrication File ]ボタンをクリックし、そこからガーバーファイルをダウンロードするか、下の画像に示すように[Order atJLCPCB]をクリックします。これにより、JLCPCB.comにリダイレクトされます。ここで、注文するPCBの数、必要な銅層の数、PCBの厚さ、銅の重量、PCBの色、および以下に示すスナップショットのようなその他のPCBパラメーターを選択できます。
[ JLCPCBで注文] ボタンをクリックすると、JLCPCB Webサイトに移動し、PCBを2ドルという非常に低いレートで注文できます。ビルド時間も非常に短く、DHLで3〜5日で48時間です。注文から1週間以内にPCBを入手できます。
PCBを注文した後、PCBの製造進捗状況を日付と時刻で確認できます。下の画像に示すように、アカウントページに移動し、PCBの下の[生産の進捗状況]リンクをクリックして確認できます。
PCBを注文して数日後、下の写真に示すように、PCBサンプルを優れたパッケージで入手しました。
トラックとフットプリントが正しいことを確認した後。PCBの組み立てを進めました。完全にはんだ付けされたボードは次のようになります。
LCDハット用のRaspberryPiセットアップ
プログラミングを開始する前に、Raspberry Piは、最初にRaspberry Piを更新し、いくつかの必要なライブラリをインストールします。以下のコマンドを実行して、RaspberryPiを更新およびアップグレードします。
sudo apt-get update sudo apt-get upgrade
次に、NeoPixelLED用のAdafruit_Blinkaライブラリをインストールします。Adafruit_Blinkaライブラリは、PythonでCircuitPythonサポートを提供します。
sudo pip3 install adafruit-circuitpython-neopixel
その後、LCDモジュール用のAdafruit_CharLCDライブラリをインストールします。このライブラリはAdafruitLCDボード用ですが、他のブランドのLCDボードでも機能します。
sudo pip3 install Adafruit-CharLCD
Raspberry Pi LCDHATのPythonコード
ここでは、いくつかのスイッチを使用してLCDモジュールの特定の値とインジケーターとしてのRGB LEDを表示することにより、RaspberryPi用のRGBLCDハットを示しています。したがって、スイッチを押すと、いくつかのセンサー値または他の値が表示されるようにRaspberryPiをプログラムする必要があります。
完全なPythonコードはページの最後にあります。ここでは、コードを段階的に説明しています。
必要なすべてのライブラリをインポートして、コードを開始します。
RPi.GPIOをGPIOとしてインポートするネオピクセルをインポートする時間インポートボードをインポートするAdafruit_CharLCDをLCDとしてインポート
その後、LCDと他のスイッチが接続されているすべてのGPIOピンを定義します。
lcd_rs = 7 lcd_en = 8 lcd_d4 = 25 lcd_d5 = 24 lcd_d6 = 23 lcd_d7 = 18 lcd_backlight = 2 sw0 = 5 sw2 = 13 sw3 = 19 sw4 = 26
次に、BCMモードを使用してGPIOモードを定義します。BOARDに変更することもできます。次に、すべてのスイッチピンを入力として定義します。
GPIO.setmode(GPIO.BCM)#BCM GPIO番号を使用GPIO.setup(sw0、GPIO.IN)GPIO.setup(sw2、GPIO.IN)GPIO.setup(sw3、GPIO.IN)GPIO.setup(sw4、GPIO 。に)
その後、Neo PixelLEDが接続されるGPIOピンを定義します。次に、Neo PixelLEDの数を定義します。ここでは3つのLEDが使用されており、必要に応じて変更できます。
pixel_pin = board.D21 num_pixels = 3
lcddisplay() 関数内で、各スイッチに特定のタスクを割り当てます。たとえば、ここで最初のスイッチを押すと、Raspberry PiはLCDに「UP」を表示し、2番目のスイッチを押すと、LCDに「DOWN」を表示する必要があります。他の2つのボタンについても同様です。
LCDに何かを印刷する代わりに、これらのスイッチを使用して別のタスクを実行できます。たとえば、switch1を使用して温度値を表示し、switch2を使用して湿度値を表示し、switch3を使用して圧力値を表示することができます。
def lcddisplay():if(GPIO.input(sw0)== False):lcd.clear()lcd.set_cursor(0,0)lcd.message( 'UP')if(GPIO.input(sw2)== False ):lcd.clear()lcd.set_cursor(0,0)lcd.message( 'DOWN')if(GPIO.input(sw3)== False):lcd.clear()lcd.set_cursor(0,0)lcd.message( 'LEFT')if(GPIO.input(sw4)== False):lcd.clear()lcd.set_cursor(0,0)lcd.message( 'RIGHT')
現在、 while true ループ内では、pixels.fill関数を使用して、NeoPixelをさまざまな色で照らしています。そのため、Piは、ネオピクセルを赤緑と青の色でそれぞれ1秒間点灯するようにプログラムされています。
これらのネオピクセルをインジケーターとして使用することもできます。たとえば、1つのNeo Pixelを赤色で点灯して、Piが電源に接続されていることを示したり、他のLEDを使用してPiがデータを受信または送信していることを示したりすることができます。
pixel.fill((255、0、0))pixels.show()time.sleep(1)pixels.fill((0、255、0))pixels.show()time.sleep(1)pixels.fill( (0、0、255))pixels.show()time.sleep(1)rainbow_cycle(0.001)
Raspberry Pi RGB LCDHATのテスト
LCDを組み立ててRaspberryPiとインターフェースした後、このPI RGB LCDHATを使用する準備が整いました。そのためには、以下のコマンドを使用してPythonコードを実行します。
python code_filename.py
次に、スイッチを押します。SW0スイッチを押すと、LCDに「UP」と表示されます。SW2スイッチの場合、「ダウン」と出力され、残りのスイッチについても同じように出力されます。
完全な作業ビデオPythonコードと一緒には以下のとおりです。