Netduino home hardware projects downloads community

Jump to content

The Netduino forums have been replaced by new forums at This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.

baxter's Content

There have been 63 items by baxter (Search limited from 29-February 20)

By content type

See this member's

Sort by                Order  

#62970 Unique device ID

Posted by baxter on 29 May 2015 - 04:27 PM in Netduino Plus 2 (and Netduino Plus 1)

See post #8,

#62108 Serial Port read data

Posted by baxter on 14 April 2015 - 05:57 PM in Netduino Plus 2 (and Netduino Plus 1)

I was using this with an ESP8266 AT command set driver (since abandonded in favor of the Lua firmware). Just instantiate the port without an event handler and then receive serial in a wait loop.

Public Sub New(ByVal ComPort As String, _
                   Optional ByVal baud As Integer = 9600)
        Port = New SerialPort(ComPort, baud, Parity.None, 8, StopBits.One)

        With Port 'note no event handler
            .Handshake = Handshake.None
            .WriteTimeout = 200
            .ReadTimeout = 200
        End With
        InputString = String.Empty
        'need to change if not 9600
        If (baud <> _DefaultBaud) Then '9600 is default baud rate of ESP8266 firmware (
            _Baud = baud
        End If
    End Sub


Public Function GetFromESP(Eot As String) As String
        'this is the main reader for ESP responses. It will wait for the expected Eot or
        'a socket exception will be thrown if the response contains, ERROR or Unlink

        Dim n As Integer = 0
        Dim response As String = String.Empty
        InputString = String.Empty
        While (True)
            If (Port.BytesToRead > 0) Then
                Dim buff = New Byte(Port.BytesToRead - 1) {}
                n = Port.Read(buff, 0, Port.BytesToRead)
                InputString &= New String(Encoding.UTF8.GetChars(buff))
                'Debug.Print("Inputstring: " & InputString)

                If (Contains(InputString, Eot)) Then 'expected return
                    Exit While
                    'Trap for socket connect to inactive server
                ElseIf (Contains(InputString, "CIPSTART") And _
                       (Contains(InputString, "ERROR") _
                        Or Contains(InputString, "Unlink"))) Then
                    response = InputString
                    InputString = String.Empty
                    Throw (New ESPexception("Socket can't connect: GetFomESP returned ERROR Unlink"))
                End If
                Thread.Sleep(50) 'need this delay (maybe more)
            End If
        End While
        response = InputString
        InputString = String.Empty
        Return response
    End Function

#61779 12 water flow sensors 160ft away from N+2

Posted by baxter on 05 March 2015 - 07:32 AM in Netduino Plus 2 (and Netduino Plus 1)

The ESP8266 WiFi modules might be a nice fit for your project.  When using the nodeMCU Lua firmware they basically become programmable wireless access points. The ESP-01 costs about $3 and exposes 2 GPIOs. The modules operate as a TCP client or server or both. Out of the box firmware uses an AT command set, but the Lua firmware offers much more and is very stable. They require about 240 ma when talking on the network and 70 ma when not. They are also 3.3V and not 5V tolerant. The disadvantage is that one needs to learn a bit of Lua, but there are plenty of examples in the nodeMCU forum link below.


GPIO2 supports an interrupt to count pulses for your sensor and the latest version of Lua has floating point math so you could directly compute the flow rate on each ESP module. Each ESP module also has its own MAC address and a chipID for identification, accessable via Lua functions. There is also a Lua repeatable timer alarm  with a callback function. This is where you could do your calculations and send the flow rate with an ID every X seconds via TCP or UDP.


The range in open air has been reported as 366 meters with the PCB antenna. This, however, is optimistic in the real world. I have an ASUS RT-n66U router and about 40 feet away from it, through 2 walls and a floor, a laptop shows 5 bars for the network SSID. For an ESP under the same conditions, the ESP broadcast SSID shows 2 bars signal strength. Given your longer distances, you might need to add a wireless extender to the mix.


