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.

Scott Green's Content

There have been 34 items by Scott Green (Search limited from 19-June 23)


By content type

See this member's


Sort by                Order  

#21275 My Netduino CNC Machine

Posted by Scott Green on 02 December 2011 - 09:25 PM in Project Showcase

Darrin, Looking great! Love the e-stop button... Scott...



#19188 OneWire ALPHA

Posted by Scott Green on 15 October 2011 - 02:21 AM in Beta Firmware and Drivers

Ok, after a ton of research, and a ton of code tests I figured it out... The DS2450 returns the CRC with the bytes swapped, and it inverts the bits within each byte. i.e. 0xFF = 0x00. The following code results in a good CRC calculation... A little code cleanup and I'm golden! var response = new byte[10]; var status = _core.Read(response); var commandaddrdata = new byte[11]; // Array used to calculate the CRC16 commandaddrdata[0] = 0xAA; commandaddrdata[1] = 0; commandaddrdata[2] = 0; commandaddrdata[3] = response[0]; commandaddrdata[4] = response[1]; commandaddrdata[5] = response[2]; commandaddrdata[6] = response[3]; commandaddrdata[7] = response[4]; commandaddrdata[8] = response[5]; commandaddrdata[9] = response[6]; commandaddrdata[10] = response[7]; UInt32 _LowInt = (UInt32) ~response[8] & 0xFF; // CRC Bits are inverted. Take complement of bits. UInt32 _HighInt = (UInt32) ~response[9] & 0xFF; UInt32 DSCRC16 = (((UInt32)_HighInt << 8) | _LowInt); var crcwithcommand = OneWire.ComputeCRC16(commandaddrdata, count: 11); if (crcwithcommand == DSCRC16) { channelA = (((Int16)response[1] << 8) | response[0]) * ConversionFactor; channelB = (((Int16)response[3] << 8) | response[2]) * ConversionFactor; channelC = (((Int16)response[5] << 8) | response[4]) * ConversionFactor; channelD = (((Int16)response[7] << 8) | response[6]) * ConversionFactor; } else { if (errorProc != null) errorProc(0, "DS2450 CRC Error. Return:" + DSCRC16.ToString() + " Calc:" + crcwithcommand.ToString()); }



#18937 OneWire ALPHA

Posted by Scott Green on 08 October 2011 - 07:24 PM in Beta Firmware and Drivers

Valkyrie,

wondering if you have gotten the CRC code (after an all channel voltage read) working with a DS2450. I know that its a 16 bit CRC, and the datasheet says that its calculated from Command Byte, Address Bytes, and Data Bytes. But I cant get a calculated 16bit CRC that matches the one that is sent back from the 2450. Heres, some test code...

var response = new byte[8];
var res2 = new byte[2];

var commandaddrdata = new byte[11]; // Array used to calculate the CRC16
var status = _core.Read(response); // Data Bytes
var stat2 = _core.Read(res2); // CRC bytes

commandaddrdata[0] = 0xAA;
commandaddrdata[1] = 0;
commandaddrdata[2] = 0;
commandaddrdata[3] = response[0];
commandaddrdata[4] = response[1];
commandaddrdata[5] = response[2];
commandaddrdata[6] = response[3];
commandaddrdata[7] = response[4];
commandaddrdata[8] = response[5];
commandaddrdata[9] = response[6];
commandaddrdata[10] = response[7];

var crc = OneWire.ComputeCRC16(response, count: 8);
var crcwithcommand = OneWire.ComputeCRC16(commandaddrdata, count: 11);

_LowByte = res2[1];
_HighByte = res2[0];
float DSCRC16 = (((UInt16)_HighByte << 8) | _LowByte);

Using this code DSCRC16 never matches crc or crcwithcommand. Have tried it with both inverted and non inverted high and low bytes on the read CRC.

Any ideas?

Thanks,
Scott...


