Weight-Based Coffee Grander with Blynk App
Make your stupid coffee grinder smart with this IoT and weight-based coffee grinder modification.
Components and supplies
1
Capacitor 100 µF
Apps and platforms
1
Blynk
1
Arduino IDE
1
Arduino IDE
1
Blynk
Project description
Code
Code snippet #2
text
1//#define BLYNK_PRINT Serial 2#include <ESP8266WiFi.h> 3#include <BlynkSimpleEsp8266.h> 4#include "HX711.h" 5BlynkTimer timer; 6int relayPin = D5; // Change to suit your board. 7 8// HX711 circuit wiring 9const int LOADCELL_DOUT_PIN = D2; // Change to suit your board. 10const int LOADCELL_SCK_PIN = D1; // Change to suit your board. 11 12HX711 scale; 13//Blynk project auth. 14char auth[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 15// Your WiFi credentials. 16// Set password to "" for open networks. 17char ssid[] = "YOUR-SSID"; 18char pass[] = "YOURPASS"; 19 20BLYNK_WRITE(V0) { scale.tare(); // Strain sensor tare 21} 22BLYNK_WRITE(V2){ 23 if (param.asInt()) { 24 digitalWrite(relayPin, HIGH); // Relay ON. 25 } else { 26 digitalWrite(relayPin, LOW); // Relay OFF. 27 } 28} 29BLYNK_WRITE(V3) { 30 Blynk.virtualWrite(V2, 0); 31 digitalWrite (relayPin, LOW); // Grinder interupt (Emergecy stop), Relay OFF. 32} 33int slider; 34BLYNK_WRITE(V11) 35{ 36slider = param.asInt(); // Assigning incoming value from pin V11 (Slider value) to a global variable. 37} 38 39void setup() { 40 41 Serial.begin(57600); 42 Blynk.begin(auth, ssid, pass, "192.168.254.110", 8080); 43 scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN); 44 scale.set_scale(1040.f); 45 timer.setInterval(500L, HX711data); // .5 sek delay to unstress the server and stabalize readout on numeric widget @ V1. 46 timer.setInterval(60L, HX711relay); // 60ms delay ono to keep fast stop grinder response and not overshoot grinding to much. 47 digitalWrite(relayPin, LOW); // To make sure grinder doesn't start running during boot. 48 pinMode(relayPin, OUTPUT); 49 BLYNK_CONNECTED(); 50 Blynk.syncAll(); 51} 52void HX711data() 53{ 54 Blynk.virtualWrite(V1, scale.get_units(20)); // sending calibrated strain sensor value to Blynk value widget. 55} 56void HX711relay() 57{ 58 if (scale.get_units(20) >= (slider-0)) { 59 Blynk.virtualWrite(V2, 0); 60 digitalWrite(relayPin, LOW); //Relay OFF change the (slider-0.0) number in seconds with one decimal to compensate if grinder overshoot "Grinder calibration". 61} 62} 63void loop() 64{ 65 Blynk.run(); 66 timer.run(); 67} 68
Code snippet #2
text
1//#define BLYNK_PRINT Serial 2#include <ESP8266WiFi.h> 3#include <BlynkSimpleEsp8266.h> 4#include "HX711.h" 5BlynkTimer timer; 6int relayPin = D5; // Change to suit your board. 7 8// HX711 circuit wiring 9const int LOADCELL_DOUT_PIN = D2; // Change to suit your board. 10const int LOADCELL_SCK_PIN = D1; // Change to suit your board. 11 12HX711 scale; 13//Blynk project auth. 14char auth[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 15// Your WiFi credentials. 16// Set password to "" for open networks. 17char ssid[] = "YOUR-SSID"; 18char pass[] = "YOURPASS"; 19 20BLYNK_WRITE(V0) { scale.tare(); // Strain sensor tare 21} 22BLYNK_WRITE(V2){ 23 if (param.asInt()) { 24 digitalWrite(relayPin, HIGH); // Relay ON. 25 } else { 26 digitalWrite(relayPin, LOW); // Relay OFF. 27 } 28} 29BLYNK_WRITE(V3) { 30 Blynk.virtualWrite(V2, 0); 31 digitalWrite (relayPin, LOW); // Grinder interupt (Emergecy stop), Relay OFF. 32} 33int slider; 34BLYNK_WRITE(V11) 35{ 36slider = param.asInt(); // Assigning incoming value from pin V11 (Slider value) to a global variable. 37} 38 39void setup() { 40 41 Serial.begin(57600); 42 Blynk.begin(auth, ssid, pass, "192.168.254.110", 8080); 43 scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN); 44 scale.set_scale(1040.f); 45 timer.setInterval(500L, HX711data); // .5 sek delay to unstress the server and stabalize readout on numeric widget @ V1. 46 timer.setInterval(60L, HX711relay); // 60ms delay ono to keep fast stop grinder response and not overshoot grinding to much. 47 digitalWrite(relayPin, LOW); // To make sure grinder doesn't start running during boot. 48 pinMode(relayPin, OUTPUT); 49 BLYNK_CONNECTED(); 50 Blynk.syncAll(); 51} 52void HX711data() 53{ 54 Blynk.virtualWrite(V1, scale.get_units(20)); // sending calibrated strain sensor value to Blynk value widget. 55} 56void HX711relay() 57{ 58 if (scale.get_units(20) >= (slider-0)) { 59 Blynk.virtualWrite(V2, 0); 60 digitalWrite(relayPin, LOW); //Relay OFF change the (slider-0.0) number in seconds with one decimal to compensate if grinder overshoot "Grinder calibration". 61} 62} 63void loop() 64{ 65 Blynk.run(); 66 timer.run(); 67} 68
Downloadable files
Arduino scetch
Use with Arduino IDE more info and latest version @ https://www.stockholmviews.com/wp/weight-based-coffee-grinder-with-blynk-app
Arduino scetch
Comments
Only logged in users can leave comments