Netduino home hardware projects downloads community

Jump to content


The Netduino forums have been replaced by new forums at community.wildernesslabs.co. 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 05-May 23)


By content type

See this member's


Sort by                Order  

#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.

http://www.amazon.co...e/dp/B00E00C70C
http://slickdeals.ne...free-on-amazon?




#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,
http://www.seeedstud...erface_Function
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),

 

https://www.sparkfun.../products/12977

https://www.sparkfun.../products/11736

 

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)
        Thread.Sleep(400)
        SeeedGprs.SendReceiveCmd("AT+COPS?", , 400) 'Carrier info
        Debug.Print("CmdSent: " & SeeedGprs.CmdSent)
        Debug.Print("CmdAnswer: " & SeeedGprs.CmdResponse)
        Thread.Sleep(400)
        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.

 




#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
            .Open()
        End With
        InputString = String.Empty
        'need to change if not 9600
        If (baud <> _DefaultBaud) Then '9600 is default baud rate of ESP8266 firmware (0.9.2.2)
            _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)
                Thread.Sleep(200)
                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



#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,
http://forums.netdui...uino-unique-id/




#59735 Netduino Mini $10

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

Thanks ... Great price, bought one.




#60332 Scheme-it

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

There's  easyEDA,

http://easyeda.com/

 

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

http://www.linear.co...tools/software/




#59169 New Modules Seen in the Wild

Posted by baxter on 11 July 2014 - 09:27 PM in Netduino Go

 

Mine has sat unused in its box since I excitedly bought one when it first came out. I expect it to stay there.

Mine also 




#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;




#58925 convert data types to byte[] and back for streaming

Posted by baxter on 27 June 2014 - 05:47 AM in General Discussion

I previously confronted this issue and found a couple of references,
https://www.ghielect...3/serialization
http://bytes.com/top...ture-byte-array

I copied the structure serialize code (near the bottom of the page) from the second reference and it compiles
just fine on the Mini using firmware 4.2.0.1.

Imports Microsoft.SPOT
Imports Microsoft.SPOT.Hardware
Imports SecretLabs.NETMF.Hardware
Imports SecretLabs.NETMF.Hardware.NetduinoMini
Imports System.Reflection
Imports System.Runtime.InteropServices
Imports Microsoft.VisualBasic.Constants
Imports System.Text
Imports System.Threading
Imports System.Collections

Module Module1
    Sub Main()
        Dim s As Struct = New Struct
        Dim ms As MyStruct = New MyStruct With {.el1 = 1, .el2 = 2, .el3 = 3}
        Dim sb() As Byte = Struct.Convert(ms)
    End Sub

    <StructLayout(LayoutKind.Sequential, Pack:=1, Size:=12)>
    Private Structure MyStruct
        Dim el1 As Byte
        Dim el2 As Int16
        Dim el3 As Byte
    End Structure

    Public Class Struct
    'Charles Law 
    'http://bytes.com/topic/visual-basic-net/answers/357098-convert-structure-byte-array

        Public Shared Function Convert(ByVal MyStruct As Object) As Byte()
            Dim al As ArrayList
            Dim Fields As FieldInfo() = MyStruct.GetType.GetFields
            al = New ArrayList

            For Each fld As FieldInfo In Fields
                If fld.FieldType.Equals(GetType(Byte)) Then
                    ' Add byte to array list
                    al.Add(CByte(fld.GetValue(MyStruct)))

                ElseIf fld.FieldType.Equals(GetType(Int16)) Then
                    ' Add 16-bit value to array list
                    Dim i16 As Int16

                    i16 = CType(fld.GetValue(MyStruct), Int16)
                    al.Add(CByte(i16 >> 8))
                    al.Add(CByte(i16 And &HFF))
                Else
                    Throw New Exception("Cannot convert type.")
                End If
            Next fld

            Return DirectCast(al.ToArray(GetType(Byte)), Byte())

        End Function
    End Class

    Public Function PrintArray(title As String, ByVal Arr() As Byte) As String
        Dim s As String = title & vbCrLf
        For i = 0 To Arr.Length - 1
            s &= "i = " & i.ToString & "  " & "Byte = " & Arr(i).ToString("X2") & vbCrLf
        Next
        Return s.Trim
    End Function


End Module

I didn't run it for this post because my Mini is in storage. I lost interest in this because I found for my purposes it was easier to just convert the data type to a string and then convert the string to bytes and then reverse this to go back to the data type (not too efficient, but it works)




#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))
        Next

        '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: http://steve.hollasch.net/cgindex/coding/ieeefloat.html
        '----------------------------------------------------------------------------------------
        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
        Else
            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
        Next

        '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)

        'Normalize
        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
        Loop
        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
        Do
            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))
        Next
        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
        Do
            binval = CStr(temp Mod 2) & binval
            temp = CUInt(temp \ 2)
            count += 1
        Loop Until (temp = 0)

        Return binval

    End Function




#59332 change ip address netduino

Posted by baxter on 21 July 2014 - 05:48 PM in General Discussion

Look under:

C:\Program Files(x86)\Microsoft .NET Micro Framework\v4.2\Tools\MFDeploy.exe




#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.

 




#60193 RS-232 Pins

Posted by baxter on 22 September 2014 - 09:39 PM in Netduino Mini

http://www.amazon.co...i/dp/B004CT1ZUE
As far as I know, there are no plans to discontinue production.




#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,
http://www.johndcook..._deviation.html

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




#58971 Bitconverter class causing crash/irresponsiveness.

Posted by baxter on 02 July 2014 - 12:48 AM in Netduino Plus 2 (and Netduino Plus 1)

You can also use,

