Commit Graph

723 Commits

Author SHA1 Message Date
Kwabena W. Agyeman
2fa8227c7b Add AWB/HMirror/VFlip
Added setters for these camera settings. AWB is necessary for color
tracking to work correctly. AGC still runs, which causes lighting
shifts. It may need to be disabled too. Not sure... if I want to do that
or not however, because without it lightning won't get normalized to
remain at a certain level. So, turning AGC off may cause issues in other
ways.
2016-03-25 16:36:10 -04:00
Kwabena W. Agyeman
a74dd50eaf Improved IR code.
Return min and max from read_ir now. Also, made drawing functions take
IR values.

Example scripts have been updated to work with the new module code.
2016-03-24 19:52:00 -04:00
iabdalkader
dfad6e4c0a Update MP branch. 2016-03-25 00:37:27 +02:00
Kwabena W. Agyeman
88907c438c Redid MLX Code
First, a few things:

The MLX 16x4 sensor has just too low of a resolution for mass appeal for
the price. The product is not going to sell very well. We need to look
into supporting sensors with a better res. Like the FLIR 1. The MLX
module was renamed to the "flir" module with this idea in mind.

The flir code now takes care of doing scaling and blending itself. I did
this to get rid of the user having to scale the image themselves and
blend themselves. Its too easy to run out of memory given our current
ultra small heap. In general, anything that requires multiple images in
RAM has got to go. When we do another OpenMV Cam with external RAM in
the MB range then maybe such functions will be safe. But, right now they
are definately not.

Anyway, moving on, I fixed a few bugs with the MLX math code. But, for
the most part was correct. I also added reconmended polling code for
brownouts as required by the datasheet.

Last, I designed this code like the LCD code to support a type value
when inited. This will allow the system to user a different sensor in the
future without any API changes to the user.

I will add test scripts for this next. Basic usage follows:

import flir
flir.init()
flir.display_ir(sensor.snapshot())

And that's it. Super easy. If the user wants the raw temp values they
can use flir.read_ir() to get the ta and to values. The display function
has a hidden alpha and scale argument for controling blending and the
min/max scaling.

The previous way we worked out scaling kinda sucked... it was a good
shot, but, controllable min and maxes that autoscale by default just
work better. If the user knows the temp range then they can just set the
min and max.'

Anyway, longest commit ever done.
2016-03-24 18:04:05 -04:00
Ibrahim Abd Elkader
825911abe6 Merge pull request #99 from kwagyeman/master
Move LCD code into module.
2016-03-19 01:33:35 +02:00
iabdalkader
44895ead25 Add LCD module 2016-03-19 01:32:05 +02:00
Kwabena W. Agyeman
94910c8ed7 Move LCD code into module. It's now ultra fast, safe and friendly. I
tested everything too and added an example script (very simple).
2016-03-17 20:01:03 -04:00
iabdalkader
900b5cdba2 Add P6 pin alias. 2016-03-15 00:11:13 +02:00
iabdalkader
9a8a5375da Add pin aliases. 2016-03-15 00:03:02 +02:00
iabdalkader
d4ea452902 Fix median code.
* Use new IM_ macros.
* Fix allocation problems.
2016-03-13 23:37:58 +02:00
iabdalkader
33d4d2a1ad Support keypoints on QVGA resolution.
* Use the moving window integral to compute keypoints.
2016-03-13 01:44:07 +02:00
iabdalkader
2f9a541cbc Abort DMA transfer after snapshot. 2016-03-11 04:17:18 +02:00
iabdalkader
ebf13197a9 Disable USB IRQ before stopping script.
* This ensures that FS IRQ will never run during a soft-reset which
causes issues when using SD card.
2016-03-11 04:14:19 +02:00
iabdalkader
31697a163b Re-init storage after soft-reset. 2016-03-11 04:13:23 +02:00
iabdalkader
0370eb54be Move SD card initialization to sdcard_init 2016-03-11 04:12:06 +02:00
Kwabena W. Agyeman
302deb0662 Add file read speed.
File reading is runing ultra fast now. We're getting that SD card speed
the STM32 promised now. The file buffer commands have been updated to
alloc as much available memory to read as much of a file in as possible
now to speed up things. This works really great.

Note however, while the file buffer is active you have to use the file
buffer versions of tell and size. Spent a few hours on tracking down an
error related to not using the buffered versions.
2016-03-08 23:38:13 -05:00
Kwabena W. Agyeman
14dbcbd73c Updated code to use fb_alloc.
All file write functions now use fb_alloc to go much faster. Writes are
re-directed to the extra frame buffer RAM and are grouped until they can
be written in a massive multi-block write to the SD card. We get the
best SD card write speed by doing things this way.

Ideally we'd want to buffer the whole file... but, this is about as good
as we're going to get for now.