If you use them behind a wireless router, each of the modules can obtain an IPaddress with with Lua code like the following: (Lua has a file system and a file is executed with dofile("myfile.lua")

-- File name: init.lua
print("set up wifi mode") 
--this is sent back to serial terminal if connected, otherwise does nothing
 --here SSID and PassWord should be modified according your wireless router
tmr.alarm(1, 1000, 1, function() -- repeat function every 1000 ms
    if wifi.sta.getip()== nil then 
    	print("IP unavaiable, Waiting...") 
    	print("Config done, IP is "..wifi.sta.getip())
    end -- if
 end) -- function

The init code will run on a powercycle or soft restart. The dofile("yourfile.lua") above will run once an IPaddress has been obtained and this is where you could put your flowmeter stuff.


here are some links,


ebay seller (USA fast shipping)


nodeMCU forum:


nodeMCU firmware(see pre_build) :


API instruction set:


For development, I use LuaLoader and a PC console TCP client for testing networking:

#60853 Which Micro SD Cards will work

Posted by baxter on 03 December 2014 - 06:42 PM in Netduino Plus 2 (and Netduino Plus 1)

I recall that Chris recommended a 2GB kingston from Amazon,

#60737 Porting eLua to the NetDuino

Posted by baxter on 17 November 2014 - 10:03 PM in Netduino 2 (and Netduino 1)

I only tried the binary for the ET-STM32 Stamp.

#60509 Function for a curve?

Posted by baxter on 22 October 2014 - 07:15 PM in General Discussion

Here is a nice sequential mean and variance estimator,

Just sample the analog input or distance for X ms and you have the mean value together with the error estimate.

#60498 Function for a curve?

Posted by baxter on 22 October 2014 - 01:36 AM in General Discussion

I have a Sharp GP2Y0A02YK0F 20-150 cm Distance Sensor. I get good results with the attached function relative to a known distance. I am sorry I don't have the attribution for the curve fit. I think it comes from the Arduino forum. If you search for "Sharp ir distance sensor curve fit", other fits will turn up others with varying degrees of approximation. The functional relationship accurately describes the curve. Your sensor may yield different constants. Just pick some points off of the curve and do a curve fit for the constants  in Excel. You might also want to do some smoothing on the measurements because they are noisy with this sensor.

'enable Sharp Analog GP2Y0A02YK0F 20-150 cm Distance Sensor
Friend SharpSensor As AnalogInput = New AnalogInput(Cpu.AnalogChannel.ANALOG_0) 'Netduino Plus 1 analog pin 0

SensorVal = distance(SharpSensor.Read() * 3.3) 'in inches

Public Function distance(Volts As Double) As Double
        Dim result As Double
        Dim A As Double = 0.008271
        Dim B As Double = 939.6
        Dim C As Double = -3.398
        Dim D As Double = 17.339
        Dim one As Double = 1.0
        result = (A + B * Volts) / (one + C * Volts + D * Volts * Volts)
        Return result / 2.54 'inches
    End Function

#60391 I2C issue with multiple sensors

Posted by baxter on 11 October 2014 - 08:34 PM in Netduino Plus 2 (and Netduino Plus 1)

Have you looked at this for multiple devices on the I2C bus?

#60332 Scheme-it

Posted by baxter on 03 October 2014 - 12:56 AM in General Discussion

There's  easyEDA,


It was free when I signed up, but I haven't used it much. Also, LTspice IV,

#60195 Windows Phone 8 and BLE

Posted by baxter on 22 September 2014 - 10:06 PM in General Discussion

 Cyan isn't available for the Lumia 521, but thanks for the link.

#60193 RS-232 Pins

Posted by baxter on 22 September 2014 - 09:39 PM in Netduino Mini
As far as I know, there are no plans to discontinue production.

#60188 RS-232 Pins

Posted by baxter on 22 September 2014 - 07:12 PM in Netduino Mini

Question 1 is yes, but  cross connect them TX-RX, RX-TX and GND.  You do need a TTL/RS232 adapter for COM1 if you want to use your RS232 cable for both ports.


#60140 Windows Phone 8 and BLE

Posted by baxter on 18 September 2014 - 07:00 PM in General Discussion

Thanks Pete, I tried your suggestion, but it didn't work for a simple network login to my router. The problem must be somehow related to the developer preview 8.1 for Windows Phone. I guess I am forced dig out an old DD-WRT router with NAT-loopback enabled to test internet access for devices behind my router.

#60137 Windows Phone 8 and BLE

Posted by baxter on 18 September 2014 - 06:20 AM in General Discussion

If other people with 8.1 on their phone run into problems with BLE, it's likely because you have the developer version of 8.1 installed.


For now (not sure on long term here), the firmware won't deploy to Nokia devices running the developer version of 8.1. In order to get the firmware (which is required for BLE) you need to revert your device back and install the consumer 8.1.


Super inconvenient, sorry. But I want to make sure you have a workaround.




A bit off topic, but do you suppose that the following problem that I am having could be related to the developer version of 8.1. My 521 is unlocked, no SIM installed with Win 8.1.1 preview developer edition and is connected to my wireless network. If I type a known site such as Google or Yahoo into IE on the 521, the page display is nearly instantaneous so WiFi works just fine.


The problem is I have several devices on my network that are administered by web servers. If I type an IP address such as to access the server it is necessary to login with a user name and a password. I can login from any computer on my network, but not with the Lumia 521. With the 521, the login page comes up and I enter the correct user/password, but it is always rejected.


I bought the Lumia 521 specifically to test login to the device servers from the Internet via DynDns. Port forwarding is setup correctly on my router. However, when I insert a T-Mobile SIm in good standing (wiFi, off) and issue <MyDevice> from IE on the 521, the same thing happens; the login is rejected.

#60115 Netduino 2 and Dfrobot GSM/GPS Shield

Posted by baxter on 14 September 2014 - 06:25 PM in Netduino 2 (and Netduino 1)

I just bought a discounted Seeed Gprs at Radio Sack,
I now find that Seeed is selling a new model, but the basic functionality is the same as the old one.


The serial setup is different from yours, but I think they are doing the same thing. I have mine with the jumpers set to hardware. The shield is plugged in to the Netduino and Netduino is directly talking to the module via COM1. If you want to talk to the module from a PC terminal, configure yours for hardware, but don't plug it in to the Netduino.and take power externally. Then connect a USB-TTL cable to D0, D1 on the shield. The USB to RS232 cable you linked is wrong for this application.  You might look at these depending upon the versatility you want ( you can get a cheaper USB to TTL  adapter on ebay),





My driver in VB seems to working ok with simple commands,

        SeeedGprs.SendReceiveCmd("AT") 'can communicate
        Debug.Print("CmdSent: " & SeeedGprs.CmdSent)
        Debug.Print("CmdAnswer: " & SeeedGprs.CmdResponse)
        SeeedGprs.SendReceiveCmd("AT+COPS?", , 400) 'Carrier info
        Debug.Print("CmdSent: " & SeeedGprs.CmdSent)
        Debug.Print("CmdAnswer: " & SeeedGprs.CmdResponse)
        SeeedGprs.SendReceiveCmd("AT(+CSQ)") 'signal quality
        Debug.Print("CmdSent: " & SeeedGprs.CmdSent)
        Debug.Print("CmdAnswer: " & SeeedGprs.CmdResponse)

CmdSent: AT
CmdAnswer:  OK 
CmdSent: AT+COPS?
CmdAnswer: PS: 0,0,"T-Mobile"  OK 
CmdSent: AT(+CSQ)
CmdAnswer: OR 

To go much further, I need an activated SIM card. The phones I have use a micro SIM and these modules take a standard size. I guess the answer is to just use the carrier for a micro SIM in in an activation kit.


#60035 Getting started with Netduino Mini (early instructions)

Posted by baxter on 08 September 2014 - 01:50 AM in Netduino Mini

Did you first try to erase it by applying 5V to the gold ERASE pad? It's located at the top on the right hand side.
Flashing instructions after erasing are here toward the bottom of the page,

#60021 Getting started with Netduino Mini (early instructions)

Posted by baxter on 07 September 2014 - 06:21 PM in Netduino Mini

I would try to update your firmware. Select the TTL zip file since you haxe a TTL cable.

#59981 Safe code to convert byte[4] to float

Posted by baxter on 04 September 2014 - 01:06 AM in General Discussion

Here is some VB code to go from an IEEE 754 single to 4 bytes and back to a single. It is indeed the hard way to do it. I wrote this before the "unsafe" bitconverter appeared on the scene, but now use the unsafe BC and have never had problems with it.

Imports Microsoft.SPOT
Imports Microsoft.SPOT.Hardware
Imports SecretLabs.NETMF.Hardware
'Imports SecretLabs.NETMF.Hardware.NetduinoPlus
Imports SecretLabs.NETMF.Hardware.Netduino
Imports System.IO
Imports System.Text
Imports System.Collections
Imports System.Diagnostics
Imports System.Text.RegularExpressions
Imports System.Math

Module Module1

    Sub Main()  
        Dim buf() As Byte
        Dim sing As Single
        Dim svalue As Single = 44411.5625
        buf = SingleToFourByte(svalue)
        sing = FourByteToSingle(buf)
        Debug.Print("value - sing = " & (svalue - sing).ToString) '--> 0
    End Sub
End Module

    Public Function FourByteToSingle(ByVal ByteArray() As Byte) As Single

        Dim bin As String = String.Empty
        Dim denormalized As Boolean = False
        Dim exp, start, coeff As Integer
        Dim mantissa As String
        Dim sum As Double
        Dim TwoPow As Integer = 1
        Dim mult As Double = 1

        'Convert 4 byte array to binary in reverse order 
        '(assumes  given array came from a 32bit little-endian integer)
        For i As Integer = ByteArray.Length - 1 To 0 Step -1
            bin &= IntToBin(ByteArray(i))

        'Split apart the binary string. Assumes IEEE 754 single format
        Dim sign As Integer = If(bin.Chars(0) = "1", -1, 1) 'leading bit
        Dim expt As Integer = CInt(BinToInt(bin.Substring(1, 8))) 'biased exponent
        Dim fraction As String = bin.Substring(9)           'fractional part
        Dim TempFraction As Integer = CInt(BinToInt(fraction))    'integer for testing

        'Test for special cases (zero, denormalized, +/-infinity, NaN)
        'a good reference for thes cases:
        If (expt = 0 And TempFraction = 0) Then Return 0
        If (expt = 0 And TempFraction <> 0) Then denormalized = True
        If (expt = 255 And TempFraction = 0) Then Return CSng(If(sign = 1, 1 / 0, -1 / 0))
        If (expt = 255 And TempFraction <> 0) Then Return 0 / 0

        If (denormalized) Then
            exp = -126
            mantissa = fraction
            start = 0
            sum = 0
            exp = expt - 127
            mantissa = "1" & fraction
            start = 1
            sum = 1 'implied bit
        End If

        'Convert mantissa to single using double arithmetic to keep full precision
        For i As Integer = start To mantissa.Length - 1
            TwoPow = 2 * TwoPow
            coeff = If(mantissa.Chars(i) = "0", 0, 1)
            If (coeff = 0) Then Continue For
            sum = sum + 1.0 / TwoPow

        'scale the power of 2: 2^exp --> [(2^exp)*(10^-pow10)]*(10^pow10)
        'Constant to scale away exponent power of 2
        'log(2)/log(10) = 0.30102999566398119521373889472449
        'reqd power of 10 = (power of 2)*(log(2)/log(10))
        Dim ReqPowerOf10Const As Double = 0.3010299956639812

        Dim Pow10 As Integer = CInt(exp * ReqPowerOf10Const)
        Dim Pow2 As Integer = exp - Pow10 'reduce the power of 2 exponent [10^pow10 = (2^pow10)*(5^pow10)]
        mult = (2 ^ Pow2 / 5 ^ Pow10) * 10 ^ Pow10

        Return CSng(sign * sum * mult)
    End Function

    Public Function SingleToFourByte(ByVal singl As Single) As Byte()
        Dim byts(3) As Byte
        Dim test As UInt32 = CUInt(singl)
        Dim SingnOf As Integer = Sign(singl)                ' = -1 if negative
        Dim FracPart As Single
        Dim IntPart As UInt32 = CUInt(Floor(Abs(singl)))    'integer part
        FracPart = CSng(Abs(singl) - CSng(IntPart))         ' fractional part
        Dim FracPartBin As String = String.Empty
        Dim IntPartBin As String = String.Empty
        FracPartBin = DecFracToBin(FracPart)
        IntPartBin = DecIntToBin(IntPart)

        Dim BinExpt As Integer = IntPartBin.Length - 1  'Highest bit set -1
        Dim Exponent As UInteger = CUInt(BinExpt + 127) ' Biased exponent
        Dim BiasedExpt As String = DecIntToBin(Exponent)

        'Remove most significant bit
        IntPartBin = IntPartBin.TrimStart({"1"c})
        'concatenate the mantissa and pad to 23 bits if necesary
        Dim Mantissa As String = IntPartBin & FracPartBin
        Dim LenMant As Integer = Mantissa.Length
        Dim Pad As String = String.Empty
        Do Until (LenMant = 23)
            Mantissa = Mantissa & "0"
            LenMant = Mantissa.Length
        Dim IEEE754 As String = If((SingnOf = -1), "1", "0") & BiasedExpt & Mantissa
        Dim LenIEEE As Integer = IEEE754.Length
        Utility.InsertValueIntoArray(byts, 0, 4, BinToInt(IEEE754))
        Dim k As Integer
        Dim substr As String = String.Empty

        Return byts

    End Function

Function IntToBin(ByVal byt As Byte) As String
        'Convert a byte to a binary string 
        Dim temp As Byte = byt
        Dim binval As String = String.Empty
        Dim count As Integer = 0
            binval = CStr(temp Mod 2) & binval
            temp = CByte(temp \ 2)
            count += 1
        Loop Until count = 8 'pad leading zeros

        Return binval

    End Function

Public Function BinToInt(bin As String) As UInteger
        'Horner's method to evaluate polynomial
        '01110110 msb, msb-1, ... 0 (e.g. msb to lsb, left to right)
        Dim len As Integer = bin.Length
        Dim temp As UInteger = CUInt(If(bin.Chars(0) = "0", 0, 1))
        For i As Integer = 1 To len - 1
            temp = CUInt(temp * 2 + If(bin.Chars(i) = "0", 0, 1))
        Return temp
    End Function

Public Function DecFracToBin(frac As Single) As String
        Dim BinFrac As String = String.Empty
        Dim temp As Single
        Dim carry As Integer
        While frac <> 0
            temp = frac * 2
            carry = CInt(Floor(temp))
            BinFrac = CStr(carry) & BinFrac
            frac = temp - carry
        End While
        Return BinFrac
    End Function

    Function DecIntToBin(ByVal Intgr As UInteger) As String
        Dim temp As UInteger = Intgr
        Dim binval As String = String.Empty
        Dim count As Integer = 0
            binval = CStr(temp Mod 2) & binval
            temp = CUInt(temp \ 2)
            count += 1
        Loop Until (temp = 0)

        Return binval

    End Function

#59740 Servers Ultimate Pro Free Android App from Amazon

Posted by baxter on 16 August 2014 - 07:15 PM in General Discussion

Don't know much about it, but may be useful with a Plus 1 or 2.

#59735 Netduino Mini $10

Posted by baxter on 16 August 2014 - 02:02 AM in Netduino Mini

Thanks ... Great price, bought one.

#59722 Netduino Plus 2 for $40

Posted by baxter on 14 August 2014 - 07:41 PM in Netduino Plus 2 (and Netduino Plus 1)

RETROSPARK promotional code doesn't work on this item. I just tried to buy it. The price is $50.

#59637 High Resolution Quad Encoder Problem

Posted by baxter on 09 August 2014 - 06:19 PM in General Discussion

I bought a couple of CY8CKIT-049-42xx for $4.00 ea,


I don't know if I will do any thing with PSoC, but the break-away USB-Serial Controllers will prove useful.

#59577 Serial port issues

Posted by baxter on 06 August 2014 - 02:29 AM in Netduino 2 (and Netduino 1)

You need to add,

using System.IO.Ports;

#59416 IE support with this forum software - copy and paste doesn't work

Posted by baxter on 27 July 2014 - 04:28 PM in Netduino Plus 2 (and Netduino Plus 1)

This has been frustrating for me also. Maybe it is both an IE11 and a Forum problem. If I login with Chrome, pasting this this message from Notepad into a  Reply box works just fine.

#59396 Netduino Unique ID

Posted by baxter on 25 July 2014 - 05:48 PM in Netduino 2 (and Netduino 1)

Assuming that the Netduino is part of some circuit, maybe you could use a 1-wire unique serial number,


home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.