19.01.2026

Korištenje Qwiic uređaja sa Raspberry Pi platformom

Qwiic
Raspberry Pi
Using Qwiic devices with Raspberry Pi

Table of contents

Uvod u Qwiic i Raspberry Pi: Besprijekorna integracija

Table of contents

Uvod u Qwiic i Raspberry Pi: Besprijekorna integracija

Uvod u Qwiic i Raspberry Pi: Besprijekorna integracija

Ako već poznaješ Raspberry Pi i želiš jednostavniji, uredniji način povezivanja senzora i modula, Qwiic ekosustav je nadogradnja koju tražiš.
Qwiic uklanja breadboarde, neuredno ožičenje i pogrešno mapiranje pinova. Samo jednim 4-pinskim kabelom možeš povezati senzore, zaslone, ulaze i još mnogo toga, što ga čini savršenim za početnike, učenike i hobiste koji grade svoje prve Raspberry Pi I2C projekte.

Što je Qwiic Connect sustav?

Qwiic Connect sustav je standardizirani 4-pinski konektor koji se koristi za I2C komunikaciju. Dizajniran je kako bi elektroniku učinio pristupačnijom uklanjanjem potrebe za lemljenjem ili ožičenjem.

Qwiic konektor uključuje:

  • GND
  • Napajanje 3.3 V
  • SCL
  • SDA

Budući da je konektor polariziran, ne možeš ga utaknuti naopako, što ga čini idealnim za početnike.

Zašto koristiti Qwiic s Raspberry Pi?

Razlozi zašto Qwiic briljira na Raspberry Pi:

  • Nema grešaka u ožičenju, što ga čini savršenim za učionice i brzo prototipiranje
  • Poveži više I2C uređaja u lanac
  • Siguran za 3.3 V po defaultu
  • Kompaktni konektori štede prostor u kućištima
  • Radi s mnogim plug-and-play modulima

Ako želiš da tvoji Raspberry Pi projekti budu uredni, brzi i pouzdani, Qwiic je pravi izbor.

Što će ti trebati za ovaj vodič

Da bi pratio ovaj vodič trebat će ti:

  • 1x Raspberry Pi s Raspberry Pi OS
  • 2x Qwiic kabel
  • 1x Soldered BME680 senzor okoliša
  • 1x Soldered SSD1306 OLED zaslon
  • 1x Soldered Raspberry Pi Qwiic adapter

Korak 1: Omogućavanje I2C komunikacije na tvom Raspberry Pi-u

  1. Otvori terminal na svom Raspberry Pi-u
sudo raspi-config
  1. Navigiraj na: Interface Options → I2C → Enable
  2. Ponovno pokreni Raspberry Pi

Za potvrdu da I2C radi:

sudo apt install i2c-tools
i2cdetect -y 1

Korak 2: Povezivanje tvojih Qwiic uređaja

Poveži svoj BME680 senzor i OLED zaslon na Raspberry Pi pomoću Qwiic kabela. Oba uređaja su I2C, pa ih možeš povezati u lanac ili ih spojiti odvojeno na Qwiic Raspberry Pi adapter.

Korak 3: Instalacija potrebnih biblioteka

Prvo instaliraj pigpio daemon, koji je potreban za komunikaciju s BME680 u ovom projektu:

sudo apt update
sudo apt install pigpio python3-pigpio python3-smbus

Omogući i pokreni pigpio daemon:

sudo systemctl enable pigpiod
sudo systemctl start pigpiod

Instaliraj pomoćne Python pakete za SSD1306 OLED zaslon:

pip3 install adafruit-circuitpython-ssd1306
pip3 install Pillow

Potvrdi da su I2C uređaji vidljivi:

i2cdetect -y 1

Trebali bi se vidjeti BME680 na 0x76 i OLED zaslon na 0x3C.

Korak 4: Jednostavan projekt: Čitanje s Qwiic senzora

Jedan od najlakših načina da vidiš potencijal Qwiic sustava je spojiti BME680 senzor okoliša i prikazati podatke uživo na malom OLED zaslonu. Ovaj projekt prikazuje dva česta načina komunikacije s modulima: komunikaciju na visokoj razini koristeći Adafruitovu SSD1306 biblioteku za zaslon te komunikaciju na niskoj razini s BME680 koristeći pigpio daemon.

import os
import pigpio
import time
import board
import busio
from PIL import Image, ImageDraw, ImageFont
import adafruit_ssd1306

# Check if pigpiod is running, start if it's not
os.system("pgrep pigpiod >/dev/null || sudo pigpiod")

# I2C parameters for the BME680 sensor
I2C_ADDR = 0x76  # Default I2C address of the BME680
I2C_BUS = 1      # Use I2C bus 1 (standard on most Raspberry Pi models)

