Skip to content

14. Interface and application programming

Instruction

individual assignment:

  • write an application that interfaces a user with aninput &/oroutput device that you made → Here

group assignment:

  • compare as many tool options as possible → in this page

What I did in this week

  • Try to use “blynk” as a interface of IoT→ in this page
  • Try to use “App Inverntor” as a interface of iOS and Android App→ in this page
  • Comparison between blynk and App inventor → in this page

Try 1 : Blynk as a interface of IoT

blynk.png

In Detail

  • ESP32-WROOM-32 module soldered to the ESP32-DevKitC V4 board. Optionally, ESP32-WROOM-32D and ESP32-WROOM-32U or the ESP32-SOLO-1 module can be soldered in place of the ESP32-WROOM-32.
  • USB-UART bridgeSingle-chip USB-UART bridge with up to 3Mbps transfer rate.
  • BootDownload button: Press the EN button while holding down the boot button to enter firmware download mode. The firmware can then be downloaded from the serial port.
  • Micro USB portUSB interface Serves as power supply for the board and communication interface between the PC and the ESP module.
  • 5V Power On LED This LED illuminates when USB or external 5V power is applied to the board. For more information, see the schematic in the associated documentation.
  • EN Reset button: Pressing this button resets the system.
  • I/O Most of the I/O pins on the ESP module are split into pin headers on this board. Users can program ESP32 to perform various functions such as PWM, ADC, DAC, I2C, I2S, SPI, etc.

Ref

→ Port did not show up, so I used a board that was in the lab.

When uploading sketch, use slide switch to serial bootloader and press Reset button

  • add Manage Libraries - Blynk

ver 1.0.1

manage_library.png

Code for quickstart

  • Follow the tutorial for a quick start
  • In Arduino IDE, Tools - Manage Libraries… -> Search “Blynk” and Install

qs1.png

qs2.png

/*************************************************************

  This is a simple demo of sending and receiving some data.
  Be sure to check out other examples!
 *************************************************************/

// Template ID, Device Name and Auth Token are provided by the Blynk.Cloud
// See the Device Info tab, or Template settings
#define BLYNK_TEMPLATE_ID           "TMPL5Iq6LyFU"
#define BLYNK_DEVICE_NAME           "Quickstart Device"
#define BLYNK_AUTH_TOKEN            "P8IKQhekfkIEEpxETdFvRTV8av5N4GGO"

// Comment this out to disable prints and save space
#define BLYNK_PRINT Serial

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

char auth[] = BLYNK_AUTH_TOKEN;

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "fablabkannai";
char pass[] = "xxxxxxxxx";

BlynkTimer timer;

// This function is called every time the Virtual Pin 0 state changes
BLYNK_WRITE(V0)
{
  // Set incoming value from pin V0 to a variable
  int value = param.asInt();

  // Update state
  Blynk.virtualWrite(V1, value);
}

// This function is called every time the device is connected to the Blynk.Cloud
BLYNK_CONNECTED()
{
  // Change Web Link Button message to "Congratulations!"
  Blynk.setProperty(V3, "offImageUrl", "https://static-image.nyc3.cdn.digitaloceanspaces.com/general/fte/congratulations.png");
  Blynk.setProperty(V3, "onImageUrl",  "https://static-image.nyc3.cdn.digitaloceanspaces.com/general/fte/congratulations_pressed.png");
  Blynk.setProperty(V3, "url", "https://docs.blynk.io/en/getting-started/what-do-i-need-to-blynk/how-quickstart-device-was-made");
}

// This function sends Arduino's uptime every second to Virtual Pin 2.
void myTimerEvent()
{
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V2, millis() / 1000);
}

void setup()
{
  // Debug console
  Serial.begin(115200);

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);

  // Setup a function to be called every second
  timer.setInterval(1000L, myTimerEvent);
}

void loop()
{
  Blynk.run();
  timer.run();
  // You can inject your own code or combine it with other sketches.
  // Check other examples on how to communicate with Blynk. Remember
  // to avoid delay() function!
}

