Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
I'm looking for a GPS with a good API. I would like to be able to send an address to it, and tell it to navigate to that address. I also need to pull the current location from the GPS. I'd like to be able to do this with the GPS hooked up to a laptop by bluetooth or even just a USB cable.
I've looked at the Dash a little, but the monthly subscription is a downside. Also, I would like to keep the location and addresses on our private network.
I'm a .NET programmer, so a .NET friendly API is best for me.
Bonus points if you can show me some examples of using an API to push and pull data to and from the GPS.
If you want to talk to a Garmin GPS, you can check out their developer website. They've got resources ranging from talking to Web Services all the way to doing low-level Serial & USB I/O to interface directly with the devices.
What about using a GPS enabled phone running WM? I have the Motorola Q9c. I'm working on a GPS Data Logger so I can map my flights. The windows mobile SDK has a great C# sample to work with.
GPS Devices normally don't normally provide turn-by-turn information.
Almost all GPS devices (internal, linked via bluetooth or whatever) conform to the NMEA standard, which simply provides a latitude, longitude and elevation encapsulated in a simple text-based protocol. Almost all of these communicate over a simple serial port, which you can get access to in about 4 lines of code using .NET.
Turn-By-Turn directions are computed by the device which the GPS is attached to - your PDA, Phone or computer. If there's an internet connection available, the Google Maps or Windows Live Local APIs are really easy to use (especially from .NET using a WebRequest or Sockets) and would probably be the best solution to your problem!
I presume that by GPS you mean Satellite Navigation? Most GPS units don't offer the turn-by-turn capability required to navigate effectively on roads, or the underlying road map data for that matter.
updated: OK, since Garmin are by far the biggest dog in the yard, I'd recommend taking a look at Garmin's Location Based Services Toolkit, Fleet Management Toolkit and their Communicator API (specifically the DeviceControl module).
Have a peek at routes.tomtom.com, they can send addresses to a TomTom.
(Warning: patent pending !)
Related
I am really sorry, if this is the wrong place to post this question. But if it is, I hope it could help someone in the future. If this is a wrong place, where could I post this question? I have looked other stack-exchange sites, but could not decide where to ask it :(
I am developing an application that will use a GPS unit mounted on the car. I am looking for a GPS Dongle provider, and so far I have really seen several of them. They all have shiny websites, and what not. Has anyone ever dealt with this type of technology, and could you recommend a reliable provider.
What I need for my project:
LAT / LON / Mileage from the Dongle
Dongle should either allow us to GET the data, or it could POST to our server the data
Should be using SIM card for internet connection
LAT / LON should be compatible with Google maps location.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
For my graduation work and my open source project about detection of «spoofing» GPS and GLONASS signal I need NMEA data dump of GPS/GLONASS receiver which receive signals from GLONASS or GPS simulator.
Where I can get NMEA logs which include $GPGSV strings?
Because I analyze levels of satellites signal and try to detect «spoofing».
I have GPS Receiver, and have experience to dump NMEA from it, so I have Real signal. But i have not dumps of spoofed signal which my GPS receiver can get from GPS simulator which generate spoofed signals, so I can't make charts and software test. In one of related works discussed that if we have C/N0 values of spoofed signal we can detect spoofing. In NMEA specification C/N0 is SNR value of satellite. Maybe I can generate spoofed signal programatticaly, but I think it will not be a clean experiment.
One part is very simple: To get the NMEA from a GPS chip:
buy a GPS device from Sirf or uBlox.
Then use the free Software uCenter for uBlox device.
For Sirf it is or was called SirfDemo.
I used the Wintec WBT-201 (or similar named) device, which has a uBlox chip.
In uCenter you set the chip to NMEA mode, and enable the GPGSV messages.
Messages will be output to a window or file.
Remains the problem how to get your GPS chip spoofed.
The only way I konw is to use the extremly expensive GPS simulator.
AFAIK There is only company (labsat) with one or two product on the market: maybe > 20K$.
You could try to write to that company that they will send you some NMEA records, or you work together with a company that have such a simulator and need anti spoofing software. (If you live in Austria or Germany, you may contact me again, but make first sure that you are well familar how to use uCenter and to record NMEA from a GPS device.)
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I'm new to the world of embedded programming and I'm looking for information about interfacing with a microcontroller using I2C, USB, UART, CAN, etc. Does anybody know any good links, books, tutorials, about this subject? Since I´m a real newb on this subject I prefer if it is as basic as possible.
Since you are already a desktop developer, you can probably jump in somewhere in the middle. Download the user manual for the controller you plan to use. Get the example code from the manufacturers etc. sites for one of the simpler peripherals - UART is good.
Get a development board and an Eclipse/Crossworks/whatever development system that supports your board and get something to work - flash LED, UART echo or the like. Don't try to use a multitasker and interrupt driver first off - just poll the UART with as few lines of code as possible. Why - because just getting a development setup to compile, link, download and run one line of code is a considerable exercise in itself, without any complications from complex code. You have your development setup and hardware to debug first before you can effectively write/debug any code for the controller. Just getting 'blinky' code that merely flashes an on-board LED to work is a huge step forwards:)
Most controllers have dedicated groups/blogs, either on the uC manufacturers site or linked from it - join them.
If you want to get into this efficiently, get a board and try to get it to do something - there is no better way. Once you can get a LED to flash or a UART to issue a string of chars, you're off to the races:)
Developing simple 'blinky' or UART-polling functions are not wasted - you can continue to use them later on when you have more complex code. Blinking a LED, (with the delay-loop replaced by an OS sleep), is such a good indicator that the code is sorta running that I've always kept it in on delivered systems. The UART poll is useful too - it will run without any interrupts and so you can call it from the data/prefetch/whatever abort vectors to issue the many 'CRITICAL ERROR - SYSTEM HALTED' messages that you will get during ongoing development:)
Wikipedia really is as good a place to start as any to learn the basics surrounding each of these mechanisms.
Once you've got a grasp, I'd recommend looking at an actual datasheet and user's guide for a microcontroller that has some of these features. For example, this 16-bit PIC has a dedicated UART, I2C and SPI bus. Looking at the relevant sections of the documentation, armed with your new knowledge of the underlying principles, you'll start to see how to design a system that uses them.
The next step would be to buy a development board for such a device and then, using example code (of which there is tons), code yourself up some datalinks. Incidentally, a UART is certainly the easiest to test, since all PCs can transmit using the RS-232 protocol from a terminal, so in this case you can code a loopback to transmit and receive characters with relative ease. With I2C and SPI however, I think you would need to buy a dedicated host dongle to allow you to transmit using the protocols, although I think Windows 8 might be introducing native support (but don't quote me on that).
I haven't implemented a datalink using CAN, so I can't comment specifically, although I just did a quick Google search and there's a PIC family that supports it, so I'm sure you could follow a similar approach. As for USB, I consider it a bit of a black art, so I'll leave someone else to answer that one - although I do know you can get a USB software stack for PICs, so again, a similar approach could probably be followed.
On a final note, I've only mentioned PICs as an example microcontroller. If you're not familiar with microcontrollers in general, you'll soon realise that all the major microcontroller families from companies like Microchip, TI and Atmel generally follow the same design, so I would have a browse and pick the family who's documentation you're most comfortable with (or least uncomfortable with, as suggested by Martin James!).
For the most part the data sheet or reference manual for the microcontroller you intend to use is what you need. Each vendor will implement these interfaces in different ways, so that is your only definitive source for low-level programming information.
I2C and UART are relatively simple with no standard higher-level protocol stack; that would be defined by you or the device you might be connection to. Your microcontroller vendor will almost ceratainly have example code and/or application notes.
CAN is more complex, and typically CAN networks use a higher-level application protocol of which there are several for different application domains such as CANopen, NMEA2000, DeviceNet, IEC J1939 and more. Most often a third-party library is the most cost effective method of implementing an application protocol stack, but if the network comprises of only devices you are implementing, then that complexity may not be necessary. Again your microcontroller vendor is likely to have examples.
USB is very strongly defined by the USB Implementers Forum, and protocol stacks are non-trivial. Most microcontroller vendors that have on-chip USB interfaces will provide sample code and application notes for at least device-class USB. USB Host stacks are more complex, and again the use of a third-party library (which are relatively expensive) is the quickest way to market. Fees you would otherwise be obliged to pay the USB IF may make writing your own host stack no less expensive. Even for a USB Device interface you will strictly need a USB Vendor ID at $2000 from USB IF. Some microcontroller and library vendors will allow you to use their Vendor ID for a defined subset of Product IDs at little or no cost, but you would probably have to be a significant customer in terms of volumes. For internal experimentation, you can probably get away without an official VID, but such a product could not be released commercially.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
Is there any cheap and very extensible robot kit, which can work with Microsoft Robotics?
I want to have a great choice of cool parts for a robot to buy. :)
If where is no such robot kit which can work with MS Robotics, is there any chance to buy a very extensible robot which just can be programmed, maybe even in assembler?
Microsoft Robotics Studio is a PC robotics platform. So if you want to use that, you need a robot with a PC on board. Unfortunately, this type of robot is more expensive and there are far fewer of them on the market. A select few that I know of that work with RDS:
Robotics Connection Stinger robot with an ICOP eBox Windows CE PC
IRobot Roomba with an ICOP eBox Windows CE PC
CoroWare CoroBot (Full disclosure: I work for CoroWare.)
As Paul said, the Arduino is a popular microcontroller for robotics. Microcontroller robots can be used with RDS, but they operate in a "tethered" fashion, always connected to a PC either with a physical cable or wireless. Some popular robots like this that work with RDS:
Lego NXT
Parallax BOE Bot
Of course a custom made microcontroller robot can work with RDS, however, you will have to architect the microcontroller-to-PC interface specifically for your robot and communication medium. This is typically not a task for novices.
Any good robot kit is, by definition, going to require you to be fairly handy with ALL the aspects related to robotics. That is, you're going to have to learn a bit of mechanical engineering to make sure your locomotion device works properly, a bit of electronics to attach sensors, and so on. If you're looking for a snap together pre-built kit where all the accessories fit into proprietary docking connectors, you're not looking for robotics.
If you're feeling gung-ho about learning to program ICs, you could do worse than the Arduino system. With that in tow, you could look here for more inspiration as far as parts go:
http://www.sparkfun.com/commerce/categories.php?c=31
The Arduino is one of the more popular open-source robotics base boards, and it's easy to program and get started with. You can do a lot before you run into the hardware limits on that, but you will have to build your robot from bits and pieces, rather than a nicely packaged kit with printed instructions. That's half the fun though.
I personally would recommend the roomba. It is supported by iRobot, which is a major manufacturer of robotic devices (military and civilian). Additionally they have created a device called the roomba "create" that is a roomba, but without the vacuum cleaner. The control of the roomba can be taken over via a serial connection, and once you get the basics down (its easy), controlling the device is pretty simple!
Since its serial, you can control it with almost any device - be it a computer, micro-controller, or whatnot!
I've done a lot of work playing around with the device myself, so if you have any questions, feel free to post back!
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I would like to develop a mobile application that is able to access all the features of the mobile device it runs on (camera, files, phone and network connectivity). I intend to build a series of applications that each have a specific function to perform, rather than a single application with a large feature set. My programming background is C, C# and web applications.
What would be the best tool set to use to do this? I have looked at using the NetBeansIDE to create a Java ME applications using LWUIT - this looks promising, but what are the caveat's?
I want to target the largest universe of mobile devices possible.
J2ME is the way to go to reach the masses, in the consumer or the business market. From a consumer standpoint, most of the world's mobile phones support J2ME. From a business standpoint, most of the world's smart phones support J2ME.
Nokia owns a 40% share of the smart phone market (and the whole market) worldwide. Next in line is Blackberry with a 13% share. Both have standard implementations of J2ME on their devices (though Blackberry also has a proprietary version of Java as well). On top of this, most devices that run Windows Mobile come with a JVM as well (I developed a game recently that initially targetted the Sony Ericsson W810i and it ran flawlessly on my HTC Tilt's JVM). Add in the fact that Android has a Java SDK and the only segment you are really missing out on are the BREW only phones and the iPhone.
I'm not a huge backer of J2ME. I just know that every other mobile platform has disappeared from my life over the last 3 years as it just makes financial sense for companies to only target the J2ME segment of the industry.
You are facing the usual main issue of mobile development : targetting as many handsets as possible with only one programming language means using J2ME, which doesn't quite give you access to all the features of the handset.
Most open handsets will support J2ME but different phone manufacturers implement it in different ways and fragmentation is enourmous accross the board. Unfortunately, the majority of open handsets (the ones where you can install third-party applications) only allow you to develop in J2ME
The only good news is that your intent to only write small applications will provide large relief from fragmentation issues.
J2ME also has huge limitations in terms of file system access, complete lack of a telephony API, very poor interaction with the system applications management...
In order to get full features, you always need to use the native technology of the open platform you are targetting, be it Android, iPhone, the several variants of Symbian OS, Brew, Windows Mobile or Palm OS handsets. Each of these has its own native technology.
Writing your application many times in many different languages in the costly price of wanting both a large number of targetted handsets and access to the full features of each of them.
I'm a Symbian/J2ME veteran myself and, given your stated background and goals, I suspect that you are trying to learn about mobile technologies. I'll therefore shamelessly plug my book, which is meant as an introduction into the Symbian development ecosystem :
http://www.amazon.com/Quick-Recipes-Symbian-Smartphone-Development/dp/0470997834/
Good luck
If your primary goal is to reach the consumer market, Java 2 Micro Edition (J2ME) is probably your best bet. All popular mobile phones (from Nokia, Sony Ericsson, Samsung) come with a Java Virtual Machine installed. If you look at Google, for example, they are developing all of their mobile applications (like Gmail and Google Maps) in Java.
If you instead are targeting business customers, the Microsoft .NET Compact Framework is the way to go in my opinion. The Windows Mobile operating system holds a strong position in the business market, mainly because of Outlook Mobile and its integration with Exchange.
I respectfully disagree with Fostah.
If you want to reach the masses, the Web is your best bet. It's far easier to write a simple Web application that will work on millions of devices.
And the best bit is that you can easily update your application and improve the user experience everyday with the Web.