Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This article has been moved to its new home here: https://benperk.github.io/msdn/2015/2015-05-creating-a-wi-fi-connection-to-my-lumia-640xl-with-the-gadgeteer.html
My first Gadgeteer project I wrote about here used an Ethernet connection. However, this limited the mobility of my device and therefore wanted to configure the device to connect to a Wi-Fi network. I must mention that another coolness factor with this Wi-Fi project was I used the Wi-Fi internet sharing capability on my Microsoft Lumia 640XL. That means that my device can go anywhere and connect to the internet from any place my mobile phone can get a mobile connection. Yes, GHI Electronics, the makers of the Gadgeteer, do have a GSM module to place a SIM card into, but I didn’t have the module nor an extra SIM card laying around. This was a cool project, cool because it was pretty simple and it simply worked!
As shown in Figure 1, I used a FEZ Raptor as the main board and the wifiR21 module. I didn’t add the module to my existing project, because I wanted to keep it simple, then I can migrate the code to its final place once tested and functional. Plus I think Raptor is cool name and had to try it out.
Figure 1, FEZ Raptor using the wifiR21
Additionally, I used the button to trigger my connection and an LED to provide visual feedback of the progression of code execution through my program.
I did have a small problem getting the FEZ Raptor to work with an usbClientSP, USB Client SP 1.3 module, for some reason my PC would not recognize the device. I changed to the usbClientDP and it worked out.
Additionally, as I used numerous devices and change them out pretty fast, I got an error while deploying, shown in Figure 2. The error was “Unable to communicate with device USB:Gadgeteer” or “Unable to communicate with device USB:G400”.
Figure 2, Gadgeteer deployment, Unable to communicate with device
I resolved the issue by setting the device name correctly in the .NET Micro Framework tab of the Visual Studio 2013 project properties page.
I found this link which described how to make a Wi-Fi Connection here, however it did not work so well in my case. There are lots of good examples on that site, which is why I share it, it did help me get my code to work and was very helpful. Instead, I used the code shown in Listing 1.
Listing 1, how to make a Wi-Fi connection using the Gadgeteer with wifiRS21
private void initializeNetwork()
{
try
{
wifiRS21.NetworkInterface.Open();
wifiRS21.NetworkInterface.EnableDhcp();
wifiRS21.NetworkInterface.EnableDynamicDns();
wifiRS21.NetworkInterface.Join("BENPERK640XL", "*****");
while (wifiRS21.NetworkInterface.IPAddress == "0.0.0.0")
{
Debug.Print("Waiting for DHCP");
Thread.Sleep(250);
}
Thread.Sleep(1000);
}
catch (Exception ex)
{
Debug.Print(ex.Message);
multicolorLED.BlinkRepeatedly(GT.Color.Red);
}
}
That’s it, it was much easier than expected.
And like I mentioned, I connect the device to my Lumia 640XL, as shown in Figure 3.
Figure 3, connecting a Gadgeteer device to a mobile phone via Wi-FI
Basically, you enable the INTERNET SHARING capability within the setting feature. Notice that the broadcast name is BENPERK640XL which is the same as the SSID used as a parameter with the wifiRS21 Join() method. After my device is instructed to make the connection to my 640XL, you can see that the number of connections increases to 1 and that I can have a total of 8 Wi-Fi connections.
Here is a picture of my device, Figure 4.
Figure 4, the Gadgeteer, a wifiRS21 and a Lumia 640XL
After I completed this project I remember a video I watched where the speaker said we can save Rainforests with a mobile phone / cell phone. The video is here. I hope one day to contribute my skills to a project similar to that which has an impact on the planet or its’ inhabitants.
Here is the source code project, just for review and example. HTH
The exception I got when using the example on the Gadgeteer community site. See the code in Listing 1 which show how I got the connection to work.
Step into: Stepping over non-user code 'GHI.Networking.WiFiRS9110.WiFiRS9110'
Step into: Stepping over non-user code 'GHI.Networking.WiFiRS9110.WiFiRS9110'
Step into: Stepping over non-user code 'GHI.Networking.BaseInterface.BaseInterface'
Step into: Stepping over non-user code 'GHI.Networking.BaseInterface.BaseInterface'
Step into: Stepping over non-user code 'GHI.Networking.BaseInterface.BaseInterface'
Step into: Stepping over non-user code 'System.InvalidOperationException.InvalidOperationException'
Step into: Stepping over non-user code 'System.SystemException.SystemException'
Step into: Stepping over non-user code 'System.Exception.Exception'
Step into: Stepping over non-user code 'System.Exception.Exception'
Step into: Stepping over non-user code 'System.SystemException.SystemException'
Step into: Stepping over non-user code 'System.InvalidOperationException.InvalidOperationException'
Step into: Stepping over non-user code 'GHI.Networking.BaseInterface.BaseInterface'
#### Exception System.InvalidOperationException - 0x00000000 (1) ####
#### Message: This interface type is already created.
#### GHI.Networking.BaseInterface::.ctor [IP: 0032] ####
#### GHI.Networking.WiFiRS9110::.ctor [IP: 0005] ####
#### GHI.Networking.WiFiRS9110::.ctor [IP: 000e] ####
#### RaptorWifi.Program::initializeNetwork [IP: 0009] ####
#### RaptorWifi.Program::button_ButtonPressed [IP: 0010] ####
#### Gadgeteer.Modules.GHIElectronics.Button::OnButtonEvent [IP: 0057] ####
#### System.Reflection.MethodBase::Invoke [IP: 0000] ####
#### Gadgeteer.Program::DoOperation [IP: 001a] ####
#### Microsoft.SPOT.Dispatcher::PushFrameImpl [IP: 0054] ####
#### Microsoft.SPOT.Dispatcher::PushFrame [IP: 001a] ####
#### Microsoft.SPOT.Dispatcher::Run [IP: 0006] ####
#### Gadgeteer.Program::Run [IP: 001d] ####
A first chance exception of type 'System.InvalidOperationException' occurred in GHI.Networking.dll
Step into: Stepping over non-user code 'GHI.Networking.BaseInterface.BaseInterface'
Step into: Stepping over non-user code 'GHI.Networking.BaseInterface.BaseInterface'
Step into: Stepping over non-user code 'System.Exception.Message.get'
This interface type is already created.