Add advanced computer vision capabilities to your project, without the coding! The Person Sensor from Useful Sensors Inc. includes a camera module pre-programmed with algorithms that detect nearby faces, and return information over a simple Qwiic I2C interface. It is designed to be used as an input to a larger system and be treated like any other sensor where power and information are provided through SparkFun's Qwiic I2C interface. There’s also a separate interrupt pin, TP1, which is used to indicate if any people have been detected.
Internally the Person Sensor bundles an image sensor and a small microcontroller into a single board. It is a small, low power (~150 milliwatts), and economical hardware module that is capable of detecting nearby faces and returning information about how many there are, where they are relative to the device, and performs facial recognition. This makes it easy to build projects that wake up when people approach, follow their faces, mute a microphone when nobody is present, and even recognize different people to personalize their experiences. The Person Sensor is designed to be a simple way to build smarter devices.
The SparkFun Qwiic Connect System is an ecosystem of I2C sensors, actuators, shields and cables that make prototyping faster and less prone to error. All Qwiic-enabled boards use a common 1mm pitch, 4-pin JST connector. This reduces the amount of required PCB space, and polarized connections mean you can’t hook it up wrong.
Note: The sensor uses an image sensor internally, so you need to make sure that the lens has a clear field of view, and that it’s mounted the right way up. You should be able to see the side of the board that has the sensor by spotting the small lens in the center. You’ll know you have it the right way up when the silkscreen writing “Useful Sensors Person Sensor V1.0” is at the correct orientation.
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
Based on 7 ratings:
2 of 2 found this helpful:
This novel sensor is a lot of fun to play around with. It performed as expected when using CircuitPython on a Pico (or Pico W) to detect a face and track its movement to change the position of a servo or a visual display (see example projects at: https://www.hackster.io/useful-sensors/products/person-sensor). I was also able to program it to distinguish between different faces (including large pictures of faces), although the accuracy/reliability would likely not be adequate for a security system. The main limitations I saw were that it performed less reliably in low light and that its range is only a couple of meters. The orientation of the sensor relative to the person’s face also makes a big difference, especially when trying to distinguish between different faces. It worked best when the face was well illuminated, within 1 meter, and looking directly at the sensor. When those conditions were met, it worked quite well.
1 of 1 found this helpful:
I bought one a few weeks ago, but it seemed a bit flaky (hit-and-miss on the face detection), so I bought two more, under the assumption that the camera module might be faulty (dead pixels, out of focus, etc). The other two arrived today, and both failed to work at all. Swapping the camera module from the first one to the other two (the camera module is only held in place by its connector) caused them to work, oddly enough.
So, by the looks of it, I've got three working sensor boards but only one functional camera. If I could figure out where to get the cameras (appear to be Arducam PY122), I could possibly repair the two non-functional sensors, but I haven't been able to track down that particular product yet.
Now, granted, Either FedEx or USPS might be to blame here. The shipment of the two latter sensors arrived with a sticker on the box indicating that the package had to be re-barcoded due to damage in transit. It's entirely possible that the camera modules were also damaged during shipment.
Still a fairly disappointing experience, overall.
(Useful Sensors)Sorry to hear about the mechanical issues! For the next batch of sensors we've actually glued them in place to try and avoid this problem. If you contact us at contact@usefulsensors.com we'd be happy to send you replacement boards. Thank you for your patience and feedback!
1 of 1 found this helpful:
Have high hopes for this small camera device, but ...
Uses a SparkFun Qwiic connector for the i2c connection. That's fine but SparkFun doesn't seem to make a Qwiic connector to the (much more common) Dupont 2.54mm Pitch Connector cable or adapter.
I would be willing to pay significantly more if Useful Sensors added more smarts to the module to make facial recognition more reliable.
The camera mounts to the circuit board via a very small connector. Unfortunately I found that the camera separates from the circuit board too easily. I will attempt to put it back but don't have much expectation that I will be successful.
Having said this, I would still say that it is a good buy for $10. Just hoping that Useful Sensors sticks around as a company and version 2 takes into account some or all of the points above.
Feel free to reach out and submit a return ticket with us as well if you wish to go though with a replacement: https://www.sparkfun.com/returns
(Useful Sensors)I've been plagued by the loss of camera modules too! Sorry about that flaw in our design, for all future batches we'll be trying to add a small blob of glue to make them more secure, though it may be a few weeks before that new version is available. If you'd like replacement boards for any you've lost the camera modules to, you can always reach me through contact@usefulsensors.com. Thanks for your feedback, and patience!
Pete@Useful
We sell this https://www.sparkfun.com/products/15081 has adapters of both F/M types, see other options here https://www.sparkfun.com/search/results?term=qwiic+cable
I feel the same way. I have 3 of these and broke one of mine too.....I can't find the lens/camera(!) to even try and put it back on, but it's STILL worth at least $10 :-p
1 of 1 found this helpful:
The Jury is still out, sadly, despite the initial enthusiasm.
The simplest Arduino sketch reports (via Serial Monitor) no I2C data!???
The Person Sensor status LED duly lights up when an object is presented in front (including presumably faces).
A vanilla I2C sketch reports that an I2C device is present at the designated address.
What can a newbie do to avoid self-inflicted operator errors?
I guess try it on a Pico next and then of course on the grand daddy -RPi if I can buy without donating to scalpers.
Anyway, good introduction to Qwiic which will serve me well since I like small form factor JSTs and not the Gr___ size.
(Useful Sensors)Sorry you hit these problems!
After investigating, and some help from the community, we figured out that a lot of older Arduino boards have a 32 byte limit on I2C reads, and silently discard any bytes above that. Since we're reading 40 bytes of information, this caused the failure you saw. I've now checked in a fix that reads in smaller chunks to work around this limitation.
Thanks for your patience, and apologies again for the bug. I hope your explorations on the Pico went more smoothly.
Pete@Useful
I used one of these to create a "Look at Me Light Switch." (https://blog.arduino.cc/2023/03/08/turn-your-lights-on-and-off-by-staring-at-this-little-robotic-switch/) I've just scratched the surface of the capabilities of this device. For face detection at low cost and in simple form, then this is probably the best thing available.
Works reliably event in low light. The inference struct is well thought out. Expect to code in some simple logic to filter out low confidence false positives. Runs 1 inference every 200ms so roughly 5 FPS.
The sensor works fine and the detection rate is good for adults but didn't do too good for children. My only problem was the sensor came with the camera plugged in the wrong orientation and not fully seated in
I've been unable to get the device to work using the sample code on a Particle.io Argon. It just keeps reporting 'no face found' even though the green light comes on. With a scope I could see that the I2C bus is getting x62 as the address. I see it polling the sensor every 200 ms. Don't really know what to do next.
UPDATE: I got it to work by modifying their supplied Arduino code. Problem is they try to read 40 bytes from the Wire library but that library is limited to 32 byte max. Using their supplied code the read never completes. I've left comments in their github repo about this.
Thanks! I've updated https://github.com/usefulsensors/person_sensor_arduino/issues/2 with some notes, I'm guessing you're correct, and sorry we didn't catch this during our testing. I appreciate the STL file too.
Pete@Useful
I've now checked in a fix to read from I2C in 32-byte chunks, which gets it working on the Uno, which failed previously. I hope this solves the issue, thanks for your patience and help debugging it!
Pete@Useful
I'm wondering if the Library for this camera, have one specific to identifying RC cars, or any small car like vehicle. Then use the I2C and an Arduino, for simple identity processing.
We don't have any plans for custom models unfortunately, but I personally like Edge Impulse as a self-service tool for creating your own computer vision solutions for embedded platforms.
Pete@Useful
Since it’s simply I2C ,I’d guess you could get data from it in Arduino too? Just need to know the wire address and it’s behavior
The 7-bit wire address is 0x62. Note that on some boards the lowest bit (read/write) is included, making the address 0xC4. See this document for the I2C API.
There's are a couple of official examples for Arduino boards which should hopefully help. There is a known issue with some boards like the Uno, but I'm working on a fix once I have the hardware to test with.
Pete@Useful
Just a quick update that the issue on older Arduino boards should now be fixed. Thanks for everyone's patience!
Pete@Useful
How far away can the device confidently detect faces / people?
3m/10' should be a good theoretical upper limit, given the sensor specs (110º FoV, 256x256) and a 14cm average face width (so 6 pixels wide @ 3m).
We find in practice that about one meter in decent lighting conditions gives reasonable performance, any further is less reliable. We're hoping to keep improving this as we work on new versions though.
Pete@Useful