Skip to content

FolkComputer/gadget

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gadget

🔦

Very tentative design. Sort of minimum viable design to prototype handheld interactions.

Open-back until it's more stable (sometimes you want to replug the projector, sometimes you want to plug in a USB keyboard to manually reconfigure if it's off Wi-Fi)

Bill of materials

3D prints

  • Gadget chassis
    • This prints in 2 parts: Chassis and front panel
      • (for front panel, should choose either Ultimems version with smaller projector slit, or Nebra version with larger slit [since the Nebra is shifted a little toward the side])
  • Handle grip with trigger button (in vendor/)
    • This prints in 3 parts so far: Main grip, thumbwheel, block
    • (Trigger inset itself is TODO)

(can view in https://3dviewer.net -- for the gadget chassis, the Gadget.shapr file is canonical / used to edit in Shapr3D, the derived files are generated from it)

Electronics

Cables

Other

  • 4x 6mm M2 bolts (for mounting camera to front panel)
    • OR TODO bolts
  • 4x M2 nylock nuts (for mounting camera to front panel)
  • 4x 10mm M2.5 standoffs for Pi 5
  • 4x 4mm M2.5 bolts for Pi 5 <-> standoffs
  • 4x 8mm M2.5 bolts for standoffs <-> chassis
  • 2x 4mm M2.5 bolts for front panel
    • 2x M2.5 heat set inserts for front (to bolt front panel onto)
  • 1x 1/4" bolt for top
  • 1x 1/4" 6mm x 8mm heat set insert for bottom

Software setup

Flash Raspberry Pi OS Lite (64-bit).

Add to config.txt on the boot partition of the SD card (see the Ultimems manual and https://volzo.de/posts/raspberry-pi-projectors/ ) (this mounts as /boot/firmware/config.txt, so can also edit there over ssh):

# For Ultimems projector:
hdmi_force_hotplug=1
hdmi_drive=2
config_hdmi_boost=4
hdmi_group=2
hdmi_mode=14
#hdmi_safe=1

Boot the Pi. Ssh in and follow Folk README setup instructions.

If the HDMI output on the projector is garbled, EDID might be messed up. try adding video=HDMI-A-1:1280x720M@60D to /boot/firmware/cmdline.txt on the SD card.

If vulkaninfo --summary only shows the llvmpipe software Vulkan device and not the V3DV Mesa device (the actual hardware GPU), try updating the kernel and GPU drivers with sudo rpi-update.

Use apt to install libcamera0.3 and libcamera-dev.

Use sudo nmtui to add more Wi-Fi networks.

Create ~/folk-live/setup.folk to set the camera to use wide-angle resolution and to create moving dashed outline around the perimeter of the projection:

Assert $this wishes $::thisNode uses camera "/base/axi/pcie@120000/rp1/i2c@88000/imx708@1a" with width 1280 height 1024

Assert $this wishes $::thisNode uses display 0

When display /disp/ has width /w/ height /h/ {
  When the clock time is /t/ {
    Wish to draw a dashed stroke with points [list [list 0 0] [list $w 0] [list $w $h] [list 0 $h] [list 0 0]] color white width 10 dashlength 40 dashoffset [expr {fmod($t, 10)*-120}]
  }
}

(the camera path may be different, Folk will print all valid camera paths in its journal at boot if you need to check: sudo journalctl -u folk -n 30)

Ad-hoc Wi-Fi

Disable NetworkManager (I have found it impossible to get ad-hoc Wi-Fi to work using it):

$ sudo systemctl stop NetworkManager.service
$ sudo systemctl disable NetworkManager.service
$ sudo systemctl stop NetworkManager-wait-online.service
$ sudo systemctl disable NetworkManager-wait-online.service
$ sudo systemctl stop NetworkManager-dispatcher.service
$ sudo systemctl disable NetworkManager-dispatcher.service

Edit your setup.folk to run the iwconfig and ip commands to make an ad-hoc network:

if {[catch {exec ip address | grep 169.254.34.2}]} {
    exec sudo iwconfig wlan0 mode ad-hoc
    exec sudo iwconfig wlan0 essid gadget-pink
    exec sudo ip link set wlan0 up
    exec sudo ip addr add 169.254.34.2/16 dev wlan0
}

You should be able to ssh into [email protected] from any other computer on the gadget-pink network now.

Releases

No releases published

Packages

No packages published