Raspberry Pi Monitoring System Via OLED Display Module
by shahizat in Circuits > Raspberry Pi
44904 Views, 18 Favorites, 0 Comments
Raspberry Pi Monitoring System Via OLED Display Module
In this tutorial I’ll explain how to setup 0.96 inch OLED display module for showing system information of Raspberry Pi 4 Model B using its I2C interface.
Supplies
Hardware Required:
- Raspberry Pi 4 Model B
- 128×64 OLED display module (SSD1306)
- Connecting Wires
Hardware Connection
Below are the connections of OLED module with Raspberry Pi 4 Model B:
- SDA ==> GPIO 2(pin 3)
- SCL ==> GPIO 3(pin 5)
- VCC ==> 3.3V(pin 1)
- GND ==> GND(pin 14)
Enable I2C Interface
The I2C interface is disabled by default so you need to enable it. You can do this within the raspi-config tool on the command line by running:
sudo raspi-config
- A blue screen will appear. Now select Interfacing option.
- After this, we need to select I2C option.
- After this, we need to select Yes and press enter and then ok.
- After this, we need to reboot Raspberry Pi by typing below command:
sudo reboot
The following libraries may already be installed but run these commands anyway to make sure :
sudo apt-get install python-smbus sudo apt-get install i2c-tools
To find a list of the devices connected to the I2C bus on the Raspberry Pi you can use the following command:
sudo i2cdetect -y 1
On the older Raspberry Pi type the following command:
sudo i2cdetect -y 0
Here is the output I see on my Raspberry Pi 4 Model B:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
It showed the device had been detected with an address of 0x3c. This is the default hex address for this type of device.
Install Adafruit Python Library for OLED Display Module
To install the library we will clone the Adafruit git repository.
git clone https://github.com/adafruit/Adafruit_Python_SSD13...
Once completes navigate to the library’s directory:
cd Adafruit_Python_SSD1306
and install the library for Python 2:
sudo python setup.py install
or for Python 3:
sudo python3 setup.py install
System Monitor Python Script
Navigate into the examples directory:
cd examples
In this folder you should find example script:
- stats.py
python3 stats.py
By default it shows memory usage, disk usage, CPU load and ip address. Also, b-prefix in front of each strings can be seen.
It will be slightly modified in order to get rid of the b-prefix and add CPU temperature of Raspberry Pi 4 Model B as well.
cmd = "hostname -I | cut -d\' \' -f1"
will be replaced by the following line:
cmd = "hostname -I |cut -f 2 -d ' '"
This code is perfect on boot when you want to find your Raspberry Pi's IP address for SSH or VNC.
The following lines will be added to show CPU temperature on OLED display module:
cmd = "vcgencmd measure_temp |cut -f 2 -d '='" temp = subprocess.check_output(cmd, shell = True )
Below code was modified accordingly to remove 'b' character from the OLED display.
draw.text((x, top), "IP: " + str(IP,'utf-8'), font=font, fill=255)<br> draw.text((x, top+8), str(CPU,'utf-8') + " " + str(temp,'utf-8') , font=font, fill=255) draw.text((x, top+16), str(MemUsage,'utf-8'), font=font, fill=255) draw.text((x, top+25), str(Disk,'utf-8'), font=font, fill=255)
Finally, you should see something similar to the following output on OLED display:
Running Stats.py on Startup
You can easily make it so this program runs every time you boot your Raspberry Pi.
The fastest and easiest way is to put it in /etc/rc.local. Run the bellow command on terminal:
sudo nano /etc/rc.local
Scroll down, and just before the exit 0 line, enter the following:
sudo python /home/pi/stats.py &
- Save and exit.
- Reboot to verify that the screen comes up on boot!