- Vereiste hardware:
- Kennismaken met OLED-schermen:
- Schakelschema:
- OLED verbinden met Raspberry Pi:
- Programmering Toelichting:
De meesten van ons zullen bekend zijn met het 16 × 2 Dot matrix LCD-scherm dat in de meeste projecten wordt gebruikt om wat informatie aan de gebruiker weer te geven. Maar deze LCD-schermen hebben veel beperkingen. In deze tutorial gaan we leren over OLED-weergave en hoe we deze met Raspberry Pi kunnen gebruiken. Er zijn veel soorten OLED-schermen op de markt en er zijn veel manieren om ze aan het werk te krijgen. We hebben al 7 Pin OLED gebruikt met Arduino.
Vereiste hardware:
- 128 × 64 OLED-weergavemodule (SSD1306)
- Raspberry Pi
- Breadboard
- Verbindingsdraden
- Stroomvoorziening
Kennismaken met OLED-schermen:
De term OLED staat voor " Organic Light Emitting diode". Het gebruikt dezelfde technologie die in de meeste van onze televisies wordt gebruikt, maar heeft minder pixels dan deze. Het is echt leuk om deze cool uitziende displaymodules te laten aansluiten op de Raspberry Pi, omdat het onze projecten er cool uit zal laten zien. We hebben hier een volledig artikel over OLED-schermen en de typen ervan behandeld. Hier gebruiken we een monochroom 4-pins SSD1306 0,96 ”OLED-scherm. Dit LCD-scherm werkt alleen met de I2C-modus.
Hieronder staan de verbindingen van OLED met Raspberry pi:
OLED-pin | RPI-pin |
VCC | 3.3v |
GND | GND |
SDA | SDA (fysieke pin 3) |
SCL | SCL (fysieke pin 5) |
Schakelschema:
OLED verbinden met Raspberry Pi:
De RPI-gemeenschap heeft ons al veel bibliotheken gegeven die direct kunnen worden gebruikt om dit een stuk eenvoudiger te maken. Ik heb een paar bibliotheken uitgeprobeerd en ontdekte dat de Adafruit_SSD1306 OLED-bibliotheek heel gemakkelijk te gebruiken was en een handvol grafische opties heeft, daarom zullen we dezelfde in deze tutorial gebruiken.
Stap 1: Schakel I2C-communicatie in
Voordat we de Adafruit SSD1306-bibliotheek kunnen installeren, moeten we I2C-communicatie inschakelen in Raspberry Pi.
Om dit type in Raspberry Pi-console te doen:
sudo raspi -config
En dan verschijnt er een blauw scherm. Selecteer nu de interface-optie
Hierna moeten we I2C selecteren
Het is een feit dat u zich geen zorgen hoeft te maken.
Hierna moeten we ja selecteren en op enter drukken en vervolgens op ok
Hierna moeten we raspberry pi opnieuw opstarten door het onderstaande commando te geven:
sodo herstart
Stap 2: Zoek het OLED I2C-adres en werk het bij
Dan moeten we het OLED I2C-adres vinden met behulp van de gegeven opdracht en je zult een hexadecimaal adres zien.
sudo i2cdetect –y 1
Werk vervolgens Raspberry Pi bij met het gegeven commando:
sudo apt-get update
Stap 3: Installeer python-pip en GPIO-bibliotheek
Hierna moeten we pip installeren met behulp van de gegeven opdracht:
sudo apt-get install build-essential python-dev python-pip
En installeer Raspberry Pi GPIO-bibliotheek
sudo pip installeert RPi.GPIO
Stap 4: Installeer de Python Imaging Library en de smbus- bibliotheek
Ten slotte moeten we de Python Imaging Library en de smbus- bibliotheek in Raspberry Pi installeren met behulp van de gegeven opdracht:
sudo apt-get install python-imaging python-smbus
Stap 5: installeer de Adafruit SSD1306 python-bibliotheek
Nu is het tijd om de Adafruit SSD1306 python-bibliotheekcode en voorbeelden te installeren met behulp van de gegeven opdrachten:
sudo apt-get install git git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git cd Adafruit_Python_SSD1306 sudo python setup.py installeren
Nu kan de gebruiker de code van OLED-interface in Raspberry Pi vinden en kunt u deze direct spelen of zelf aanpassen. Hier hebben we een voorbeeldcode aangepast voor demonstratie. Je vindt de volledige Python-code aan het einde van het artikel.
Programmering Toelichting:
Het programmeergedeelte voor het koppelen van OLED met RPi-project is eenvoudig. eerst moeten we enkele noodzakelijke bibliotheken importeren.
importeer tijd importeer Adafruit_GPIO.SPI als SPI importeer Adafruit_SSD1306 uit PIL importeer afbeelding uit PIL importeer ImageDraw uit PIL importeer ImageFont importeer subproces
Na deze initialiseren het display
RST = 0 disp = Adafruit_SSD1306.SSD1306_128_64 (rst = RST) disp.begin () disp.clear () disp.display () breedte = disp.breedte hoogte = disp.hoogte image1 = Image.new ('1', (width, hoogte)) draw = ImageDraw.Draw (afbeelding1) draw.rectangle ((0,0, breedte, hoogte), omtrek = 0, opvulling = 0) opvulling = -2 boven = opvulling onder = hoogte-opvulling x = 0 lettertype = ImageFont.load_default () Hierna kunnen we gegevens of afbeeldingen naar OLED verzenden met behulp van de opgegeven code
# Schrijf twee regels tekst. disp.clear () disp.display () draw.text ((x, top), "OLED-interface", font = font, fill = 255) draw.text ((x, top + 8), "Circuit Digest", font = font, fill = 255) draw.text ((x, boven + 16), "Voor meer video's", font = font, fill = 255) draw.text ((x, boven + 25), "Bezoek om", font = font, fill = 255) draw.text ((x, top + 34), "www.circuitdigest.com", font = font, fill = 255) # Toon afbeelding. disp.image (image1) disp.display () time.sleep (2) if disp.height == 64: image = Image.open ('img1.png'). convert ('1') else: image = Image. open ('img1.png'). convert ('1') disp.image (afbeelding) disp.display () time.sleep (2) als disp.height == 64: image = Image.open ('img3.jpg'). convert ('1') else: image = Image.open ('img3.jpg'). convert ('1')
Deze OLED is er in twee varianten: de ene is 128 * 32 en de andere is 128 * 64, zodat de gebruiker iedereen dienovereenkomstig kan selecteren tijdens het initialiseren van OLED. Hier hebben we deze code voor beide geschreven. De gebruiker hoeft alleen OLED te initialiseren voor 128 * 64 pixels, zoals:
disp = Adafruit_SSD1306.SSD1306_128_64 (rst = RST)
Alle code en functies zijn gemakkelijk te begrijpen en er is geen verdere uitleg nodig. Begin gewoon en probeer te spelen met hoogte, breedte en afbeeldingen en probeer een aantal andere functies om nog meer coole geometrische figuren te maken.
Volledige pythoncode en demonstratievideo worden hieronder gegeven en hier vind je de afbeeldingen die we in dit programma hebben gebruikt.
Controleer ook OLED-interface met Arduino.