LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

KAmodRPi-Pmod-HAT – nakładka na Raspberry Pi ze złączami Pmod

Artykuł opisuje nakładkę na Raspberry Pi umożliwiającą łatwe podłączenie modułów rozszerzeniowych w standardzie Pmod – KAmodRPi-Pmod-HAT.

Pmod to popularny interfejs służący do podłączenia płytek rozszerzeniowych z zestawami rozwojowymi dla mikrokontrolerów i układów FPGA. Został opracowany i spopularyzowany przez firmę Digilent, który jest także największym producentem modułów Pmod. Umożliwia on podłączenie do płytki bazowej dodatkowych modułów, takich jak czujniki, sterowniki silników, wyświetlacze, moduły komunikacji bezprzewodowej i wiele innych. Standard Pmod umożliwia komunikację za pośrednictwem interfejsów I2C, SPI, UART, a także za pomocą linii GPIO.

Kompendium dotyczące oferty modułów Pmod we współpracy z mikrokontrolerem STM32 można znaleźć w serii artykułów Digilent Pmod i STM32

Ze względu na tak bogatą ofertę modułów, można się zastanowić nad sposobem wykorzystania interfejsu do rozszerzenia możliwości Raspberry Pi? W odpowiedzi na to, projektanci z zespołu Kamami.pl opracowali nakładkę KAmodRPi-Pmod-HAT, która pozwala podłączyć moduły bezpośrednio do złączy Pmod zamontowanych na płytce. W artykule zaprezentujemy możliwości nakładki, a także pokażemy prosty przykład wykorzystania modułu do współpracy z czujnikiem temperatury i ciśnienia KAmodMPL3115A2, a także z wyświetlaczem PmodOLEDrgb.

Rysunek 1. Moduł KAmodRPi-Pmod-HAT

Nakładka KAmodRPi-Pmod-HAT

Nakładka KAmod-Pmod-HAT umożliwia wygodne podłączenie modułów Pmod do interfejsów komunikacyjnych udostępnionych na 40-pinowym złączu Raspberry Pi. Jest kompatybilna z komputerami w wersji 4B, 3B+, 3B, 2B, a także B+. Złącza zamontowane na nakładce umożliwiają korzystanie z interfejsów UART, I2C oraz SPI. Dodatkowo płytka dysponuje złączami KAmod-I2C oraz KAmod-SPI, pozwalającymi na podłączenie do malinki także płytek rozszerzeniowych z serii KAmod.

Kolejnym elementem wyposażenia nakładki KamodRPi-Pmod-HAT jest pamięć EEPROM CAT24C32 wyprodukowana przez ON Semiconductor. Pamięć ma pojemność 32 Kbit. Komunikuje się z malinką za pomocą interfejsu I2C dołączonego do wyprowadzeń GPIO0 i GPIO1, przeznaczonych specjalnie do obsługi pamięci EEPROM. Dysponuje także sprzętowym zabezpieczeniem przed zapisem, które można włączyć lub wyłączyć za pomocą zworki WP na płytce.

Oprócz tego, nakładka zawiera też rezystory podciągające do zasilania linii interfejsu I2C. Rezystory mają wartość 2,2 kΩ i można je dołączyć do magistrali za pomocą zworek I2C Pull-up. Na samej płytce wycięto otwory umożliwiające łatwe przeciągnięcie tasiemek połączeniowych z kamerą i wyświetlaczem.

Rysunek 2. Schemat modułu KAmodRPi-Pmod-HAT

Tak jak wszystkie nakładki na Raspberry Pi, KAmodRPi-Pmod-HAT można zamontować na malince po prostu nakładając moduł na 40-pinowe złącze rozszerzeniowe. Do nakładki dołączono cztery tulejki dystansowe wraz z kompletem śrubek, co ułatwia stabilny montaż. Malinkę z zamontowaną płytką zaprezentowano na rysunku 3.

Rysunek 3. Moduł KAmodRPi-Pmod-HAT zamontowany na komputerze Raspberry Pi

Przykład użycia z modułem KAmodMPL3115A2

Aby zaprezentować możliwości nakładki, pokażę prosty przykład wykorzystania jej do połączenia czujnika temperatury i ciśnienia atmosferycznego KAmodMPL3115A2 z komputerem Raspberry Pi. Moduł zawiera czujnik MPL3115A2 umożliwiający pomiar ciśnienia w zakresie od 200 do 1100 hPa, a także temperatury w zakresie od -40°C do +85°C. Czujnik komunikuje się za pośrednictwem interfejsu I2C. Moduł ma formę modułu Pmod i zawiera złącze w standardzie Pmod typu 6 (z interfejsem I2C).

Przed uruchomieniem układów wykorzystujących interfejs I2C, SPI lub UART należy włączyć interfejs w konfiguracji Raspberry Pi. Aby uruchomić konfigurator wpisz w konsoli:

sudo raspi-config

Rysunek 4. Moduł KAmodMPL3115A2

Połączenie sensora z nakładką KAmodRPi-Pmod-HAT również jest bardzo proste – wystarczy dołączyć płytkę do dolnej części złącza I2C na nakładce. Cały połączony układ zaprezentowano na rysunku 5.

