Microchip vs. Arduino for WIFI triangulation

Discussion in 'Embedded Systems and Microcontrollers' started by circuit_freak_99, Jan 17, 2013.

  1. circuit_freak_99

    Thread Starter New Member

    Jan 17, 2013
    My name is circuit freak and I frikin LOVE circuits. My friend told me about this awesome site and I know that you are all very knowledgeable with these things and enjoy them as much as I do.

    I’m looking for a microcontroller to use for my WIFI triangulation (trilateration) robot. This little sucker needs to communicate with a computer to receive a waypoint and travel to within a foot of the waypoint. I understand I am going to need a range sensor and other peripherals besides WIFI to achieve this resolution, but for now I am experiencing personal torment over which microcontroller I should use. Mostly this decision is based upon it's ease of network communication.

    What are the pro’s and cons of using an arduino wifi shield vs. a PIC / MRF24WB0MA (essentially using microchips products for the same task). It appears as though both use some form of SPI for inter-communication, but being unfamiliar with networking systems, I am unsure which would be the most efficient method of connecting this device to a network.

    Also, do you know of any ways to improve our resolution using certain sensors?

    Thank-you for your time :)
  2. tshuck

    Well-Known Member

    Oct 18, 2012
    Well, considering my burning disdain for the Arduino, I would go with the Microchip solution, however, the Arduino has the advantage of having many more libraries, most likely one for this. The Microchip solution will make you more familiar with how to use the hardware and understand the way it works.

    For the triangulation, you will need at least a few datapoints. This can be multiple sensors, in order to acquire the necessary data in one go, or one sensor and physically moving the robot to different points and getting signal strength.

    Encoders are essential in this application, also, a means to detect wheel slippage(assuming this isn't some legged robot) would be great.

    Perhaps, I'm not getting the goal of your project, but, why is it receiving data from the computer? Couldn't thins be done on the robot?
  3. mcgyvr

    AAC Fanatic!

    Oct 15, 2009
    Either will work just fine.
    Wifi shield is plug and play
    Microchip is not but only a few components are required (couple resistors/capacitors/breadboard)
    Libraries for the Arduino are available for both (actually think they might use the same library)
  4. mhutchie1

    New Member

    Jan 21, 2013
    I would definitely recommend the Arduino wifi shield, as it has long distance accuracy, easy communication and programming with a computer, as well as extensive documentation and example projects that can help to get you underway. Arduino's also provide the ability to communicate wirelessly between devices, which can make your system far more robust and even portable.
  5. tshuck

    Well-Known Member

    Oct 18, 2012
    Let's not put The Arduino on a pedestal, here. The only thing the Arduino has over the PIC approach is the fact that someone has already done it for you and the library is right there.

    An Arduino is simply a layer of abstraction from the AVR microcontroller that the Arduino compiler compiles the Sketch for. To be clear, almost any microcontroller can do exactly what any Arduino can do. More often than not, it can do it better, since the Arduino is so far abstracted from the AVR, you lose the benefit of using a RISC processor to begin with. Programming for a microcontroller, rather than an abstraction, allows for device specific optimizations that wouldn't make sense otherwise.

    Whatever method you are referring to is not unique to Arduino, any microcontroller can use it...
  6. koehler

    New Member

    Sep 29, 2010
    Your anti-Arduino zealotry is noted, its usefulness I question.
    Anytime I hear people make similar comments I just write it off as snobbery or elitism.

    The OP seems to want something that will abstract much of the networking component, as he indicated his skill set was lacking there. In that case, the Arduino is definitely the preferred solution in this case as it does that quite well.
    Unless of course you would like to give a detailed BOM and Design for him to accomplish the same with the PIC?

    Is the disdain you feel really for the Arduino, or for the fact that tens of thousands of people who never would have been able to breadboard up a uC setup, and get an idea up and running for $29 and a weeks worth of time? That's not disdain, its more akin to jealousy.
    Do you also disdain people who drive automatics instead of manuals too?
  7. tshuck

    Well-Known Member

    Oct 18, 2012
    Hmmm.... are we reading the same OP? The OP asked for what the pros and cons are to each hardware path. I never read the OP saying something about abstracting the work, simply asking which would be easier to do the networking with. Since Microchip offers a library for the interfacing of the MRF24WB0MA, the part the OP mentions, I think that is pretty well taken care of, don't you?
    If you would actually take the time to read the posts I've made on this thread, I've mentioned everything you have. The Arduino is easier in terms of having everything done for you, libraries for every possible combination of hardware you could imagine. However, The OP wants(I assume) to learn how to use microcontrollers, not a pigeon-holed abstraction of one.

    If you are done incorrectly assuming you know what I'm referring to, allow me to explain. I have a disdain for the "engineers" that go out into the real world of embedded systems and recommend doing a project with an Arduino. I have a burning disdain in that most users of the Arduino have no knowledge of how to actually approach a design in digital systems without thinking of the Arduino.
    I want people to learn electronics, and,(again, if you had read) the Arduino is a good place to start, but does not give people the knowledge to understand the pros and cons of using such a device. It does not teach people how to design, just plug-and-chug.

    You are trying to say that I would fault someone for using an easier device?:confused:
    What I am saying, once again, if you had read, is that the Arduino has some serious faults with respect to understanding how the things work, things one should know when designing a system.
    thatoneguy likes this.
  8. thatoneguy

    AAC Fanatic!

    Feb 19, 2009
    It isn't "elitism", Arduinos and other ready made platforms do have their place with hobbyists.

    However, when one is bumping into the limits of what an arduino can do, the user tends to switch to AVR or PIC and straight C. They are then lost as to keeping track of registers, I/O states, etc.

    The Arduino platform is very easy to use to get simple projects up and running quickly. The downside is many people who claim to be embedded programmers cannot write code without the Arduino libraries (that is all Arduino is over C, standardized hardware and 'works for all' libraries). Those libraries, by being simple to use, do a LOT of work behind the curtain, which causes glitches in other parts of programs, and the user doesn't know why.

    Thus the "shield market" with pre-made libraries and code is born, where embedded designers work at the hardware level to figure out conflicts, and write the library to work around them.

    The downside is those libraries, by the simple fact they are simple to use, means they are rather large and take far longer (10x-100x) to run code that would only take 2 or 3 instructions in C.

    As long as one understands those limitations, the Arduino is fine to work with as a hobby. If one wants to make faster or more compact apps to fit in affordable (<$0.50 in lots) controllers in the future for production, one should learn the registers and code, as well as how the actual hardware functions in order to write optimized code. Far more can be done with an ATMega 328 when using C than what can be done using the same hardware with the Arduino libraries on top of C.

    When one doesn't understand those differences, threads like this appear. Both platforms are capable. C on PIC would be much more precise if using timing to determine distance, but it would be more work to write, and require an admittedly large amount of knowledge, as well as the datasheets for both components. If one wants to get "close"/"good enough" with an Arduino, it can be done easily, though speed and accuracy are sacrificed.

    BTW, Arduino libraries are written for PIC as well, so one doesn't even need to know what the actual microcontroller they are using is. The PICDuino and ChipKit (32 bit Arduino) from PIC are fast options as well, but suffer the same issues that any microcontroller filled with general purpose libraries would.
    tshuck likes this.