Guide for setting up touchscreen + backlight control

Guides to let you easily discover and enjoy Volumio

Ads helps Volumio remain Free and Open Source. Please consider donating to help us continue to serve you.

Guide for setting up touchscreen + backlight control

Postby smartroad » Sat Dec 29 2018 12:22

Hi All,

I have been using Volumio for a while in headless mode. I wanted to have the touch screen as well so for Christmas I was brought the official Raspberry Pi 7" touch screen. I made/modified a stand for it to go in and also had a button to be able to control the backlight level of the display. I used a number of posts/sites to get the screen working how I wanted so I made a guide to help me in the future. I thought I would share if anyone else would find it useful. If you don't want the button for backlight control stop at the "Install Python GPIO" section and reboot device!

Hardware
https://www.thingiverse.com/thing:3318343
The button is connected to pins 37 and 39 and the LED in the button is connected between pins 33 and 39 with a 2k2ohmn resistor (draws a max of about 0.4mA with that resistor - the LED has a forward voltage of 2.5V). I chose such a high value as I only wanted the LED ring to glow and not illuminate, an annoyance of mine with many "proper" products with their blinding LEDs!

Image



Install Volumio as normal

Install and activate touchscreen plugin in Volumio Plugins

Enable SSH:
goto http://VOLUMIOIP/dev in your browser
Click ENABLE button for SSH

Load PuTTY (or other SSH client) and log into Volumio
(default username: volumio - default password: volumio)

Update Packages:
Code: Select all
sudo apt-get update


Remove mouse pointer
Code: Select all
sudo nano /lib/systemd/system/volumio-kiosk.service

find line:
Code: Select all
ExecStart=/usr/bin/startx /etc/X11/Xsession /opt/volumiokiosk.sh

change to:
Code: Select all
ExecStart=/usr/bin/startx /etc/X11/Xsession /opt/volumiokiosk.sh -- -nocursor


Stop screen blanking and crashed message
Code: Select all
sudo nano /opt/volumiokiosk.sh

change lines:
Code: Select all
xset +dpms
xset s blank
xset 0 0 120

to:
Code: Select all
xset -dpms
xset s off
#xset 0 0 120


When you reboot sometimes the browser doesn't quit properly and you end up with the request box asking to restore session. To stop that happening also change the line:
Code: Select all
    --user-data-dir='/data/volumiokiosk'        --no-sandbox     http://localhost:3000

to
Code: Select all
    --user-data-dir='/data/volumiokiosk'        --no-sandbox     --app=http://localhost:3000



Install and activate Matchbox onscreen keyboard

First install the software:
Code: Select all
sudo apt-get install matchbox-window-manager matchbox-keyboard


Edit volumiokiosk.sh to activate keyboard
Code: Select all
sudo nano /opt/volumiokiosk.sh


Add the following after the "xset" commands:
Code: Select all
matchbox-keyboard -d &
matchbox-window-manager -use_titlebar no &


Then comment out the line:
Code: Select all
openbox-session &

to
Code: Select all
#openbox-session &


Exit and save [CTRL]+X and then press Y to save.

Next update the keyboard.xml for something more touch friendly for our needs (thanks to Xoliul for this! - it gives a simple QWERTY layout with numbers but nothing more and should be enough for most needs on this. Of course you can edit it and make your own!)

Backup and edit the keyboard.xml with:
Code: Select all
cd /usr/share/matchbox-keyboard/
sudo mv keyboard.xml keyboard.xml_old
sudo nano keyboard.xml


In nano copy the following:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<keyboard>

