Introduction: Web Kiosk
This Instructable will teach you how to create the guts of a Chromium based touch-screen kiosk.
I was looking for a platform that would allow me to bring together various remote-control functionality under a single device/interface. I had tried various "universal remotes" but none of them really offered me the full combination of capabilities I was looking for. I'm a Java developer by trade so I decided to create a Java based web application that I could use to bring together control of all my various home entertainment systems under a single interface. I'll create another instructable for that, but for now this Instructable should get your running with a basic touchscreen based browser that auto-starts on power-up.
Step 1: Parts
After some consideration I decided to go with one of the HardKernel devices; specifically their C2 device.
As a result, this Instructable will only work on one of these devices. It is not compatible with a RaspberryPi device (as the hardware drivers are different). It's possible you might glean some insights from this Instructable to create a RaspberryPi based kiosk, but all the software/configs I'll provide are going to be very specific to the HardKernel ODROID devices.
Parts List:
- [link] ODROID-C2 [this instructable is specific to the C2 for now]
- [link] 16GB eMMC drive (with option: eMMC Module Reader, SD2eMMC adapter)
- [link] 5V/2A power supply (use the drop down option to select your electrical outlet type)
Touchscreen Monitors:
- [link] ODROID VU5 5" 800x480 Multitouch Touchscreen
- [link] ODROID VU7 7" 800x480 Multitouch Touchscreen
- [link] ODROID VU7+ 7" 1024x600 Multitouch Touchscreen
- [link] ODROID VU8C 8" 1024x768 Multitouch Touchscreen
- The ODROID VU8C requires the 5V/4A power supply [link]
Optional Parts:
While I placed the "DC Plug Cable Assembly" as optional, at $1.25 I highly recommend that you purchase two, as they are nearly impossible to source from anyone else. This way, depending on the demands of your final project, you can use a larger power-supply (one of the 5V 4A for example), and with a little soldering change out the larger barrel on those plugs for use with this tiny plug.
The Bluetooth Modules are also options. By default the VU7+ monitor doesn't have speakers, so if you want sound you'll need to use one of the ODROID DACs (such as the HiFi Shield Plus listed above) or use Bluetooth for your sound. Since these are cheap, I recommend also purchasing two incase you want to use one for audio, and another to act as a remote control interface, etc.
Once you decide on your parts, review the specific Wiki page for the monitor you chose regarding how to connect them. If you need help, best to use the Hard Kernel forums, vs requesting support here.
Step 2: Prepare the OS
The image that comes on the eMMC card from HardKernel is totally bloated for use as a kiosk, so for this build we'll be using meveric's Debian Stretch image; details about the image can be found here
Download the 93MB C2.img.xz image file:
Now, download a tool called Etcher which will allow you to write the image file you downloaded above to the eMMC card.
To do this, use the eMMC2SD card adapter, and insert into a microSD card reader on the computer you'll be running Etcher on.
When you run Etcher you first select the image you downloaded, and then select the microSD card reader, then hit Flash.
**NOTE** When selecting a drive in step 2, make sure it is your microSD card reader, because if you select another driver, Etcher will overwrite that drive, and the data can't be recovered! I won't be responsible for lost data, so read the instructions on the Etcher download page.
**NOTE2** On windows, when you insert the eMMC2SD card adapter, you may get popups about the need to format the drive. IGNORE these dialogs. Just hit cancel, and close any FileManager windows. The same will happen when Etcher starts, and when it finishes. Just close any Windows dialogs that popup.
Once Etcher is complete, you can remove the eMMC2SD card adapter, remove the eMMC card, and insert the card onto the bottom of your ODROID.
For this next step you will need to plug-in a regular HDMI monitor NOT the touchscreen monitor. You'll also need to plugin a keyboard into the ODROID for this first step. The default OS is configured for a 1920x1080px60hz screen, so plugging in the touchscreen will make any text unreadable.
- Make sure you have an ethernet cable attached to your ODROID
Power up the machine; you'll see a series of startup output. The screen will blank, which is normal as it expands the image onto the full space of the eMMC drive, and the screen will then refill with the startup output, and then blank to the login screen.
When you get to the login prompt enter:
Username: root Password: odroid
Issue the following commands (OK'ing any prompts along the way):
apt-get update && apt-get dist-upgrade -y
About mid-way through you'll see a warning about rebuilding the kernel. Just hit ENTER to OK. When the process is complete enter the command:
apt-get install net-tools -y && clear && ifconfig eth0
This last command will give you the IP address and MAC address for your ODROID. WRITE THEM DOWN, as the IP address will be needed for the next steps, and the MAC address (preceded with the word "ether") may be needed if your DHCP server changes the IP down the road.
Now, with the ODROID still connected to the full monitor, issue the following command:
reboot
This will reboot the odroid, display the startup messages, and then finally give you the login prompt. You can remove the keyboard from the ODROID, as it's not needed from this point forward, but keep the full monitor plugged into the device until instructed to plug-in the touchscreen.
Step 3: Preparing the System for the Touchscreen
SSH
Now at this point we're going to switch to connecting to the ODROID from your main computer. You'll need to be familiar with an application called SSH. If you're not, google "SSH" and your OS Name. For Windows, the easiest application is called Putty, and for macs there is an SSH client built into the command-line. This isn't an SSH tutorial, so google it, and once you have SSH running, connect to the IP address that you wrote down in the previous step.
Once connected you'll be prompted to login with the same credential you used earlier.
Username: root Password: odroid
Enter the command:
wget -O setup.sh https://raw.githubusercontent.com/ZacWolf/WebKiosk/master/setup.sh && chmod 700 ./setup.sh && ./setup.sh
...this will prompt you for a new password then configure your monitor settings.
Once the blue light has stopped flashing on the ODROID, remove the power cable.
Unplug the HDMI monitor cable.
Step 4: Preparing the Kiosk
Plug-in the touch screen's HDMI cable into the ODROID.
Plug-in the power cord.
The touchscreen should now fill with the startup text. If the text is wavy, or corrupted, review your previous steps.
Once the ODROID is completely booted, you should see the login prompt on the screen.
Back in your SSH application, the connection will have ended when you issued the shutdown command. You'll need to restart the connection. Each client does this differently, but worst case just close the window, and open a new session to the same IP address that you entered earlier.
This time at the login prompt use:
Username: root Password: {the password you set in the previous step}
You should see a screen that looks like the image above.
Back in SSH, issue the following command:
setupkiosk.sh
This will walk you through the configuration process. It will walk you through setting up your default-language, keyboard, timezone, hostname, NODM (answer yes), and kiosk configuration. Finally it will automatically reboot the ODROID.
After the ODROID reboots, the screen will remain blank for about 60 seconds, and then the default homepage should come onto the screen.
Step 5: Troubleshooting
WiFi:
I had mixed results getting the ODRID WiFi3 module that I purchased to work, so I just went with hard-wired ethernet. I'll revisit this section with any successes I have.
SSH Unable to connect:
The ODROID is configured to use DHCP, so more than likely what has happened is that during a reboot the ODROID picked up a new IP address. You can address this in three ways:
1) Try to connect with the hostname that you assigned the ODROID during the setup. If you're lucky your router will resolve this address for you, but it's far from guaranteed.
2) Modify the file:
/etc/network/interfaces
...to configure a static IP address (not recommended)
3) Best to configure a static lease in your DCHP server. More than likely this is done in your WiFi Router, and is referred to as a "static lease", or "reserved address". You'll have to look up the directions for your specific router on how to configure this, but it's the best way, as you don't have to worry about populating DNS/subnet info in the interfaces file, as that may change if you upgrade your router, etc.
If this happens after you're already running the kiosk, you may be stuck with going with the 3rd option, which is why it's best to do it this way from the very beginning.
Change monitors:
If you decide to change monitors, simply do an SSH login as root and issue the command:
touchscreen.sh