Introduction: Video Calling on Raspberry Pi 3
Since I left my home 5 years ago for my university studies, I realised how difficult it is to be away from family. Video calling is an option for most people, however, as my parents are not in the position to learn how to use a computer, the only option was to build a system that would be as simple as possible for them to operate, wouldn't need maintenance, and it would be inexpensive as well. Additionally, the system had to be able to be connected to a television screen, so my parents will be able to comfortably use it and they won't have to look into a tiny phone screen in order to see me.
Some smart TVs provide a Skype application, however you have to buy a compatible camera, of which the cost is approximately equal with the total cost of this whole system. Furthermore, Skype ditches support for Smart TVs, therefore using a Smart TV with Skype is not an option anymore.
Follow the steps of my first instructable, and video calling will become easy Pi-easy!
Step 1: Picking Up the Parts
Raspberry Pi 3 Model B just came out a few weeks ago, a very promising embedded system, which can be bought at the price of $50. Including a power supply, a case, a couple of heat sinks and a Micro SD card, the total cost is a little more than $90.
Additionally you will need an HDMI cable in order to connect the board to the television screen, and optionally an Ethernet cable for internet connectivity. Although Raspberry Pi 3 Model B is equipped with a Wi-Fi chip, a wired connection is always preferred, as it is more reliable.
Note that Raspberry Pi 3 Model B tends to get hot easily on video calls, therefore a pair of heat sinks is recommended. I'm sorry that I cannot provide you pictures from installing the heat sinks on the board as I had them installed before thinking of writing this instructable guide. However, installing the heat sinks on the board is a very easy job, and there are many guides available online that can help you on how to do it.
A common phone charger will NOT do, as Raspberry Pi 3 Model B needs an output of 5.1V and 2.5A, in contrast to most phone chargers that provide an output of 5V and up to 2A.
Attention as well has to be paid to the Micro SD and the Camera, because only specific cards and cameras are compatible with the Raspberry Pi 3 Model B. A Micro SD card with a minimum size of 8 GB is needed for the operating system of the board.
*Another important notice!*
A USB camera with a microphone is preferred, as Raspberry Pi 3 Model B has no audio input if you want to connect a microphone to it!
At last, you will also need a keyboard and a mouse for setting up the system. Later, when the system is ready, only a simple keyboard will be needed in order to safely shutting down the Raspberry Pi board. And of course, you will need a monitor in order to make video calls.
Lets sum up:
- Raspberry Pi 3 Model B
- Compatible Micro SD Card (Class 10 recommended)
- Compatible USB Camera
- HDMI Cable
- Television or Monitor Compatible with HDMI
- Mouse (Optional, but recommended)
- Official Raspberry Pi Power Supply (Optional, but recommended)
- Raspberry Pi Case (Optional, but recommended)
- Heat Sinks (Optional, but recommended)
- Ethernet Cable (Optional, but recommended)
Step 2: Setting Up the Operating System
Use a computer with an SD card reader and visit the NOOBS webpage and download the latest version of NOOBS either by torrent download or by downloading the zip file.
While NOOBS is downloading, format your Micro SD card using SD Formatter 4.0.
Install SD Formatter, and then insert your Micro SD card to the computer using a Micro SD adapter. In SD Formatter, select the Micro SD card and format it. Be careful to select the right drive letter when formatting the card! An overwrite format is preferred, but a quick format going to work as well.
After the card has been formatted, extract the files from the downloaded NOOBS zip file. Then, select all of the extracted files and drag and drop them into the Micro SD card. When the operation is finished, eject the card and insert it into the Raspberry Pi 3 Model B board.
Connect the HDMI cable, the keyboard, the mouse and the Ethernet cable, and then plug the Micro USB power supply to the board. Alternatively, you can connect via Wi-Fi if a wireless network is available nearby. If a Wi-Fi connection is selected, make sure that it has sufficient signal strength, because video calling can consume a significant amount of bandwidth.
Turn on your monitor before powering up the board! Otherwise, the HDMI output of the board will not be activated.
When the Raspberry Pi boots, a window containing a list of operating systems will appear. Select Raspbian by ticking the box next to it, and click install. A warning message will appear, click on Yes, and make yourself a cup of tea while the operating system is installing. After the installation is complete, the graphical user interface will be loaded automatically. If it won't login using pi as a username and raspberry as a password, and type startx and hit the Enter button.
*Another important Notice!*
In the end of the install process, the Raspberry Pi configuration menu (raspi-config) may be loaded. If so, you can select Internationalisation Options, and set up your language and region settings, such as the timezone. Also, if the graphical user interface is not loaded automatically, you can enter into Boot Options, and select the last option, Desktop Autologin.
Many more settings are available in the Raspberry Pi configuration menu for your Raspberry Pi. To exit the configuration menu, press the Tab button on your keyboard and then select the Finish option. You can enter anytime the Raspberry Pi configuration menu by entering raspi-config on a terminal, however, be careful when changing the settings of the board.
Although I do my best in guiding you through this step, you may still be struggling. Here are Video Instructions for Installing NOOBS, from the Raspberry Pi Foundation, which you may find helpful even if it is a two year old video.
Step 3: Update and Upgrade Raspberry Pi
In order to update and upgrade your Raspberry Pi, open a Terminal and enter the following command:
- sudo apt-get update
and press the Enter button.
When it's finished, enter:
- sudo apt-get upgrade
and press the Enter button again. Notice that after entering the second command, a message will appear, asking Do you want to continue [Y/n]?, press Y and then the Enter button.
Step 4: Install Chromium Browser
Open a terminal and enter the following four commands as they are (with the quotes):
- wget -qO - http://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add -
- echo "deb http://dl.bintray.com/kusti8/chromium-rpi jessie main" | sudo tee -a /etc/apt/sources.list
- sudo apt-get update
- sudo apt-get install chromium-browser -y
Make sure to enter each one of the previous commands
If any messages appear prompting you to input Y or N, enter to all of them Y and hit the Enter button. At the end of this step, you will have the Chromium Browser installed to your system.
Kudos to kusti8 for creating the repository that we used in this step for installing the Chromium Browser.
Step 5: Introduction to Jitsi Meet
Time to plug the camera to the board.
Set the Chromium Browser to start with a unique Jitsi Meet URL, for example:
Of course, Foo Bar is not really unique, so you'll have to figure out something better. Anyways, there is also the ability to add a Password to the room.
So, let's suppose that we use https://meet.jit.si/FooBar as a room.
In the last two screenshots a simple video call is demonstrated. However, the cameras are disabled for obvious reasons!
Now that we have a simple video calling service available, we have to provide an easier access on it from the Raspberry Pi.
Step 6: Auto Start Chromium After Boot
In order to make the system as simple as possible, some automations can be made.
For example, Chromium Browser can executed after the launch of the graphical user interface, with a predefined URL, in Full Screen (Kiosk) mode.
To achieve that, you have to open a terminal, and type:
- sudo nano ~/.config/lxsession/LXDE-pi/autostart
A file will open in the terminal window, containing lines beginning with "@".
You need to add the following line at the end of the file:
- @chromium-browser --kiosk --disable-session-crashed-bubble --disable-infobars --disable-restore-session-state https://meet.jit.si/FooBar
Do not break the line of the text above. The whole sentence has to be entered in a single line.
After entering the sentence, press Ctrl+X, then press Y and then press the Enter Button.
Step 7: Hiding the Mouse Cursor When the Mouse Is Idle
Isn't it quite annoying that the mouse cursor stays in the middle of the screen during a video call?
The solution to this problem is the Unclutter tool. Install the tool by executing the following command in a terminal:
- sudo apt-get install unclutter
If the message "Do you want to continue [Y/n]?" appears, enter Y and hit the Enter button.
When the installation of unclutter is complete, open the same file as in the previous step by executing the following command:
- sudo nano ~/.config/lxsession/LXDE-pi/autostart
Then, add the following line at the end of the file:
- @unclutter -idle 1 -root
The number 1 is indicating the seconds until the mouse cursor is disappeared. You can make the interval shorter or longer for example, 0.1 or 5, depending your personal preferences.
When finished, press Ctrl+X, then press Y and hit the Enter Button.
Step 8: Shut Down the Raspberry Pi... Safely!
Just pulling the plug is not really recommended when it comes down to shut down your Raspberry Pi.
Devote a few minutes in this step, and create a hotkey that when it's pressed it will shut down your Raspberry Pi safely. After all, your Micro SD card does not worth a possible corruption from an improper shut down. Does it?
Open a terminal, and type the following command:
- sudo nano ~/.config/openbox/lxde-pi-rc.xml
Then, navigate through the file until you see the keyboard section, which starts with <keyboard>
Under the keyboard section add the following lines:
- <keybind key="F12">
- <action name="Execute">
- <command>sudo shutdown -h now</command>
As always, save the file by pressing Ctrl+X, then Y and then the Enter button.
Of course you can set any button you like to preform the shut down command. I chose F12, however you can choose another more convenient button, or combination of buttons. A reboot hotkey can be added in the same way by only changing the command to sudo shutdown -r now, instead of sudo shutdown -h now.
Step 9: Bonus Step - Add a Switch
*** UPDATE: 10/10/2016 ***
Due to a recent comment of the fellow Instructables member alibuba, I find it necessary to warn everyone before proceeding to this step.
First of all, DO NOT proceed to this step, unless you do have the appropriate qualifications to do so.
And furthermore, DO NOT use this cord to connect devices with protective-earth contacts, as apparently, it will offer NO protection.
*** End-of-Transmission ***
Wouldn't it be more convenient, as well as safer, to completely disconnect your Raspberry Pi from the wall outlet after shutting it down? In a power restoration from a possible power outage, the Raspberry Pi would normally boot up and open the Chromium Browser in the selected Jitsi Meet webpage. This doesn't sound like a good situation, especially when there isn't anyone near the system to shut it down again or take care of it. However it isn't very practical to plug and unplug the power adapter every time the system is used.
By adding a switch to the power adapter of the Raspberry Pi, this task is becoming way easier and safer. The switch can guarantee that unpleasant surprises will not occur during a temporary power outage, and it also acts as an ON switch, allowing the user to boot the system easier, without messing with cables.
The parts needed for this step are:
- Power adapter with switch
- Appropriate socket for the power adapter (in my case a Schuko socket)
- Couple of meters of a two-wire power cord
- A two-pin power plug
At first, open the Schuko socket by unscrewing its screw.
Then strip one centimetre from each wire at the one end of the cord.
Wire the Schuko socket as shown in the photos. There is no need for a grounding third wire, as the power supply of the Raspberry Pi is not using any grounding at all.
Tight the screw and close the Schuko socket.
Strip about one centimetre from each wire at the other end of the cord.
Open the two-pin plug and wire it as shown in the photos.
Close the two-pin plug and tight its screw and the power switch is ready
Plug in the power supply of the Raspberry Pi, and enjoy your system!
We have a be nice policy.
Please be positive and constructive.
I was looking for this for long. But not exactly this one. I had uploaded a tiny script to transmit video back and forth using gstreamer. (https://github.com/joicemjoseph/videocall )
Gstreamer seems a good candidate because, it uses very little resources.
is it possible to do the same using gstreamer ? what about working around a Tkinter wrapper around it and do the same ?