<layout id="default keyboard">
  <row>
    <key>
     <default display="Q" action="q"/>               
    </key>
    <key>
     <default display="W"  action="w"/>               
    </key>
    <key>
     <default display="E"  action="e"/>               
    </key>
    <key>
     <default display="R"  action="r"/>
    </key>
    <key>
     <default display="T"  action="t"/>
    </key>
    <key>
     <default display="Y"  action="y"/>
    </key>
    <key>
     <default display="U"  action="u"/>
    </key>
    <key>
     <default display="I"  action="i"/>
    </key>
    <key>
     <default display="O"  action="o"/>
    </key>
    <key>
     <default display="P"  action="p"/>
    </key>
    <key>
     <default display="1"/>               
    </key>
    <key>
     <default display="2"/>               
    </key>
    <key fill="true">
    <default display="⌫" action="backspace"/>
     <!-- <default display="Bksp" action="backspace"/> -->
    </key>
  </row>
  <row>
    <key>
     <default display="A"   action="a"/>               
    </key>
    <key>
     <default display="S"   action="s"/>
    </key>
    <key>
     <default display="D"   action="d"/>
    </key>
    <key>
     <default display="F"   action="f"/>
    </key>
    <key>
     <default display="G"   action="g"/>
    </key>
    <key>
     <default display="H"   action="h"/>
    </key>
    <key>
     <default display="J"   action="j"/>
    </key>
    <key>
     <default display="K"   action="k"/>
    </key>
    <key>
     <default display="L"   action="l"/>
    </key>
    <key>
     <default display="3" />
    </key>
    <key>
     <default display="4" />
    </key>
    <key>
     <default display="5" />
    </key>
    <key fill="true">
     <default display="⏎" action="return"/>
    </key>
  </row>
  <row>
    <key>
     <default display="Z"   action="z"/>
    </key>

    <key>
     <default display="X"   action="x"/>
    </key>
    <key>
     <default display="C"   action="c"/>
    </key>
    <key>
     <default display="V"   action="v"/>
    </key>
    <key>
     <default display="B"   action="b"/>
    </key>
    <key>
     <default display="N"   action="n"/>
    </key>
    <key>
     <default display="M"   action="m"/>
    </key>
    <key>
     <default display="6" />
    </key>
    <key>
     <default display="7" />
    </key>
    <key>
     <default display="8" />
    </key>
    <key>
     <default display="9" />
    </key>
    <key>
     <default display="0" />
    </key>
    <key fill="true">
     <default display="␣" action="space" />               
    </key>
 </row>
</layout>
</keyboard>


Again close and save the file then reboot to see your work!



Move track and volume controls up (stops them clipping on the bottom of the screen)
CAUTION - You are editing Volumio's Files which will prevent updating. To update you will need to restore the file using the Factory Reset in the System settings
Code: Select all
   cd /volumio/http/www/styles

Code: Select all
   sudo nano app-013f2d5c5e.css

