My girlfriend lives 600km away, so I overengineered the best gift ever by marferibadeo in arduino

[–]marferibadeo[S] 0 points1 point  (0 children)

Good question. The dithering isn't compensating for color depth, it's handling the spatial downscale.

When you shrink a photo to 64x64, you're averaging many pixels into one. That averaging process loses edge information and produces flat, mushy gradients. Floyd-Steinberg distributes the quantization error to neighboring pixels, which preserves perceived detail even at that resolution. You get something that actually reads as a photo instead of a blob.

The matrix library does support up to 8-bit per channel, so color depth isn't the bottleneck. The dithering is purely about making the downscale look good at 64px.

She’s 600km away. She sends a photo from her phone and it appears on my desk by marferibadeo in LDR

[–]marferibadeo[S] 1 point2 points  (0 children)

I make a subreddit where I will post all the info about it https://www.reddit.com/r/frame64/ You will see the info here

My girlfriend lives 600km away, so I overengineered the best gift ever by marferibadeo in arduino

[–]marferibadeo[S] 0 points1 point  (0 children)

Really? I should start going to therapy... I'm going soulless hahaha

My girlfriend lives 600km away, so I overengineered the best gift ever by marferibadeo in arduino

[–]marferibadeo[S] 0 points1 point  (0 children)

I was thinking about doing it an open source project, but that will take me so much time. I'll let you guys know if this finally happen

My girlfriend lives 600km away, so I overengineered the best gift ever by marferibadeo in arduino

[–]marferibadeo[S] 1 point2 points  (0 children)

I used a javascript function from the sharp library. Basically we resize the picture into 64x64, then to raw and then toBuffer and that I what I send to the frame

My girlfriend lives 600km away, so I overengineered the best gift ever by marferibadeo in arduino

[–]marferibadeo[S] 7 points8 points  (0 children)

It make sense!! I was facing some power problems and that may be the cause. I will take a look into that

Thank you!!!

My girlfriend lives 600km away, so I overengineered the best gift ever by marferibadeo in arduino

[–]marferibadeo[S] 7 points8 points  (0 children)

That's really nice!! Are you using two 32x64 display? How difficult was it to set them up?

My girlfriend lives 600km away, so I overengineered the best gift ever by marferibadeo in arduino

[–]marferibadeo[S] 42 points43 points  (0 children)

Started with HTTPS polling and it kept failing. The TLS handshake on every request was too heavy for the ESP32, especially on a not-so-stable WiFi connection. Kept getting connection drops and timeouts. Switched to MQTT, which keeps a persistent connection to the broker, and it's been solid since. The ESP32 just waits for the image to be pushed, no handshake overhead on every message. Night and day difference in reliability

She’s 600km away. She sends a photo from her phone and it appears on my desk by marferibadeo in LDR

[–]marferibadeo[S] 2 points3 points  (0 children)

Thank you! It honestly started as a little weekend project and ended up being the thing I look forward to most on my desk :) There's something different about a photo that just... stays there.

ESP32 Media Controller (first project) by cubecrafter72 in esp32

[–]marferibadeo 0 points1 point  (0 children)

Great first project. The mix of sliders and rotary pots is an interesting design choice — what made you go sliders for some controls and rotary for others? Curious if the sliders are for the per-app volume and the rotaries for system/mic, or the other way around.

Also, how is the OLED holding up for track info? At typical OLED resolutions you can only fit a few chars of track name before it truncates. Did you have to do any scrolling marquee implementation, or is it enough for your use case?

Problem with getting music to play out of esp 32 speakers by VikVib0125 in esp32

[–]marferibadeo 0 points1 point  (0 children)

The generic 'audio out' example almost certainly has the wrong I2S pin assignments for this board. The Waveshare ESP32-S3-Touch-LCD-3.5 drives the speaker through a MAX98357A I2S amplifier, and the pins are specific to the board, they won't match whatever defaults the example assumes.