Going to fix reading functions to use the same buffer next.
2016-03-07 00:09:04 -05:00
iabdalkader
2ab0688cbd Fix comment.
* Framebuffer is not actually global.
2016-03-06 19:03:30 +02:00
iabdalkader
6cb7288def Add NORETURN to __fatal_error 2016-03-06 19:03:00 +02:00
iabdalkader
a1c9e8a6f6 Set fb values directly when request frame size. 2016-03-06 19:02:12 +02:00
iabdalkader
d1e782df3d Remove default sensor config.
* Not really needed.
2016-03-06 19:01:10 +02:00
iabdalkader
e3cc4cd83f Add delays after changing pixformat/framesize. 2016-03-06 19:00:41 +02:00
iabdalkader
3e6e84cbb4 Skip the first frame after changing size or format. 2016-03-06 18:38:25 +02:00
Kwabena W. Agyeman
66248c444b Update Gif to use fb_alloc_all.
And tested it along with mjpeg to make sure all this stuff is good. I
also see the issue with QQVGA now. That just appeared.
2016-03-05 22:29:21 -05:00
iabdalkader
b78e325c60 Up MP branch. 2016-03-06 03:14:42 +02:00
Kwabena W. Agyeman
5316b26d83 Added a new mjpeg module for Mjpeg support.
The built-in mjpeg module allows you to record videos seamlessly. It
will automatically compress the frame buffer using the extra space in the
main ram. So... you don't have to pass it jpeg images. Gets 7 FPS at
320x240 while connected to the computer too (it has to compress the
frame twice in this situation).

Anyway, the module work like Gif.
2016-03-05 20:03:48 -05:00
iabdalkader
acc35704d8 Disable IRQs when doing a soft-reset. 2016-03-06 02:51:34 +02:00
iabdalkader
2ab317063d Re-exec REPL if there's no script to execute. 2016-03-06 02:39:58 +02:00
iabdalkader
fe506fa0fb Use sizeof(tx_buf_len) instead of length.
* Length should always be 4 but it's safer this way.
2016-03-06 02:37:36 +02:00
iabdalkader
c12473d8b7 Execute a script only if there's no script running. 2016-03-06 02:36:45 +02:00
iabdalkader
28047269ac Add DSB after setting USBDBG IRQ. 2016-03-06 02:36:10 +02:00
iabdalkader
87f9c92f1b Skip the first JPEG/RAW frame.
* Set BPP to zero in set_pixformat to skip compressing/sending the first frame.
2016-03-06 02:32:11 +02:00
iabdalkader
911f9827ea Enable DMA IRQ just before the snapshot. 2016-03-06 02:28:05 +02:00
Kwabena W. Agyeman
98800c31c7 Add fb_alloc_all.
Now you can just grab all the free ram in the frame buffer in one go.
This fixes problems figuring out how many lines to alloc. Will update line
op code with this new info later.
2016-03-05 11:27:37 -05:00
iabdalkader
06b1cfca3b Use IRQ priorities defined in irqs.h 2016-03-05 18:25:51 +02:00
iabdalkader
55a4b4536f Add irqs.h.
* Defines IRQ priorities and functions.
2016-03-05 18:23:53 +02:00
iabdalkader
5dcedb8397 Align GIF buffers.
* Make GIF buffers aligned so DMA can be used.
2016-03-05 16:23:43 +02:00
iabdalkader
9230f0d53e Use DMA for SDIO transfers 2016-03-05 15:44:39 +02:00
Kwabena W. Agyeman
9325029675 Add support for color gif.
Color gifs look very good for how bad you'd expect them to be with just
7 bits of color (rgb232) - quite amazing. Also, I  hardened the gif
module to make it "user ready".
2016-03-04 23:30:01 -05:00
iabdalkader
03a06a409d Added color conversion strings. 2016-03-04 15:36:39 +02:00
Kwabena W. Agyeman
0ded05e333 Add color functions.
Now you can convert from rgb to lab/grayscale and vice-versa. Without
this functionality it would be hard to deal with moving between RGB and
LAB.
2016-03-03 23:48:04 -05:00
iabdalkader
02ef98f25f Move MSC bot data to main SRAM (update MP). 2016-03-04 00:59:06 +02:00
iabdalkader
af82c9936d Move MSC bot data to main SRAM.
* MSC can use DMA transfers.
* Free about 2KBs of CCM.
2016-03-03 15:37:13 +02:00
iabdalkader
872b7c1c5e Update qstrs. 2016-03-03 01:14:03 +02:00
Kwabena W. Agyeman
488253a8b0 Add statistics function.
You can now get the color stats for an area in the image. The stats
function returns the mean, median, mode, min, max, st_dev,
lower_quartile, and upper_quartile.

This function allows you to automate binary and threshold functions
based on what's in the iamge.
2016-03-01 21:43:52 -05:00
iabdalkader
3e5bfb27cc Move FatFS file buffer to main SRAM.
* Allows DMA transfers of file data.
2016-03-02 00:19:29 +02:00
iabdalkader
3ea5761076 Add _fb_alloc linker script variable. 2016-03-01 23:47:13 +02:00
Kwabena W. Agyeman
6ed08213b5 Fix unintialized error.
If the rect was not intersecting these functions would have returned bad
values.
2016-02-29 21:31:59 -05:00
iabdalkader
744329f8f6 Add strings for morph. 2016-03-01 01:42:51 +02:00
iabdalkader
e0c93b8ec3 Add missing morph qstrs 2016-03-01 01:26:03 +02:00