Now that I've built a new desktop for the first time in a while, I've been keen to return to PC modding and come up with some projects for my new machine.
Thing is, these days PCs are designed much more aesthetically than the old beige boxes, and so there's a lot less that needs doing - the case I have has a large glass window, the motherboard already has some RGB LEDs built in - the graphics card even has some too.
I wanted to add some case lights - thought that might be a nice throwback project, but I noticed the motherboard already has pin headers for a 5050 LED strip. Don't get me wrong, I think it's a good thing that manufacturers are taking the initiative, but all it involved was little more than soldering some wires to a length of LED strip and plugging it in - hardly a project worth writing about.
So I thought about doing a new take on the case-front notification screen. In the past this would be a basic HD44780-type LCD that could display basic text - currently playing track, system temperature etc.
My plan is to use a small, full colour screen to fit with the more colourful style of the new desktop.
Other requirements are that as I dual boot Windows and Linux, it needs to work in both environments, so I'm aiming for minimal overhead on the computer itself.
Setting up the Raspberry Pi
In order to meet that goal, I plan for it to be a completely separate device that the PC can just pipe data to, and the device itself handle the processing and display. I started with a Raspberry Pi A and a clean install of Raspbian ("Stretch Lite"), and booted to the terminal using the serial console GPIO pins.
Getting connected & installing Java
I'll need to get the Pi connected to the internet temporarily to get everything setup and installed. I used a USB wifi adapter then edited
/etc/network/interfaces
with the following, replacing the ssid and password as necessary.
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "ssid"
wpa-psk "password"
then of course started with the usual update/upgrade
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openjdk-8-jdk
and reboot if necessary.
The display
As the display is to be mounted in a desktop computer case, there are some rather specific requirements.
- Size - it needs to be small enough to fit in the case
- Power - it can't use too much, and needs to be able to be powered from the computers PSU
- Connectivity - HDMI would probably be overkill, after all, it's for system stats and notifications, not a extra monitor, and it needs to connect to the Pi, so Composite video seems appropriate.
The display and its connections |
It fits the bill nicely - small, composite video connection, and runs of 12v, which can be provided by the PSU. Perfect. The camera the kit includes is unnecessary for this project, but I'm sure I'll find a use for it someday.
Adding a GUI
The Raspbian 'Lite' distribution doesn't come with a GUI, so I needed to install one - I went with RPD.
This is installed with
apt-get install xserver-xorg xinit raspberrypi-ui-mods lxterminal gvfs
As the pi will be running without user interaction, it needs to be configured to automatically login to the desktop. This can be done with:
raspi-config
We also need it to stop going to screensaver. The easiest way to do this is to just uninstall the screensaver with
apt-get remove xscreensaver
.We also need to stop the screen blanking, this can be done by adding the following lines to
/home/pi/.config/lxsession/LXDE-pi/autostart
@xset s noblank
@xset s off
@xset -dpms
And finally we need to hide the mouse cursor:apt-get install unclutter
Once installed, we need to add the line
unclutter -idle 0 &
to /etc/profile.
Setting up serial communication
The Pi will be without internet connection, so to get data from the PC to it, we'll be sending it over the GPIO pins.
Firstly, use raspi-config again to disable the serial port console, as this can interfere with the data transfer.
Then run
sudo stty -F /dev/ttyAMA0 speed 115200 cs8 -cstopb -parenb
to setup the serial port.Run the same command on the desktop - just change the /dev/ttyAMA0 part to whatever the serial port on the machine is - most likely /dev/ttyUSB0 if you're using a USB to serial adapter or Arduino. (Currently I'm using an Arduino with a 5v to 3.3v level converter, though will come up with a more permanent solution when installing the screen in the case).
Installing the software
Take the compiled jar and move it over to the Pi - I put it in /home/pi.
Create a file in /home/pi/runPi.sh containing this command
cat /dev/ttyAMA0 | java -jar /home/pi/PiScreen.jar
Edit the
/etc/profile
and add this command to the bottomsh /home/pi/runPi.sh &
This will cause the software to run on boot, and pipe input to the serial port to the application. That's it for the Pi setup.
Setting up the desktop
The software is designed to take its input from the 'sensors' command which is part of the lx_sensors package, so install this if it's not already installed on your system.
To test the display, with it booted and running, on the desktop send the comman
sensors > /dev/ttyUSB0
you should see the dial on the display change to show the system temperature.
Send it a couple of times with the system under different loads to see the number change.
To automate this, simply add it to cron to run at set intervals, of if you want it run more frequently, add the below to ~/.bashrc (the 5 indicates 5 second intervals, adjust as necessary)
startSensors() {
while true ; do sensors > /dev/ttyUSB0 2>/dev/null & sleep 5; done
}
This will allow the sensors to be started by using the command "startSensors &" in a terminal.
The next steps will be tidying up the wiring, and mounting it in the case itself.
|
No comments:
Post a Comment