sparkfun / Fingerprint_Scanner-TTL

Repository with example code for SEN-14585 & SEN-14585 at SparkFun.com
https://www.sparkfun.com/
109 stars 112 forks source link

Library interfere with serial communication on the Arduino mega #10

Closed Conner120 closed 7 years ago

Conner120 commented 10 years ago

The finger print sensor is seams to communicate but things like ethernet shields and lcds don't work at all.

ToniCorinne commented 10 years ago

You'll need to provide more information for us to look into this. Are you getting compilation errors? Is it only when using this library on the Mega? Are you writing your own sketches or modifying the example sketches provided to enable communication with lcds or ethernet shields?

Conner120 commented 10 years ago

I am adding it to my current sketch the scanner works but nothing else dose I also tried the example sketch withit and the FPS worked it could turn on a light but the serial communication with my computer did not work, I really appreciate your help, if you need my sketch that I am working on with it I can get it for you I will try to check more frequently. Thank you.

JoshHawley commented 10 years ago

There is a limitation of software serial that prevents it from listening for inbound data on multiple software serial ports at the same time. you can call .listen() on your other software serial port before trying to communicate with other devices. I had this working with a serial LCD from sparkfun (https://www.sparkfun.com/products/10097). It works particularly well with that type of LCD because the communication is out from the arduino only, so you never have to call .listen().

This library will always call .listen() right before communicating with the FPS.

Conner120 commented 10 years ago

Thanks i will try that and see if it works. Thank you for you help.

ajarp commented 10 years ago

hello my friend. i will try code FPS.Blink, and in serial monitor show message [FPS - Open FPS - SEND: "55 AA 01 00 00 00 00 00 01 00 01 01"] any one explain what a meaning this message ? thank`s

sorry my poor english, i am indonesian.

JoshHawley commented 9 years ago

The message is just the raw serial data being sent from the arduino to the FPS. It is useful for troubleshooting connection issues

aizirt00 commented 9 years ago

I have also tried the FPS.Blink and it also shows me this message: [FPS - Open FPS - SEND: "55 AA 01 00 00 00 00 00 01 00 01 01"] and the led in the scanner is not blinking.

Please help. Thank you

ajarp commented 9 years ago

okay, thanks sir now it will work

2015-02-04 20:19 GMT+07:00 aizirt00 notifications@github.com:

I have also tried the FPS.Blink and it also shows me this message: [FPS - Open FPS - SEND: "55 AA 01 00 00 00 00 00 01 00 01 01"] and the led in the scanner is not blinking.

Please help. Thank you

— Reply to this email directly or view it on GitHub https://github.com/sparkfun/Fingerprint_Scanner-TTL/issues/10#issuecomment-72852539 .

JoshHawley commented 9 years ago

@aizirt00 you probably don't have it wired correctly. Check all your connections, and double check your voltage divider

khizermehmood commented 9 years ago

@josh can we run gt511c3 arduino library on beagle bone black

JoshHawley commented 9 years ago

The library code itself is in C so can likely be compiled for any controller. It does make use of Software Serial to send/receive data thought which is Arduino specific. If SofwareSerial doesn't work, you can change out SoftwareSerial for another serial communications library that works. If you look in the code, you can see that there are only a couple of calls to SoftwareSerial. I kept the references minimal so that it could be easily changed out for other serial libraries.

mgpepe commented 8 years ago

I second @ajarp - the FPS doesn't work. I am trying to do the blink example and all i get is the

FPS FPS - Open
FPS - SEND: "55 AA 01 00 00 00 00 00 01 00 01 01"

There is one green led constantly ON on the FPS, but that's all.

I added Serial.print("we are here"); which stops working if I put it anywhere after fps.Open(); line (no matter setup or loop).

I am pretty sure I have the wiring corretly: http://i.imgur.com/TGx8pgj.jpg

Additional info: i have the GT-511C1R and i have tried with both with: https://github.com/sparkfun/Fingerprint_Scanner-TTL/tree/master/FPS_GT511C3 and https://github.com/mdcanham/Fingerprint_Scanner-TTL-GT-511C1R/tree/master/FPS_GT511C1R

the result is the same as described above.

I have tried it with the Arduino Mega and Pololu A-star 32U4 Micro (running as Leonardo up to now no problem)

bboyho commented 7 years ago

Hi @Conner120 ,

Software Serial Limitations

I agree with Hawley. I had an issue once with a project and realized that you can only use one UART at a time due to its limitations => [ https://www.arduino.cc/en/Reference/softwareSerial ]. I had to turn off a software serial UART in my project before being able to communicate with another software serial UART. The Arduino Mega 2560 does have 4 hardware UARTs that you could use for the ethernet and lcd too.

Otherwise, make sure to adjust the software serial pin definitions and rewire the connection to the fingerprint scanner when using the FPS_GT511C3 library. As stated in the limitations for the Arduino.cc Software Serial Library:

Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

bboyho commented 7 years ago

Hi @aizirt00 ,

Basic Troubleshooting

I agree with Hawley. Check your connections and not loose. This is a common problem that I see when connecting the fingerprint scanner.

Software Serial Limitations

Also, I am not sure what Arduino you are using. Please be aware of the Arduino.cc Software Serial Library limitations. You will need to adjust the pin definition and wiring as necessary => [ https://www.arduino.cc/en/Reference/softwareSerial ]. It sounds like your Arduino is sending data but not getting data back from the fingerprint scanner.

Check Resistors or Use a Dedicated Logic Level Converter

Otherwise, try checking the resistors for voltage division. I remember doing some stress tests (with the original 560 Ohm and 1000Ohm resistor) for someone using the GT511C1R. Measuring the voltage with a multimeter, I noticed that the divided voltage was about 3.14V. When the GT511C1R was connected, the voltage dropped to about 2.97V. This is probably not high enough for the fingerprint scanner to recognize a logic HIGH reliably. I was able to get it working when using a voltage divider (with 10kΩ and 20kΩ) similar to the setup used in our previous logic level converter’s application circuit [try looking at the Uni-Directional circuit => https://cdn.sparkfun.com/assets/b/0/e/1/0/522637c6757b7f2b228b4568.png ]. Testing the circuit with the resistors replaced, my multimeter read a divided voltage of 3.3V. When the GT511C1R was connected, the voltage dropped to about ~3.18V-3.04V. This was sufficient enough for the fingerprint scanner to receive the commands from an Arduino. I tested this with the blink example and there were no problems with my 6" M/M jumper wires.

As a last resort, you might want to consider trying a dedicated bi-directional logic level converter [ https://www.sparkfun.com/products/12009 ].

bboyho commented 7 years ago

Hi @khizermehmood ,

Compatibility?

I have not used the FPS_GT511C3 library with the BeagleBone Black. Hawley's Arduino library was written on the Atmega328P with the Arduino Uno bootloader. The FPS_GT511C3 library may not work for all microcontrollers using the Arduino IDE or single board computers like the BeagleBone Black. As you move away from the ATmega328P family, you may need to modify the code or port the library over to get it working.

Python Example for BeagleBone Black

If you did a search online (especially through GitHub), there are alternative libraries used for single board computers using Python for the Raspberry Pi and BeagleBone Black. Here is one example that I found => https://github.com/JamesMarcogliese/Fingerprint_Scanner-TTL . I have not tested it yet but that would be a good place to start so you do not have to port the library over from scratch.

bboyho commented 7 years ago

Hi @mgpepe ,

The FPS_GT511C3 library should work for the GT-511C3 and GT-511C1R models. The commands are the same if you compare the datasheet.

Software Serial Limitations

The image is hard to see your wire connections [ http://i.imgur.com/TGx8pgj.jpg ]. I am not sure where your wires are connecting to on the breadboard. Also, please be aware of the Arduino.cc Software Serial Library limitations. Hawley's Arduino library was written on the Atmega328P with the Arduino Uno bootloader. You will need to adjust the pin definition and wiring as necessary for your Atmega2560 and Atmega32U4 => [ https://www.arduino.cc/en/Reference/softwareSerial ]. It sounds like your Arduino is powered (green LED) and it is sending data. However, it is not getting data back from the fingerprint scanner.

Check Resistors or Use a Dedicated Logic Level Converter

Otherwise, try checking the resistors for voltage division. I remember doing some stress tests (with the original 560 Ohm and 1000Ohm resistor) for someone using the GT511C1R. Measuring the voltage with a multimeter, I noticed that the divided voltage was about 3.14V. When the GT511C1R was connected, the voltage dropped to about 2.97V. This is probably not high enough for the fingerprint scanner to recognize a logic HIGH reliably. I was able to get it working when using a voltage divider (with 10kΩ and 20kΩ) similar to the setup used in our previous logic level converter’s application circuit [try looking at the Uni-Directional circuit => https://cdn.sparkfun.com/assets/b/0/e/1/0/522637c6757b7f2b228b4568.png ]. Testing the circuit with the resistors replaced, my multimeter read a divided voltage of 3.3V. When the GT511C1R was connected, the voltage dropped to about ~3.18V-3.04V. This was sufficient enough for the fingerprint scanner to receive the commands from an Arduino. I tested this with the blink example and there were no problems with my 6" M/M jumper wires.

As a last resort, you might want to consider trying a dedicated bi-directional logic level converter [ https://www.sparkfun.com/products/12009 ].