Building a retinal ganglion replica

Hi,

I'm a PhD student in psychology and teach a course 4x a year in which I explain the visual system. One thing that students often have a lot of trouble with is understanding how the receptive fields of retinal ganglion cells work (specifically the on-center off-center nature of it). I'm a big believer in practical learning and got the idea to build a replica of a receptive field using an arduino and 5 RGB light sensors hooked up to it.

The idea is to use a flashlight with different colors to shine on the sensors and have a GUI program that plots the sensor activation (akin to photoreceptors on the retina) and then write a function which mimics the ganglion output. I have experience in coding, so im not super worried abpout that part. As long as i can get some sensors to send data, I'm happy.

Problem is, I'm a total newbie in electronics and have little idea of how complicated the electronics portion will be (although i built a stroboscope in highschool). In my mind, what i want to achieve is fairly simple. All i need is that the arduino sends data at maybe 50hz back to the computer. Is this possible?

I checked around a bit and as I understand I could use either sensors such as the ISL29125 or photoresistors. Im leaning towards photoresistors because they're cheaper. However, it could be better to use the sensors if they give me higher accuracy or have a longer lifetime, or if they are easier to connect. I checked and found some nice tutorials how to hook this up for one ISL29125, but I would need five.

I'm sorry if this question is a bit too vague for the forum. As you can see I'm not super familiar and would be greatful for any help or resources. The specific question I would appreciate an answer on is:

  1. Considering my limited knowledge of electronics, is this a reasonable project?
  2. Is an arduino and photoresistors on a wooden plate enough or do i need other components?

Thank you!

Yes. The easiest is to send it over UART and USB to the computer and then have a script/program running on the computer to acquire the data. You're essentially reading data from a COM port on the computer; plenty of guides to accomplish this on the OS and application stack of your choice.
50Hz is also fairly slow; it means a data packet every 20ms. That's doable. Keep the data packet nice and small.

Please go with the former; it's a lot easier to interpret its data in similar terms as in the human visual system since the sensor is color-aware (the sensitivity peaks are totally different from our rods & cones of course, but I'd call it close enough for conceptual/learning purposes).

There are always options to connect several I2C devices, even if they're hard-wired to use the same address as in this case. There are e.g. I2C multiplexers for this purpose.
Alternatively, look for an RGB sensor that has a selectable address so that you can have 5 (or more) on the same bus. There are plenty of options out there; many of them have found their way onto convenient 'Arduino modules'. The range of products from AMS is particularly popular and is often found on modules, but there are others as well (e.g. Hamamatsu).

Yes. It's not insanely difficult.

See above; I'd not lean towards photoresistors although those are also fine if you don't need a very fast response and it's OK that they're color blind. If you use photoresistors, you also need a couple of fixed resistors to make a voltage divider with, and an Arduino with at least 5 analog inputs (many boards qualify, but not all). So easy answer: with just the Arduino and the sensors you're pretty much there, yeah.

1 Like

Thank you! :slight_smile:

You're welcome; please do monitor this thread as more responses may come along that prove useful to your project.

I'm looking forward to hearing/seeing how it turns out, and good luck with the PhD!

2 Likes

Sure thing! If it turns out well i may be able to put up some schematics/pictures if people are interested.

Thank you! :slight_smile:

1 Like

Hey, I've decided to post updates here during the process. The following posts will be a bit stream of consciousness, just me writing down everything I have done/plan on doing...so bear with me.

Today was my first day off from work, so I sat down and tried to go through what materials etc. I will need. To help me get a clear understanding, I drew up these plans.

I have decided to use the Adafruit APDS9960 as a color sensor and hook them up to the arduino using the TCA9548A multiplexer. The ninth sensor (see pic) in the center of the receptive field I will hook up to the arduino directly.

To get a feel for electronics, I bought the arduino starter-kit about two weeks ago, and have been tinkering in the evenings. Included was this platform with a breadboard, which I intend to use in my replica. I am trying to avoid souldering as much as possible, but expect that i will need to do some to get the sensors connected. Not sure how since I dont own any souldering equipment, but maybe I'll get a hold of somebody in the physics department at my uni.

I still havent fully understood how to interface with a multiplexer using the arduino, so im working on that. Tomorrow I'm meeting a friend of mine (who is an engineer) and I'm hoping that they will help me design the actual circuit (although i dont think it should be that difficult). I think that I have gasped the concept of an I2C bus, but what I'm still not sure is how I select the right channel of the MUX from the arduino.

I ordered the components today and its going to take some time until arrival. Unfortunately I'm off for conferences in the end of july so I wont be able to work on the project during that period. So between mid july and mid august nothing is going to happen. For that reason I'm aiming at getting as much done beforehand, so maybe i get it done before i go off to conferences.

Having designed the "body" of the ganglion, I only need to put it together so that it will be ready for when the components arrive. Next to that is writing the program to read in sensor data. I played around a bit in TKinter and also gave liveplotting sensor data a go from this tutorial: https://www.youtube.com/watch?v=z14l33paZGU&t=42s&ab_channel=WaveShapePlay

It worked fine! Really excited!

Thats all for today, I think!

Cheers!

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.