NL6621-Y1 Wireless Module

There is a new kid on the block, the NL6621-Y1 Wireless Module from Nufront.  The NL6621 WiFi SOC is powered by a 160 MHz ARM Cortex-M3 (NL6621M). Everything is integrated in the NL6621M SOC including 448KB of RAM.

Here is what the NL6621-Y1 wireless module looks like:

 

The NL6621-Y1 wireless module Back Image The NL6621 wireless module Front Image The NL6621 wireless module PCB Layout

 

 

 

 

Supposedly it is much better than the ESP8266 from Expressif. However, the ESP8266 has a lot of code and documentation for it whereas there is very little information or code for the  NL6621-Y1 wireless module (as of this post).

Nufront does have several GitHub repositories for it here:

https://github.com/NufrontIOT

The common module (NL6621-Y1) seems to have the NL6621_SerialNet_SDK installed as that is what services the serial AT command set which allows the module to be configured via a serial interface.

I have the NL6621-Y1 wireless module from Elecrow and I wanted to see if I could get it working (attached to an Arduino Leonardo) similar to how I attached an ESP8266 in an earlier post.

Hooking it up, hardware wise, is a breeze. Attach the NL6621-Y1 3.3V pin to the Arduino 3.3V pin, GND to GND, NL6621-Y1 TXD to Arduino RXD and NL6621-Y1 RXD to Arduino TXD.

Arduino Leonardo connected to an NL6621The NL6621 Wireless ModuleAt first, I used the multiserial mega Arduino script (HERE) to experiment with the AT commands. That script basically takes characters you type in the serial console and sends them to the 2nd serial port and it echos any data coming from the 2nd serial port to the 1st.  I set both serial port BAUD rates to 115200. Sending “AT+HELP” will list all the supported AT commands.

Searching GOOGLE I could not find any information on the AT command set so I took a look at the SerialNet SDK source. Here is a chart showing what I gleaned from that code:

NL6621-Y1 Wireless Module AT commands

Example: Enter DataMODE

============================================================

AT+QUIT

(then telnet to the IP address of the NL6621 on port 8101)

+++ (exits back to CMD Mode)

 

Example: Scan for Wireless APs
============================================================

AT+WSCANAP=127

 

Example: Set NL6621-Y1 to be an AP
============================================================

AT+WQSOPT=2,11,3,3,0                     //SOFTAP,11,ccmp,wpa2,disable
AT+WSCAP=nufront,123abcdef,0        //SSID,password,retries
AT+IPCONFIG                                      //Show IP configuration

 

Example: Set NL6621-Y1 to STATION mode and connect to an AP
============================================================

AT+WQSOPT=0,11,3,3,0                                //Station,11,ccmp,wpa2,disable
AT+WSCAP=your_ap_ssid,yourpassword,5   //SSID,Password,retries
AT+IPCONFIG                                                 //Show IP configuration

 

Here is an Arduino sketch which sets the wireless options and connects the NL6621-Y1 wireless module to my TP-Link router. Note: If you use this code make sure to change the SSID and PASS variables to match your router!

The NL6621-Y1 Wireless Module Arduino Sketch

One thing I don’t like about the NL6621-Y1 is that it does not have a unique (i.e. official)  MAC address. When you send this:  AT+MAC  the result is +OK=MAC:00:01:02:03:04:05.

Anyway, it will be interesting to see what the open source community comes up with to do with this new wireless chip.

7 comments

Skip to comment form

  1. Thanks for your work on this which I found useful.

    I successfully set one up and set it for UDP broadcast and that worked fine. However, I found a major problem (I want to use it to broadcast NMEA data on a boat). The command to send data, which has the format “length,data” works but NOT if there is a comma in the data string. I have tried everything but there does not seem to be an escape character. If you have a comma, it returns an error. Probably because it parses the string and does not distinguish a comma in the data. So probably a real bug.

    Have you any thoughts on a workaround? There will always be commas in my strings and it makes the unit rather useless if I cannot solve it.

    Best Regards,
    Dave

      • earl on March 13, 2017 at 5:34 am
        Author
      • Reply

      Hi David,
      Sorry, no thoughts. I was sort of disappointed with this module. There has not been any activity by the vendor for a while. The SDK source is available if you want to modify it but that is not so easy to get it working. Also, the community following this module has not happened like it has for the ESP8266. Earl

    1. This isn’t a bug, but the correct and intended behavior for serial devices that use the Hayes style command mode (AT+).

      Why are you trying to send data (be it NMEA or anything else) in command mode? That is what DATA mode is for. For sending data to the thing on the other end. COMMAND mode is not. It is for issuing commands to the modem (which this device is pretending to be), not to transmit data.

      Honestly, the BCTTXDATA command shouldn’t even be there – it doesn’t need to be and it’s inclusion would seem to promote the incorrect usage of itself. I don’t know why they even have it, perhaps for debugging?

      Still, I don’t really understand why you’re using it instead of just doing the normal thing:

      1. In command mode, once everything is connected, issue the BCTTXSTART command to open a UDP socket on the port of your choice.

      2. Quit command mode (since this mode is strictly for issuing commands to the modem) with the QUIT command, returning you to the default data mode.

      3. Just pipe the NMEA directly to the serial port connected to this WiFi device. It will be transmitted over the UDP socket you picked and, assuming you have something listening on that socket, it will receive it.

      4. If you want to switch back to tcp using the relent server, invoke command mode from data mode with +++ and a carriage return, issue BCTTXSTOP.

      Note how none of that involved using the totally unnecessary BCTTXSEND command.

      Please don’t assume it’s a bug just because you don’t understand how basic serial communications work. There is no bug in the SDK in relation to this that can or should be fixed.

      This is in no way unique to this device. Anything that is emulating a modem using AT commands and having a command and data mode would behave (and be used) this way.

    • pouria on August 17, 2017 at 1:31 am
    • Reply

    Hi.
    How to connect to the network?
    Thanks.

      • earl on August 17, 2017 at 6:05 am
        Author
      • Reply

      Hello!
      In the post I show the commands to connecct the NL6621 to an access point (wireless router) and a script to automate it. Can you be more specific on what you need?
      Earl

    • Hamiid on August 9, 2018 at 8:28 pm
    • Reply

    I tried to use it with arduino nano but after uploading some sketch the module LED turned off and only it blink once when connected to the power.I tried to flash its firmware using Esp8266 flash software and then Nufront flash tool usin some chinese unknown files but nothing happend or maybe the module corrupted. So how can I repair it?? How can test it with arduino?? Is there any software and boot loader file which I use to mend it?!

      • earl on August 10, 2018 at 4:54 am
        Author
      • Reply

      Hi,

      Download the SDK here: https://github.com/NufrontIOT/NL6621_SerialNet_SDK
      and take a look at the tool folder. You can find the flash tool and the bin file to flash.

      Earl

Leave a Reply

Your email address will not be published.