Here are my two short stop-motion animations with PCB.
Recently I have used a lot of The Dave Brubeck Quartet music. Especially the Take Five. I think the live video from 1964 is especially cool. And I used some AI programs to upscale it. It took around 10 hours and turned my computer really hot. GPU temperature was 80C all the time and it made me very nervous.
This is my new nine-cornered MCB. I plan to add nine gas sensors onto this board. It would be my artificial nose experiment.
The flowers are hand drawn and vectorized.
It is made by PCBWay. It’s the first time when I ordered matte black coloured boards. And I really like that it makes it feel deeper and darker than the shiny one would be.
This is a new character I have started to draw recently. He started first as a bear. Then began to wear a mask. And now I think that he is Yeti, Bigfoot, Snowman or ten more different names how he is called. He is wearing a mask because no one really knows who he is. And he is also missing, you haven’t found him yet.
I had this, not working, ceiling lamp that collected dust. And I was wondering what to do with it and I found a way how to turn it into artwork.
And it’s relatively easy to do if you have access to some technologies like laser cutting and printing. The picture is printed under plexiglass.
I use one of my drawings. You can find the rest on Instagram or here.
The radar sensor detects movements and the microcontroller (MCU) changes the RGB LEDs colours to react to human movement. And if the is no motion at certain time lights will turn off.
Three main components are:
Microcontroller, with 5V logic. Like Arduino Nano.
NeoPixel type RGB LED stripe.
RCWL-0516 microwave radar sensor.
/*
Lõvi lamp
Tauno Erik
18.02.2023
*/
#include <Arduino.h>
#include <Adafruit_NeoPixel.h>
const uint8_t RADAR_PIN = 4;
const uint8_t RGB_PIN = 3;
const uint8_t NUMPIXELS = 49;
uint8_t r = 0;
uint8_t g = 0;
uint8_t b = 0;
bool is_movement = false;
bool change_color = false;
uint32_t time_px_prev = 0; // Millis
uint16_t px_interval = 50; // Millis
const uint16_t OFF_TIME = 20000;
uint32_t no_movment_time = 0;
Adafruit_NeoPixel pixels(NUMPIXELS, RGB_PIN, NEO_GRB + NEO_KHZ800);
// Fill pixels pixels one after another with a color. pixels is NOT cleared
// first; anything there will be covered pixel by pixel. Pass in color
// (as a single 'packed' 32-bit value, which you can get by calling
// pixels.Color(red, green, blue) as shown in the loop() function above),
// and a delay time (in milliseconds) between pixels.
void colorWipe(uint32_t color, int wait) {
for(int i=0; i<pixels.numPixels(); i++) { // For each pixel in pixels...
pixels.setPixelColor(i, color); // Set pixel's color (in RAM)
pixels.show(); // Update pixels to match
delay(wait); // Pause for a moment
}
}
// Rainbow cycle along whole pixels. Pass delay time (in ms) between frames.
void rainbow(int wait) {
// Hue of first pixel runs 5 complete loops through the color wheel.
// Color wheel has a range of 65536 but it's OK if we roll over, so
// just count from 0 to 5*65536. Adding 256 to firstPixelHue each time
// means we'll make 5*65536/256 = 1280 passes through this loop:
for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
// pixels.rainbow() can take a single argument (first pixel hue) or
// optionally a few extras: number of rainbow repetitions (default 1),
// saturation and value (brightness) (both 0-255, similar to the
// ColorHSV() function, default 255), and a true/false flag for whether
// to apply gamma correction to provide 'truer' colors (default true).
pixels.rainbow(firstPixelHue);
// Above line is equivalent to:
// pixels.rainbow(firstPixelHue, 1, 255, 255, true);
pixels.show(); // Update pixels with new contents
delay(wait); // Pause for a moment
}
}
void setup() {
pinMode(RADAR_PIN, INPUT);
pixels.begin();
pixels.show(); // Turn OFF all pixels ASAP
pixels.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
randomSeed(analogRead(0));
rainbow(3);
colorWipe(pixels.Color(0, 0, 0), 0);
}
void loop() {
uint32_t time_now = millis();
is_movement = digitalRead(RADAR_PIN);
if (is_movement) {
change_color = true;
no_movment_time = time_now;
} else {
change_color = false;
}
// All LEDs off
if (time_now - no_movment_time >= OFF_TIME) {
colorWipe(pixels.Color(0, 0, 0), 0);
}
// Colour change routine
if (time_now - time_px_prev >= px_interval) {
time_px_prev = time_now;
if (change_color) {
r = random(0, 255);
g = random(0, 255);
b = random(0, 255);
colorWipe(pixels.Color(r, g, b), 50); // Blue
change_color = false;
}
}
}
The Watchman is an electronic wall sculpture that combines art, night lighting and security. The working principle is very simple. It all is built around of Seeed Xiao RP2040 microcontroller board. Powered by a 3.7v Lithium-ion battery. RCWL-0516 doppler radar sensor detects the motion and sends the signal to MCU. Because the sensor’s working voltage is above 4 voltage, I added a voltage booster. When the MCU gets a signal, its lights up the circular RGB LEDs.
The outer dimensions are 440 x 590 mm.
Hardware
Seeed XIAO RP2040
Lithium-Ion Battery 3.7V 700mHh 2.59Wh
03962A Battery Charger module
RCWL-0516 Doppler Radar Sensor
Circular WS2818B RGB LED 16 pc
Boost Converter
Custom PCBs
Copper wire
USB-C cable for programming
Micro USB cable for battery charging
Custom-Made PCBs
It has two custom-made PCBs. Both have my drawings on them. The face-shape one is kindly made by Seeed Studio Fusion service. It holds the MCU board and has all the input/output pins.
I found these Synchronous Buck Converter schematics, made by @wagiminator I incorporated them into my board design and it works pretty well. Input voltage 4.5V – 16V. The output voltage depends on resistors. And I didn’t have the right size SMD inductors so I used through-hole ones.
Unfortunately my design contained two mistakes:
Wrong footprint size for inductors (L1, L2). That was easy fix as you can see from images.
MCU board pins are flipped. Those on the left are on the right and vice versa. So I have to desolder it and turn around.
This is my idea to make face shaped circuit board. It will use the Seeed Grove Vision AI Module. The plan is to make an electronic sculpture that uses machine vision. And the MCU board is a tiny but powerful Seeed XIAO RP2040 that uses the same microcontroller as Raspberry Pi Pico.
The actual model’s name is Franka Rolfix. It was made before World War II. Probably around 1938. I have looked at these brands of cameras and they all look different in detail.
It is a Folding Camera designed for “full” medium format 6 x 9 cm. The lens seems to have no coating and uncoated lenses are pretty rare in post-war folding cameras. This model was also called Hapo 5 , when it was sold by Hans Porst. The lens is Velostigmat 1:4.5 F=10.5 cm and the shutter is Pronto (Gauthier G.m.b.H Calmbach) B, T, 1/25 – 1/125, Nr. 447964.
Franka Kamerawerk was a manufacturer of camera equipment situated in Bayreuth, Germany. It was founded by Franz Vyskocil in 1909. The company was known under several names during its life: Vysko-Fabrik Franz Vyskocil; Weigand & Vyskocil; Frankonia-Kamerawerk; Hogaschwerk; Franka-Kamerawerk.
The leather case has name letters on it G.Z They mean Gustav Zeno (08.02.1874 – …) or Gottfried Zeno (14.03.1898 – 08.03.1955), his son.
1949, Vastseliina, Kütioru lähedal.
The leather picture depicts the Pskov-Caves Monastery (Petseri Klooster).