For instance with temperature sensors, I've found that there are 2 kinds of bogus values. Ones corrupted in transmission (will fail CRC) and incomplete calculations from the sensors (which returns a default value that passes CRC). So, what I do is maintain the last sensor value in a variable and give that when requested. While at the same time, I routinely try to update the value. Below is the actual code I use for the sensor read with CRC and uninitialized value checking...

                // Write command and identifier at once
                var matchRom = new byte[9];
                Array.Copy(_rom, 0, matchRom, 1, 8);
                matchRom[0] = OneWire.MatchRom;

                _core.Reset();
                _core.Write(matchRom);
                _core.WriteByte(DS18X20.ReadScratchpad);
                System.Threading.Thread.Sleep(5);  // Wait Tconv (for default 12-bit resolution)

                var response = new byte[9];

                var status = _core.Read(response);
                var CRCPass = OneWire.ComputeCRC(response, count: 8) == response[8];
                var Initialized = OneWireExtensions.BytesToHexString(response.Range(0, 1)) != "0550";

                if (status == 9 && CRCPass && Initialized)
                {
                    if (this.FamilyCode == 0x28)
                    {
                        _lastTemp = ((short)((response[1] << 8) | response[0])) / 16F;
                    }
                    else if (this.FamilyCode == 0x10)
                    {
                        _lastTemp = (float)(((short)((response[1] << 8) | response[0])) >> 1) - 0.25F + ((float)(response[7] - response[6]) / (float)response[7]);
                    }
                    
                    _lastTempTime = DateTime.Now;

                    Debug.Print("Getting DS18X20 Temp - " + this.Address + ", " + _lastTemp.ToString());
                }

Also, the .Range method is just an extension method that returns an arrange of the requested range.

-Valkyrie-MT




#16702 OneWire ALPHA

Posted by Scott Green on 14 August 2011 - 06:04 AM in Beta Firmware and Drivers

FANTASTIC! The One-Wire code in the firmware appears solid to me. I haven't seen any issues with it. Although, I really wanted to see a much simpler and object oriented way of working with 1 wire, so I wrote a wrapper class (called OneWireNetwork) out of CW2's sample. I only tested it with my DS18B20 sensors, but I have more coming soon and hopefully will add classes for them. So, what I did was create a collection class of devices that has a "Discover" method to scan the One-Wire network for devices. I hope this can be the start of a One-Wire framework that will make this the easiest One-Wire platform available. I have attached the code to this post. It is a complete replacement for CW2's OneWireTestApp project from the first post. Also, this example works with 1, 2, 3, or more devices, using parasite power or not.

By using the library, the code gets very simple:

public static void Main()
    {
      // TODO: Change pin according to the actual wiring
      var deviceNetwork = new OneWireNetwork(Pins.GPIO_PIN_D0);
          
      // Interrogate the devices on the network (adding them to the collection)
      deviceNetwork.Discover();

      while (true)
      {
          // Loop through all the discovered devices
          foreach (var aDevice in deviceNetwork)
          {
              Debug.Print("Address: " + aDevice.Address);
              
              if (aDevice is DS18B20) 
                  Debug.Print("Temp: " + (aDevice as DS18B20).Temperature);
          }

          Thread.Sleep(20000);
      }
    }

Output:
1-Wire device present
Multiple devices present
72000002DC320128
B2000002DC405128
54000002DC577D28
Address: 000002DC3201
Temp: 23.375
Address: 000002DC4051
Temp: 23.4375
Address: 000002DC577D
Temp: 23.5
The program '[16] Micro Framework application: Managed' has exited with code 0 (0x0).

Things still to add:
Support for reading and writing to the device memory
Throw Events for device alerts
Robust exception handling
Throw Events for devices being added or removed
Support for a variety of One-Wire devices
Automatic instantiation of classes based on detected device family (should probably use some Reflection here)

I think CW2's firmware should get included into the next Beta. Let's get more people trying to use it...

*** Thanks again to CW2 ***

-Valkyrie-MT



Valkyrie,

