George timmermans
  • About Me
    • Resume
    • Press releases
  • Blog
  • Projects
    • Long Range WiFi Link
    • Embedded Systems >
      • Photo Booth
      • Classroom VU meter
      • USB Media Controller
      • Weather Station
      • Arduino Swimming Pool Controller
      • GRBL Android Controller
      • Arduino Serial Driver
      • Arduino Multitasking
      • 8x8x8 LED Cube
      • Analog -> Digital Geiger Counter
    • 3D Printing >
      • Simplify3d Configuration
      • 3D print repairs
    • Home Brewing >
      • Mead Recipes >
        • Cinnamon Mead
        • Sweet Chili Mead
        • Lemon & Ginger Mead
        • Mead Liqueur
        • Honey Beer
      • Glühwein (Spiced Wine)
      • Limoncello
    • House
    • Toolmaking
    • Laser Cutting
  • Weather Cam
  • Contact

Weather-station Upgrade

14/9/2015

0 Comments

 
Yesterday I finally had the change to go to the repeater station and change out the microprocessor that was reading the sensor data from the weather station and pushing it to wunderground. The reason for the upgrade was that I never intended to use the microprocessor that was in there (Arduino Uno + Ethernet Shield) but I ended up having to use it while I would try and get the Teensy 3.1 hardware working. 

I believe there was a defect in either the Arduino IDE or the Teensy plug-in that caused the etherent library to not function correctly. When I uploaded the same program after installing software updates for the IDE and Teensy plug-in everything worked as expected. 

And I addressed a software defect that resulted in reporting windgust of over 800 km/h every once in a while. I borrowed some code that would read the anemometer pulses and convert it into windspeed and windgust. To catch the rotation of the anemometer an Interrupt Service Routine (ISR) is triggered every time it does a full rotation. I discovered that there was a shared resource that didn't use mutual exclusion when the windspeed was calculated. So in the odd occasion it happened that the windspeed was to be calculated while the variable within the ISR was changed resulting in odd results. Once the cause was identified it was easily solved by adding noInterrupts(); before the calculation and interrupts(); after the calculation to guarantee mutual exclusion.
0 Comments

Your comment will be posted after it is approved.


Leave a Reply.

    Author

    George Timmermans, Research Toolmaker, Software Engineer and Tinkerer

    View my profile on LinkedIn

    Archives

    January 2021
    November 2020
    July 2020
    May 2020
    November 2019
    August 2019
    January 2019
    October 2018
    January 2018
    November 2017
    October 2017
    August 2017
    June 2017
    May 2017
    April 2017
    March 2017
    January 2017
    December 2016
    November 2016
    October 2016
    August 2016
    July 2016
    June 2016
    May 2016
    April 2016
    March 2016
    December 2015
    November 2015
    October 2015
    September 2015
    August 2015

    Categories

    All
    3d Printing
    Photobooth
    Wisp

    RSS Feed

Powered by Create your own unique website with customizable templates.
  • About Me
    • Resume
    • Press releases
  • Blog
  • Projects
    • Long Range WiFi Link
    • Embedded Systems >
      • Photo Booth
      • Classroom VU meter
      • USB Media Controller
      • Weather Station
      • Arduino Swimming Pool Controller
      • GRBL Android Controller
      • Arduino Serial Driver
      • Arduino Multitasking
      • 8x8x8 LED Cube
      • Analog -> Digital Geiger Counter
    • 3D Printing >
      • Simplify3d Configuration
      • 3D print repairs
    • Home Brewing >
      • Mead Recipes >
        • Cinnamon Mead
        • Sweet Chili Mead
        • Lemon & Ginger Mead
        • Mead Liqueur
        • Honey Beer
      • Glühwein (Spiced Wine)
      • Limoncello
    • House
    • Toolmaking
    • Laser Cutting
  • Weather Cam
  • Contact