4 Replies Latest reply on Jan 13, 2017 6:12 PM by paco_2238326

    What do I need to develop a Wi-Fi application with an external microcontroller?

      I have been studying Cypress' wi-fi modules because I want to develop my own application.


      I learned that the Amazon Dash Button uses a 850101 (I think it's from USI) module which consists of a cyw43362 (formerly bcm43362) wi-fi module with an integrated cortex m3 microcontroller, and it also uses an external cortex m3 microcontroller. I saw that there are many people hacking the device in order to play with it (thus having a $5 wi-fi enabled board), but when they program it they never say which microcontroller they are programming; the external or the microcontroller internal to the wi-fi chipset.


      From what I've read everything made me believe that in order to develop my own board and application I'd need to:

      - buy 850101 (or similar) module, which would come programmed, or buy a cyw43362 (there are 2 more, but I'm interested in this one) and then program it with the default program

      - buy an external microcontroller (I don't want to use the one inside the module because it doesn't have enough resources for what I want it to do) and connect it to the wi-fi module via SDIO or SPI

      - buy passive components and connector

      - buy sma antenna for the 850101 (or similar)


      I tried installing the SDK (I didn't download 3.7, I downloaded 4.0.7)and taking a look at the source but it doesn't even let me open the zip files for the SDK, so I have no idea what I'm dealing with.


      From there I'd have to program the external microcontroller to send commands to the module. The thing is that I don't know how to go on from here:

      - Do I need a TCP/IP stack like lwip? is there a port available for lwip for this device?

      - If it doesn't need a tcp/ip stack then it means that the device already knows how to send and receive packets, and for that I'd need a set of commands. Does it run on AT commands or is there a document where I can get that info?

      - Considering that everything is readily available, can I run a web server with websockets? Can I use REST? Can I use MQTT? Do I need to develop everything myself?

      - Does CYW43362 come ready for use with an external microcontroller?

      - Is there an API for OTA? I saw somewhere on the site that OTA2 was available for SDK3.7


      I readthis document and it made me think that what I want to do is possible, I just can't find the information as on how to procceed.

        • 1. Re: What do I need to develop a Wi-Fi application with an external microcontroller?

          I recommend starting out with something pre-certified and easier to use like the ZentriOS (Zentri) and their associated 43362-based module. Another one is the Photon board from Particle


          Most WICED based partner modules include an onboard MCU like the STM32F411 or similar, but you can add an external MCU and treat the module like a black box and send commands over a serial interface.  The Inventek Systems modules and others support an AT Command Set based interface.


          In addition, be careful using pricing supplied in teardown articles and similar as many of the prices quoted in these articles are linked to 1M piece type opportunities.


          A TCP/IP stack is not needed.

          OTA2 is only used with the BCM/CYW4390X.  Regular OTA is what you need to use with an STM32 based product.


          • 2. Re: What do I need to develop a Wi-Fi application with an external microcontroller?

            Good to know all that, thank you for the information.


            Just a few more questions. If I use a solution based on Inventek Systems, do I have to program the CYW43362 module before starting the AT commands? Imagine I buy the module instead of something readily available like the inventek boards. Would I need to program it with the firmware to accept AT commands, or does it come ready for that? Would I need to be ready for adding a second jtag interface to my product, one for programming the wifi module for AT commands and another for my external microcontroller? Is the Wiced SDK mandatory for programming CYW43362 (I'm a little scared about that, since it didn't work on my PC)? From what I've read about AT commands I know that I can get websockets, REST, web server, etc, but I don't get firmware OTA, which is not a problem since I can download a file using GET and then applying the binary to my external microcontroller.


            Sorry for all the questions, but I'd rather not use a module like inventek's, I'd like to create my own module. And the information you've given me already has helped me a lot. Thank you

            • 3. Re: What do I need to develop a Wi-Fi application with an external microcontroller?

              Creating your own certified module would be a substantial undertaking.  Partners like Inventek, Murata and others have spent years developing their respective offerings.


              Yes, the Inventek module would come pre-loaded with firmware to accept AT commands.


              You would need a CYW43362 eval board with the correct FTDI USB to Serial drivers installed to program one of the 43362 devices using the SDK.  The platform files for this board are already included within the SDK. Inventek's module makes this a little easier as you can bypass the SDK and the years of embedded development experience required to use it and just send AT commands from your micro to the module.  They even include cloud connectivity within their base SW platform.



              • 4. Re: What do I need to develop a Wi-Fi application with an external microcontroller?

                I aggree that it's a tremendous task to certify a module, but I had to ask, maybe there is some documentation that could help me (not interested in doing it anymore). Thank you so much for your help, you've been incredibly helpful.


                Which documents do you recommend that I download and read before getting started with this module? I'd imagine the datasheet and the documentation for the wiced SDK are the least I could read, but is there any other document that would get me started faster?


                Sorry it took me such a long time to reply, the last few days have been quite chaotic