I noticed that ever time you call Discover() it causes "foreach (var aDevice in gdeviceNetwork)" to add a new device to gDeviceNetwork...

May be intended, but if you put the discover in a loop, it adds a new device for every 1wire device you have on the network each time you call it. Seems like you should put a CRC check to make sure that the same device is not being added for each call...

FYI: I moved the Discover() call outside the loop, once at the top of Main() and it solved my problem..

Scott...



#16723 OneWire ALPHA

Posted by Scott Green on 14 August 2011 - 11:57 PM in Beta Firmware and Drivers

Not entirely sure I understand your question, so I'll try to answer with some observations/facts.

  • You must have this native driver to directly communicate with 1-wire devices (parasitic or not) with the Netduino (alternatively, you can use components like those from Peter Anderson)
  • With this firmware, I can read from a mix of DS18B20, DS18S20, DS18B20PAR sensors some connected in parasitic mode (only 2 wires - ground and 1-wire signal) and others connected with the 5VDC (non-parasitic). I currently have 5 sensors connected - 3 are not parasitic and 2 are parasitic. That works fine.
  • On occassion, I will get a bad read (think 1 in 50 reads) for whatever reason (possibly because I don't have a MOSFET as recommended), but with the CRC check, you always know, so I handle them easily. And usually, it won't happen twice on the same sensor.

-Valkyrie-MT



Valkyrie,

Can you elaborate on the CRC fix you are using to deal with the bad reads? I am getting some bogus temp readings as well..

Scott...



#16603 OneWire ALPHA

Posted by Scott Green on 11 August 2011 - 03:35 AM in Beta Firmware and Drivers

Sorry for the newb question, but can you tell me where I unzip the files for the example program prior to build and deploy? Firmware installed, just need to know where to put the unziped contents, and the DLL when built. Thanks, Scott...



#16689 OneWire ALPHA

Posted by Scott Green on 13 August 2011 - 05:49 PM in Beta Firmware and Drivers

I'm trying to use the serial port to control a SparkFun serial LCD, and use the OneWire support of this firmware at the same time. I started out using both the DLL included with this release as well as the SerLCD class elsewhere in the forums. When I build either one by themselves, I can either write to the LCD or read 1wire temp sensors, but not both at the same time. I always get an InvalidOperation exception on the serial port open. So, to simplify the equation, I've added the following code to the OneWireTestApp. This just opens the serial port, writes a few lines to it, then starts waiting for button presses to read the temp sensor. I'm getting the same exception on the line lcd.Open(); Anyone else having this problem? public static byte[] getBytes(String message) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); return encoding.GetBytes(message); } public static void Main() { sw1 = new InterruptPort(Pins.ONBOARD_SW1, true, ResistorModes.Disabled, InterruptModes.InterruptEdgeLow); sw1.OnInterrupt += new NativeEventHandler(sw1_OnInterrupt); // TODO: Change pin according to the actual wiring oneWire = new OneWire(Pins.GPIO_PIN_D0); SerialPort lcd; lcd = new SerialPort(SerialPorts.COM1, 9600, Parity.None, 8, StopBits.One); lcd.ReadTimeout = 10; lcd.Open(); byte[] byteme = getBytes("Welcome to Netduino"); lcd.Write(byteme, 0, byteme.Length); byte[] bytes = new byte[1] { 12 }; lcd.Write(bytes, 0, bytes.Length); Thread.Sleep(Timeout.Infinite); }



#16695 OneWire ALPHA

Posted by Scott Green on 13 August 2011 - 07:38 PM in Beta Firmware and Drivers

IMHO the problem is that your oneWire object uses pin D0 that also has alternative function of being RxD of COM1 and it tries to reserve it during its initialization, which results in exception. To resolve the issue, you can use different pin for OneWire, e.g. D2, or switch to COM2 (D2, D3) for serial communication.


CW2, That did it! Thanks!

Scott...



#16599 Netduino Plus Firmware v4.2.0 RC1

Posted by Scott Green on 11 August 2011 - 02:24 AM in Beta Firmware and Drivers

Sorry if this has been asked elsewhere, but is OneWire support included in 4.2.0 RC1 Scott...



#17956 Unable to deploy without disconnect\reconnect USB cable

Posted by Scott Green on 14 September 2011 - 01:02 AM in Netduino Plus 2 (and Netduino Plus 1)

Bump...



#20295 Unable to deploy without disconnect\reconnect USB cable

Posted by Scott Green on 07 November 2011 - 05:27 AM in Netduino Plus 2 (and Netduino Plus 1)

Chris, Has there been any real progress on getting this bug fixed? This first report I see of this on Codeplex was way back in June and it doesn't look like any progress has been made towards resolution. Does the forum software have the ability to take a vote? Seems like it would be good to know how many people are affected by this bug. Scott...



#18108 Unable to deploy without disconnect\reconnect USB cable

Posted by Scott Green on 17 September 2011 - 05:25 AM in Netduino Plus 2 (and Netduino Plus 1)

Got the same problem here with the 4.2RC1, a power cycle of the interface is required before every deploy.



So this is the latest update on this problem from the Codeplex site...

Comments
lorenzte wrote Today at 5:33 PM
Several suggestions are in the hands of SecretLabs to produce a new firmware image.


sagreen83 wrote Today at 5:02 PM
Has any progress been made fixing this bug?


Has the new firmware image been created? If so, does it fix the problem?

Scott...



#17896 Unable to deploy without disconnect\reconnect USB cable

Posted by Scott Green on 12 September 2011 - 04:25 PM in Netduino Plus 2 (and Netduino Plus 1)

Hi Mike,

Are you writing large amounts of info out via Debug.Print? This can happen if the debug output stream is too busy and Visual Studio "can't get a word in edge-wise..."

Otherwise, this might be a good issue to bring up on the netmf.codeplex.com site...a recommendation for something to tweak in the desktop-side SDK.

Chris


Any update on this bug? Looks like they recommended some firmware changes on Codeplex, but thats the last thing I saw that indicated any progress had been made on resolution.

Scott...



#17396 Unable to deploy without disconnect\reconnect USB cable

Posted by Scott Green on 01 September 2011 - 04:35 PM in Netduino Plus 2 (and Netduino Plus 1)

I am running the 4.1.1 Onewire ALPHA firmware, and I have the same problem. Every time I want to move code over the the netduino I have to unplug USB power to get it to send the code over. I hit the reset button but it doesnt help. Interesting thing though. Seems like it should be completely unrelated, but this problem seems to happen more often the larger your code gets. When I first got my new netduino it was working fine with small programs, now I am up to the point where I only have about 20k free memory and I have the problem every time I try to debug or deploy. I'm hoping that the 4.2 release helps. Scott...



#17683 Unable to deploy without disconnect\reconnect USB cable

Posted by Scott Green on 06 September 2011 - 04:31 PM in Netduino Plus 2 (and Netduino Plus 1)

Hi Scott,

If you erase your current app (using the Erase button in MFDeploy), do you have the same deployment issue?

Unfortunately, it seems like this is an issue specific to certain computer hardware. If you can consistently reproduce it with the latest .NET MF 4.2 release, please post a bug report on netmf.codeplex.com.

Chris


Spent all of the long weekend coding / debugging. Probably spent more time unpluging the Netduino+ than I actually did debugging and coding.

Erasing the app seems to work about 50% of the time. Again, I'm running the 4.1.1 Onewire Alpha firmware. I'd love to try the 4.2 RC but I've not seen a onewire build for that version yet. Couple of questions:

1) Not sure what everyone means by blue screen of death. Are you talking about the PC BSODing when you unplug, or the Netduino? Not sure how the netduino BSODs, but I know what a PC BSOD is, and that is not happening to me. Basically what happens is that the deployment just freezes. I have to unplug / replug the netduino 2 or more time to get it to work. Question: Is the 4.2 update causing the PC to BSOD on usb unplug during deployment? If so, I definately dont want to add more frustration to the process to have to reboot every time I change 1 line of code during a debug session.

