CTO and co founder of THEORIS, Thierry Joubert is working on embedded systems design and real time software since the early 80's. In parallel with his missions of expertise for industrial companies, he and his team at THEORIS organise courses and technical seminars in engineering schools and universities. In year 2011, Thierry co-authored a book on Windows Embedded Compact 7.
I just received an Azure Sphere MT3620 Development kit this week and I was curious to test it.
I already have VS 2017 installed on my Win10 machine, so the preparatory work was only to install the dedicated "Azure Sphere package", which is pretty light and provides you with an Azure Sphere console (hello 80's).
The manipulations on the MT3620 Development kit start with a system update, and the definition of tenant for the card. Beware at this level because a company or scolar subscription to office365 is required (valid tenants must be in an AD) and once the tenant is set, it cannot be changed. I used my professional office365 login and registered succesfully as my board's tenant.
Once the conncetion established with the tenant's account, development and debug is quite straightforward using Visual Studio 2017 dedicated templates and tools.
One point to note: This is the first time I use Visual Studio to develop for a linux platform !!
I developped several systems based on ESP8266, but this chip has a low power consuption called "Deep Sleep".
I decided to run a simple test application which would measure Temperature and humidity every hour and to uplad the data to an Azure database. How long would it last ?
The test was quite disapointing as it ran for about a week on a 500 Mah battery. A quick analysis showed that most of the energy was not drained by the ESP8266 chip itself but by the battery adapter shield!!
I modified my circuit to add a low power timer cutting the current before the shield... and the device could then run for three month.
I recently received an MXCHIP IoT DevKIT and I experimented the Azure connectivity functions available in the Arduino library for this platform.
The "DevKit -Get Started" section of the github gives detailed description of each step:
I'll summarize the actions I had to perform to establish an MQTT exchange between my MXCHIP board and Azure IoT Hub:
I first installed two tools on my machine:
- Ardunio IDE
- Visual Studio Code
VS Code contains all specific entries required to handle Azure functions, which are not in the Arduino IDE, moreover it is a pretty efficient IDE compared to Arduino.
Two extensions must be installed in VS Code: "Azure IoT Workbench" and "Arduino". Then the specific platform for the MX board must be installed from Arduino Board manager.
At this point I had all the tools to build and run the GetStarted applicat ...
My Azure watering system has been running for almost seven month now, after a long period of analysis I got all elements stable early january 2018.
The Azure data recorded since then shows the following behavior:
The top graph indicates watering time in value of 100ms, big bars correspond to manual watering.
Bottom graph shows daily measurement for three pots (Red, Green, Blue), plus local temperature (Orange).
We can draw some conclusions from this graph:
1 - Plants don't need much water in winter...
2 - Humidity measurement is definitely correlated to Temperature (red pot got frozen in march)
3 - Each pot has a specific behavior, and therefore needs a special algorithm
It is now worth pushing this data to Azure Machine Learning to draw the watering laws - before summer !!
I ordered a bunch of ESP8266 modules in November and I have been developing applications since then with the available environments:
1 - Arduino IDE
2 - MicroPython
3 - Native SDK
Arduino IDE is great because it allowed me to re-use the code I wrote to access Azure through REST for my Azure Watering System.
Having both WiFi and a low power MCU I decided to build a Wireless station to monitor Humidity and Temperature and report to Azure.
Several SSIDs may be included in the program, therefore this monitoring device may be used inside and in the surroundings of my home - connected through home WiFi, or anywhere if I connect through my 3G+ phone.
The actual challenge for a Wireless station is to be REALLY wireless, this means running on battery. I used a 400MAh 1S LiPo I had in stock to see how long it would run between recharge.
The actual setup is as follows:
This includes more than the ESP8266 and DHT11 shield (in the back) and Battery (in front),
1 - The display and resistors are used to measu ...
WiFi modules have become way more accessible since a few years, and prices are going down fast.
Starting from the work done on a student's project, I used the tiny RedBear Duo to build an Azure connected weighs.
Well... from the top it is an "off the shelf" weighs, the interesting part comes when you turn it upside down:
The main job was to connect the existing four sensors to a dedicated HX711 amplifier circuit (bottom left, small PCB).
Then an LCD display was added to interact with the user (bottom left, large PCB)
The weighs has four capacitive buttons which were also connected (botton left, blue wires)
The original power supply was replaced with a stronger 5V with a switch. (top left and center)
The ReaBear board is the brain of the weigths, it has all I/O interfaces plus WiFi connection to report to Azure.
In addition to indicating weight, the system provides a clock from the Azure connection. Measures are pushed to a dedicated Azure table, and provides a good following for indi ...
After three weeks of humidity measurement, Azure data shows the following behavior:
I expected to see straight lines for sensors blue and green as they are in test tubes.
The measurement is not random though because:
1 - The fully immerged sensor (blue) gives higher values than the half immerged (green).
2 - Green and blue follow exactly the same pattern
3 - Red sensor which is in a pot, shows similarities in its evolution.
I copied local temperatures history from the same period from the Web and compared the two graphs on a day per day basis:
It is obvious that my "sensor in a test tube" is a pretty good thermometer!!
In order to know the humidity of my pots, I need to correlate sensors information with local temperature and add some filtering mechanisms.
I added a DHT11 Temperature and Humidity sensor to the Azure Watering system (another option would be to get it from the cloud...)
Now my Azure watering system has been running for a few weeks and I can use collected data to undestand how it behaves.
The data on Azure lead to the following graphs:
The big watering bars correspond to manual watering, from this graph I understand several key points:
1 - Humidity level should be maintained between 50 and 300
2 - Cooler temperatures in November have minimized evaporation ...or plants consumption
3 - The humidity variation during a day may be important compared to the interval given before
4 - All humidity sensors seem to follow an identical pattern, but my pots are not identical!!
To know more about humidity Sensors, i will modify the configuration, two sensors will be installed in test tubes, one completely immerged and the other one half immerged .
With this 100% stable configuration and Azure data recording, I expect a clarification on humidity measurement.
My Azure watering system did work by itself during my vacation, and thanks to Azure recorded data I know a bit more about humidity and watering.
The data history shows an unexpected behavior:
Water has been pumped everyday in the pots without raising the level of humidity, the big bars on september 10th (300) correspond to manual watering. I also noticed that water was spilled under the pots, meaning that it was going through the soil - totally inefficient!! Also the correaltion of Azure data with real world showed that a humidity level of 200 was perfectly suitable for my trees.
Now I'm ready to modify the program and watering plan:
1 - I must be able to control the levels and timings remotely, I added a "parameter" table in Azure
2 - I must make four measures per day because humidity values shown are unstable
My watering system monitored withAzure is now fully operational for three plants.
The connected computer is an Educake from ICOP, it measures three sensors and is able to pump water individually in each pot.
The system is connected to a timer socket progammed to wake up once a day. The information reported to Azure by the Educake contains humidity and watering time for each pot.
This configuration has been running for a week and Azure data allows me to calibrate the watering parameters. Unplanted sensor (dry) gives a 1024 value, and fully dipped sensor gives a 400 value.
As I'm checking humidity, I decide to reverse the scale : 600 = watered - 0 = dry, one week of recording shows the following graph:
Now Let's go to vacation!...
Re: Azure Sphere - Hands on!!
-- David Jones
Re: Windows Phone 7 first impressions
Yes, I was referring to local Outlook synchronization. Exchange Server synching is definitely provided...
-- James Y. Wilson
The lack of Outlook synchronization is indeed surprising. I am assuming you were expecting synchronization...