Table of contents
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
- Raspberry Pi 5 (4GB)
- Qwiic / easyC kabel
- BME680 senzor okoliša
- SSD1306 OLED zaslon (0.96")
- Raspberry Pi Qwiic / easyC adapter
Korak 1: Omogućavanje I2C komunikacije na tvom Raspberry Pi-u
- Otvori terminal na svom Raspberry Pi-u
sudo raspi-config
- Navigiraj na: Interface Options → I2C → Enable
- 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/.