2) Is there still additional data that is needed from users to resolve this problem? I see quite a bit of back and forth on Codeplex, but I do not see any mention of having everything that is needed to solve the issue.

Scott...



#17425 Unable to deploy without disconnect\reconnect USB cable

Posted by Scott Green on 02 September 2011 - 04:02 AM in Netduino Plus 2 (and Netduino Plus 1)

So I read all of the comments on CodePlex. Are they not able to recreate this problem? I can recreate it 100% of the time. I can never deploy my current app without having to unplug the USB cable and replug. It happens every time. This bug is so obvious I dont understand why they cant re-create it if that is the problem. Such a pain in the butt. Scott...



#17627 Honeywell HIH-4030 Humidity Sensor

Posted by Scott Green on 06 September 2011 - 02:28 AM in Project Showcase

PhantomTypist,

I want to run my sensor on +5v. Can you tell me how you arrived at the values you used for zeroVoltage as well as 2.1582 and 0.004426 in the maxVoltage calculation? Would love to figure out how to apply these to +5V

Thanks,
Scott...

This is code for the Honeywell HIH-4030 humidity sensor (SparkFun SKU: SEN-09569).

Please note that the sensor is supposed to be used with 5v input, but it works just fine with 3.3v input because the output is linear.

The code below is tailored to 3.3v input.

    /// <summary>
    /// Honeywell HIH-4030 humidity sensor (SEN-09569). 
    /// Please note that the sensor is supposed to be used with 5v input, 
    /// but it works just fine with 3.3v input because the output is linear.
    /// The code below is tailored to 3.3v input.
    /// </summary>
    public class HIH4030 : IDisposable
    {
        private AnalogInput _sensor;
        private bool _disposed;

        protected virtual void Dispose(bool disposing)
        {
            // Check if Dipose has already been called.
            if (!_disposed)
            {
                if (disposing)
                {
                    _sensor.Dispose();
                    _disposed = true;
                }
            }
        }

        ~HIH4030()
        {
            Dispose(false);
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this); // tell the GC not to finalize.
        }

        public HIH4030(Cpu.Pin analogPin)
        {
            _sensor = new AnalogInput(analogPin);
            _sensor.SetRange(0, 3300);
        }

        /// <summary>
        /// Calculates the relative humidity with temperature compensation.
        /// </summary>
        /// <param name="temp">Current temperature in Celsius.</param>
        /// <returns>Returns the relative humidity as a percentage.</returns>
        public double RelativeHumidity(float temp)
        {
            // Get the humidity sensor reading.
            int sensorReading = _sensor.Read();

            // Calculate the humidity sensor voltage.
            double sensorVoltage = (((double)sensorReading / 3300) * 3.3);

            // Define the voltage the sensor returns at 0% humidity.
            double zeroVoltage = 0.528;

            /* It has been observed that some sensors are consistently 
             * inaccurate and off by a certain voltage than what they 
             * should be.  Use this variable to compensate for what the 
             * voltage should be if needed. */
            double calibrationVoltage = 0.00;

            /* Determine the maxium voltage of the sensor with 
                temperature compensation. */
            double maxVoltage = (2.1582 - (0.004426 * temp));

            /* Determine the temperature compensated relative humidity 
                as a percentage. */
            double rh = ((sensorVoltage + calibrationVoltage - zeroVoltage) / maxVoltage) * 100;
            
            return rh;
        }
        
    }




