Welcome to Maker Electronics Projects! On this channel, I will share maker projects, that explore Arduino microcontrollers and DIY electronics. Subscribe now and share your thoughts!
But you need only 8 lines to light up 56 LEDS. N^2-N. 4 shift registers is overkill actually.
@LHM000
24 күн бұрын
You can light up 56 LEDs with 8 lines using "Charlieplexing", which is a multiplexing principle. The LEDs are addressed sequentially, one after the other. Fundamentally, there is no reason not to use Charlieplexing in "persistence of vision" (POV) displays. However, there are several implications: 1. timing: a POV display is all about timing. You would need to light up your 56 LEDs about 240 times per turn. This would require a very high multiplexing frequency. 2. intensity: if you light up 56 LEDs one after the other, each LED will be on only 1/56th of the time. As a consequence, brightness will be reduced by a factor of 56. In multiplexing, LED currents can be set higher, but it will not be possible to compensate for a factor of 56. Anyhow, there are less "aggressive" multiplexing approaches (wich need more lines), which are definitely an option for POV displays. In fact, I have been working on such a model for a while. Will keep you posted.
@sc0or
24 күн бұрын
@@LHM000 Most of the reasons take place. I agree. But as for "one-by-one", it's not correct. An entire row is always "active". Let's say bit #0 is "active" - connected to a ground, and so a row of LEDs, and bits #1-#7 could have +1 (or be in a Z-state) and light up an individual LED on this row. Then bit @1 becomes "active" and is connected to a gnd, and bits #0, #2-#7 can light up LEDs. Thus you will need only x4 faster scanning. If this is too fast, then 24 parallel outputs will be more suitable for sure.
@LHM000
24 күн бұрын
I doubt you can light more than 1 LED at a time in Charlieplexing, if you want to properly control the LED current. How would you handle the series resistors? Depending on how many LEDs are on in a row, you would need different resistors. No way. Forget about Charlieplexing. Standard multiplexing is an option, though. It needs extra components to control rows and columns. But it can be done.
@sc0or
24 күн бұрын
@@LHM000 Open drain is open drain. So, The "active" line just shorts cathodes to gnd. Each remaining line can feed only one(!) LED (others belong to inactive rows). So, one LED, one resistor, a certain current. That's it.
@VolumetricTerrain-hz7ci
2 ай бұрын
I have made a digital POV display on a computer, with dashed lines moving back and forth, on Paint. Here is the title of the video, which you and others can search on KZitem: Continuous Meter Display (Persistence Of Vision) The video shows a meter with an arrow, which moves back and forth, continuously independent of the pixels. It is the dashed lines that give the illusion that the arrow on the meter is sliding forward. I like your display! Good explanation! :-)
@VolumetricTerrain-hz7ci
2 ай бұрын
I have made a digital POV display on a computer, with dashed lines moving back and forth, on Paint. Here is the title of the video, which you and others can search on KZitem: Continuous Meter Display (Persistence Of Vision) The video shows a meter with an arrow, which moves back and forth, continuously independent of the pixels. It is the dashed lines that give the illusion that the arrow on the meter is sliding forward. I like your display! Good explanation! :-)
@murraymadness4674
5 ай бұрын
Significant improvement over the previous version. Do you see the circle lines in person?
@LHM000
5 ай бұрын
Yes, I do see the lines. The spatial resolution is 1mm - still pretty coarse.
@murraymadness4674
5 ай бұрын
I built a similar one that goes onto a ceiling fan and displayed the time, it was one of my early electronics projects like 20 years ago, used couple AA's and a msp430 micro. Today they have the ws leds so its super easy to make a grid for something this size. I had the idea back then to make billboards using this, as they are huge and need many thousands of very very bright leds, but did not ever finish it. Instead of swinging a board or leds, those would be centrally located and I was using fiber optic cable to get very high resolution and light weight at the edges. I still have not seen anyone do that all this time.
@RoySATX
6 ай бұрын
Everyone is a critic, it seems. This is a fantastic project! Are there areas that can be optimized? Sure, but what can't be further optimized? Bravo, Sir!
@sajadabbasi2268
6 ай бұрын
cool
@TheWhiteagle99
6 ай бұрын
You are helping us internship engineer to do an arduino poject similar to this. Thanks a lot please continue your channel 🙏
@LHM000
6 ай бұрын
Great to hear. Which organization do you belong to?
@nikthefix8918
6 ай бұрын
APA102-2020-6A leds? Would they not be fast enough?
@LHM000
6 ай бұрын
I do not know this LED. According to the data sheet, data rates should be sufficient. Here is my calculation: time per turn: 50 ms, 240 pixels per turn, results in 210µs per pixel. 56 LEDs need 58*32=1856 bits. Time per bit: 60ns. Time per 56LED data set: 1856*60ns = 123 µs. However, the data sheet is pretty cryptic about the PWM. The PWM frequency is specified with 20kHz (=1/50µs). This would result in 4 cycles per pixel, which would barely be enough. So, my conclusion: there are good chances, this LED would work in a POV display.
@nikthefix8918
6 ай бұрын
@@LHM000 Good analysis. I've been using APA102 for years in favour of neopixels. Assuming the user can stomach the more complex PCB layout, the synchronous data benefits and high pwm freq are a definite advantage.
@nikonikolic1365
4 ай бұрын
@@nikthefix8918 When you say more complex PCB layout can you give me some idea to the degree of complexity? What is the basic difference of these fast serially address LEDs to the NeoPixels?
@nikthefix8918
4 ай бұрын
@@nikonikolic1365 In terms of pcb layout, you're dealing with 6 pins instead of 4. For high density led arrangements this can add significantly to the board complexity - but I think it's worth it.
@aquaeyed82
7 ай бұрын
Hi. Thanks for the video. I wonder if it is possible to get full or partial color spectrum with blue, red, and green regular LEDs if puts them on x-shape for one color on each x's side (one color will be on 2 x's sides), is it will make wanted result? Thanks
@LHM000
7 ай бұрын
Hi, I do not see any reason, why such a geometry would not work. In fact, I thought about such a setup, initially. However, there is a rather practical challenge: fitting all components (LEDs, drivers) on a 120mm disk. Integrated RGB LEDs allow for higher integration density.
@aquaeyed82
7 ай бұрын
@@LHM000 thanks.
@LHM000
7 ай бұрын
Here are two more thoughts on your idea: 1. color mixing: you would need to make sure, that there is a good spatial overlap between the R, G, B LEDs that you want to color mix, as rectangular LEDs are pretty large. Either go for 3 arms (Y shape) or for 6 arms. Four is not ideal. 2. White balance: you would need to match the intensity of the R, G, B LEDs respectively, so that you get white. This is pretty much „for free“ in the integrated RGB component (they are designed for that), but not a given, when you use discrete LEDs. However, check on the approach that I have implemented with separate enable lines for the three colors.
@SailAway33
7 ай бұрын
Nice
@AFSMG
7 ай бұрын
The work is extraordinary and I can only congratulate you. This is not technically available to everyone. There is a lot of technical detail in it. It is not clear to me why the displacement of the LEDs with respect to the center? . I am also not clear about the way to control the LEDs' brightness by subdividing it by 8. It is a very complete and very complex work. Congratulations. A greeting from Spain.
@LHM000
7 ай бұрын
The LEDs have a width of about 2 mm. Without interlacing, the radial distance between pixels would be 2 mm, therefore. However, by introducing the displacement, the left and right half of the LED row generate a spacing of 1 mm. The brightness control is very simple: let us take just one LED, for example red. If we want to set intensity to 50% we turn on the LED for 4 cycles, and turn off the LED for the other 4 cycles. 75% would be 6 cylces on, 2 cycles off, and so on.
@AFSMG
7 ай бұрын
@@LHM000 Thanks, now it's clear to me. These are the times that the LEDs turn on or off. Very ingenious. I would love to fully understand the project. I'm going to study it as much as I can. Thank you so much. All the best .
@LHM000
7 ай бұрын
You might consider to get started with the monochrome version. There is a full description on instructables.com: www.instructables.com/Rotating-LED-Display
@AFSMG
7 ай бұрын
@@LHM000 Thanks a lot
@AFSMG
7 ай бұрын
Fantástico trabajo. Felicitaciones .
@AFSMG
7 ай бұрын
espectacular
@kranli8043
7 ай бұрын
Where to buy
@fastgrimjay
7 ай бұрын
Bro, the video said its DIY
@kranli8043
7 ай бұрын
@@fastgrimjay the are DIY Sets to buy with all the parts you Just need to asseble it
@fastgrimjay
7 ай бұрын
@@kranli8043 Oh, then I would like to know where to buy too 😁
@SailAway33
7 ай бұрын
Nice
@bacphan7582
7 ай бұрын
nice project, using brushless motor would improve reliability
@pdarkXIV
7 ай бұрын
Very cool! I wonder if a 3d display could be constructed in a similar way by layering several boards in a sort of "screw shape" at different height levels.
@LHM000
7 ай бұрын
3D will be one of my next projects. It will need more LEDs, however. I will keep you posted
@davidharris7249
7 ай бұрын
Tour de force!
@strickos91
7 ай бұрын
Cool idea and nice project !
@gryzman
7 ай бұрын
the whole thing could have been done with just ESP32.
@newmonengineering
7 ай бұрын
1 core to process wifi and web hosting, 1 core to process image conversion, 1 core to process exact timing with hall sensor and sync the 7 spi chips at 20mhz. If you get rid of wifi probably. But if you want wifi you would not be able to do it. There is simply not enough processing power to convert Cartesian to polar, and sync the display while reading sdcard and processing wifi with a simple 2 core esp32. You could use 2 esp32 chips but 1 is simply not enough unless you simply want a predefined image displayed. Just based on my rough estimates watching this video.
@whiskeysquiker
6 ай бұрын
In this case, you can use 2 different boards, one processes its half of the duties and sends it to the other
@abcnishant007
3 ай бұрын
@@newmonengineering if the Cartesian to polar is the only drawback, it can be easily solved using a look up table. Constant time operation. He explains it very well in his previous video but the concept is old. Classic computer science problem. I think ppl have been using such look up tables since at least the 50’s 😂
@bschwand
7 ай бұрын
I command your efforts, it is a nice project and working well. Impressive integration. But when I see such project using both an esp32 and an rp2040, which are both vastly overpowered and could each carry on their own the entirety of such a project, I can only recommend you deep dive in software development, optimization and how to best use available hardware. Hopefully this is just a first prototype.
@LHM000
7 ай бұрын
The RP2040 would probably be sufficient in terms of computing power for the rotating display. Unfortunately, this controller does not have an integrated Wifi. The available solutions all add a (mostly costly) specialized chip, some even use ESP8266 for this purpose, which is close to my solution. Using ESP32 only (as suggested multiple times) would be difficult, as it does not have the required timer functionality. However, I would be keen to see such a solution.
@bschwand
7 ай бұрын
@@LHM000 there are rp2040 boards with wifi. The esp32 has way enough for high speed synchronized and serial stream to the LEDs, use the SPI or I2S peripherals and a few shift registers. It's been done before even on lowly esp8266.
@MrZANE42
7 ай бұрын
@@bschwandThe speed of the CPUs in the ESP32 is definitely enough but i think the interrupt jitter would distort the image. Ie. the output speed isn't the problem but rather the exact timing of the output (Timer and ext. input interrupt latency). Might be possible to remedy this, at least partially, if RTOS is run on one core and no-rtos code just outputting the image run on the other. But I think this solution is just fine as this isn't a cost optimized project made for mass production.
@bschwand
7 ай бұрын
@@MrZANE42 you can do a lot more with clever programming. You can drive ws1812 and do RealTime step control with hardware SPI and or I2S. You just have to correctly use dma, interrupts and use the available hardware creatively. Check some of cnlohr 's projects for example. Your comments make me think of people who say a full USB or tcpip stack on a uC with 200 bytes of ram and barely more than that of flash, is impossible. But it is. Again, very nice project and execution, I am just a fan of optimization and maximizing resource usage 😁
@LHM000
7 ай бұрын
@ MrZANE42: You are spot on.
@jeffschroeder4805
7 ай бұрын
It is truly amazing how stable the images and animations are. Quite an achievement!
@LHM000
7 ай бұрын
Dear Jeff, image stability depends on several factors: 1. Free running timer, that triggers interrupts The RP2040 timers are ideal for the application, as they have a high resolution and the necessary threshold functions. The two computing cores of the RP2040 allow for uninterrupted execution of the interrupt routines. 2. Stable spacial trigger The use of a Hall sensor turned out to be highly repeatable and stable 3. Management of interlacing When the LED data changes from and old image to a new image, the displayed image is a mixture of old and new (half of the LEDs display the old image, half display the new). Therefore, some transition management is needed.
@Electromakerio
7 ай бұрын
This is a fantastic project! Thank you for uploading it to the Electromaker project hub :)
@sam1am742
7 ай бұрын
This is amazing. Thank you ❤❤❤❤❤❤❤❤
@AFSMG
7 ай бұрын
Excellent work. Isn't it enough to do it with a single row of LEDs? Thank you so much
@LHM000
7 ай бұрын
It is a matter of resolution and image frequency. You can do it with one row, but would get less image detail and more flickering.
@Furz35
8 ай бұрын
To reduce power consumption with RGB, I would not use RGB LEDs. They require 60mA current at "white". It would be easier to work with separate LEDs. So 20x red, 20x green and 20x blue. The individual colours then only have to be switched on at the right time and the brain puts them together. It's basically like the colour wheel in a TV projector. With your display, that would be 6*20 LEDs. I would think about a multiplex control.
@Furz35
8 ай бұрын
an esp32-S3 could easily do it all on its own. It has enough connections to control all LEDs directly. The maximum output current can be set by software, so no resistors are needed. The ESP32 also has an inbuilt HALL sensor. The ESP32 has 2 processor cores, one takes care of the WIFI, the other takes care of the control of the LED's
@LHM000
8 ай бұрын
thank you for your interesting thoughts. I like the idea of directly driving the LEDs with the GPIOs. However, there is almost no documentation on the current sink drivers of the GPIOs (if any) of the ESP32-S3. The ESP32-S3 documentation is not really clear on that point. However, POV displays live and die with the timer and the related interrupts. It needs a free running mode (auto.re-start), and a high priority interrupt, once the max count is reached. I am using more sophisticated timer modes in order to control the brightness of the LEDs. I am not sure, whether the ESP32 gives you sufficient control and priority, but it would be worthwhile trying. Regarding color, total current is clearly a concern, but can be handled. My color display (56 RGB LEDs) is almost finished - I just need to implement some mechanical changes on the power supply. I will publish the results in a few weeks.
@Furz35
8 ай бұрын
@@LHM000 Driving the LED'2 directly would certainly exceed the permitted total current of the ESP32, I hadn't considered that. However, the drivers could be simplified. Search for "CAT4016" and "STP16CP05". They can drive 16 LEDs with an adjustable current. This saves the LED resistors and the complicated timing for dimming. The output current can be controlled with a resistor. You would have to work with either a digital potentiometer or an adjustable current sink. There may be other driver ICs that can be dimmed digitally or with PWM. I also had the requirement for tight timing in a project. The software on the ESP32 is based on FreeRTOS. The disadvantage is the scheduler, which interrupts the programme 1000 times a second for a few microseconds. I cannot judge whether this is a problem. An interrupt takes about 5 microseconds to arrive in the software, but is constant. Instead, you could implement the control of the shift registers using SPI and DMA, then the hardware takes care of it and the processor/FreeRTOS cannot interfere. The ESP32 is also capable of dual and quad SPI. This would allow 2 or 4 shift registers to be written directly, which would simplify the timing even further. The ESP32 can SPI with up to 80MHz, which the shift registers cannot withstand ;-) However, 20MHz is very easy to implement, the Arduino is nowhere near that.
@LHM000
8 ай бұрын
Unfortunately, there is very little information about the ESP32-S3 specification regarding the current ratings of the GPIOs. However, in a color display design the number of GPIO ports would not be sufficient anyway. I ended up with STP24DP05BTR, which is ideal for the application. Regarding the timing, my assessment is clear: the ESP32 is not suited for a POV display. Neither the timer , the interrupt handling, nor the real time capabilities are sufficient. The processor is made for high level programming, not for low level, time critical bit crunching. Anyhow, you can try your luck. You would save an additional processor and some other components in the range of 3$ total.
@Furz35
7 ай бұрын
@@LHM000 If you absolutely want to use the Arduino Nano, then search for LGT8F88A This is a replica of the ATmega328, but much better. I've used it a lot and have ignored the ATmega ever since. It has 4 key advantages: 1. cheap, you can get a board for 1€. 2. 32MHz clock frequency and therefore twice as fast. 3. optimised microcode. Where the ATmega needs 3 clock cycles, only one is needed here. My experience has shown that the LGT8F88A is about 2.5 times as fast as the ATmega. 4. mathematical functions. With this you could run the SPI with 16MHz
@LHM000
7 ай бұрын
I am using a RP2040. That controller is ideal for the POV display
@dafoex
8 ай бұрын
I'll have to remember this. I want to do more hardware stuff, and while I'm not sure I'd make reproducing this my first project, I'd still love to try. One thing that would be an interesting hack that I can see right away is the possibility of making this two colours, assuming the 1mm gap between LEDs isn't an issue. You could have, for example, one lot of LEDs red and the other white, green and blue, yellow and blue, or whatever takes your fancy.
@LHM000
8 ай бұрын
This is probably not a good beginner’s project. Make sure you have some good soldering skills…
@AbirAbedinKhan
9 ай бұрын
you could use neopixel to display color!
@punpcklbw
9 ай бұрын
Amazing work with great attention to details like perfect balancing, stable picture and two rows which are offset half a pixel outward. The only thing I found odd is that you placed your LED modules at a 90° phase angle. It would produce smoother animations and less flicker at 180° placement, as this would effectively give you interlaced scan, but in polar coordinates. All the disbalance could be coped with counterweights which you have to use anyway.
@LHM000
9 ай бұрын
thank you for your thoughts. The 90 degree angle was a result of mechanical considerations. However, I am currently working on a color display which will have 180 degree placement.
@salvbri
11 ай бұрын
You can replace the Arduino Nano and the ESP-01s with a single Raspberry Pi Pico W and thus save a little weight on the display disc. Nice project!
@saitamatechno
10 ай бұрын
You can replace all of them with an esp01 or esp8266
@sam1am742
11 ай бұрын
Hi dear maker and thank you for this amazing design. i have an issue. i build this project but when i connect to RD40 wifi and want to open ip address wit browser, it won't open any page in my browser and showes me an error. yet display still shows ip address. i double and triple time flashed both arduino and esp but nothing changed. can you help me please? thank you
@LHM000
11 ай бұрын
Hi Sam, it sounds like you have not loaded the flash disk data. Please refer to the description in my instructables.com article: www.instructables.com/Rotating-LED-Display/ It is described in Step 5. You are very close! Both microcontrollers seem to be running. Please let me know if it still does not work!
@LHM000
11 ай бұрын
What I am trying to say is this: you need to load both the program itself and the flash disk data to the ESP. This needs two separate uploads. There is a special upload method for the flash disk data. The flash disk data contains the html, css, and java scripts of the web interface. Without that, the web interface cannot load.
@sam1am742
11 ай бұрын
Hi dear maker. Thank you for your reply. Yes you right, i missed that last part which was uploadin flash data. it works perfect now but i have another problem now, in the time zone, some zones not have correct times. i tried all of them, i just wanted to ask you a favor if its possible, im not a coder and i can not add a feature which read clock from computer or mobile phone or even set time and date, manually. Is it possible to ask you do me this favor? I spent so much cost and time to build it, i will be so grateful if you add only one of the features i mentioned earlier. Thank you dear maker
@LHM000
11 ай бұрын
Great to hear, that the display is running now. What exactly is the problem with the time zone? What time zone are you in?
@LHM000
11 ай бұрын
Can you send me a private message on instructables.com? Click on my username lhm0 and send your email address, please. That will make communication much easier
@LucasVandenPoel
11 ай бұрын
Very nice project. Thanks for sharing this interesting hobby project of yours. Just asking: do you think this is scalable (dimension wise)? Can the same effect be achieved with a more "off the shelf" led strip. Of course it should have high density and brightness, and be individually addressable. As a response to a comment on your previous video, you said that the ws2812b chip is probably not fast enough for this. It is often used in individually addressable led strips. Is there an alternative or is using an led strip a no-go. I'd love to hear what you think. Anyway: thanks for sharing this project. PS: Thanks for sharing the camera app you are using. It seems to be a very useful app.
@LHM000
11 ай бұрын
Hi Lucas, there are a few sub-systems which you need to look at: 1. power supply, 2. computing power and memory of the microcontrollers, 3. speed of data transfer to the LEDs. Depending on how much you want to scale, the sub-systems might need a significant re-design. The wireless power supply of my design can provide a few watts of power. This would likely not be sufficient, if you scale up significantly. Furthermore, do not underestimate the implications of moving to color. WS2812B is a full color RGB LED. You would need to handle 24 bits per RGB LED - my current design handles 1 bit. A more powerful microcontroller would be needed. Last, but not least, you need to do the math regarding the speed of data transfer. Let‘s assume you run the display at 10 turns per second (I go much higher), and you have 40 RGB LEDs. One line would consist of 40 LEDs x 24 bits = 960 bits. If you display 240 lines per turn, each line will be displayed for 0.1s / 240 = 416µs. If you would allow the full time for data transfer (which is probably far from ideal), you would have 416µs/960 = 430 ns per bit. This corresponds to a data transfer rate of 2.3 Mbit/s. However, as far as I know, WS2812B can handle 800 kbit/s only. My clear conclusion: WS2812B is not suited for POV displays. Anyhow, scaling the display is not impossible, but would need a major re-design and new approaches to all aspects mentioned above.
@LHM000
11 ай бұрын
regarding an alternative RGB-LED: you need a bare RGB LED, without control electronics. Something like this: www.led1.de/shop/smd-leds/smd-led-bauform-1206/led-smd-bauform-1206-rgb-4-pin-weorgb02-cm.html However, brightness will be the most critical parameter.
@LucasVandenPoel
11 ай бұрын
@@LHM000 Thank you for your clear and helpful answer. It gives food for tought. Looking forward to see possible future projects of yours!
@shakhizatnurgaliyev9355
Жыл бұрын
Awesome project!
@AFSMG
Жыл бұрын
The work is so interesting that many ideas occur to me. Wouldn't the brightness control be simpler if the common power supply of the LEDs were controlled by a PWM?
@LHM000
Жыл бұрын
The problem would be, that the frequency and wave form of the PWM would interfere with the (individual) on/off signals of the LEDs. However. PWM has to happen “within the pixels”. The only way to make your idea work would be to make the PWM frequency much higher than the pixel frequency. Pixel frequency can be up to 10 kHz. Frequencies of PWM are usually lower.
@AFSMG
Жыл бұрын
It would be very interesting if you dedicate a video to explain the software in detail. Those of us who are just starting out would learn a lot. I greet you from Spain. Great job .
@LHM000
Жыл бұрын
thank you for your interest. I assume that just a few people would be interested in that kind of detail. However, if I find time, I will think about it.
@AFSMG
Жыл бұрын
Excuse me. After sending my question, I watched the video again and found the explanation of why it uses the two rows of LEDs. But I don't see it very clearly, because in an instant of time T, only the LEDs of a row of LEDs light up?
@LHM000
Жыл бұрын
well, that is the principle of “persistence of vision”. It does not really matter WHEN a LED lights up. The only thing that matters is WHERE it lights up. In other words: the LED needs to light up just in the moment when it is in the right place. As long as things move fast enough, the eye (and brain) cannot resolve time. But obviously we can resolve space.
@AFSMG
Жыл бұрын
A magnificent job. It is not clear to me why the two rows of LEDs are necessary. And I would also like to know how the images are loaded? That is, do you have an application to "draw" the image you want and generate the table that the microcontroller reads? Thank you very much, congratulations for such detailed work.
@LHM000
Жыл бұрын
You could also make a display with just one LED row. However, this would reduce the resolution by a factor of 2. The web user interface allows you to easily upload images from a computer or smartphone to the display. All kinds of image formats work (JPG, IMG, PNG, …) No additional software needed. The image can be color and high resolution - there is a function which rescales it and makes a black and white image out of it. The software for this is part of the web page of the web user interface, which means it is programmed in Java Script. This is a big advantage, because JS has a huge functionality and the computer or smartphone has much more computing power, than the ESP microcontroller. I should point out, that the web pages are hosted on a “little web server”, which runs on the ESP microcontroller. This is a fantastic function of ESP!
@m1geo
Жыл бұрын
What a fantastic project!
@PCBWay
Жыл бұрын
This is really something!
@RixtronixLAB
Жыл бұрын
Nice video, well done, keep it up, thank you for sharing it with us :)
@User239
Жыл бұрын
it's better to use esp32, you've made your project very complicated
@mnelson10000
Жыл бұрын
Very cool! I'm curious why you used both an ESP module AND an Arduino...? Couldn't the ESP accomplish all of it? Thanks
@LHM000
Жыл бұрын
I would assume that the computing power of the ESP would be sufficient to accomplish everything. However, the challenge is the prioritization of tasks. The wifi function, as well as other tasks, need high priority in order to work. On the other hand, the control of the LEDs is extremely time critical as well. We are talking about response times of microseconds. Every delay would be visible in the display image, immediately. It turned out, that the best way to manage this is to use a dedicated microcontroller for LED management, only. However, even the Arduino nano, which really is a slim and minimalistic device, has its pitfalls. The controller does not have a way to prioritize interrupts. Instead, it works through the interrupts sequentially. Unfortunately, there is not only the timer 1 interrupt, which is most critical for the LED control. There is a clock interrupt for the system time (used in functions like delay()), there are multiple interrupts for serial, SPI, and I2C interfaces. All that interferes with the LED control. In comparison, the ESP is much more complex and even more difficult to control. Anyhow, I did not find a way to manage priorities on the ESP such, that the image quality would be acceptable.
@mnelson10000
Жыл бұрын
@@LHM000 Thank you for the insight. I bet an ESP32 could handle it all! Thanks for sharing. I'm interested to see this project evolve into the future!! RGB might be a fun next version. :)
@MickHealey
Жыл бұрын
Excellent project and a great video. Thank you for sharing. I like your solution to have power transmission and rotation on one board, and power reception and display logic on another. You've cleverly avoided the need for slip rings. 74HC595 shift registers are awesome. Here is an LED cube that I designed many years ago using Arduino and 74HC595 chips kzitem.info/news/bejne/uJqN3WytrWaHm44
@LHM000
Жыл бұрын
thanks, Mick. I am using the high power version of the 74HC595. It is from TI, called TPIC6C595. However, probably the 74HC595 would work as well. Thanks for the LED cube video. My son made a similar one. Would be interesting to rotate this thing or something similar. ;-) We could make a 3D display out of it.
@MickHealey
Жыл бұрын
@@LHM000 Something like this perhaps? kzitem.info/news/bejne/yG2VvH99rHd8mHY
@LHM000
Жыл бұрын
This looks like a spherical display. I am thinking of a true 3D display. Imagine a flat array of for example 64x64 LEDs. Put it upright, and rotate it around a vertical axis. You could draw 3D objects in space
@MickHealey
Жыл бұрын
@@LHM000 Wow !!
@RLTx
Жыл бұрын
Amazing work. It's a high level criativity. Thanks for sharing and the detailed explanation. I was wondering if it should be possible to make one using a RGB(W) LED like WS2812B, for example.
@LHM000
Жыл бұрын
Here is an answer which I prepared for a similar question on instructables.com: A color display would be a real stretch. First and foremost, the memory size of both the Arduino nano and the ESP8266 would not be sufficient for a color image. Here is the simple calculation: The current display needs 40 bits per line (5 bytes), the number of lines per round is 240. This makes 1200 bytes for one image. The nano has 2048 bytes of SRAM, only. If we want to make a real color display, we would need to deal with brightness levels (on and off would not be sufficient). If we assume we use 8 brightness levels per color, we would need 3 bits * 3 colors * 40 pixels/line * 240 lines = 86400 bits = 10800 bytes. This is obviously a factor of 9. The next challenge would be how to set the brightness for each individual LED. I have some ideas, but it would probably need a faster timer and a more powerful microprocessor. Here comes the next challenge: the communication between the ESP and the Arduino microcontrollers is based on I2C right now. This is very slow, and definitely too slow for transferring images with 9 times the size of what I have today. As the ESP also would need to have more memory, we would need a different model anyway. I would probably use a second SPI interface for connecting the two microcontrollers. A more practical challenge would be to somehow fit 120 LEDs on a 120mm disc. I made an experiment with 80 LED, and I could fit it. However, more LEDs will really be tight. The only way might be to use SMD components. And lastly, with moving towards more powerful microcontrollers, power consumption will likely go up. I believe to still have some spare power with the wireless power supply. However, we would need to figure out whether the power available would be sufficient. Sorry for the lengthy answer, but it is a simple question with no simple answer ;-) Cheers, Ludwin P.S.: The WS2812B would most likely be too large, and communication would be too slow. Speedy communication is really of essence. The timing is about a few microseconds. The WS2812B would probably not do it.
@RLTx
Жыл бұрын
@@LHM000 Thanks again for another free lesson (just kidding) and you don't have to apologize at all. Please understand that I am just a curious and admirer. I really appreciated your knowledge in everything you did. Hope more amazing projects from you. Greetings.😉
@botechengineering
Жыл бұрын
We need more people like you in this world :)
@jackt9411
Жыл бұрын
Excellent project, excellent explanation. Just wondering why you didn't use a rotating coil/magnet combination to generate the led power?
@LHM000
Жыл бұрын
Hi Jack, there is a simple reason, why I did not use the magnet/ coil approach. I did not think of it ;-) Great idea! However, the generated energy would depend one the speed of the rotation - that is not the case with my approach. Anyhow, thanks for reaching out.
@jackt9411
Жыл бұрын
@@LHM000 Thanks for responding. Your design is still very elegant and incorporates many electronics aspects which will be of great help to those wishing to resolve similar design problems.
@spenzr6920
Жыл бұрын
Bro that's incredible!!
@Circuitdigest
Жыл бұрын
that's a good project.
@thecosmicbee
Жыл бұрын
This is awesome, I'm definitely going to make me one of these in the future. Thanks for providing all this info and in such great detail!
Пікірлер