NodeMCU + TM1637 Display
Hello, my name is Alex Polymath. And I'm making cool stuff.
Here is a simple example of NodeMCU + TM1637.
I use it to show statistics for my service - colorize.cc
It's pretty cool when you can make physical dashboard.
The scheme is simple. NodeMCU connects to wi-fi and then make GET request to my server every 10 seconds. Unfortunately it's pain to set up https connection. So I needed to modify my server to output it via http.
#include <ESP8266WiFi.h> // Include the Wi-Fi library
#include <ESP8266WiFiMulti.h>
#include <Arduino.h>
#include <ArduinoJson.h>
#include <TM1637Display.h>
const int CLK = D6; //Set the CLK pin connection to the display
const int DIO = D5; //Set the DIO pin connection to the display
const char* ssid = "wifi network name"; // The SSID (name) of the Wi-Fi network you want to connect to
const char* password = "password wifi"; // The password of the Wi-Fi network
#include <ESP8266HTTPClient.h>
#include <Hash.h>
#define USE_SERIAL Serial
TM1637Display display(CLK, DIO); //set up the 4-Digit Display.
void setup() {
display.setBrightness(0x0a);
Serial.begin(115200); // Start the Serial communication to send messages to the computer
delay(10);
Serial.println('\n');
WiFi.begin(ssid, password); // Connect to the network
Serial.print("Connecting to ");
Serial.print(ssid); Serial.println(" ...");
int i = 0;
while (WiFi.status() != WL_CONNECTED) { // Wait for the Wi-Fi to connect
delay(1000);
Serial.print(++i); Serial.print(' ');
}
Serial.println('\n');
Serial.println("Connection established!");
Serial.print("IP address:\t");
Serial.println(WiFi.localIP()); // Send the IP address of the ESP8266 to the computer
}
void loop() {
if(WiFi.status()== WL_CONNECTED){
WiFiClient client;
HTTPClient http;
//your server address
String serverPath = "http://x.x.x.x";
http.begin(client, serverPath.c_str());
int httpResponseCode = http.GET();
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString();
Serial.println(payload.toInt());
display.showNumberDec(payload.toInt()); //Display the numCounter value;
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
// Free resources
http.end();
}
delay(10000);
}
String httpGETRequest(const char* serverName) {
WiFiClient client;
HTTPClient http;
// Your IP address with path or Domain name with URL path
http.begin(client, serverName);
// Send HTTP POST request
int httpResponseCode = http.GET();
String payload = "{}";
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
payload = http.getString();
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
// Free resources
http.end();
return payload;
}