#18093 UPDATE: Fixed for RC3 -- New Bug discovered in Socket.Connect Method!

Posted by Scott Green on 16 September 2011 - 04:58 PM in Beta Firmware and Drivers

Michael, Dan:

You are precisely correct. :) The RTM was scheduled to ship on Monday of this week so we decided it wouldn't make sense to have an RC2 for a week only to replace it by the RTM version. Also, the new AnalogPort/AnalogInput class was still being changed post-RC2 and we wanted that to settle before we integrated in the SAM7X-specific code.

We're going to build an "RC3" firmware to match the .NET MF 4.2 firmware...to make sure that users don't experience any BSOD issues. This should be the first "release-quality" 4.2 firmware. From there, we'll take input from users and get things ready for an official 4.2 firmware release (and pull in the new PWM and AnalogInput objects). We may do a few RCs until the community tells us that we're good to go--but that process should go pretty quickly.

I'm excited about 4.2. In addition to VB support and GC bugfixes, there are also new features and networking enhancements. Thanks to the testing and feedback of the NETMF community, this will likely be the highest quality NETMF release to date.

Chris



Have they fixed the "unplug the USB / replug the USB" everytime you want to deploy bug?

Scott...



#17869 Honeywell HIH-4030 Humidity Sensor

Posted by Scott Green on 11 September 2011 - 08:44 PM in Project Showcase

