Giter VIP home page Giter VIP logo

hexastorm's Introduction

Laser scanner Documentation Status

Laser scanning is the controlled deflection of laser beams, visible or invisible. In a high-speed polygon scanner system, the laser is deflected by a rotating prism or mirror. The position of the laser is determined via a photodiode.
Hexastorm is a full toolkit for working with polygon lasers scanners using FPGA technology; and provides hardware, gateware, and software to enable laser scanning applications.

Code is tested on the system shown above, branded as Hexastorm. The FreeCAD design is shared here and PCB designs are found here. A blog can be found on Hackaday. The code took most inspiration from LDGraphy.
Making a PCB with scanner is shown in the video;
video in action not showing.

The alignment procedure is shown in the following video.

Alignment procedure image not showing

Requirements

Code is tested on a Raspberry Pi 3B and 4B. The SD-card should be at least 8 GB, ideally 16 GB.
Both 32 bit and 64 bit are tested, with camera.

Overall note

Development is done on the main or master branch. Look through to commit history to find the right working version which was used in the video.

Install

Install poetry and python.

sudo apt install python3 python3-pip
curl -sSL https://install.python-poetry.org | python3 -

Use poetry to install the dependencies in pyproject.toml. The virtual environment needs to be installed in project for VSCode to detect it.

poetry config virtualenvs.in-project true
poetry install --without raspberry,64bit

Poetry creates a virtual environment for you. poetry run python gives you access to the packages installed. Depending on your operating system you also need to install certain extras. Look into the pyproject.toml file for the possibilities. Yosys must be compiled or installed via oss-cad-suite. An alternative is to install python packages which use wasm but these are experimental.

poetry install --without raspberry

If this doesn't work try You can test code as follows.

poetry run python3 -m hexastorm.movement

If you want to interact with the stepper motors and flash the fpga.

./install.sh

Micropython

An idea, I am working on is to call controller.py from Micropython. Most dependencies can be moved to ESP32.

Raspberry pi

The following lines need to be in the /boot/config.txt;

# I2C for laserdriver and camera
dtparam=i2c_arm=on
dtparam=i2c_vc=on
# SPI
dtoverlay=spi0-1cs,cs0_pin=18
dtoverlay=spi1-1cs,cs0_pin=7
# camera
dtoverlay=vc4-fkms-v3d
start_x=1
gpu_mem=300

There should not be dtparam=spi=on, somewhere. This would enable two chip selects for SPI0 and creates a conflict with the pin select of SPI1.

Arducam

Install my version of the Python libary available at ArducamPython.

hexastorm's People

Contributors

hexastorm avatar hstarmans avatar jurra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

hexastorm's Issues

FPGA

I came across an item for grblesp32 that you had posted about fpga's the repo you linked does not appear to be available. I have never used an fpga, but I am developing a full featured motion controller and have been looking at better ways to control th motors. primarily I need very fast pulse trains for the motor steps.

I didn't know if you were interested in collaboration, or if the fpga library was still available for research.

Use submodules

A multi-repository project like this should be using submodules. A git submodule is like a symbolic link to a specific branch and version of a another repository. For each iteration of the entire machine, you could have a branch with different submodules links. This would allow someone to clone (a branch) the repository (recursively) and be sure that all the parts of the project matched.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.