Goody for Building IoT in Munich 25. - 27. April 2023.
GPIO | Pin | Function |
---|---|---|
GPIO0 | D3 | Button / SW1 |
GPIO2 | D4 | LED Green |
GPIO15 | D8 | LED Blue |
GPIO16 | D0 | LED Red |
All components can be ordered at http://reichelt.de
Order Number | Description | ||
---|---|---|---|
D1 | 1 | LED LL 5-8000RGBRGB-LED | 5 mm, bedrahtet, 4-Pin, rt/gn/bl, 8000 mcd, 25° |
SW1 | 1 | TASTER 3301 | Kurzhubtaster 6x6mm, Höhe: 4,3mm, 12V, vertikal |
U1 | 2 | MPE 087-1-008 | Stiftleisten 2,54 mm, 1X08, gerade |
R4 | 1 | 1/4W 10K | Widerstand, Kohleschicht, 10 kOhm, 0207, 250 mW, 5 |
R1-3 | 3 | 1/4W 300 | Widerstand, Kohleschicht, 300 Ohm, 0207, 250 mW, 5% |
1 | ESD BEUTEL-S 127 | ESD PE-Abschirmbeutel, wiederverschließbar, 76 x 127 mm |
- Bend the wires of the resistors by 90°
- Put the resistors through the holes (R4 is 10k while R1-3 is 330 Ohms)
- Bend the wires by 30° and cut the pins, so 1mm wire is still visible from the bottom
- Put the tactile button through the holes as described in following picture
- Put the LEDs through the holes with the flatted side pointed in direction of the push button
- Bend the outer wires by 30° and cut all wires, so 1mm wire is still visible from the bottom
- Solder all components
- Solder the pin headers (male) downwards
- Solder the pin headers (female) on top of D1 mini, so the shield can be put on top.
See the latest release at the release page of Github!
Install Firmware:
pip3 install esptool
python3 -m esptool --port /dev/tty.usbserial-1440 --baud 115200 erase_flash
python3 -m esptool --port /dev/tty.SLAB_USBtoUART --baud 115200 write_flash 0x0 firmware-v1.0-esp8266_learning-iot.bin
WiFi-AP: SSID: Accso Learning IoT Key: Accso Learning IoT
URL http://192.168.4.1 http://accso-learning-iot.local
Config-Area: User: admin Password: admin
To initialize the Learning IoT Board requires as parameter the pointer to the web server handling REST-API calls.
LIoTBoard.begin(&webServer);
void LIoTBoard.setLed(String color);
color: Color as string. Can be:
- "black"
- "red"
- "green"
- "yellow"
- "blue"
- "purple"
- "cyan"
- "white"
void LIoTBoard.setLed(bool bRed, bool bGreen, bool bBlue);
bRed: LED red true = on, false = off
bGreen: LED green true = on, false = off
bBlue: LED blue true = on, false = off
bool LIoTBoard.getButtonPressed(void);
returns: true if button pressed and false if button is released
#define LED_RED 16 // D0
#define LED_GREEN 2 // D4
#define LED_BLUE 15 // D8
#define BUTTON 0 // D3
void setup(void)
{
pinMode(LED_RED,OUTPUT);
pinMode(LED_GREEN,OUTPUT);
pinMode(LED_BLUE,OUTPUT);
pinMode(BUTTON,INPUT);
}
void loop(void)
{
// blink red LED
digitalWrite(LED_RED,HIGH);
delay(500);
digitalWrite(LED_RED,LOW);
delay(500);
// blink green LED
digitalWrite(LED_GREEN,HIGH);
delay(500);
digitalWrite(LED_GREEN,LOW);
delay(500);
// blink blue LED
digitalWrite(LED_BLUE,HIGH);
delay(500);
digitalWrite(LED_BLUE,LOW);
delay(500);
// wait for button pressed (blocking)
while(digitalRead(BUTTON))
{
delay(1);
}
}
# requires to add liotboard.h and liotboard.cpp to the project
#include "liotboard.h"
void setup(void)
{
LIoTBoard.begin();
LIoTBoard.setLed("red");
}
void loop(void)
{
LIoTBoard.update();
if (LIoTBoard.getButtonPressed())
{
LIoTBoard.setLed("green");
} else
{
LIoTBoard.setLed("red");
}
}
POST data with JSON content /api/status:
- "red": LED Red, allowed values: "true" or "false"
- "green": LED Green, allowed values: "true" or "false"
- "blue": LED Blue, allowed values: "true" or "false"
- "button": Button change overwrite, allowed values: "true" or "false"
GET data as JSON format /api/status:
- "red": LED Red, allowed values: "true" or "false"
- "green": LED Green, allowed values: "true" or "false"
- "blue": LED Blue, allowed values: "true" or "false"
- "button": Button status, allowed values: "true" or "false"
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
# requires to add liotboard.h and liotboard.cpp to the project
#include "liotboard.h"
#ifndef STASSID
#define STASSID "your-ssid"
#define STAPSK "your-password"
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
ESP8266WebServer server(80);
void handleRoot() {
server.send(200, "text/plain", "hello from esp8266!\r\n");
}
void setup(void) {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (MDNS.begin("esp8266")) { Serial.println("MDNS responder started"); }
LIoTBoard.begin(&server);
server.on("/", handleRoot);
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
MDNS.update();
}