I have a couple of broken JBC soldering stations I got for a few bucks at ebay, and this seems to me like it's worth an attempt of resurrection. Why not make a kickstarter project or something out of this? I'd buy two!
So far I've not been very successful in this endeavor. FPGA tutorials have gotten me to a blinking light, but nowhere further. However, I've got some more applications, for which it can be used: Audio Signal, yes, audio signals!
http://cnl.salk.edu/~tewon/Blind/blind_audio.html With real time ICA you would be able to recognize the voices of two simultaneously talking speakers and even separate them from background noise. You feed it several (basically the more the better, but stereo works just fine) channels of audio, you get back separate audio channels, each containing one speaker, or one instrument or whatever you record.
I'd really like to get started with this, if you have any tips on where to put out a bounty on this matter or find people who would in principle want to collaborate on a 'module' using FPGA ICA, please feel free to reply or pm!
After a little googlin' I found some sources that are not behind paywalls:
http://www.design-reuse.com/articles/18 ... rithm.html Abstract: "We propose IP core of on-line ICA algorithm. The on-line ICA algorithm can decompose input signals into statistically independent components. We demonstrate that we can recover original chaotic signals from linearly mixed chaotic signals without any information of mixing. We implement the ICA and chaos generator modules to Xilinx Virtex-II FPGA on the HERON ready-to-go systems..." - They provide some math, but no sourcecode or cores.
http://ethesis.nitrkl.ac.in/1380/1/MY_F ... S.BVSR.pdf (PDF warning!) Abstract: "...In this thesis Independent Component Analysis (ICA) based methods are used for blind detection in MIMO systems. ICA relies on higher order statistics (HOS) to recover the transmitted streams from the received mixture. Blind separation of the mixture is achieved based on the assumption of mutual statistical independence of the source streams. The use of HOS makes ICA methods less sensitive to Gaussian noise. ICA increase the spectral
efficiency compared to conventional systems, without any training/pilot data required...." - A whole thesis. Quite extensive. Covers also a lot of groundwork, if you want to delve a bit deeper into ICA.
http://www.iiis.org/CDs2010/CD2010IMC/C ... A154PI.pdf (PDF warning) Abstract:In this work we proposed the design, simulation and synthesis of a hardware that performs the Independent Component Analysis (ICA) in a recongurable hardware platform, more specically a FPGA. The simulation of the hardware was done by models implemented in Simulink environment and the synthesis was possible through the Altera system-level design software DSP Builder, that contains specic FPGA blocks that can be synthesized in hardware. In order to validate the hardware, manually generated data and real electroen-cephalogram signals were used in the experiments - Well this article is quite interesting for me because it covers EEG signals.
BTW: This entry is already quite high in the google search ranking... should be somewhere on the second page.
Right? :-D Analog frontend: exactly, my idea was to send ADC values digitally. This way, the whole thing could be even more modular. Also, I have a nice frontend already, so why mess with the running system...
ICA is a concept that might really be useful to the open source community. It's been around for quite a long time and it's really versatile, because you can decorrelate basically all signals that have some common sources, if you have enough channels. We use it a lot for machine learning purposes, since the outcomes are co much better if you have clean signals. But the problem is of course, it defeats the purpose if it's not in real time...
I'm working with Brain Computer Interfaces and there is one thing that I really wish I had: real time Independent Component Analysis (rt-ICA) implemented in my measurement hardware.
ICA (and it's little sister, principal component analysis, PCA) is a method of decorrelating data received over a number of channels. If you record several signals that are spatially mixed over a number of channels equal or greater then the number of signals, ICA can separate these signals into components, each of those containing (at least in the best-case scenario) a clean signal, minimally correlating with the other components. Now, while my field isn't of that much interest to most of you, there are other, more accessible applications:
Imagine you record audio in a room. You have, say 3 people talking obsessively in parallel, several sources of noise, and more then 3 microphones recording to one audio track each. You save all audio tracks, and then you do an ICA, regarding each audio track as a channel. The ICA will give you as many components as you have audio tracks. The first three components will contain the audio of three speakers, loud, clear and mostly free of noise and interference from the other speakers. The other components will contain the noise, you can disregard them. (Although, one man's noise is the other man's signal, I know...) It's like magic! I have used it successfully to separate the voice of lecturers from noisy vents and background talking, using only stereo recordings of my Smartpen.
The disadvantage is that it takes quite some processing time... However, I've looked it up and it seems as if real time versions of this have been implemented on FPGAs since 2003 (!!). Just google 'ICA FPGA' and you will find tons of examples.
Anyone else interested in such awesomeness? Ideas about feasibility of a little shield capable of blind source separation from several channels?
I have what I think is a great idea. At least I'd like to have one of these: Wouldn't it be great if we had a little board featuring a little RF transmitter, a cheap uC and some kind of storage so we could store variables with a sort of 'hyperglobal' scope so they could be accessed from all the devices within a mesh network? All RF devices I could find which would do such a thing are way overkill for your standard home control or weather station stuff since we really mostly need a few bytes of data and timing is not really an issue. With an appropriate library you could then access variable with simple commands in you script, hiding all the complicated stuff:
Several smart people have already worked with mesh networks: Here an arduino mailbox checker with the **URL*** (sorry, can't post URL, just google arduino mesh networks) using the (expensive) synapse-wireless dot c0m/
or on the playground, there's quite some talk about: hoperf dot c0m which seem also a bit more expensive.
Can't there be a 10-15 bucks or lower solution to this problem? (Except just using a 4 bucks RF module and coding the communication myself?) Or is there already a solution out there which solves my issue with RF communication that I have missed?