Ok, whatever works.

FYI, I have a HIH-5030 and HIH-4030 running side by side at 3.3 volts. Reporting same results. HIH-4030 datasheet says that because they can't guarantee that it will work running at 3.3 volts. I've been running them indoors and outdoors side by side since June 2011 and haven't seen any issues.

As to temperature compensation, yes, I have them temperature compensated. Otherwise you won't be able to get accurate relative humidity readings either way you look at them.



I have mine working @ 5 volts now. I dont use the netduino analog inputs. I am using a DS2450 Quad D/A converter between the humidity sensor and the netduino running the 1-wire firmware.

Also, I've found that the 5 volts on the netduino is crazy noisy. I put an o-scope on the 5 volt line out of the netduino, and it had .5 volt dips about every 20us. The ripple that was on the 5 volt line was causing huge swings in voltage coming out of the sensor. I switched to a 7805 voltage regulator and the humidity is not swinging all over the place.

Scott...



#17177 Netduino+ WeatherStation / Environment Monitor / Webserver

Posted by Scott Green on 28 August 2011 - 04:52 AM in Project Showcase

Hi Scott,

Where did you get the board mount wire holders (what I assume to be the function of the green and orange wire blocks in the last picture)? I have been looking for something that will hold some wires that are moved often a bit tighter than just plugging them into the breadboard directly.


Bought them from Sparkfun. http://www.sparkfun.com/products/10655 They also have screw terminals, but these work pretty good...

Scott...



#21264 Netduino+ WeatherStation / Environment Monitor / Webserver

Posted by Scott Green on 02 December 2011 - 05:59 PM in Project Showcase

Scanman, Super sorry about the reply delay. I totally missed your question. The weather station is pretty much done from a hardware perspective. I've attached 2 pictures, 1 of the disassembled final product, and one of the assembled weather monitor. What you are seeing is the monitoring hardware / home station. This consists of a circuit board that acts like a shield on the netduino. External to this box are an internal temp probe, an external box (outside) with Humidity, temp, Barometric pressure, and light level. There is also a weather station connection that provides wind speed, wind direction and rainfall. This monitor broadcasts packets to a dedicated windows server that tracks all of the weather statistics and provides a web based interface to the weather station. On the box is an LCD, LED and a Momentary switch. The LED blinks once for every revolution of wind, so I can visually see the wind speed from across the room. We routinely get 75mph winds where I live. The momentary pushbutton cycles through various LCD screens that give me instant access to all of the immediate weather stats. This was certainly a fun project. Probably pretty aggressive to take on as the 1st project with the netduino, but I had a great time doing it. Figured out how to create circuit boards on my CNC router which is a huge win for me! This will open up a whole new world of projects in the future. The DS1820 temp probes work well. I have no complaints about them at this point. You have to do some calibration between them, cause you will find that each one has slightly different temp readings, plus you have to make sure that you compensate for bad CRC values, and some bogus temp readings that you get from time to time. All in all, they are pretty easy to use with the 4.1.1 Alpha firmware. The one device that I am not happy with is the humidity sensor (Sparkfun). I've not found a super accurate way to read these things. The calculation requires a Zero humidity voltage reference value, and the only way you can get that is if you order it with the chip specific data sheet, and sparkfun does not supply that. Also, I get bogus reading from it all of the time. I think I can improve the logic to isolate the bogus readings, by ignoring huge second over second swings, but havent found a way to fix the reference problem. I'll keep hacking. Scott...

