Universal Control Panel
by Bluebotlaboratories in Circuits > Remote Control
603 Views, 5 Favorites, 0 Comments
Universal Control Panel
The IoT Control Panel is an all-in-one solution to controlling your smart-home devices easilly.
It has Google Assistant Integrated into it too!
It uses wxPython as well as an open-source modular coding system which allows it to be easilly expanded by other people.
Supplies
Please Note:
You will need basic Linux experience with programs such as bash and nano.
Soldering Experience is recommended.
Knowledge on Python/wxPython is required if you intend to develop apps and modules for it.
Software:
- PuTTY
- Raspberry Pi Imager
- IP Scanning Tool
- Notepad++ or another text-editor
Hardware:
- Raspberry Pi 3A+
- 3.5 Inch Touchscreen
- 32GB Micro SD Card
- USB Microphone
- USB Speaker
- USB Hub
- Female-To-Female Jumper Wires
- 6mm x 6mm Tactile Buttons
Tools:
- Screwdriver Set
- Pry Tool
- Drill
- 3D Printer
- Wire Stripper
- Scissors
- Glue
The files for the main case are available here on Tinkercad
Taking Apart Speaker
First, peel of the rubber feet from the buttom of the speaker.
Next, use a pry tool or a screwdriver to gently pry the inner piece off.
Once it is high enough, grab it with your fingers and gently pull it out of the outer shell.
Then, undo the screws in the inner sheel and pry it apart.
Once that is done, slide the circuit board out and pry off the speaker.
Then, take off the fake rubber piece and cut the plastic to remove the speaker completely.
Extract the Speaker and Speaker Driver
First, unscrew the top part of the inner shell and gently remove it from the bottom part.
Then, pry off the speaker and gently slide the circuit board out if its enclosed space.
To remove the USB Cable, use the scissors or any other tool to enlarge the hole containing the usb cable and once it is large enough, slide the USB cable through it.
Now, remove the fake rubber speaker piece and cut the plastic in between it and the wire as shown in the image and slide the speaker wire through the gap and then slide the rest of the speaker through the gap too.
Please Note: The speaker wires are very delicate and will break easily so please take care
Extract the Microphone Form Its Enclosure
First, turn the microphone upside down and begin drilling a hole near the edge.
Make sure the hole goes through the lower panel of the microphone.
As long as you stay on the edge and away from the USB Cable you should not have to worry about the internal PCB being damaged
Now, using a screwdriver or a pry tool, pry the bottom panel off the rest of the microphone.
Now, pry the microphone and its circuit off the base plate and remove any remaining adhesive from it.
Install Raspbian
First, insert your Micro SD Card into your computer
Download and install the Raspberry Pi Imager from here
Once it is installed, open it
Select 'CHOOSE OS'
Select Raspberry Pi OS (32-Bit)
Then, click on 'CHOOSE SD CARD' and select the SD Card you inserted into your computer
Now, click on 'WRITE' and wait for it to flash the image onto the Micro SD Card.
Enable SSH
Open the file explorer and select the device named 'boot'.
Then, right-click and select 'New'. Then click anythin below 'Folder' and 'Shortcut'.
This should create a new file, rename it to SSH and click on yes when prompted to rename the extension.
Then, create a new text file called 'wpa_supplicant.conf', open it with your preferred text editor and paste the following info into it:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=<Insert 2 letter ISO 3166-1 country code here>
network={
ssid="<Name of your wireless LAN>"
psk="<Password for your wireless LAN>"
}
Replace the placeholders (in triangle brackets <> with your own information as shown below):
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=GB
network={
ssid="Home-WiFi"
psk="Password123"
}
Then, eject the drive by right-clicking it and pressing 'Eject'.
Adding the Screen and Powering on Your Pi
First, put the screen onto your RPi as shown in the image.
Then, turn you Raspberry Pi upside-down and insert the Micro SD Card
Then, plug it in and turn it over
If the LCD does not glow a bright white like in the image, then unplug the Raspberry Pi and check your connections and power supply. Also verify that the Micro SD card is inserted correctly and is not corrupted.
Find the Pi's IP
First, you will need to download an IP scanning tool, for example this one.
Then, you can either install it or run it.
Normally, the default settings should be fine so when it opens, click on Scan
Please Note: Other Raspberry Pi's with unknown IP addresses must be unplugged or they may show up on the scanner
When the table fills up, look in the 'Manufacturer' column and there should be one labeled 'Raspberry Pi Foundation', to the left of that column if the IP Address of it.
If you have multiple Pis, then list all of the IPs and cross out the ones that belong to your already-plugged in Pis
Now you should have the IP Address of your Pi, note it down somewhere.
Connecting to the Pi Via SSH
In order to connect to the Pi, you will need to use PuTTY.
Install PuTTY from here.
Once it is installed, open it and enter the Pi's IP in the input box as shown in the image above.
Next, click on 'Open'
If you see a window with the title of 'PuTTY Security Alert', click on 'Yes'
Then, when prompted for a username type in 'Pi' and press Enter, then type in 'raspberry' for the password and press enter. You will not see the password being typed, this is ok.
Installing the Driver
Type the following commands into the PuTTY Terminal:
cd ~
sudo rm -rf LCD-show
git clone https://github.com/goodtft/LCD-show.git
chmod -R 755 LCD-show
cd LCD-show/
sudo ./LCD35-show
sudo reboot
Your Pi should now reboot and the screen should display an image!
If you see some set up steps then follow them and update the Pi, then, shut down your Pi and put the Micro SD Card back into the PC.
Configuring the Display Properly
Open the config.txt file in the 'boot' drive and scroll to the end of it.
Then add the following lines to the file:
hdmi_group=2
hdmi_mode=87
hdmi_drive=2
hdmi_cvt=320 480 60 1 0 0 0
Now, eject the card, put it back into your Pi and turn it on. If the screen does not work, please check the code you entered.
Add Wires to the Raspberry Pi
Now that the display has been set up, you can construct the rest of the control panel.
First, power of your Pi and gently take of the display.
Then, add 4 double sided female connector wires to the RPi in the positions shown in the image
Note the wires in the same positions as the ones in the image as:
- Blue = Ground
- Brown = Ground
- Purple = Ground
- Yellow = GPIO 16
- Red = GPIO 20
- Orange = GPIO 21
Please Note: Note the wires by position, not by colour, check the image
Now, be careful to fold the wires outwards of the Pi and then slide the screen on top of the GPIO pins as shown in the image.
Assemble the Case: Add the USB Hub
Since the Raspberry Pi 3A+ only has one USB Port, we need to install a USB Hub. To do this, first, cut of the rubber around the USB plug, be careful not to break the USB plug. Now, slide the bug in between the Pi and the Screen
Assemble the Case: Button Wiring
First, 3D print the three parts of the case.
Then, grab 3 tactile buttons and cut off two pins from each button as shown in the image.
Then, slide each button into each hole in the button bracket as shown in the image.
Please Note: You will need to bend the remaining pins slightly forwards so that you can fit the button in the button bracket
Now, connect one ground wire into each button as shown and then connect the GPIO 16, 20, and 21 wires into each button as shown. Make sure you order it correctly.
You may need to press down firmly for the wires to "click" into place.
Please Note: You may want to use some glue to secure the wires to the 3d printed part
Assemble the Case: Button Assembly
Now, put the completed assembly into the main case assembly as shown in the image above and make sure that GPIO 16 wire is at the top as shown in the second image.
Make sure you use a little bit of glue on the tabs
Assemble the Case: the Pi
Now, peel off the screen plastic and slide it into its slot.
Make sure it is flush and then press a little on the screen to check if it is secured.
If it is not, you may want to re-slide it in but with some dabs of glue applied.
Assemble the Case: Insert Speaker and Microphone
Add a little bit of glue around the edge of the speaker and microphone and stick it into its slot in the case.
Then, fix the microphone wire using the second piece and by matching the colours.
Now, connect them to the USB Hub.
Setting Up Google Assistant Service
Using This Tutorial as reference, set up the service as follows:
First, open the google actions console and click on add/import project
Then, give it a name Now, scroll down and select device registration Now, without closing that tab, open a new one and go to the google assistant api Make sure you have the correct project selected as shown If it isn't already enabled, enable the API Now click on the credentials tab and click on configure consent screen Choose external and click on create Now, fill in the fields with any value and click on save and continue Now click on save and continue again Click on save and continue again Now, scroll down and click on back to dashboard Then, click on the add users button and when prompted type your email and click on save Once you are done, go back to the previous tab and click on register model Now fill in the fields with any information you want and click on register model Now download the credentials by clicking on the button. Now click on next and then select the brightness trait and then click on save traits. Now, get a USB Drive and format it. Please note: This will delete all your files. Formatting is required so the program can read it. Now copy the credentials file to the root of the USB.
Now, go to https://github.com/Bluebotlabz/Universal-IoT-Control-Panel and download the example config.ini, change the modelID and the projectID values to match the ones from the Google Assistant Service as shown:
From:
[config]
; Enable/Disable debug mode, 0 = disabled, 1 = enabled
debug = 0
[assistant]
; Assistant can be 'googleAssistant' (for google assistant)
assistant = googleAssistant
; Enter IDs
modelID = <ModelID>
projectID = <ProjectID>
; File for hotword detection (COMING SOON)
;model = /file/model.pmdl<br>
To:
[config]
; Enable/Disable debug mode, 0 = disabled, 1 = enabled
debug = 0
[assistant]
; Assistant can be 'googleAssistant' (for google assistant)
assistant = googleAssistant
; Enter IDs
modelID = iot-control-panel-fgerg
projectID = iot-control-panel-greqf
; File for hotword detection (COMING SOON)
;model = /file/model.pmdl
Now, copy the config.ini file you just edited onto the root of the USB Stick, plug the USB Stick into one of the Pi's USB Ports and run the commands in the rest of the Instructable.
Installing the Main Program
Now we have the hardware assembled and configured, we can now install the software for the app itself.
First, you will need to scan the IP and connect to it using SSH as shown earlier and run these commands:
cd ~/
sudo apt update && sudo apt upgrade -y
sudo apt install git python3 libjpeg-dev libtiff5-dev libnotify-dev libgtk2.0-dev libgtk-3-dev libsdl1.2-dev libgstreamer-plugins-base0.10-dev libwebkitgtk-dev freeglut3 freeglut3-dev portaudio19-dev libffi-dev libssl-dev python-rpi.gpio python3-rpi.gpio python3-wxgtk4.0 python3-wxgtk-webview4.0 python3-wxgtk-media4.0 -y
sudo python3 -m pip install --upgrade pip setuptools wheel google-assistant-sdk[samples] google-auth-oauthlib[tool] PyAudio urllib3[secure] sounddevice click tenacity futures pathlib2 google-assistant-grpc google-auth-oauthlib appdirs
git clone <a href="https://github.com/Bluebotlabz/Universal-IoT-Control-Panel.git" rel="nofollow"> https://github.com/Bluebotlabz/Universal-...</a>
cd Universal-IoT-Control-Panel
python3 ./install.py
Follow the instructions in the terminal and when you are complete the Pi should reboot.
Please Note:
To copy stuff from PuTTY, just select it and it will automatically copy.
To paste stuff into PuTTY, just right-click.
When you get asked by Google, click on Continue. Clicking on "Back to Safety" will stop the code from being generated.
If you get an error, check the previous steps.
Now wait until the Pi reboots and you should have a working IoT Control Panel.
Don't forget the unplug the USB Stick from earlier!
Assemble the Case: Assembling the Case
Now, get the back part of the case and slide it onto the front part. You may need to press down firmly, but make sure to not break any of the internals
Finished
Your Universal IoT Control Panel is now complete!
Fequently Asked Questions
Why is there no video?
Video coming soon, the microphone broke whilst demonstration, new one arriving soon
How can I fix 403 Error with Google OAuth?
Make sure you have added yourself as a test user in the project settings
The 3D Design does not fit
The front and back may be slightly difficult to put together, I am aware of the issue and am working on it