GPS Initialization string? - string

I'm creating a very simple application to read the info from a GPS. The information is sent on the bluetooth (COM3) in the NMEA0183 format.
Everything works good except that I can't find my position because the RMC and GGA sentence are empty. I receive other sentence with the satellite informations and positioning, but all I want is my current position (long/lat)
Here is some example of what I currently receive:
$GPZDA,,,,,,*48
$GPGGA,,,,,,,,,,,,,,*56
$GPGLL,,,,,,,*7C
$GPRMC,,,,,,,,,,,*67
$GPGST,,,,,,,,,,,,,,*57
$GPGSA,M,3,09,18,22,14,,,,,,,,,12.2,11.8,3.0*31
$GPGRS,,,,,,,,,,,,,,*51
$GPVTG,30.124,T,30.124,M,0.067,N,0.125,K*49
$GPGSV,2,1,08,22,78,283,50,18,60,137,50,14,54,281,48,09,44,052,48*7F
$GPGSV,2,2,08,46,34,212,,51,28,222,,48,12,247,,35,06,254,*74
I tried with Putty, GPS .NET 3.0.2 and my own program and the result is the same. BUT when I connect with the proprietary software called eZField, the GPS gets a fix after 20 seconds and I can see the long/lat showing. In EZField, I can't see the raw format and since it is on a pocket PC, I don't know how to sniff the bluetooth data to see if the software send any information to the GPS.
My best guest is that EZField sends some information to the GPS receiver to tell him to start sending RMC and GGA. I've read somewhere that there are "Initialization strings" that can be sent to a GPS but I can't find information about this anywhere. My GPS is a ViaSAT L1-GPS Receiver/SBAS.
Anyone can help me? :)
Thank!

It looks like your GPS doesn't have a fix yet. It is odd though that the GPS doesn't simply start searching on its own. Most initilization strings are strictly for what type of data to send back (such as the SiRFstar III proprietary format).
Pair this to your PC and run the software on it after you have started up some serial port monitoring software. That way, you can see what the init. string is, if there is one.
I use this regularly: http://www.serial-port-monitor.com/

Related

BLE Clarifying the Read and Indicate Operations

I'm writing code for Pycom's Lopy4 board and have created a BLE service for environmental sensing which currently has one characteristic, temperature. I'm taking the temperature as a float and attempting to update the characteristic value every two seconds.
When I use a BLE scanner app, whenever I try to read, I read a value of "temperature10862," which is the characteristic's name and uuid. Yet when I press the indicate button, the value shows the correct temperature string, updating automatically every two seconds.
I'm a bit confused overall. Is this a problem with my code on the Pycom device or am I simply misunderstanding what a BLE read is supposed to be? Since the temperature values are obviously being updated on the device, but why does the client, the app, only show these values with an indication rather than a read?
I am sorry for any vagueness in the question, but any help or guidance would be appreciated.
Read Attempt
Indicate Attempt
Returning "temperature10862" as a read response is obviously incorrect. Sending the temperature as a string is in this case also incorrect, since you use the Bluetooth SIG-defined characteristic https://www.bluetooth.com/xml-viewer/?src=https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Characteristics/org.bluetooth.characteristic.temperature.xml. According to that the value should consist of a signed 16-bit integer in units of 0.01 degrees Celcius.
If you look at https://www.bluetooth.com/xml-viewer/?src=https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Services/org.bluetooth.service.environmental_sensing.xml, you will see that it's mandatory to support Read and optional to support Notifications. Indications, however are not permitted. So you should change your indicate property to notify instead.
The value sent should be the same regardless if the value is sent as a notification or read response.
Be sure you read the Environmental Sensing specs and follow the rest of the GATT service structure.

Decoding Bluetooth signal and packets using GnuRadio