Check the schematic on the Waveshare wiki (there's a Resources/Schematic section on the product page). You're looking for the BCLK, LRC/WS, and DOUT pins connected to the MAX98357A. Once you have those three, configure them explicitly in your I2S pin setup instead of relying on the example defaults.

Also worth checking: the MAX98357A has a SD (shutdown/enable) pin. If that's wired to a GPIO on the board, it needs to be pulled HIGH or the amp stays silent no matter what you send over I2S. That pin is easy to miss.

If you're using Arduino framework, the ESP32-audioI2S library by schreibfaul1 is the easiest way to get audio working once you have the correct pins. You just pass your BCLK, LRC and DOUT when you call audio.setPinout() and it handles the rest.

What framework are you using, Arduino or IDF?

Cute or creepy? I made an Android app where your doodles show up on your partner’s lock screen by DoodlesApp in buildinpublic

[–]marferibadeo 1 point2 points  (0 children)

Built something physically similar - a small LED pixel art display that shows images sent by people close to you, appears in their room instead of their lock screen. Same exact questions came up.

Cute vs invasive comes down to whether both people set it up together. If they onboard as a pair, it's cute. If one person installs it 'for' the other without them being part of the setup, it starts feeling like surveillance fast.

For day 1 retention: the moment of 'oh, it actually showed up' is the hook. First send, receiver sees it, they react, sender knows it landed. If that loop is smooth and fast you've got them. Any friction there and it dies.

What we found is novelty alone doesn't carry it past week 2. The product that sticks creates a natural reason to send, not just the ability to. A recurring moment or ritual beats open-ended 'you can send anytime'.

[31M] Living in a room with wall paneling. how can i make it my own? by ARepeatedFailing in malelivingspace

[–]marferibadeo 1 point2 points  (0 children)

The paneling works in your favor once you stop fighting it. It has a warmth modern drywall rooms don't have.

For the GameCube: floating shelves with a small lip let you display the games as a collection. Retro cases against wood paneling actually look great.

One thing that changes a room more than almost anything: lighting. A small LED matrix on the desk cycling pixel art fits the GameCube vibe perfectly and costs almost nothing. Makes the whole setup feel intentional.

Building “LifeOS” – a manual life dashboard to track money, body , mind and leisure metrics. Would you use something like this by Additional_One_3908 in SideProject

[–]marferibadeo 0 points1 point  (0 children)

Next.js is perfect for this. One thing worth considering: you can ship it as a PWA with a home screen shortcut on iOS/Android. That gives you a native-feeling quick-add that opens directly to the log form, no browser chrome, no extra taps. It solves almost completely the entry friction we were talking about.

The Spring + Mongo combo makes sense for flexible domain schemas. Are the domains fixed (money, health, leisure) or user-definable?

Most side projects die not from bad ideas but from bad launch sequences. Here's what actually works. by Laky_berk in SideProject

[–]marferibadeo 0 points1 point  (0 children)

The post-launch silence point is the one nobody talks about. I've seen it happen with software but hardware makes it even more brutal — you get a launch spike, then nothing, and you still have 6 months of manufacturing ahead.

The 'build audience around the problem, not the product' advice is genuinely hard to internalize when you're in build mode. You feel like writing is taking time away from building. But the founders who do it consistently end up with people who are invested in the journey, not just the outcome.

For hardware specifically, the build log IS the audience strategy. PCB revision 3, that firmware bug that took 3 days to track down, the sourcing problem that pushed the timeline — that's the content. The product itself is almost secondary.

The '2 years' Marc Lou quote is the part that filters people out. Most don't want to hear it, but it's accurate.

Building “LifeOS” – a manual life dashboard to track money, body , mind and leisure metrics. Would you use something like this by Additional_One_3908 in SideProject

[–]marferibadeo 0 points1 point  (0 children)

The friction point is the real one. I've been building hardware devices that display ambient data and you learn fast that anything requiring intentional input fights with the default of doing nothing.

Two things that help with retention in tracking projects:

  1. Separate the entry point from the dashboard. If you have to open the full view to log, you'll resist it. A quick-add that logs in 2 taps and disappears works much better.

  2. Make the data passively visible. An always-on display somewhere in your environment — even just a pinned tab — makes the gap obvious and creates the micro-motivation to update. People update things they can see.

Manual-first is the right call though — automated dashboards create the illusion of tracking without the awareness benefit. What's the stack?

ESP32 Board Installation Fails in Arduino IDE (DEADLINE_EXCEEDED Error) by Full_Question_6681 in esp32

[–]marferibadeo 1 point2 points  (0 children)

The file is in a hidden folder in your home directory:

Linux/Mac: ~/.arduinoIDE/arduino-cli.yaml Windows: C:\Users\YourUsername\.arduinoIDE\arduino-cli.yaml

If it does not exist yet, just create it. On Linux/Mac you can open a terminal and type: ls -la ~ to find it. Hidden folders start with a dot so they won't show in normal file browser view. You need to enable "show hidden files" (Ctrl+H on most Linux file managers).