Arduino

arduino.png

  • When running program in ESP32, use slide switch to execution mode and press Reset button

Congrats / succeed in setting

congrats.png

GPIO pin control

  • assign LED to Pin 13
/*************************************************************

  This is a simple demo of sending and receiving some data.
  Be sure to check out other examples!
 *************************************************************/

// Template ID, Device Name and Auth Token are provided by the Blynk.Cloud
// See the Device Info tab, or Template settings
#define BLYNK_TEMPLATE_ID           "TMPL5Iq6LyFU"
#define BLYNK_DEVICE_NAME           "Quickstart Device"
#define BLYNK_AUTH_TOKEN            "P8IKQhekfkIEEpxETdFvRTV8av5N4GGO"

// Comment this out to disable prints and save space
#define BLYNK_PRINT Serial

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

char auth[] = BLYNK_AUTH_TOKEN;

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "fablabkannai";
char pass[] = "xxxxxxxxxxxx";

BlynkTimer timer;

// This function is called every time the Virtual Pin 0 state changes
BLYNK_WRITE(V0)
{
  // Set incoming value from pin V0 to a variable
  int value = param.asInt();

  //////////////////////////////////////////////////////////////////////////add
  if (param.asInt() == 1) {
    // execute this code if the switch widget is now ON
    digitalWrite(13, HIGH); // Set digital pin 13 HIGH
  }
  else {
    // execute this code if the switch widget is now OFF
    digitalWrite(13, LOW); // Set digital pin 13 LOW
  }

  ////////////////////////////////////////////////////////////////////////added

  // Update state
  Blynk.virtualWrite(V1, value);
}

// This function is called every time the device is connected to the Blynk.Cloud
BLYNK_CONNECTED()
{
  // Change Web Link Button message to "Congratulations!"
  Blynk.setProperty(V3, "offImageUrl", "https://static-image.nyc3.cdn.digitaloceanspaces.com/general/fte/congratulations.png");
  Blynk.setProperty(V3, "onImageUrl",  "https://static-image.nyc3.cdn.digitaloceanspaces.com/general/fte/congratulations_pressed.png");
  Blynk.setProperty(V3, "url", "https://docs.blynk.io/en/getting-started/what-do-i-need-to-blynk/how-quickstart-device-was-made");
}

// This function sends Arduino's uptime every second to Virtual Pin 2.
void myTimerEvent()
{
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V2, millis() / 1000);
}

void setup()
{
  // Debug console
  Serial.begin(115200);

  pinMode(13, OUTPUT); /////////////////////////////////////////////////////add

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);

  // Setup a function to be called every second
  timer.setInterval(1000L, myTimerEvent);
}

void loop()
{
  Blynk.run();
  timer.run();
  // You can inject your own code or combine it with other sketches.
  // Check other examples on how to communicate with Blynk. Remember
  // to avoid delay() function!
}

Arrange Interface

  • Add Switch Status
  • Add history chart

    arrangeinterface.png

arranged interface.jpeg

Install iOS App of Blynk and set up device

blynk_app.PNG

  • can be run from a smart phone
  • can be worked even if not connected to the same Wifi (amazing)

Smartphone - 4G - Blynk Cloud - Wifi - ESP32

Try 2 : App Inventor as a interface of iOS and Android App

appinventor.png

Create the interface

AI_i1.png

  • Connect > AI comparison

    AI_i2.png

  • Scan code

  • Design Mode: put a variety of button on the screen below

    AI_i5.png

  • Block Mode as a logical structure

    AI_i3.png

Build to export apk in Android

  • Build > Android App(apk)

    AI_i4.png

  • Scan QR code and open in Android

inventor1.jpg

inventor3.jpg

inventor5.jpg

inventor6.jpg

Comparison between blynk and App inventor

File

AppInventor_fab.apk


Last update: July 11, 2022