|
|
| (13 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| == Hardware ==
| | [[User:Rando/Ordibooth]] |
| Raspberry Pi 3 B v1.2
| |
|
| |
|
| Raspberry Pi Display v1.1
| | [[User:Rando/Maslow]] |
|
| |
|
| Cannon Powershot A2200
| | [[User:Rando/Donate_v2]] |
|
| |
|
| == software ==
| | [[User:Rando/Gain_Clone_Notes]] |
| === pi ===
| |
| 1. virtualenv
| |
| | |
| 2. virtualenvwrapper
| |
| | |
| 3. pyspacelib (ft interface)
| |
| | |
| 4. python 3.5
| |
| | |
| 4.1 pillow
| |
| | |
| 4.2 pygame
| |
| | |
| 4.3. kivy
| |
| | |
| === Ordi server ===
| |
| | |
| 1. Imagemagick
| |
| | |
| 2. ptpcam compiled with chdk
| |
| | |
| 3. python 3.5
| |
| | |
| For some reason, pygame and pillow are not installed with kivy, but are requirements.
| |
| | |
| == CHDK ==
| |
| http://chdk.wikia.com/wiki/CHDK_1.4.0_User_Manual
| |
| | |
| Download using STICK: http://zenoshrdlu.com/stick/stick.html
| |
| | |
| Remote Pameters, enable remote
| |
| | |
| [[File:enable_remote.png]]
| |
| | |
| Remote Usage: http://chdk.wikia.com/wiki/USB_Remote
| |
| | |
| Note: the USB remote functionality is not used for this, we need to control it from the [pi <-> mac] mini device
| |
| | |
| === Scripting ===
| |
| | |
| http://chdk.wikia.com/wiki/CHDK_Scripting_Cross_Reference_Page
| |
| | |
| click
| |
| | |
| is_key
| |
| | |
| is_pressed
| |
| | |
| press
| |
| | |
| release
| |
| | |
| shoot
| |
| | |
| wait_click
| |
| | |
| wheel_left
| |
| | |
| wheel_right
| |
| | |
| '''Transferring files'''
| |
| | |
| How to transfer to computer? Perhaps the rpi can indicate to the macmini to mount the camera and tx the picture.
| |
| | |
| http://chdk.wikia.com/wiki/PTP_Extension/ptpcam_Examples
| |
| | |
| ptpcam / libptp
| |
| | |
| Install instructions
| |
| | |
| http://chdk.wikia.com/wiki/Ptpcam_in_headless_linux_Dockstar
| |
| | |
| ok, THIS is the one we want, it has the "ptpcam --chdk" option:
| |
| | |
| https://github.com/jrabbit/libptp-chdk
| |
| | |
| notes on usage: http://chdk.wikia.com/wiki/PTP_Extension/ptpcam_Examples
| |
| | |
| How to run one onn camera:
| |
| | |
| loadfile('A/CHDK/SCRIPTS/testprgm.lua')()
| |
| | |
| == ordi_controller.py ==
| |
| | |
| Handles from ptpcam functions from the mac mini as python calls using subprocess.run.
| |
| | |
| == scripting ==
| |
| | |
| http://chdk.wikia.com/wiki/Lua
| |
| | |
| The "Minimalistic Intervalometer" is a lua script that takes a photo, using half presses and full presses.
| |
| | |
| Steps:
| |
| | |
| # Write script
| |
| # Place <script>.lua in CHDK/SCRIPTS on SD card e.g. A/CHDK/SCRIPTS/testprgm.lua
| |
| # Run script with loadfile('A/CHDK/SCRIPTS/testprgm.lua')()
| |
| | |
| | |
| Script Reference
| |
| | |
| http://chdk.wikia.com/wiki/CHDK_Scripting_Cross_Reference_Page
| |
| | |
| How to script and run and stuff
| |
| | |
| http://chdk.wikia.com/wiki/Lua/PTP_Scripting
| |
| | |
| > luar shoot()
| |
| | |
| Lua dev environment metioned here:
| |
| http://chdk.wikia.com/wiki/Lua_Development_Environment
| |
| | |
| == this is how! ==
| |
| [[File:ptp-cam-shoot.png]] | |
| | |
| | |
| ptpcam --dev=028 --chdk="luar shoot()"
| |
| | |
| | |
| == Camera Disassembly ==
| |
| Why? the power doesn't stay on without a button press. so trying to replace the button so we can drive it via a GPIO on the rasp pi.
| |
| | |
| Wait, why.
| |
| | |
| Because. We're hacking.
| |
| | |
| https://www.ifixit.com/Device/Canon_PowerShot_A2200
| |
| | |
| | |
| == Power button modification ==
| |
| | |
| In order to control the camera power "remotely", the power button was modified to pull out wires and connect them to a GPIO of the pi. This was the power can be turned on when the system boots.
| |
| | |
| The button was a SMD tact switch with barely exposed pads. In order to get sufficient copper to solder, the solder mask was gently scraped off.
| |
| | |
| [[File:ordi_power_button_sense.png]]
| |
| | |
| [[File:ordi_power_button_mod.png]]
| |
| | |
| === Pi GPIO ===
| |
| | |
| Well, pi GPIOs are 3.3V and the typical 3.3V -> 5V doesn't work. The button sense's the ground but the high state does not trigger a high reading on the camera. Since this is the case, it never is released from ground to reset in order to toggle on next "press" aka connection to ground.
| |
| | |
| Going to put together a simple logic shifter from a diode and a resistor i guess.
| |
| | |
| == Power ==
| |
| | |
| The pi needs '''5.1V @ 2.5A'''. That, plus the LCD display max current draw is '''400mA''', so really need a 3A+ supply.
| |
| | |
| Ok, after creating a small cable assembly for the power so I can use anything but the USB port, things are stable and the new image installs properly.
| |
| | |
| == Pi Config ==
| |
| the SD card image now boots properly and everything installs.
| |
| | |
| VNC and ssh access are now enabled.
| |
| | |
| The inital plan is:
| |
| 1. GPIO for camera power button
| |
| 2. Simply kivy UI
| |
| 3. python camera controller (uses CHDK underneath)
| |
| | |
| == Pi Image ==
| |
| | |
| I'm not sure if I HAVE to create a custom image, but it seems like I should make an attempt in order to load Kivy.
| |
| | |
| https://www.instructables.com/id/Creating-a-Custom-Shrinked-Raspberry-Pi-Image/
| |
| | |
| Not really into what that instructables is doing but will keep up.
| |
| | |
| Next plan: emulate with qemu to get a custom image going
| |
| | |
| https://stackoverflow.com/questions/38837606/how-to-emulate-raspberry-pi-raspbian-with-qemu
| |
| | |
| totally custom i think, but like, don't have to.
| |
| | |
| https://github.com/RPi-Distro/pi-gen
| |
| | |
| Ok, so to get -M raspi3 natively, qemu currently has to be compiled from scratch. gfd.
| |
| | |
| https://github.com/qemu/qemu
| |
| | |
| But it should now include this patch:
| |
| | |
| https://github.com/bztsrc/qemu-raspi3
| |
| | |
| Ok, well, this image just wont boot. I'll have to configure the pi by hand which fucking suuuucckkksssssssss
| |
| | |
| | |
| == Target Architecture ==
| |
| | |
| The pi will run a small kivy based app.
| |
| | |
| The app will determine and change the state of the camera.
| |
| | |
| The app will have a button to take a picture.
| |
| | |
| The app will display the taken picture
| |
| | |
| The app can delete the pictures
| |
| | |
| The app can save the picture
| |
| | |
| The app can preview the picture in the flashen taschen tester
| |
| | |
| The app can trigger a send of the picture to the flashen taschen.
| |
| | |
| The app can take in 140 characters of text
| |
| | |
| The app can send the text to the ordi_server
| |
| | |
| The app can trigger a tweet the picture
| |
| | |
| The app will produce a QR code / URL link to retrieve the picture
| |
| | |
| order server will run on the mac mini
| |
| | |
| it will be a flask web app with a thin wrapper for commands
| |
| | |
| the rpi will send commands to the order server
| |
| | |
| the order sirver will handle all image manipulation
| |
| | |
| the order server will control the camera
| |