Attached Thumbnails

  • 20111125_162618.jpg
  • 20111125_162643.jpg



#18167 Netduino+ WeatherStation / Environment Monitor / Webserver

Posted by Scott Green on 18 September 2011 - 10:24 PM in Project Showcase

More progress... Created a circuit board for the Light Sensor, Humidity, Temp and Barometric pressure... Attached pictures. Video of Circuit Board being created by CNC machine Bummer, cant upload any pictures cause they are 2mb, and apparently we have a 5mb global limit to uploads... Scott...



#18090 Netduino+ WeatherStation / Environment Monitor / Webserver

Posted by Scott Green on 16 September 2011 - 04:48 PM in Project Showcase

Well found the source of the problem... I had 2 of them... 1) I added a small web server to display instant stats of all things weather with the project. If you bang it really hard it crashes. Just like a web site DOS attack. I had port 80 open to the internet and someone was pinging me. Closed the port in the router, and fixed the lockup. 2) After I fixed #1 it was still sending updates to the socket server, but it was not sampling new data anymore. I was stumped, then remembered that the push to the socket server wakes up on a timer thread every 1 second to send the data. Put it into debug mode overnight. The main thread died with a "Divide by Zero" error, and the timer thread was just humming along every second. The divide by zero was cause I rolled over an Int16 to -1, added 1 and did an average calculation. Resulted in zero, and that was the problem. Now the weather station is pumping data without lockups to the socket server. Over the weekend, I'm hoping to get some progress made making a circuit board for the outside parts (Humidity, Light, Temp and Barometric Pressure). The quest continues... Scott...



#17897 Netduino+ WeatherStation / Environment Monitor / Webserver

Posted by Scott Green on 12 September 2011 - 04:37 PM in Project Showcase

Making decent progress on the WeatherStation. Originally I was wanting to do all of the code on the Netduino, but got to the point where I was running out of memory. So, now I use the netduino to gather the sensor data and push it via a socket connection to a socket server app running on another PC. This push happens once per second. The server creates an XML file that contains one minute averages for all of the sensor data. I can pull this XML file into excel to see trends for all of the data points. I am logging: Wind Speed, Wind Direction, Rainfall, Inside Temp, Outside Temp, Barometric Pressure, Humidity and Light Level. Should be enough to do some cool weather monitoring. Running into a problem on the Netduino side. After about 6-7 hours of monitoring sensors, the netduino locks up and quits sending data to the server. It locks up to the point that its not accepting any interrupts anymore as well. I know this because I have an LED that fires every 1/2 revolution of the windspeed sensor, and it quits blinking. Not sure what is going on at this point, but I have narrowed it down to the point that I am reading from one of my onewire devices. Scott...



#18209 Netduino+ WeatherStation / Environment Monitor / Webserver

Posted by Scott Green on 19 September 2011 - 06:46 PM in Project Showcase

Got the PCB finished. I put it on the end of a 20 foot cat 5 cable and am having some problems. The board interfaces with the netduino on I2C and 1 Wire. I2C seems pretty stable, but the 1 wire device (Quad A/D) is causing problems. The netduino will only intermittantly recognize anything on the 1wire bus with the board plugged in (Another local 1 wire device is on the breadboard that is not recognized when the board is plugged in). Sometime it works after complete power cycle, but it gets random junk back. I'll figure it out, but expected it to work cause I have other 1 wire devices that are on the end of 50' cables using Parasite power with no prob (hooked to PC). Scott...




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.