Electronics
Update #1 for Electronics
Date: 7 November
Goal
Project a live feed of a colored video from a camera to a phone app
Hardware Limitations
Video is difficult to manipulate. For instance, if we wanted a 640×480 frame of a black and white video at 24 frames per second that is
640*480 pixels = 307,200 pixels
At 8 bits per pixel = 307,200 kilobytes per frame
At 24 frames per second = 7,372,800 bytes per second
~7.37 megabytes per second
That calculation is the baseline for data throughput for a camera outputting raw frames that does not include sound or color. It is very difficult to send out raw frames so the data needs to be formatted and packetized in some way.
We can do so by encoding the video stream which requires a lot of processing power, specialized hardware, or FPGA. Unfortunately off-the-shelf Arduino microcontrollers do not have the power to do all of this work. In fact, Ardunios do not have enough RAM to fit encoded frames of still photos.
Therefore, we need something that is more powerful than Arduinos for our intermediate between our camera and phone app.
Bluetooth Limitations
It is very difficult to send raw data of our livestream through Bluetooth. Currently, Bluetooth has a peak raw data rate of 1-3 Mbps which is a fraction of what we need. In order to compress this our data to this rate, we will need some sort of digital signal processing (DSP) chip to compress our data on the fly so that it can be transmitted via Bluetooth.
Furthermore, low power alternatives such as BLE is unsuitable as well because it is designed to transfer few and small data packets with a lot of sleeping time in between. So we will be experiencing more lag time in our feed which will make this design difficult to implement.
Overall Limitations
It will be much easier to use components that we find off-the-shelf because they come with open-source documented software and user-friendly guides. However, these components do not have the specifications that we need.
Components that meet our specifications do not come with tutorials so using these devices have a large learning curves.
Possible Work-Arounds
- Use Arduinos but produce output low quality video at low frames through Bluetooth connectivity. Video has significant lag and are most likely black and white
- Use Arduino and somehow offload all video processing to a DSP board that has its own wireless connectivity module. Then transmit data through WiFi so that we don’t need to compress data images. However some low-resource areas may not have access to WiFi and DSP boards that can perform the following maybe large and expensive
- Use an Arduino camera module that has wireless connectivity that delivers data directly to a server. This produces decent quality video but has lag and requires a pre-existing WiFi network. In addition, this is a modular chip so it may be difficult for us to put this in a bronchoscope.
- USB connection from microprocessor to phone
Our Current Solution
Use a microprocessor to take in data information from camera and use a USB connection from the processor to phone to transmit data
Camera
- Try and see if OH02A10 works in our use – good starting point because they are frequently used for endoscopic purposes
Microprocessor
- BeagleBone Black: 32-bit ARM-based BeagleBone Black microcontroller
- Raspberry Pi
A solution is to have the microprocessor chip as an external device and have the camera from the bronchoscope connect to the chip. Then we have a usb connection from chip to phone. We eliminate the need to include the microprocessor inside the handle.
Paper Supplement
Embedded Microcontroller with a CCD Camera as a Digital Lighting Control System https://www.mdpi.com/2079-9292/8/1/33
- A low-cost embedded control system
- Controls a machine vision camera through an Ethernet port.
- The system development was based on a microcontroller board that supports real time.
- The proposed camera control system contains most of the essential modules for video capture, video analytics, and host communication.