Rysunek 5. Moduł KAmodMPL3115A2 połączony z Raspberry Pi za pośrednictwem nakładki KamodRPi-Pmod-HAT

Do odczytu danych z czujnika wykorzystałem kod dostępny na stronie controleverything.com. Pełen kod znajduje się na listingu 1.

Listing 1. Kod przykładu odczytującego dane z czujnika MPL3115A2

import smbus
import time

# Get I2C bus
bus = smbus.SMBus(1)

bus.write_byte_data(0x60, 0x26, 0xB9)
 MPL3115A2 address, 0x60(96)
bus.write_byte_data(0x60, 0x13, 0x07)
# MPL3115A2 address, 0x60(96)
# Select control register, 0x26(38)
#		0xB9(185)	Active mode, OSR = 128, Altimeter mode
bus.write_byte_data(0x60, 0x26, 0xB9)

time.sleep(1)

# MPL3115A2 address, 0x60(96)
# Read data back from 0x00(00), 6 bytes
# status, tHeight MSB1, tHeight MSB, tHeight LSB, temp MSB, temp LSB
data = bus.read_i2c_block_data(0x60, 0x00, 6)


tHeight = ((data[1] * 65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16
temp = ((data[4] * 256) + (data[5] & 0xF0)) / 16
altitude = tHeight / 16.0
cTemp = temp / 16.0
fTemp = cTemp * 1.8 + 32

bus.write_byte_data(0x60, 0x26, 0x39)

time.sleep(1)

# MPL3115A2 address, 0x60(96)
# Read data back from 0x00(00), 4 bytes
# status, pres MSB1, pres MSB, pres LSB
data = bus.read_i2c_block_data(0x60, 0x00, 4)

# Convert the data to 20-bits
pres = ((data[1] * 65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16
pressure = (pres / 4.0) / 1000.0

# Output data to screen
print "Pressure : %.2f kPa" %pressure
print "Altitude : %.2f m" %altitude
print "Temperature in Celsius  : %.2f C" %cTemp
print "Temperature in Fahrenheit  : %.2f F" %fTemp

Aby włączyć przykład należy skopiować kod na malinkę, a następnie uruchomić poleceniem:

sudo python MPL3115A2.py

Po uruchomieniu aplikacja powinna pokazać wyniki pomiarów w formie podobnej do zaprezentowanej na rysunku 6.

Rysunek 6. Wyniki przykładowego kodu obsługującego moduł KamodMPL3115A2

Biblioteki Digilent do obsługi modułów Pmod na Raspberry Pi

Również producent modułów Pmod – firma Digilent – udostępnia bibliotekę do obsługi płytek na platformie Raspberry Pi. Biblioteka zawiera interfejs API w języku Python do obsługi modułów, a także przykłady na malinkę. Więcej informacji oraz pełna dokumentacja biblioteki znajduje się na stronie: https://pypi.org/project/DesignSpark.Pmod/

Aby zainstalować bibliotekę, należy wykonać w terminalu następujące komendy:

sudo apt-get update
sudo apt-get install python-pip python-dev libfreetype6-dev libjpeg-dev build-essential
sudo python3 -m pip install designspark.pmod

W artykule zaprezentuję przykład z biblioteki prezentujący obsługę modułu PmodOLEDrgb. Zawiera on kolorowy wyświetlacz OLED o rozdzielczości 96 x 64 pikseli z 16-bitową głębią kolorów. Umożliwia wyświetlenie kolorowej grafiki, tekstu, a także innych komunikatów graficznych. Dysponuje 12-pinowym złączem Pmod i komunikuje się za pomocą interfejsu SPI. Należy go umieścić w złączu SPI nakładki KAmodRPi-Pmod-HAT.

Rysunek 7. Moduł PmodOLEDrgb

Przykładowy kod opracowany przez specjalistów z firmy Digilent prezentuje możliwości modułu PmodOLEDrgb. Wyświetla on słowa „Hello, World” umieszczone w białym prostokącie. Kod zaprezentowano na listingu 2.

Listing 2. Przykładowy kod do obsługi modułu PmodOLEDrgb

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) 2017 RS Components Ltd
# SPDX-License-Identifier: MIT License

"""
Display Hello, World! in bounding box.
"""

from DesignSpark.Pmod.HAT import createPmod
from luma.core.render import canvas
from luma.oled.device import ssd1331

if __name__ == '__main__':
    try:
        oled = createPmod('OLEDrgb','JA')
        device = oled.getDevice()
        
        with canvas(device) as draw:
            draw.rectangle(device.bounding_box, outline="white", fill="black")
            draw.text((16,20), "Hello, World!", fill="white")
    
        while True:
            pass
    except KeyboardInterrupt:
        pass
    finally:
        oled.cleanup()

Aby uruchomić przykład, po skopiowaniu kodu i zapisaniu w pliku z rozszerzeniem .py, należy wykonać komendę:

sudo python3 PmodOLEDrgb.py

Efekt działania kodu pokazano na rysunku 8.

Rysunek 8. Przykład obsługi modułu PmodOLEGrgb na platformie Raspberry Pi

Moduł KAmodRPi-Pmod-HAT, moduły rozszerzeniowe Digilent Pmod, a także KAmod są dostępne w ofercie sklepu Kamami.pl.