press [CTRL]+W to search and type in "volumeManager{margin-top"
this should show the line:
Code: Select all
@media (max-width:767px){#trackManagerWrapper{left:-30px;right:-30px}}#trackManager,.volumeManager{margin-top:110px}

change margin-top:110px to margin-top:55px

You can also search for:
Code: Select all
      webkit-scrollbar{width:10px;height:10px}:

and change the width to a larger number to make the scroll bar more finger friendly (40px should be fine)



Install Python GPIO
Download:
Code: Select all
      wget https://sourceforge.net/projects/raspberry-gpio-python/files/raspbian-wheezy/python-rpi.gpio_0.6.2~wheezy-1_armhf.deb

(check version here: https://sourceforge.net/projects/raspberry-gpio-python/files/raspbian-wheezy/ and replace "python-rpi.gpio_0.6.2~wheezy-1_armhf.deb" with current version)
Install:
Code: Select all
      sudo dpkg -i python-rpi.gpio_0.6.2~wheezy-1_armhf.deb



Install Python backlight library:
Install PIP:
Code: Select all
      sudo apt install python-pip

Install backlight library:
Code: Select all
      sudo pip install rpi_backlight


Setup button script:
Code: Select all
   mkdir scripts
   cd scripts
   nano bl-control.py

Paste following:

Code: Select all
#!/bin/python

########################## User Variables ##########################
screenDelay = 30 # number of minutes before turning off the screen #
blState = 2      # default brightness of the backlight (1-3)       #
####################################################################


import RPi.GPIO as GPIO 
import time 
import rpi_backlight as bl
import subprocess
import os



GPIO.setmode(GPIO.BCM) 
GPIO.setup(26, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(13, GPIO.OUT)

led = GPIO.PWM(13, 2000)
led.start(100)

ledLvl = 100
ledDir = 0

buttonState = 0       #current button state
lastButtonState = 0      #previous button state
timePressed = 0         #when was button pressed
stateChange = ""      #holds command when changing bl state
lastStatus = ""         #stores playback state when turning off bl
lastBlState = blState   #previous backlight state (primed with default
lastPlayState = "play"   #what was volumio doing when bl turned off
pausedTime = 0          #when was unit paused

gamma = 2.8            #gamma adjust for LED (makes breathing smooth)
max_in = 100.0         #the maximum level to call for adjustment
max_out = 100.0         #the maximum level for PWM (100 for RPi)
levelOutput = 0.0      #variable to hold the adjusted level output

screenDelay = screenDelay * 60 # change from minutes to seconds for timer

bl.set_power(True)      #turn on bl
bl.set_brightness(64, smooth = True, duration = 1) #set bl level

while 1: #repeat continously
   buttonState = 1 - GPIO.input(26) #invert state due to pullup
   
   try: #trys to open volumio and if it hasn't loaded waits 5 seconds to try again - this is as the script loads befor volumio and was causing the script to fail to load
      
      status = subprocess.check_output("volumio status | sed -e 's/true/True/g' -e 's/false/False/g' -e 's/null/False/g'", shell=True) #find out current status of volumio
      status = eval(status)
      
      if (status["status"] == "pause" and lastPlayState == "play"): # checks if volumio has just paused
         pausedTime = time.time() # store the time volumio paused
      elif (status["status"] == "stop" and lastPlayState == "play"): # checks if volumio has just stopped
         pausedTime = time.time()
      elif (status["status"] == "play" and lastPlayState <> "play" and blState == 0): # has volumio started playing and is the backlight off
         stateChange = "resume" # restore backlight
         
         
      if (time.time() - pausedTime > screenDelay and status["status"] <> "play" and blState <> 0): # check if paused for longer than "screenDelay" seconds, volumio is not playing and backlight is on
         stateChange = "blOff" # turn off backlight
         
      
      if (buttonState == 1 and lastButtonState == 0):
         timePressed = time.time() #store time button pressed
         
      elif (buttonState == 1 and lastButtonState == 1): #button held
         if (time.time() - timePressed > 2): #if held for more than two seconds turn off bl
            stateChange = "blOff"
            
      elif (buttonState == 0 and lastButtonState == 1): #button released
         if (time.time() - timePressed <= 2): #if button released before two seconds passed change brightness
            pausedTime = time.time() # update pause time to reset the timer
            if (lastStatus == "play"): # checks to see if unit was previously paused by using the button to turn off backlight and resumes again
               stateChange = "resume" # resume screen brightness and playback
               lastStatus = "" # clear lastStatus so as to stop calling this
            else: # otherwise just move to next brightness level
               stateChange = "nextBL"
            
      elif (buttonState == 0 and lastButtonState == 0): #button not pressed
         if (blState == 0):                              #backlight if off, 'breath' the LED
            levelOutput = ((ledLvl/max_in) ** gamma) * max_out   #gamma calculation
            if (levelOutput > 100): levelOutput = 100         #clamp output to max PWM level (100 for RPi)
            
            if (ledDir == 0):                           #ramp intensity down
               led.ChangeDutyCycle(levelOutput)            #set PWM output from gamma corrected level
               ledLvl = ledLvl - 1                        #reduce brightness for next pass
               if (ledLvl == 1):                        #when brightness at lowest point (not 0 as LED goes off and looks odd)
                  ledDir = 1                           #switch brightness direction to increase
            else:                                    #ramp intensity up
               led.ChangeDutyCycle(levelOutput)
               ledLvl = ledLvl + 1
               if (ledLvl == 100):                        #switch direction when at max brightness
                  ledDir = 0
                  
         time.sleep(0.05)                              #if no button being pressed sleep for 50mSec - prevents loading a thread

      
      if (stateChange == "blOff"):
         if (status["status"] == "play"):                  #check if currently playing
            os.system("volumio pause")                     #pause playback
            lastStatus = "play"                           #store that the unit was playing when backlight turned off
         lastBlState = blState                           #store the current backlight level
         blState = 0                                    #set to backlight off
         stateChange = ""
         bl.set_brightness(11, smooth = True, duration = 1)      #reduce brightness to min
         bl.set_power(False)                              #then turn off completly.
      
      elif (stateChange == "nextBL" or stateChange == "resume"):
         led.ChangeDutyCycle(100)                        #turn on led
         
         if (stateChange == "nextBL"):                     #chang to next bl level
            
            if (blState == 0):                           #restore bl level if previously off
               blState = lastBlState
            else:
               blState = blState - 1                     #next bl level
               
            if (blState < 1):                            #roll-over
               blState = 3
         elif (stateChange == "resume"):                     #restore bl level and start playing (if paused when turning off bl)
            blState = lastBlState
            if (lastStatus == "play"):
               os.system("volumio play")
               lastStatus = ""
            
            
         #next section sets current level. Change the first number in bl.set_brightness between 11-255 if
         #other brightness levels required. Ignore the blState == 0.
         if (blState == 1):
            bl.set_power(True)
            bl.set_brightness(32, smooth = True, duration = 1)
         elif (blState == 2):
            bl.set_power(True)
            bl.set_brightness(64, smooth = True, duration = 1)
         elif (blState == 3):
            bl.set_power(True)
            bl.set_brightness(192, smooth = True, duration = 1)
            
         stateChange = ""

      lastPlayState = status["status"]
      lastButtonState = buttonState #store current button state to determine if button still being pressed or not.

   except: #wait five seconds for volumio to load
      time.sleep(5)

At the top of the script there are the user variable. These allow the default settings to be changed for the backlight time delay and the default backlight level:
Code: Select all
########################## User Variables ##########################
screenDelay = 30 # number of minutes before turning off the screen #
blState = 2      # default brightness of the backlight (1-3)       #
####################################################################

Press [CTRL]+X and save file.

Set bl-control.py to boot on startup:
Code: Select all
sudo nano /etc/rc.local

before the final "exit 0" paste:
Code: Select all
python /home/volumio/scripts/bl-control.py &

(the "&" is important to allow the script to run in the background!)


Reboot device!
Code: Select all
sudo reboot


If all goes to plan you should reboot and pressing the button will change the backlight level and holding should turn it off, with the LED "breathing".

Sites and posts that helped me with this


Updates:
2018/12/29: updated python script to pause music (if playing) when turning off backlight and resume when turning back on
2019/01/01: added gamma correction for LED brightness to make it look smoother
2019/01/02: warning about changing positions of volume and track
2019/01/06: Updated to remove Chromium restore pages dialog if it doesn't get closed correctly on shutdown/reboot
2019/01/11: Added section to install the on screen keyboard "matchbox-keyboard"
2019/01/12: Updated python script to turn off screen when paused for a given amount.


Old Script
Code: Select all
[code]#!/bin/python

import RPi.GPIO as GPIO 
import time 
import rpi_backlight as bl
import subprocess
import os

GPIO.setmode(GPIO.BCM) 
GPIO.setup(26, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(13, GPIO.OUT)

led = GPIO.PWM(13, 2000)
led.start(100)

ledLvl = 100
ledDir = 0

buttonState = 0       #current button state
lastButtonState = 0      #previous button state
timePressed = 0         #when was button pressed
lastBrightness = 0      #brightness when backlight turned off
lastStatus = ""         #was the volumio playing when turning off screen

blState = 2            #current bl level
bl.set_power(True)      #turn on bl
bl.set_brightness(64, smooth = True, duration = 1) #set bl level

gamma = 2.8            #gamma adjust for LED (makes breathing more consistant)
max_in = 100.0         #the maximum level to call for adjustment
max_out = 100.0         #the maximum level for PWM (100 for RPi)
levelOutput = 0.0      #variable to hold the adjusted level output



while 1: #repeat continously
   buttonState = 1 - GPIO.input(26) #invert state due to pullup
   
   if (buttonState == 1 and lastButtonState == 0): #button pressed
      timePressed = time.time() #store time button pressed
      
   elif (buttonState == 1 and lastButtonState == 1): #button held
      if (time.time() - timePressed > 2): #if held for more than two seconds turn off bl
         status = subprocess.check_output("volumio status | sed -e 's/true/True/g' -e 's/false/False/g' -e 's/null/False/g'", shell=True)
         status = eval(status)
         if (status["status"] == "play"):
            os.system("volumio pause")
            lastStatus = "play"

         lastBrightness = blState #store current bl level
         blState = 0 #set bl level to off
         bl.set_brightness(11, smooth = True, duration = 1) #reduce bl down
         bl.set_power(False) #turn bl off
         ledLvl = 100
         ledDir = 0
         
   elif (buttonState == 0 and lastButtonState == 1): #button released
      if (time.time() - timePressed <= 2): #if button released before two seconds passed change brightness
         if (lastBrightness > 0): #determines if bl was off and reset to bl level before turning off
            blState = lastBrightness
            lastBrightness = 0 #reset
            if (lastStatus == "play"):
               os.system("volumio play")
               lastStatus = ""
         else: #other wise go to next bl level
            blState = blState - 1
      
         if (blState < 1): #roll-over
            blState = 3
         
         #next section sets current level. Change the first number in bl.set_brightness between 11-255 if
         #other brightness levels required. Ignore the blState == 0.
         if (blState == 0):
            bl.set_brightness(11, smooth = True, duration = 1)
            bl.set_power(False)
         elif (blState == 1):
            bl.set_power(True)
            bl.set_brightness(32, smooth = True, duration = 1)
         elif (blState == 2):
            bl.set_power(True)
            bl.set_brightness(64, smooth = True, duration = 1)
         elif (blState == 3):
            bl.set_power(True)
            bl.set_brightness(192, smooth = True, duration = 1)
   
   elif (buttonState == 0 and lastButtonState == 0): #button not pressed
      if (blState == 0):                              #backlight if off, 'breath' the LED
         levelOutput = ((ledLvl/max_in) ** gamma) * max_out   #gamma calculation
         if (levelOutput > 100): levelOutput = 100         #clamp output to max PWM level (100 for RPi)
         
         if (ledDir == 0):                           #ramp intensity down
            led.ChangeDutyCycle(levelOutput)            #set PWM output from gamma corrected level
            ledLvl = ledLvl - 1                        #reduce brightness for next pass
            if (ledLvl == 1):                        #when brightness at lowest point (not 0 as LED goes off and looks odd)
               ledDir = 1                           #switch brightness direction to increase
         else:                                    #ramp intensity up
            led.ChangeDutyCycle(levelOutput)
            ledLvl = ledLvl + 1
            if (ledLvl == 100):                        #switch direction when at max brightness
               ledDir = 0
      else:
         led.ChangeDutyCycle(100)
      time.sleep(0.05)                              #if no button being pressed sleep for 50mSec - prevents loading a thread

   lastButtonState = buttonState #store current button state to determine if button still being pressed or not.

[/code]
Last edited by smartroad on Sat Jan 12 2019 10:51, edited 5 times in total.
Random avatar
smartroad
Sunday DIYer
Sunday DIYer
 
Posts: 25
Joined: Wed Nov 19 2014 14:28

Ads helps Volumio remain Free and Open Source. Please consider donating to help us continue to serve you.


Guide for setting up touchscreen + backlight control

Postby dedero » Wed Jan 09 2019 10:28

Thanks a lot for this tutorial! it looks very complete and even with the plans design to print it out, awesome man!

I will try your tutorial very soon, I would need to order the screen first..

Regarding the case, I would like to ask how did you manage the back of the case, as far as I can see in the project link, there is kind of empty hole so I cannot realize how you've manage to hold the Pi (with a potential DAC attached on it), you've screwed the Pi with 4 screws and the board "naked" or you've attached a Pi case to the back?

I'm looking forward to test your solution!, as soon as I can, I will come back to you with results

Cheers,
Bruno
Random avatar
dedero
Fresh off the boat
Fresh off the boat
 
Posts: 3
Joined: Wed Jan 09 2019 10:09


Guide for setting up touchscreen + backlight control

Postby smartroad » Wed Jan 09 2019 16:51

dedero wrote:Thanks a lot for this tutorial! it looks very complete and even with the plans design to print it out, awesome man!

I will try your tutorial very soon, I would need to order the screen first..

Regarding the case, I would like to ask how did you manage the back of the case, as far as I can see in the project link, there is kind of empty hole so I cannot realize how you've manage to hold the Pi (with a potential DAC attached on it), you've screwed the Pi with 4 screws and the board "naked" or you've attached a Pi case to the back?

I'm looking forward to test your solution!, as soon as I can, I will come back to you with results

Cheers,
Bruno


Cheers :) I have left the case naked. Where I have mine you can't see behind it so looks clean. It also means I didn't have to waste plastic lol

Let me know how this works for you. I do have a new update for the script I am testing which adds a timer for the screen so that when you pause the screen will turn off after 30 minutes (default but easily changed). It'll turn back on by either pressing the button or starting playback again (via another browser). I'm away on work but will update here once i am home again.
Random avatar
smartroad
Sunday DIYer
Sunday DIYer
 
Posts: 25
Joined: Wed Nov 19 2014 14:28


Guide for setting up touchscreen + backlight control

Postby dedero » Thu Jan 10 2019 09:42

Ahhh cool, I see, it's not really bad leaving it naked I guess, it also gives you some space to attach whatever DAC you want without taking care of how deep is the case in the back...

The new feature in the script sounds great!, quite an interesting function to save energy

One other thing that came to my mind, how do you handle the keyboard stuff?, for example to find some song, artist, online radio, etc?, is there any on-screen keyboard in Raspbian GUI?

Cheers!
Bruno.
Random avatar
dedero
Fresh off the boat
Fresh off the boat
 
Posts: 3
Joined: Wed Jan 09 2019 10:09


Guide for setting up touchscreen + backlight control

Postby smartroad » Thu Jan 10 2019 14:22

I have been looking at a couple of solutions for an on-screen keyboard. Currently if I need to do text input it is back to computer or phone. Hopefully that will change soon though :D
Random avatar
smartroad
Sunday DIYer
Sunday DIYer
 
Posts: 25
Joined: Wed Nov 19 2014 14:28


Guide for setting up touchscreen + backlight control

Postby FFrank » Fri Jan 11 2019 09:27

Wow, this is a great project!

I was thinking to build something like this...

I have 0 experience in 3D printing. Can I just get the files and go to a service and let it print?

What are all the part for? Do you have more pictures/videos?
Especially the round thing - what is it for?
Are there different versions of the parts?

Would be nice to get some more explanation.

Concerning the keyboard...will a USB Keyboard work?

By the way, which Pi do you use? Will the current model work?

Thanks.

Best.
F.
Random avatar
FFrank
Sunday DIYer
Sunday DIYer
 
Posts: 16
Joined: Fri Dec 14 2018 10:19


Guide for setting up touchscreen + backlight control

Postby damiani8 » Fri Jan 11 2019 14:13

dedero wrote:Ahhh cool, I see, it's not really bad leaving it naked I guess, it also gives you some space to attach whatever DAC you want without taking care of how deep is the case in the back...

The new feature in the script sounds great!, quite an interesting function to save energy

One other thing that came to my mind, how do you handle the keyboard stuff?, for example to find some song, artist, online radio, etc?, is there any on-screen keyboard in Raspbian GUI?

Cheers!
Bruno.


Changing from 'openbox' to 'matchbox' window manager and then using matchbox-keyboard works very well.

virtual-keyboard-kiosk-mode-t4995.html
Random avatar
damiani8
Sunday DIYer
Sunday DIYer
 
Posts: 18
Joined: Sat Jan 05 2019 16:19


Guide for setting up touchscreen + backlight control

Postby smartroad » Fri Jan 11 2019 17:34

dedero wrote:One other thing that came to my mind, how do you handle the keyboard stuff?, for example to find some song, artist, online radio, etc?, is there any on-screen keyboard in Raspbian GUI?


I have updated the guide to show how to install matchbox-keyboard that will allow for on-screen keyboard input. As damiani8 pointed out the link (I was already looking at it but lost my link so thanks for popping that back up!!!) I have used the advice of the people in it and copied the keyboard.xml file of Xoliul which is fantastic for basic input with decent sized buttons on the 7" screen!

Next up is finding a way to update that background and colours to better match the Volumio aesthetic!

I am still working on the new script, I want to simplify a couple of bits and make it a little easier to read/maintain. I hope to have it up here in a week or so - work is hectic so I don't have the time to allocate at the moment :(
Random avatar
smartroad
Sunday DIYer
Sunday DIYer
 
Posts: 25
Joined: Wed Nov 19 2014 14:28


Guide for setting up touchscreen + backlight control

Postby smartroad » Fri Jan 11 2019 17:38

FFrank wrote:Wow, this is a great project!

I was thinking to build something like this...

I have 0 experience in 3D printing. Can I just get the files and go to a service and let it print?

What are all the part for? Do you have more pictures/videos?
Especially the round thing - what is it for?
Are there different versions of the parts?

Would be nice to get some more explanation.

Concerning the keyboard...will a USB Keyboard work?

By the way, which Pi do you use? Will the current model work?

Thanks.

Best.
F.


I'll try to get to your questions soon! but a couple of quick ones - have a look on the Thingiverse link for more details about the printed parts (you should be able to view the models to give an idea on what they do). You should be able to just send the files for printing, I have never done this as I have my own printer so YMMV.

Keyboard, I have just updated the guide for an on-screen one.

Pi wise I use the Pi3 Model A with a IQAudio DAC.
Random avatar
smartroad
Sunday DIYer
Sunday DIYer
 
Posts: 25
Joined: Wed Nov 19 2014 14:28


Guide for setting up touchscreen + backlight control

Postby dedero » Mon Jan 14 2019 11:37

Awesome information regarding the touch screen keyboard!, thanks a lot for adding it to the guide!
Random avatar
dedero
Fresh off the boat
Fresh off the boat
 
Posts: 3
Joined: Wed Jan 09 2019 10:09

Next

Return to Guides

Who is online

Users browsing this forum: No registered users and 0 guests