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 17-May 23)


By content type

See this member's


Sort by                Order  

#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
wifi.setmode(wifi.STATIONAP)
wifi.sta.config("ret13x","XXXXXXXXX")
 --here SSID and PassWord should be modified according your wireless router
wifi.sta.connect()
tmr.alarm(1, 1000, 1, function() -- repeat function every 1000 ms
    if wifi.sta.getip()== nil then 
    	print("IP unavaiable, Waiting...") 
    else 
    	tmr.stop(1)
    	print("Config done, IP is "..wifi.sta.getip())
    	--dofile("yourfile.lua")
    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)

http://www.ebay.com/...html?rmvSB=true

 

nodeMCU forum:
http://www.esp8266.c...wforum.php?f=17

 

nodeMCU firmware(see pre_build) :
https://github.com/n...odemcu-firmware

 

API instruction set:

https://github.com/n.../nodemcu_api_en

 

For development, I use LuaLoader and a PC console TCP client for testing networking:
http://benlo.com/esp....html#LuaLoader




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

 

Pete

 

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 192.168.0.166 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>.dyndns.org:8080 from IE on the 521, the same thing happens; the login is rejected.




#59355 Serial Issues

Posted by baxter on 23 July 2014 - 07:44 PM in Netduino Plus 2 (and Netduino Plus 1)

RS232 uses inverted logic; TX/RX idle logic low. Netduino COM ports idle high. Most PC serial ports are RS232 and they may or may not conform to the RS232 standard (+/- 12V). Measure the TX voltage on your PC serial port. If it is less than about 2.5V, then your problem is inverted logic. You can invert TX/RX with a 74LVC2G14 or a 74HC14 Schmitt trigger Inverter The simplest thing to do is just buy a USB to serial TTL adapter and forget the PC serial port.
 




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

http://www.maximinte...cts/DS2411.html




#58962 ATTiny85 talking to Netduino?

Posted by baxter on 30 June 2014 - 06:27 PM in General Discussion

https://learn.adafru...oducing-trinket

http://www.adafruit....or-the-trinket/

https://learn.adafru...usb-serial/code




#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?
http://forums.netdui...e-i2cbus-class/




#59359 How to control netduino plus 2 over the Internet

Posted by baxter on 23 July 2014 - 09:19 PM in Netduino Plus 2 (and Netduino Plus 1)

What about DynDNS,
http://dyn.com/support/wizard/

http://www.tp-link.u...icle/?faqid=297
I haven't used it for a while, but I set it up for a Netduino Plus 1. It's fiddly to get going from behind your router unless you have a smartphone (or use a neighbor's network). Most consumer routers do not have NAT loopback so testing needs to be done from a network external to your local network. Or, in my case, I used a spare router running DD-WRT with NAT loopback for local testing. DynDNS is no longer free, but there are other services.

 

I don't see that this poses a greater security risk than other traffic coming in through your ISP.




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




#59272 NP2 Wireless Button/Switch

Posted by baxter on 17 July 2014 - 01:47 AM in Netduino Plus 2 (and Netduino Plus 1)

The Ciseco XRF has a 1km max range with the supplied whip antenna (300m with chip antenna). Other models with chip antenna are of the order of 100m (max). Cheap 433 MHz modules typically have 20-100m range (mostly toward the lower end) depending upon the power, antenna and obstructions.

 

Reading toward the bottom of the page, that Amazon combo has Specifications:
Transfers distance: 80m (100-200m to the max for open spaces)
Receiving distance: 200m (100-200m to the max for open spaces)
and also, the battery probably costs more than the combo.

Important Note: The remote control does not include battery because of the strict customs inspection. Please prepare a "23A 12V" battery for it. We appreciate your understanding and support. 

 

Edit: While looking at that page, I spotted another remote control (claims 100m),
http://www.amazon.co...13FQECK319ARBPC




#58704 How to 3D print your project a custom case!

Posted by baxter on 13 June 2014 - 04:58 PM in General Discussion

As someone obviously familiar with 3D printing, what do you think of the Da Vinci 1.0 3D Printer?

http://www.amazon.co...bs_6066127011_1




#59260 NP2 Wireless Button/Switch

Posted by baxter on 16 July 2014 - 07:02 PM in Netduino Plus 2 (and Netduino Plus 1)

433 MHz
http://code.google.com/p/rc-switch/
http://www.amazon.co...r/dp/B00JL30QQU

If you need some intelligence at the remote end look at Pololu Wixels
http://www.pololu.com/product/1336

I have a pair of these and they work quite well up to about 50 ft.

This is a well regarded long range module,
http://shop.ciseco.c...le-xbee-shaped/
You can change the personality of the module by installing the appropriate firmware (Appendix 2: Dual Relay?)
http://openmicros.or...-llap-reference




#58711 How to 3D print your project a custom case!

Posted by baxter on 13 June 2014 - 11:36 PM in General Discussion

Yes, there is a reason. When the light shines just right you can see the surface roughness. The Da Vinci business model has also received a lot of criticism for the chipped, proprietary filament cartridge. I wish I could afford a Form1 printer. The Da Vinci is cheap enough to play with, but I think I would be disappointed with its results. Thanks for the information about your service.

 

 




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




#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




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




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




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




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




#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




#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



#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




#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




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





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.