Do you want to build a Stargate and DHD yourself?
You can now buy an archive of the needed files here. The archive includes the following:
- STL files for all the objects needed to put together the Stargate as seen on this site.
- 176 audio files with sound effects and audio clips from the show.
- The gerber files for all the custom-made PCBs.
- The original 3D file of the Stargate and DHD in 3D studio Max file format.
- Access to an online picture gallery containing a lot of extra WIP pictures and videos of the Stargate Project.
After publishing this Stargate project online much of the feedback I am getting are from people asking if they can buy a Stargate or if they can buy the files needed to make one themselves. Sadly, I do not have the time and capacity to be able to make and sell whole complete Stargates. It is time-consuming work. However, I have put together this page where you can buy an archive of the needed files. I think the “Making the Stargate” and “Making the DHD” pages give you a good starting point for how it is made. Together with the files, the tips, and suggestions on this page it should be possible for others to make their own Stargates. Keep in mind it is a lot of work, and I cannot give you any guarantees that you are able to make a Stargate yourself, even if you buy the files.
If you buy the files and use them for anything fun, like making a Stargate of your own. I would really like to see it. Send me an email to email@example.com and show me a picture.
To print the Stargate you will need a 3D printer. I guess any printer will do, but some of the objects are close to 20 cm across and requires a printer with a bed that is about 20×20 cm. The archive also includes alternative files with lager models for larger 3d printers. If you have a smaller print bed, you will need to split the parts before printing them. I used a Wanhao Duplicator 6 Desktop 3D printer to make this Stargate. I also used Wanhao ABS filament. Using ABS gives you strength and heat resistance. It also gives you the possibility to smooth the parts with acetone vape to give it a nice finish as you can see in my post here. I calculated the total print time to about 12-14 days total. Yes, that is a lot of printing time.
Someone asked for more detailed step by step instructions of how to set up the software on the raspberry pi. I have put together the section below. I hope it helps. The stargate does not include a display and I chose to set up the raspberry in headless mode. (without a display and keyboard.) As time progresses things change. These steps were made in January 2021. They will get outdated and you will need to adapt.
- Install Raspberry Pi OS Lite to your SD card using the Raspberry Pi Imager.
- Alternately to the step above, you can take the shortcut and download my raspberry pi image already set up as described in the rest of this guide and install that image on the raspberry pi instead. There is a text document in the archive that describes how to download the raspberry pi image.
- When it is done you might need to reconnect the SD card to your computer to access the boot partition on the SD card. You can follow the instructions here, to configure the pi connect to your network when it boots up for the first time. This is very handy when we do not have a display. Also, we need to enable SSH connections to be able to connect to the pi from a computer. SSH can be enabled as described in step 3. Enable SSH on a headless Raspberry, here.
- Plug the SD card into your raspberry pi and power it up. It should automatically connect to your Wifi network and allow SSH connections. Find the IP address of the raspberry pi on your network and connect to it. There are several ways to find the IP address. A tip can be to check your router/DHCP, or use this handy app on your phone: Fing – Network Tools. Use your favorite SSH program and connect to the PI. Putty is a very popular choice. The default username is pi, and the default password is raspberry. When logged in, change the default password of the pi user.
pi@raspberrypi:~ $ passwd Changing password for pi. Current password: New password: Retype new password: passwd: password updated successfully
- (Optional) I prefer to set up my raspberries with static IP addresses. Open /etc/dhcpcd.conf in nano text editor and add IP addressing that fits within your wifi network at the end of the file. I use the following:
nano /etc/dhcpcd.conf # Kristian's static IP config: interface wlan0 static ip_address=192.168.10.129/24 static routers=192.168.10.1 static domain_name_servers=220.127.116.11 18.104.22.168 22.214.171.124 126.96.36.199
- We will add a new user to the pi (sg1) that we will use for the stargate stuff. If you need to do other configurations on the pi, you can use the default pi user. We also enable the new user to use sudo commands.
pi@raspberrypi:~ $ sudo adduser sg1 Adding user `sg1' ... Adding new group `sg1' (1001) ... Adding new user `sg1' (1001) with group `sg1' ... Creating home directory `/home/sg1' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for sg1 Enter the new value, or press ENTER for the default Full Name : Room Number : Work Phone : Home Phone : Other : Is the information correct? [Y/n] y pi@raspberrypi:~ $ sudo nano /etc/sudoers.d/010_sg1-nopasswd #add the following line to the file sg1 ALL=(ALL) NOPASSWD: ALL
- Reboot the pi:
sudo rebootand log in with the new user. Remember to connect to the new static IP if you set one up.
- I prefer using python 3.8, but at the time i wrote this Raspberry Pi OS Lite only comes with python 2.7 and 3.7. We can install version 3.8 using the following commands. (This will take a while)
sudo apt-get update sudo apt-get install -y build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz tar xf Python-3.8.0.tar.xz cd Python-3.8.0 ./configure --prefix=/usr/local/opt/python-3.8.0 make -j 4 sudo make altinstall cd .. sudo rm -r Python-3.8.0 rm Python-3.8.0.tar.xz . ~/.bashrc
- Let us set up a virtual environment to use for our python programs and install the necessary python modules using the requirements.txt file from the archive. Copy the sg1 folder from the archive on your computer to the home folder of the sg1 user. There are many ways to do this as well. I prefer copying files using winscp. Make sure you use the python program from the latest update. If you do not have the sg1 folder in your archive, download the archive again to get the latest version.
sg1@raspberrypi:~ $ /usr/local/opt/python-3.8.0/bin/python3.8 -m venv sg1_venv sg1@raspberrypi:~ $ source sg1_venv/bin/activate (sg1_venv) sg1@raspberrypi:~ $ sudo apt-get install -y python3-dev libasound2-dev (sg1_venv) sg1@raspberrypi:~ $ pip install --upgrade pip (sg1_venv) sg1@raspberrypi:~ $ pip install -r sg1/requirements.txt
- Add the main.py script to the end of the .bashrc file so it executes automatically when the sg1 user logs in.
echo "sudo /home/sg1/sg1_venv/bin/python /home/sg1/sg1/main.py" >> /home/sg1/.bashrc
- Enable the I2C interface and configure the pi to automatically log inn with the sg1 user when it boots.
sudo raspi-config 3 Interface Options P5 I2C -> Answer yes to enable 1 system Options S5 Boot / Auto Login B2 Console Autologin reboot
- By default, the raspberry pi sends the audio out the onboard audio output. If you hit buttons on the DHD quickly one after the other each button triggers a sound effect. The onboard audio does not handle running too many audio effects simultaneously and it will create an error terminating the python program. To use the USB audio adapter instead, you need to instruct the raspberry to use the alternative audio output. We can do this by changing two lines in /usr/share/alsa/alsa.conf. Find these lines in alsa.conf and change them from 0 to 1. You can list the available cards by running the command
aplay -land change the lines according to the correct output card you want to use. More information in this nice article here.
defaults.ctl.card 1 defaults.pcm.card 1
- The speaker has an annoying feature where it turns off after 10 minutes of inactivity. There is no way to turn this feature off. But we can keep it powered on by sending it an inaudible sound every 8 or 9 minutes. Just add the following cron job. If you use a speaker that does not have this feature or one where it can be turned off, you won’t need to bother with the cron job.
sg1@raspberrypi:~/sg1/soundfx $ crontab -e no crontab for sg1 - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.tiny 3. /bin/ed # add this at the end of the file */8 * * * * /home/sg1/sg1_venv/bin/python3.8 /home/sg1/sg1/speakerON.py
tip: When the raspberry pi boots up it will automatically start the stargate program due to the line we add in the .bashrc file. If you log in with the same user over SSH, you will start another instance of the same program in a different shell. You can end the current program by hitting the ‘-‘ key to abort and then ctrl+c to end the program.
That should be it for the software setup!
The archive file also includes gerber files so you can order the PCBs from a PCB manufacturer. I want to give you a heads up in regard to the power distribution PCB. I did include two connectors for power input, one barrel-jack and one micro-USB port. However, I could not find any micro-USB power supplies that was powerful enough for the Stargate. But if you do, you have the option. A power supply that can provide 3A should be enough.
The main reason for making this power distribution PCB was to eliminate the need for many power supplies. (One for the pi, one for the speaker, and one for the wormhole LEDs). I want to use as few wires as possible coming out of the back of the base. Also, this gave me the opportunity to fix the “electronic noise” that was generated by the “system” and was ruining the sounds coming from the speaker. More info in this post. Also when I first made the power PCB, I had some issues with too much power running through the B0505S-1W. (It got too hot and died) I tried fixing this with a resistor, but after a lot of frustration I found that it was a faulty wire that made the trouble. The resistor on the power distribution PCB is therefore not needed. Either use a really really small one, or just use a regular wire instead of the resistor.
Update: The old DHD PCB version is out! The DHDv2 is in! More information in the post here. first DHD version worked together with an old keyboard PCB to send keystrokes to the raspberry pi. This new version functions as a keyboard itself and can send keystrokes to the raspberry pi directly, without the extra keyboard PCB. It also controls the LEDs with commands from the raspberry pi. All this through one single micro-USB wire between the raspberry pi and the DHD PCB. This DHD PCB is a bit more complex to make and has a lot of extra components. Including an atmega32u4 microchip and a lot of resistors. I have written a separate page with more instructions on how to assemble the new DHD PCB.
I was asked about the wiring of the project and decided to make a wiring sketch. Because of the position of the wire screw connectors on the motor controller hats, they are hard to use when you stack the controllers. To easier detach the stargate from the base, I forwarded the connectors to the prototyping area of the top motor controller hat. There is an image of this to in the lower right corner of the sketch. Click the image for a larger view.
The wiring overview with the old DHD PCB (version 1) can still be seen here.
In addition to the 3D printed objects that makes up the Stargate, we need some motors, wires, a raspberry pi, screws, LED’s etc. Below is a list of all the things I used in this project. I cannot guarantee that I remembered it all (or that every item is an exact match for what I used), but I think the list is rather complete.
Update 18.11.2020: I just calculated an estimate price for all the hardware in the below table. This is not including shipping. The total amount for the list below is about 520 euro.