See post #8,
http://forums.netdui...uino-unique-id/
- Netduino Forums
- → baxter's Content
baxter's Content
There have been 63 items by baxter (Search limited from 14-May 23)
#62970 Unique device ID
Posted by baxter on 29 May 2015 - 04:27 PM in Netduino Plus 2 (and Netduino Plus 1)
#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
#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
#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,
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.
#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?
http://forums.netdui...e-i2cbus-class/
#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
http://www.amazon.co...i/dp/B004CT1ZUE
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.
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.
#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.
#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,
http://forums.netdui...-v420-update-1/
#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.
http://forums.netdui...-v420-update-1/
#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
#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?
#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,
http://www.cypress.com/?rID=92146
http://www.digikey.c...-42xx&x=14&y=16
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,
- Netduino Forums
- → baxter's Content
- Privacy Policy