b4.6.2
This is another tiny release to address an issue when connecting to a WiFi network that resulted in a CannotStartNetworkInterface
exception that was affecting a small percentage of boards.
Updating
This release requires a Meadow.OS firmware update (follow steps here), no IDE or Meadow.CLI updates are necessary.
b4.6.1
This is a tiny release that fixes what we broke in b4.6.
Something went wrong with our b4.6 release build and we broke WiFi scanning and System.Net.Socket
calls. Oops. Those are fixed now.
Updating
This release only requires an OS/ESP update from b4.6.
b4.6
This is another huge release with some awesome new network stack goodies as well as tasty other improvements, including:
HttpListener
Support - You can now turn your Meadow into a web server withHttpServer
.- Maple Web Server - Introducing Maple Server for Meadow; an ultra-lightweight RESTful Web API server.
TextDisplayMenu
- Meadow.Foundation now has a new library calledTextDisplayMenu
that allows for easy menu creation and interaction.- Antenna Switching - We've exposed an API to switch between the onboard and external antenna.
- Battery Voltage - You can now read the battery voltage from Meadow.OS.
- Better Connection Errors - Failed WiFi connections will now give more information.
Updating
This is release requires an OS update, and nuget updates so make sure to pull the latest packages in your project after updating your Meadow board.
Meadow.OS
Battery Level API
The current battery charge level can be obtained via the GetBatteryLevel()
API available on the Device
class:
float voltage = Device.GetBatteryLevel();
For more information, see the BatteryLevel application sample in the Meadow.Samples repo.
Network Updates
HttpListener
, HttpServer
, and Various Bug Fixes
HttpListener
is now operational, which among other things, enables HttpServer
and, in general, running a web server on Meadow.
API Update (breaking change)
The Device.WiFiAdapter.Connect
has been updated to a Task
returning async
method. This is a breaking change and you'll now need to await
calls to the Connect
method.
Antenna Switching API
You can now switch between the onboard chip antenna and an external antenna hooked up to the µ.FL connector:
Device.SetAntenna(AntennaType.External);
See the Antenna Switching Sample app for more information.
Introducing Maple Server for Meadow
Maple server is an ultra-lightweight RESTful Web API server made specifically for Meadow that has native support for JSON. It enables easy remote interaction and control with Meadow over http.
And for a real world sample application, check out the On-Air Sign project that uses Maple Server to show a message on an LED matrix display to make sure no one walks in on your meetings.
TextDisplayMenu
Library
The TextDisplayMenu
library is an extensible framework for quickly creating hierarchical, editable menus that can display on a CharacterDisplay
or a graphics display via GraphicsLibrary
.
The menu can be created programmatically or loaded from JSON, and has a number of built-in menu item types for display and editing input including: time, temperature, and numbers. Additionally, you can easily create custom menu item types that allow users to edit their value via the inputs.
Other Meadow.Foundation Improvements
- MicroGraphics Gets two new fonts ideal for lower resolution displays: 4x6 & 6x8 pixels per character
- MicroGraphics Also gets a couple handy helper APIs:
MeasureText
returns aSize
in pixels of text for a given font, andGraphicsPath
now has aBounds
property that returns the size of the path in pixels - Apa102 driver now derives from
DisplayBase
so it can be used withGraphicsLibrary
to draw primitives and text when configured as a color pixel display - TftSpi color display drivers receive a performance optimization when clearing the screen, a small but noticeable improvement
New Drivers
- Sensors.Temperature.MCP9808 - A high accuracy I2C temperature sensor, perfect for when you need accuracy greater than +/- 0.5 degrees
- Sensors.Weather.WindVane - Driver for wind vanes that outputs variable voltage, based on the azimuth of the wind.
Bug Fixes
- Hx8357d display driver in
TftSpi
- fixed a bug, will now renderer correctly (tested with an Adafruit 320x480 display) - Adafruit 128x32 OLED FeatherWing driver is fixed catching it up with the latest
PushButton
improvements - AnalogTemperatureSensor fixed a math bug, again returns correct temperatures
b4.5
Ooooooooweeeee! This is a real star of a release, with some major new functionality and performance fixes. It's the culmination of a lot of work that has been percolating for a long time. Big things include:
- SSL/TLS - That's right,
Https://
, mi amigo(a)s! - 10x Network Performance - We found some low-hanging fruit and were able to provide a network boost of typically 10x, and for some things, much faster.
- Meadow.Foundation - Some nice new features for drawing paths, API cleanups, and new drivers.
Updating
This is a full-stack release and will require an OS update, nuget updates, IDE extensions, and CLI updates.
Note, to update the Meadow.CLI, run the following from a command line:
dotnet tool update Wildernesslabs.Meadow.CLI --global
Network Fixes
Network is the real shining gem of this release, with major new features and improvements across the board.
SSL/TLS/Https Support
This is the first whack at TLS/SSL support, and basic https
requests should work. Note that all SSL certificates are accepted and none of the certificate management APIs have been wired up.
10x Network Performance
On average, network performance has been increased by 10x, and for some stuff it's even faster. This should bring network operations into a generally acceptable performance range for most use cases. There is still much more optimization opportunities here that we'll be exploring in the future.
API Cleanup
We cleaned up and simplified some of the Network connect APIs.
Network Known Issues
- All SSL Certificates Accepted - Right now, there is no SSL certificate validation or management. Meadow will accept all SSL certificates, so use at your own risk.
- IP Address, Subnet mask, MAC Address
Several properties of the ESP32 WiFi connection are now available through the WiFiAdapter
class. Note that you must be connected to an access point before some of these properties are available.
Meadow.CLI
We fixed an issue in the Meadow.CLI where it would randomly disconnect. --KeepAlive
should now work reliably.
Meadow.Foundation
We've added some new capabilities to the µGraphics
library. It now includes APIs to draw paths. And with it brings several new types: GraphicsPath
, Point
, Rect
, and Size
.
PushButton - We've simplified the API and now made it easier to setup when using external pull up/down resistors.
TSL2591 Light Sensor - Added Lux calculations along with properties for visible, infrared and full spectrum light readings.
We've also made enhancements to several drivers other drivers including: AnalogTemperature
, Mcp230x8
, and Ds323x
.
New Drivers
- TB67H420FTG Motor Driver - First draft of a driver for Toshiba's TB67H420FTG high power motor driver. Basic H-Bridge functionality with overcurrent notifications work.
Bug Fixes
- Network adapter always returned success even when there was a problem.
b4.4
This is another minor release with a handful of fixes and stabilizations:
- Meadow.Foundation - Project housekeeping and bug fixes.
DigitalInputPort
- Fixed strange behavior on interrupts whenGlitchFilter
andDebounce
was set to0
.- ESP32 Startup - Fixed an issue where the device needed to be unplugged and replugged in to restart the ESP32.
Updating
This is a full-stack release and will require an OS update, nuget updates, IDE extensions, and CLI updates.
Note, to update the Meadow.CLI, run the following from a command line:
dotnet tool update Wildernesslabs.Meadow.CLI --global
Meadow.Foundation
We did a housekeeping pass through the Meadow.Foundation project, cleaning up folders and projects, making naming consistent, etc.
We also drafted some scripts to validate drivers and improve the publishing and documentation workflow moving forward.
Drivers
- Adafruit Datalogger - Integrated community contributions to update (thanks Bruce!).
- MicroGraphics Library - Minor updates and bug fixes.
- Adafruit MPRLS Sensor - This was previously finished, but wasn't published. We discovered it during housekeeping.
- Yx5300 MP3 player - Also previously finished but unpublished.
- Analog Temperature Sensor - Fixed
xM35
calibration/calculation and refactored/simplified the code.
b4.3
This is a minor release with a big performance boost! Up until now, our Meadow.OS builds have had lots of debug stuff turned on. We turned most of that off, which has increased performance across a number of features, with some features getting big performance boosts. For instance, SPI has a 6x throughput improvement, speeding up graphics display updates.
Updating
This release requires an OS update as well as IDE extension and Meadow Nuget updates (including the Meadow.CLI package).
Note, to update the Meadow.CLI, run the following from a command line:
dotnet tool update Wildernesslabs.Meadow.CLI --global
Features
Major features and fixes include:
- Meadow.OS Release build - With performance upgrades across many features.
- Interrupt & PushButton Fix - We've done some more work around
DigitalInputPort
interrupts, and hopefully have the Meadow.FoundationPushButton
fixed once and for all. - CLI/Deployment Fixes - We've streamlined and stabilized app deployments to Meadow, which should help both using the Meadow CLI and the Visual Studio extensions
- VS4Mac Fixes - The VS Mac extension experience is much better with the recent CLI improvements, this release a also improves Meadow detection when using USB hubs
Meadow Foundation Updates
This release sees a much needed code repro cleanup and refactoring, improved comments, and some code consistency updates.
It also includes some general improvements and bug fixes:
TextDisplayMenu
- multilevel menus can now be created programmatically as well as using JsonµGraphics
- Stroke works withDrawHorizonalLine
andDrawVerticalLine
µGraphics
- Negative line length values now properly draw in the opposite directionTftSpi
fixedClearScreen
method - Now works.Apa102
constructor cleanup - Removed unneeded GPIO pin.
Bug Fixes
- #127 - MeadowOS.Reset fails - This was a regression introduced while implementing the Watchdog timer. It should be working again.
b4.2
This is a big release with a ton of stability fixes, an overhaul of the CLI, and big new features for networking. Major changes and improvements include:
- Meadow.OS Flashing from CLI - We pulled the Meadow.OS firmware uploading out of the Visual Studio IDE and moved it into the CLI for a more unified and reliable Meadow.OS upload experience. Check out the updated guide.
- WiFi Enumeration Fix - You can now enumerate WiFi networks without having to first connect to a Network.
- Faster, More Reliable OS Startup - Meadow.OS startup is more robust and better handles a mismatch between co-processor firmware or runtime version.
- Exceptions on Reflection.Emit(ted) code work - Exceptions via code that was executed from
Reflection.Emit()
now work properly. Previously they would tear down the .NET runtime. - WiFi Memory Leak Fixed - Network requests no longer leak memory.
- Networking Server Methods -
UdpClient
,TcpListener
andTcpClient
are all working now. Note that we're still working onHttpListener
. - Meadow.OS Watchdog Timer - You can now use the hardware watch timer, which will automatically restart the device in case of an application hang.
- Meadow.Foundation
GraphicsLibrary
Upgrades - The Graphics Library available in Meadow.Foundation got some serious performance upgrades, as well as the ability to runTextDisplayMenu
on any graphics display (as well asCharacterDisplay
s).
Meadow.Foundation
GraphicsLibrary
Updates
We improved performance for all displays using GraphicsLibrary
with additional performance for color Tft displays.
GraphicsLibrary
also includes several new and improved APIs including:
- Support for 12bpp (RGB444) display buffers which reduces frame buffer memory
- Center and right text alignment when calling
DrawText
InvertPixel
andInvertRectangle
methods which are great for drawing cursors
New Drivers
- Audio.Mp3.Yx5300 (serial MP3 player)
- Sensors.Atmospheric.AdaFruitMPRLS (ported pressure sensor)
- Sensors.Motion.Mag3110 (3-axis magnetometer)
- Sensors.Environmental.AnalogWaterLevel
- Displays.Ssd1327 (4bpp greyscale OLED)
- Additional TFT SPI Display Drivers:
Bug Fixes
- #118 - Interrupt events not unhooking - Fixed.
- [#116 - System.Net.Sockets.SocketException (0x80004005): Access denied on creating Socket](System.Net.Sockets.SocketException (0x80004005): Access denied on creating Socket) - Fixed as part of the new network work.
- #109 - CLI Uplink percentages > 100% - Fixed as part of the CLI overhaul.
b4.0.1
This release focuses on stability and ease of use, and it comes with a couple of major improvements:
- Expanded set of Meadow Base Class Libraries! Meadow is now shipping with a complete set of BCLs. This means you can now access libraries such as
System.Numerics
,System.Transactions
andSystem.Json
. This not only greatly extends the .NET API surface available to Meadow, but it also means that 3rd library compatibility is drastically improved now that Meadow includes many common dependency libraries. - Nugets are easier to consume. When you add a Nuget package to your project, the Meadow Visual Studio extension will now automatically resolve and include any necessary base class library (BCL) dlls. So for instance, when you add
System.Text.Json
, the extension will pull in the required dlls that it needs from our Meadow.Assemblies Nuget package and make sure they get deployed to the board. No more “Can’t find [x].dll” messages. - Deployment is much more reliable. We also did a bunch of work on the extensions to better integrate with the Meadow.CLI. Deployment is now not only more reliable, but we’ve reduced the random disconnects that were happening after an app was deployed, and VS was listening for application output.
- Flashing from VS for Windows works again. We were also able to fix the bug that we had in Visual Studio for Windows that prevented Meadow.OS from being flashed correctly. A number of customers were seeing an “unspecified network error,” after upgrading to b4.0, so we had to disable the automatic Meadow.OS upload and required manual flashing to upgrade. No more! Now you can easily upgrade Meadow.OS from Visual Studio again. Note that Mac users still have to flash manually, as that feature isn’t currently possible in VS4Mac.
Meadow.Foundation
This release also includes a couple of new drivers:
Analog.WaterLevel
is driver that represents common analog water level sensors to detect both the presence and depth of water.Audio.Mp3.Yx5300
is an MP3 player controlled over serial. It's now possible to add sound effects or music to your Meadow project.
Updating
This release only requires IDE extension and Meadow nuget updates.
b4.0
W000t, b4.0 is here! This is a major release with a pile of new features and improvements, including our first cut of WiFi networking support as well as file system support! All in, this release includes:
- Basic WiFi Networking
- Basic File System
- Serial Port Fixes
- CLI/USB deployment overhaul
- Garbage Collector Improvements
Updating
This release requires an OS update as well as IDE extension updates. We recommend updating on a Windows machine in Visual Studio if you have access to one, but the manual steps for macOS and Linux are provided as well.
Windows instructions
Note: Due to a bug in the VS for Windows IDE Extension, you must update manually in order to get WiFi networking working.
Post-build
A bug in msbuild is causing System.Net.Http.dll
to not copy to the Output Directory. A temporary workaround is to add a post-build step to the project by adding the following to your csproj file within the Project
node:
<Project Sdk="Meadow.Sdk/1.1.0">
...
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy C:\Users\[YOUR_FOLDER]\.nuget\packages\wildernesslabs.meadow.assemblies\0.3.2\lib\net472\System.Net.Http.dll $(OutDir)" />
</Target>
</Project>
Manual Update Instructions
Follow along with the Meadow Getting Started guide to get the latest Meadow.OS binaries, the beta CLI, and the Meadow network binaries.
Unzip everything to a common folder, the instructions below assume the OS and network binaries are in the same folder and the CLI is in a Meadow.CLI
subfolder relative to the OS binaries.
Open a terminal window and execute the following steps. Please note that if you don't have DFU-Util installed, you can find instructions on how to install it here.
- Connect Meadow in normal mode
- Disable mono (may need to run twice if you get an exception the first time).
mono ./Meadow.CLI/Meadow.CLI.exe -s /dev/tty.usbmodem01 --MonoDisable
- Erase flash:
mono ./Meadow.CLI/Meadow.CLI.exe --EraseFlash --KeepAlive
This will take a few minutes. After it says "Bulk erase completed," hit space to exit. - Connect Meadow in bootloader mode (hold down the BOOT button)
- Copy the new Meadow.OS.bin using dfu-util:
dfu-util -a 0 -S [serial] -D Meadow.OS.bin -s 0x08000000
- Reset F7
- Disable mono (may need to run twice if you get an exception the first time).
mono ./Meadow.CLI/Meadow.CLI.exe -s /dev/tty.usbmodem01 --MonoDisable
- Upload new Mono Runtime
mono ./Meadow.CLI/Meadow.CLI.exe --WriteFile Meadow.OS.Runtime.bin --KeepAlive
After "Download success," hit space again. - Move the runtime into it's special home on the 2MB partition
mono ./Meadow.CLI/Meadow.CLI.exe --MonoFlash --KeepAlive
After "Mono runtime successfully flashed," hit space to exit. - Upload the ESP32 bootloader:
mono ./Meadow.CLI/Meadow.CLI.exe --Esp32WriteFile -f bootloader.bin --McuDestAddr 0x1000
- Upload the ESP32 partition table:
mono ./Meadow.CLI/Meadow.CLI.exe --Esp32WriteFile -f partition-table.bin --McuDestAddr 0x8000
- Upload the ESP32 Meadow Comms application:
mono ./Meadow.CLI/Meadow.CLI.exe --Esp32WriteFile -f MeadowComms.bin --McuDestAddr 0x10000
- Reset F7
Meadow.OS Improvements
Networking
Basic WiFi networking is up! Check out our Networking guide for more information!
Networking Known Issues
- SSL not supported - Currently, only unencrypted traffic is supported via HTTP. We're working on TLS support.
HttpServer
not available -HttpClient
has been tested and is fully supported, but we're still working onHttpServer
support.- Network scans require a network connection - Due to a limitation in the API, you must first connect to a WiFi network before attempting a scan.
HttpClient
memory leak - EachHttpClient.Request
incurs a~5k
memory leak on the ESP32 coprocessor, so after a number of requests it will no longer be functional. If requests become unresponsive, a call toDevice.InitWiFiAdapter()
will reset the ESP32 coprocessor and get things running again.
File System
You can now use the System.IO
file system calls to do basic file system operations such as create, open, and delete files on the onboard flash device. For more information, see the File System guide.
Known Issues
- Non-persistent during deployment - Currently, during IDE deployment, all non app-related files are purged from flash. In a near future release, all files within a special app folder will be excluded from file purging. In the meantime, if you need to persist files between app deployment, you can use Meadow.CLI to manually deploy a new app.
Garbage Collector Improvements
Our Garbage Collector work is almost done now; the Mono GC works in most use cases and has been tuned for the Meadow device. We still have an outstanding deadlock to solve, but generally apps should stay alive for hours, days, or weeks, depending on memory allocation.
Other Known Issues
Due to a configuration issue with UARTs that we're investigating, D02
and D05
are pulled HIGH
on Meadow.OS startup. All other pins are pulled LOW
.
Bug Fixes
- #103 - ISerialMessagePort.preserveDelimiter=false leaves null bytes in message data - Added.
- #102 - Need to add a thread
SynchronizationContext
to our main thread - Added. - #101 - SPI Bus speed property read is off by x1000 - Fixed.
- #98 - ISerialPort.Read does not remove bytes from the ReceiveBuffer anymore. - Fixed. This was a regression introduced by some of our
SerialPort
overhaul work inb3.12
.
Meadow.CLI & Deployment Improvements
We did a big rearchitecture of our host comms layer on the Meadow, which is the part of the Meadow.OS stack that handles USB deployment and other CLI tasks. We refactored host comms out of the process that runs Mono and hosts Meadow applications. We also changed how Meadow applications are launched so that the Mono Virtual Machine is in its own isolated process.
The upshot of this is that deployment should be more reliable and a crashing Meadow app shouldn't tear down the host communications.
Meadow.Foundation
Meadow.Foundation has new peripheral drivers to play with, including:
Minor update on SG90 Servos
We adjusted the frequency for the SG90 micro servos that comes in the hack kit, so when using the NamedServoConfigs.SG90
enum, you will see the servos wont twitch when using Rotate To(int degrees)
and have full 180 degree range;
Updates on Graphics Library
We also added and improved several APIs in the Graphics Library including the ability to draw quadrants and rounded rectangles.
CharacterDisplay now supports I2C
If you have an LCD character display comes with an I2C backpack, you can now instantiate a CharacterDisplay object passing an II2cBus, reducing eight Digital IO pins to just two for I2C.