byte B = 0xac;
String S = B.ToString("X2");
Debug.Print(S); //--> AC



#59340 change ip address netduino

Posted by baxter on 22 July 2014 - 06:57 AM in General Discussion

Open MFDeploy --> Menu:Target --> Configuration --> Network --> Network Configuration --> fill in the blanks 

Attached Thumbnails

  • Network Configuration.JPG



#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.




#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




#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,

http://www.amazon.co...B/dp/B0015R2NUW




#58765 Sound Sensor, Wifi Shield and BreadBoard

Posted by baxter on 18 June 2014 - 05:55 PM in Netduino Plus 2 (and Netduino Plus 1)

Google is your friend,
http://www.newegg.co...N82E16833315095
http://www.ebay.com/...cat=0&_from=R40

You can buy breadboards anywhere; Mouser, Adafruit ...




#58657 NetDuino Plus 2 + Spark.io ?

Posted by baxter on 10 June 2014 - 03:50 AM in Netduino Plus 2 (and Netduino Plus 1)

I don't think the Spark Core is Micro Framework compatible. You may have a bit of trouble connecting the hardware to a Netduino Plus 2. Maybe you could talk to it over the serial interface. Or perhaps, give your Netduino a wireless interface with an ethernet to wireless adapter ,

http://forums.netdui...-a-pc-wireless/




#59155 Can anyone recommend a rock-solid LCD display?

Posted by baxter on 10 July 2014 - 11:38 PM in Netduino Plus 2 (and Netduino Plus 1)

I have been using the BPI-216N/L Serial Text LCD for years. The COM port interface is about as simple as you can get.
http://www.seetron.com/products.html
It's a bit pricey and you can get something better with a serial interface for about the same price (look under Intelligent Display modules),
http://www.4dsystems.com.au/products
http://www.4dsystems...brief_R_1_1.pdf

 

I have the older version of this module and it is a very readable display.




#58584 Starts in boot mode always after flash

Posted by baxter on 06 June 2014 - 03:48 AM in Netduino Mini

I resorted to 4.1 firmware and do not encounter this issue. Both TinyCLR and RESET are working.

 

After looking through the posts here, I see that the 4.2.0.0 firmware is not available. Does anyone have a copy of it that I can test?

Here is the link for Mini firmware 4.2.0.1, both RS232 and TTL

http://forums.netdui...-v420-update-1/




#58926 NetDuino Plus 2 + Spark.io ?

Posted by baxter on 27 June 2014 - 06:53 AM in Netduino Plus 2 (and Netduino Plus 1)

I bought a Spark Core and it looks to be a nice companion to provide WiFi capability for a Mini or a Netduino 1 or 2 by talking over the serial port as EnergySmithe noted. There are two serial ports, serial and serial1. The former is the regular Arduino debug port to be used with a serial terminal and the latter would be used to talk to a Netduino. The IDE is cloud based with the same buttons as the Arduino IDE, verify, flash ... They also have an Android App to work with the pins and configure the core for your network. I found the following sample code for a webserver and it works like a charm. The only problem I see with it vs Netduino is shifting gears to program an Arduino.

TCPClient webClient;
TCPServer webServer = TCPServer(80);
char myIpAddress[24];
int LED = D7;

void setup() {
    pinMode(D7,OUTPUT);         // Turn on the D7 led so we know it's time
    digitalWrite(D7,HIGH);      // to open the Serial Terminal.
    
    Serial.begin(9600);

  // Now it's ok to open your serial terminal software, and connect to the
  // available COM port.  The following line effectively pauses your
  // application waiting for a character to be received from the serial
  // terminal.  While it's waiting it processes the background tasks to
  // keep your Core connected to the Cloud.  Press ENTER in your 
  // serial terminal to start your application.
  while(!Serial.available()) SPARK_WLAN_Loop();
  
    Spark.variable("ipAddress", myIpAddress, STRING);
    IPAddress myIp = Network.localIP();
    sprintf(myIpAddress, "%d.%d.%d.%d", myIp[0], myIp[1], myIp[2], myIp[3]);
    
    Serial.print("Spark Core connected to IP: ");
    Serial.println(myIp);
    digitalWrite(D7,LOW); // Turn off the D7 led ... your serial is serializing!
    
    webServer.begin();
}

void loop() {
    if (webClient.connected() && webClient.available()) {
        serveWebpage();
    }
    else {
        webClient = webServer.available();
    }
}

void serveWebpage() {
    //TODO: read in the request to see what page they want:
    //TODO: retrieve larger content from flash?

    webClient.println("<html>Hello I'm serving a webpage!</html>\n\n");
    webClient.flush();
    webClient.stop();
    delay(100);
}




#58787 Sound Sensor, Wifi Shield and BreadBoard

Posted by baxter on 19 June 2014 - 06:51 PM in Netduino Plus 2 (and Netduino Plus 1)

I don't think there any Netduino specific WiFi shields. Look for an Arduino shield. Here is one,
https://www.sparkfun.com/products/9954
The problem with these shields is that the drivers are Arduino specific. This is a Netduino project using an Arduino shield with Netduino drivers,
http://forums.netdui...rary/#entry7870
But, expect to be frustrated with these shields because you need to talk to them over SPI. However, You don't need a WiFi shield. The Edimax simply turns your Netduino ethernet port transparently into a wireless connection; thereby avoiding all driver complications. After you configure the Edimax for your network, connect its ethernet port into the Netduino ethernet port, provide power to the Edimax and the Netduino will be connected to your wireless network. Also, another advantage is that you do not tie up any SPI pins.

 

If you want a stack arrangement,, just get a protoshield and affix the Edimax to it. The Edimax will fit exactly between the headers without any modification.





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.