I am currently working on a project which aim to detect Bluetooth and decode Bluetooth packets (I use a Hack RF One to make the detection). I have made a Gnuradio Flowgraph in order to demodulate Bluetooth signal and I am trying to decode visualy the packets by searching a Bluetooth frame on a binary file.
Unfortunately, I didn't succeed to recover a clear view of the Bluetooth signal. To be precise, I am pretty sure that I detect Bluetooth on my sinks but when sending this to a Clock Recovery + Binary Slicer blocks, I am unable to recover interresting data in the binary file (especially the MAC adress of the sending device, which is part of the a Bluetooth packet). Moreover, I would like to know what type of network layer (physical, transport, baseband...) is intercepted in this type of process. In my case, I aim to intercept baseband layer packets.
Additionaly, I am interrested in knowing how to use the gr-bluetooth because I can't find a lot of documentation concerning this block. I think this can be interresting for the development of my project.
Could you please, give me your view, opinion about this problem ? I am stucked at this stage without knowing the exact origin of my issue. (Here is my flowgraph GnuRadio_Flowgraph and a screenshot of one of my Bluetooth detection Detected signal at 2.402GHz).
Thank you very much,
You probably need an ubertooth instead https://www.sparkfun.com/products/10573
I read that the bluetooth frequency skipping is spread wider than the HackRF can read, so at-best, you're going to miss 75% of frames if you only have one hackrf connected.

Recompiling KeyFobDemo with IAR

I have the CC2540 Keyfob Development Kit and I have established connections between the bluetooth dongle and the Keyfob and have been able to do simple read writes. Then I connected the CC Debugger and download the SmartRF Flash Programmer and the IAR Workbench. All I want to do is change a few values in the firmware so that it broadcasts indefinitely and so that I can change the name it advertises with. I have read the Getting started docs and the sample applications docs but the problem is I don't know how to edit/compile these files so I can upload it to the device with the SmartRF flash programmer. Is there any documents or tutorials or are there steps to do this? Thank you! Let me know if I can answer any other questions
All you have to do is:
Download the BLE stack from Texas Instruments website:
http://www.ti.com/tool/ble-stack
Then in the stack, open Projects\ble\KeyFob\CC2540DB\KeyFobDemo.eww file.
Programming CC2540 kit requires an IDE named IAR Embedded Workbench. You can download it and get access with 30-days trial:
http://www.iar.com/Products/IAR-Embedded-Workbench/8051/
Then open the project and find the keyfobdemo.c file in the APP folder. From line 200-213 there is a char array named deviceName[], which actually defines the advertising name as "Keyfobdemo". You just have to change that with correct hex values, and the length of the array as well.
Then in line 236, you have to change attDeviceName[] array as well, since this parameter defines the name of your device, when it is in connected state.

bluetooth module HM-15 and Arduino scanning for iBeacons

I bought a HM-15 BLE bluetooth module and successefully connected to Arduino. I am able to sent At commands and I would like to use it for scanning for iBeacons and get their major and minor.
Using AT+DISC? I can see the beacon address but I cannot connect to it and now I am stuck on how to retrieve major and minor
Can you help me? Here is the datasheet of the module:
http://www.elecrow.com/download/bluetooth40_en.pdf
Thanks
Bluetooth beacons do not require a connection and you read the identifiers directly from the advertisement.
Read section 19, Start a discovery scan, and learn how to read and decode the bytes in the discovered peripherals. The exact byte layout varies for different beacon types. For AltBeacon, an open source beacon variant, you can see the byte layout here: https://github.com/AltBeacon/spec
To decode a proprietary beacon format, you will need to learn how that beacon layout differs from the example linked above.
Old question, but just for the record, you can use AT-DISI?
This will scan for beacons, including iBeacons and also AltBeacons. The response from HM-10 will include RSSI for each.
PS: I'm assuming HM-15 and HM-10 operate the same way. Probably not exactly a fully reasonable assumption.

Input data from serial port to Excel

I've built an interface from a digital Caliper to an Arduino board.
The Arduino sends the readings from the caliper to the computer via Serial port.
The data sent over the serial port is of course fully customizable.
I now want an option that when a certain command comes over the serial port (For instance generated by a button press in the caliper) the data of the caliper will be inputed into the current Cell in Excel and the tab key pressed in order to move to the next cell.
I wanted to know what is your recommended solution? What programming language? How to send the data to Excel? How to emulate the Tab key? etc.
I eventually used the following solution:
Downloaded and installed scaleProgrammer.com Rs-232 Monitor (for free) and using it translated the incoming serial incoming data to keyboard input.
To the incoming serial data I added the TAB key at the end of every transmition, which aids in working in Excel.
I'm not sure about your reqquirement, but I hope you can use an Ethernet shield and do some PHP coding to store your output in CSV format, which later you can read using the Excel.
Please give a proper description of your requirement so you can get some good answer. Any link/pics of you tool will work.
You can try php-serial.

Resources