# helper function: wait until measurement is done
def wait_measurement_done(pi, handle, timeout_s=0.5):
    start = time.time()
    while True:
        count, status = pi.i2c_read_i2c_block_data(handle, 0x1D, 1)
        if count == 1:
            # Bit 5 clears when measurement is done
            if (status[0] & 0x20) == 0:
                return True
        if time.time() - start > timeout_s:
            return False
        time.sleep(0.005)

# Function to perform a single temperature reading from the BME680 sensor
def BME680Temperature():
    pi = pigpio.pi()
    if not pi.connected:
        print("Cannot connect to pigpio daemon")
        raise SystemExit(1)

    h = pi.i2c_open(I2C_BUS, I2C_ADDR)

    # Trigger a forced temperature measurement
    pi.i2c_write_byte_data(h, 0x74, 0xA1)

    wait_measurement_done(pi, h, timeout_s=0.5)

    # Read raw ADC temperature data (3 bytes starting from register 0x22)
    count, tbytes = pi.i2c_read_i2c_block_data(h, 0x22, 3)
    temp_msb, temp_lsb, temp_xlsb = tbytes
    temp_adc = (temp_msb << 12) | (temp_lsb << 4) | (temp_xlsb >> 4)

    # Read calibration parameters used for temperature compensation
    count, data = pi.i2c_read_i2c_block_data(h, 0xE9, 2)
    par_t1 = data[0] | (data[1] << 8)

    count, data = pi.i2c_read_i2c_block_data(h, 0x8A, 2)
    par_t2 = data[0] | (data[1] << 8)
    if par_t2 & 0x8000:
        par_t2 -= 1 << 16  # Convert to signed integer

    count, data = pi.i2c_read_i2c_block_data(h, 0x8C, 1)
    par_t3 = data[0]
    if par_t3 & 0x80:
        par_t3 -= 1 << 8  # Convert to signed integer

    # Apply compensation formula (Bosch datasheet)
    var1 = ((temp_adc / 16384.0) - (par_t1 / 1024.0)) * par_t2
    var2 = (((temp_adc / 131072.0) - (par_t1 / 8192.0)) ** 2) * (par_t3 * 16.0)
    t_fine = var1 + var2
    temp_comp = t_fine / 5120.0  # Final compensated temperature (°C)

    pi.i2c_close(h)
    pi.stop()
    return temp_comp

# Initialize I2C communication for OLED (128x64 pixels)
i2c = busio.I2C(board.SCL, board.SDA)

# Create an SSD1306 display object
oled = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c)

# Clear the display on startup
oled.fill(0)
oled.show()

# Prepare an image buffer to draw on
image = Image.new("1", (oled.width, oled.height))
draw = ImageDraw.Draw(image)
font = ImageFont.load_default()

while True:
    oled.fill(0)

    # Get temperature from BME680
    temp_comp = BME680Temperature()

    # Draw a rectangle border and temperature text
    draw.rectangle((0, 0, oled.width - 1, oled.height - 1), outline=255, fill=0)
    draw.text((10, 25), f"{temp_comp:.2f} C", font=font, fill=255)

    oled.image(image)
    oled.show()
    time.sleep(5)

Rješavanje čestih problema

1. i2cdetect ne prikazuje BME680 ili OLED

To obično znači da:

  • Qwiic kabel nije potpuno spojen
  • Kabel je spojen u pogrešan port
  • Zaboravio si omogućiti I2C komunikaciju na Raspberry Pi-u
  • BME680 je možda na drugoj adresi (0x76 ili 0x77)

2. Pigpio greška: "Cannot connecct to the pigpio daemon"

pigpio daemon mora biti pokrenut prije nego skripta krene. Samo otvori terminal i pokreni:

sudo systemctl start pigpiod

Ako želiš da se uvijek pokreće pri bootu:

sudo systemctl enable pigpiod

3. OLED zaslon ostaje crn ili ne prikazuje ništa

To najčešće znači da:

  • OLED nije očišćen prije pisanja
  • Pogrešna rezolucija zaslona
  • I2C adresa je drugačija
  • Skripta i dalje crta u stari image buffer

Jednostavno rješenje je pozvati prije crtanja:

oled.fill(0)
oled.show()

Podigni svoje projekte na višu razinu s više Qwiic uređaja

Nakon što vidiš koliko je jednostavno povezati Qwiic uređaj s tvojim Raspberry Pi i sve pokrenuti zajedno, zabava tek počinje. Pogledaj našu kolekciju Qwiic senzorskih/aktuatorskih modula koja stalno raste na: https://soldered.com/categories/easyc-2/.

Proizvodi u ovom članku

Povezani članci

Using Qwiic devices with Raspberry Pi
Korištenje Qwiic uređaja sa Raspberry Pi platformom

Vodič za Raspberry Pi I2C s Qwiic sustavom. Pokriva potrebnu opremu, uključivanje I2C-a, spajanje BME680 senzora i SSD1306 OLED-a, instalaciju alata/biblioteka, provjeru s i2cdetect te Python primjer koji čita temperaturu i prikazuje je na OLED-u.

 

Pročitaj više