v2.0 - nolanhergert/HeadlightBlocker GitHub Wiki
I think customers would want these, but it should be driven by customers' desires, not yours!
Polarizer
- I think I want to have a higher transmission polarizer ("worse") for nighttime driving, at least to be legal.
- Follow up with Rina Tech in person? Had a conversation with Sunny over wechat and they thought that their polarizer film didn't have anti-glare properties and so it wouldn't be appropriate for glasses. It would be worth trying again at some point. They want a spec to know you're a pro and ready to buy.
- I had another conversation with a different company on alibaba. They were selling colored polarizer sheets and wanted 10K meters of MOQ before talking about a custom tint.
Camera
- Want even smaller and cheaper and wider angle, but not a priority right now.
- Talked with a company in HK trade show, but there are a bunch that will do custom designs.
- Maybe ask Steven at Opulo (LumenPNP) since they did something similar, getting a custom camera. 10s of vendors and some will work with small fry like him.
- Do initial calibration by detecting glasses frame and pupil in a mirror with user moving head a little bit? Harder... but is it better UX?
LCD
- Is plastic desirable?
- Glass feels more premium, less scratchable
- However flexible plastic is easier to bend into a shape. However, it's still quite flimsy, can come out?
- Probably hard to bend glass/plastic after LCD printing
- Plastic LCD is much slower, see [LCD Theory](https://github.com/nolanhergert/HeadlightBlocker/wiki/LCD-Theory#shenzhen-hexing-optical-options) Might be able to fix with factory, not sure yet.
Use Cases
- Play around with sports lcd strobe glasses. https://www.youtube.com/watch?v=T5-qyL9UtA4. MJ and Curry, saw the benefit. But there are a number that are sold used.
UX
Need
- Website to select / tune behavior, upgrade/downgrade firmware, etc. Using fast changing grayscale bar codes.
- What might be useful is simulating different common situations and seeing how the glasses would react to them (pre-recorded videos? or just simple art might be better). Tweak knobs easily while only uploading to the glasses when ready.
- Could also use the camera of smartphone/laptop and simulate behavior that way too. But why wouldn't they just preview it to the glasses they presumably already have on?
- Uploading should be only able to occur after a recent button press. Or maybe a confirmation press? Have to play with it.
- Write and test your own scripts / algorithms on there? I probably need it for my own development. Only need to compile the algorithm and then upload that part to glasses. It looks like you can't compile Rust in-browser yet (would need to cross compile to arm to flash to glasses, requiring docker container or something). If need container, there are very generous free tiers at the top CSPs, saves you from running on raspberry pi for $.01 per month!! but the power going out.
- For fast docker image loading, I want to cache the docker image on the "cloudless" server instance that will quickly spin up the container. However, I only want a new container generated when the relevant files are updated. The important bit is "paths:" argument. More notes in chatgpt log: https://chatgpt.com/share/68374df7-ff98-800e-9171-002b38dfa440
- What might be useful is simulating different common situations and seeing how the glasses would react to them (pre-recorded videos? or just simple art might be better). Tweak knobs easily while only uploading to the glasses when ready.
name: Build and Push Rust Cross-Compiler Docker Image
on:
push:
branches:
- main # Adjust to your main branch
paths:
- Dockerfile
- .github/workflows/build.yml
- scripts/** # Optional: include relevant files
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build Docker image
run: |
docker build -t your-dockerhub-username/rust-cross-compiler:latest .
- name: Push Docker image
run: |
docker push your-dockerhub-username/rust-cross-compiler:latest
* Somewhat similar to: https://sensor-watch-builder.fly.dev/
PCB
- Some notes there already, specifically smaller LIC: https://github.com/nolanhergert/HeadlightBlocker/wiki/PCB
- SWD using USB C? https://threadreaderapp.com/thread/1495860045728395278.html (and teardown talk). Also https://engineer.john-whittington.co.uk/electronics/2023/07/30/minnow-usbc-dam-tool.html
- Basically just take over USB C pins? https://alvarop.com/2025/03/swd-to-usbc/
- Allow a different MCU that has at best a 500nA standby by using a case as a charger and "switch" to cut power? And just use capacitive touch during runtime, no physical switch.
- I don't want to rely on camera data to know when a finger is in front of it, blocking light in a pattern. The real environment could look like that occasionally.
- Having a button that is only for turning on (and not for user interaction too) is annoying UX wise. Pulling out of case/charger seems more intuitive.
Security
- How to ensure that your configuration wasn't modified or tampered by bad actor?
- Preview alignment by showing halo around everyday bright / dark objects when first powered on?
- Only show standard power-on animation with confirmed safe algorithms? (anything custom or weird will show X X X on startup or something)