Hardware components | ||||||
| × | 1 | ||||
Software apps and online services | ||||||
| ||||||
|
Azure Sphere - Arduino & Linux applications - PlatformIO
OS Windows 10 ( only )
- Arduino applications for Cortex-A7
- Wiring ( Arduino ) applications for Cortex-M4 ( in progress )
- Linux applications ( as original SDK )
- Baremetal applications ( as original SDK )
- Sysroot 2+Beta1905 (current max version)
- Board AES-MS-MT3620-SK-G by Avnet
- Developer "hack" ALL Linux C API functions
Project at GitHUB: https://github.com/Wiz-IO/platform-azure
Demo movie: https://www.youtube.com/watch?v=tIwjUzBBPTg
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
PlatformIO 2019 Georgi Angelov
https://github.com/Wiz-IO
http://www.wizio.eu/
OPEN: 'platformio.ini' and edit your settings
OPEN: 'src/app_manifest.json' and enter your 'Capabilities'
*/
#include <errno.h>
#include <signal.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include "applibs_versions.h"
#include <applibs/gpio.h>
#include <applibs/log.h>
#include "epoll_timerfd_utilities.h"
static volatile sig_atomic_t terminationRequired = false;
static int epollFd = -1;
int main(int argc, char *argv[])
{
Log_Debug("Azure Sphere PlatformIO 2019 WizIO\n");
while (!terminationRequired) {
if (WaitForEventAndCallHandler(epollFd) != 0) {
terminationRequired = true;
}
}
Log_Debug("End\n");
return 0;
}
#include <Arduino.h>
#include <applibs/networking.h>
#include <wifiClient.h>
wifiClient cc;
/*
Chrome - MQTTLens
https://chrome.google.com/webstore/detail/mqttlens/hemojaaeigabkbcookmlgmdigohjobjm?hl=en
Nick O'Leary Library http://knolleary.net
*/
#include <PubSubClient.h>
PubSubClient mqtt("iot.eclipse.org", 1883, cc); // https://iot.eclipse.org/getting-started/
int led_state = 0;
void callback(char *topic, byte *payload, unsigned int length)
{
Serial.printf("[MSG] <%s> %.*s\n", topic, length, payload);
}
void reconnect()
{
while (!mqtt.connected())
{
Serial.println("[MQTT] Connecting to Eclipse...");
char client_id[64];
snprintf(client_id, 64, "WIZIO_%d", millis()); // create unique id
Serial.printf("[MQTT] ClientID: %s\n", client_id);
if (mqtt.connect(client_id))
{
Serial.println("[MQTT] Connected");
mqtt.publish("wizio/output", "Hello world");
mqtt.subscribe("wizio/input");
}
else
{
Serial.printf("[ERROR] MQTT Connect: %d", (int)mqtt.state());
delay(10000); // Wait reconnect
Serial.println("[MQTT] Reconnecting");
}
}
}
void setup()
{
Serial.begin(115200);
pinMode(LED_GREEN, OUTPUT);
Serial.println("\nAzure Sphere 2019 Georgi Angelov");
Serial.println("Arduino - PubSub - PlatformIO");
Serial.println("Azure Sphere MT3620 Starter AES-MS-MT3620-SK-G by Avnet");
Serial.println("Waithing WIFI");
bool outIsNetworkingReady = 0;
if (Networking_IsNetworkingReady(&outIsNetworkingReady) < 0 && 0 == outIsNetworkingReady)
{
Serial.print(".");
digitalWrite(LED_GREEN, led_state);
led_state ^= 1;
delay(100);
}
mqtt.setCallback(callback);
}
void loop()
{
static int t = 0;
if (!mqtt.connected())
reconnect();
mqtt.loop();
if (0 == t % 100)
{
digitalWrite(LED_GREEN, led_state); // blink toggle
led_state ^= 1;
}
}
#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display;
void TEST_OLED()
{
Serial.println("[APP] OLED TEST");
display.begin(SSD1306_SWITCHCAPVCC, 0x78 >> 1); // 7-bits
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(" Arduino");
display.setTextColor(BLACK, WHITE);
display.println(" Azure ");
display.println(" Sphere ");
display.setTextSize(1);
display.setTextColor(WHITE, BLACK);
display.println();
display.println(" WizIO 2019");
display.display();
}
void setup()
{
Serial.begin(115200);
Serial.println("\nArduino Azure Sphere 2019 Georgi Angelov");
TEST_OLED();
}
void loop()
{
Serial.println("[APP] LOOP");
delay(10000);
}
Comments