User Tools

Site Tools


discover

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
discover [2023/01/19 12:44] briandiscover [2023/01/19 14:57] (current) brian
Line 23: Line 23:
  
 Abbiamo collegato il sensore di temperatura al microcontrollore utilizzando i pin appropriati. Abbiamo collegato il sensore di temperatura al microcontrollore utilizzando i pin appropriati.
-Abbiamo scritto il codice utilizzando l'ambiente di sviluppo integrato (IDE) per acquisire i dati dal sensore di temperatura e visualizzarli sull'applicazione del telefono. 
  
-<file ino temperatura.ino>+Ora scriviamo il codice utilizzando l'ambiente di sviluppo integrato (IDE) per acquisire i dati dal sensore di temperatura e visualizzarli sull'applicazione del telefono. 
 + 
 +<code ino [enable_line_numbers="true"temperatura.ino> 
 +// 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 "********" 
 +#define BLYNK_DEVICE_NAME "********" 
 +#define BLYNK_AUTH_TOKEN "********" 
 + 
 // Comment this out to disable prints and save space // Comment this out to disable prints and save space
-inserisco il file da scaricare +#define BLYNK_PRINT Serial
-</file>+
  
-<code - temperatura.ino>+#define DHTPIN 13 
 +#define DHTTYPE DHT22  // DHT 22  (AM2302), AM2321
  
 +#include <Wire.h>
 +#include <ESP8266WiFi.h>
 +#include <ESP8266HTTPClient.h>
 +#include "DHT.h"
 +#include <BlynkSimpleEsp8266.h>
 +
 +
 +char auth[] = BLYNK_AUTH_TOKEN;
 +
 +// Your WiFi credentials.
 +// Set password to "" for open networks.
 +char ssid[] = "********"
 +char pass[] = "********"
 +
 +
 +float temperatura = 0;
 +float umidita = 0;
 +
 +DHT dht(DHTPIN, DHTTYPE);
 +
 +
 +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);
 +  /*
 +  // Clear the terminal content
 +  terminal.clear();
 +
 +  // This will print Blynk Software version to the Terminal Widget when
 +  // your hardware gets connected to Blynk Server
 +  terminal.println(F("Blynk v" BLYNK_VERSION ": Device started"));
 +  terminal.println(F("-------------"));
 +  terminal.println(F("Type 'Marco' and get a reply, or type"));
 +  terminal.println(F("anything else and get it printed back."));
 +  terminal.flush();
 +  */
 +  dht.begin();
 +}
 +
 +void loop() {
 +  Blynk.run();
 +
 +  temperatura = dht.readTemperature();
 +  Serial.print("temperatura: ");
 +  Serial.println(temperatura);
 +  umidita = dht.readHumidity();
 +  Serial.print("umidita: ");
 +  Serial.println(umidita);
 +
 +
 +  Blynk.virtualWrite(V4, temperatura);  //  Set Virtual Pin 0 frequency to PUSH in Blynk app
 +  Blynk.virtualWrite(V5, umidita);      //  Set Virtual Pin 1 frequency to PUSH in Blynk app
 +
 +  delay(5000);
 +}
 +
 +</code>
 +
 +Registriamoci sulla console di Blynk (per chi conosceva già questa soluzione di recente è migrata su una console online, il vecchio progetto ora è conosciuto come Blynk Legacy)
 +
 +{{blynk_console.png}}
 +
 +e dall'app configuriamo i nostri widget
 +
 +{{blynk.jpg}}
  
 Abbiamo progettato il case utilizzando un software di modellazione 3D e lo abbiamo stampato utilizzando una stampante 3D. Abbiamo progettato il case utilizzando un software di modellazione 3D e lo abbiamo stampato utilizzando una stampante 3D.
 {{20230116_143451.jpg}} {{20230116_143451.jpg}}
  
 +**Risultato finale**
  
 +{{termometro.jpg}}
  
 **Possibili evoluzioni** **Possibili evoluzioni**
Line 42: Line 122:
 Questo progetto è da valutare come uno spunto per progetti più ampli. Questo progetto è da valutare come uno spunto per progetti più ampli.
 Sicuramente ci sono decine di evoluzioni / migliorie semplici che si possono applicare a questo semplice progetto, come ad esempio un'alimentazione indipendente (creo un case che preveda una spazio per una batteria), oppure inserisco un display invece (o in aggiunta) dell'invio dei dati alla mia applicazione. Sicuramente ci sono decine di evoluzioni / migliorie semplici che si possono applicare a questo semplice progetto, come ad esempio un'alimentazione indipendente (creo un case che preveda una spazio per una batteria), oppure inserisco un display invece (o in aggiunta) dell'invio dei dati alla mia applicazione.
-Posso creare un trigger che se rilevo una temperatura troppo alta (60°C ad esempio) mi avvisa tramite una notifica. Così come sostituire il sensore di temperatura con uno di movimento+Posso creare un trigger che se rilevo una temperatura troppo alta (60°C ad esempio) mi avvisa tramite una notifica. Così come sostituire il sensore di temperatura con uno di movimento
 + 
 +Inoltre è possibile non utlizzare la console Blynk (limitata senza un abbonamento), ma installarci localmente il vecchio Blynk (Blynk Legacy) e modificare il nostro file ino per puntare sul nostro server locale. 
 + 
 +{{display.jpg}} 
 + 
 +Un esempio di codice può essere il seguente 
 +<code ino [enable_line_numbers="true",highlight_lines_extra="9,30"] temperatura_LCD_localServer.ino> 
 + 
 +//LCD+DHT22+Blynk locale 
 +#include <Wire.h> 
 +#include <LiquidCrystal_I2C.h> 
 +#include <ESP8266WiFi.h> 
 +#include <ESP8266HTTPClient.h> 
 +#include "DHT.h" 
 +#include <BlynkSimpleEsp8266.h> 
 + 
 +LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display 
 + 
 +#define DHTPIN 13 
 +#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321 
 + 
 +const char* ssid     = "*************"; 
 +const char* password = "*************"; 
 +const char* auth = "*************"; 
 + 
 + 
 +float temperatura = 0; 
 +float umidita = 0; 
 + 
 +DHT dht(DHTPIN, DHTTYPE); 
 + 
 +void setup() 
 +
 +  lcd.init();  //initialize the lcd 
 +  lcd.backlight();  //open the backlight 
 + 
 +  //Blynk.begin(auth, ssid, password); 
 +  Blynk.begin(auth, ssid, password, IPAddress(192,168,1,4), 8001); 
 +   
 +  Serial.begin(115200); 
 +  dht.begin(); 
 +  
 +   
 +
 + 
 +void loop() 
 +
 + 
 +  Blynk.run(); 
 +   
 + 
 +  temperatura = dht.readTemperature(); 
 +  Serial.print("temperatura: "); 
 +  Serial.println(temperatura);   
 +  umidita = dht.readHumidity(); 
 +  Serial.print("umidita: "); 
 +  Serial.println(umidita);   
 + 
 +  
 +  String stringOne = "Temp C  "; 
 +  String stringTwo = stringOne + temperatura; 
 + 
 + 
 +  lcd.setCursor(0, 0); // set the cursor to column 3, line 0 
 +  lcd.print(stringTwo);  // Print a message to the LCD 
 + 
 +   stringOne = "Hum  %  "; 
 +   stringTwo = stringOne + umidita; 
 +   
 + 
 +  lcd.setCursor(0, 1); // set the cursor to column 3, line 0 
 +  lcd.print(stringTwo);  // Print a message to the LCD 
 + 
 +  Blynk.virtualWrite(V0, temperatura);               //  Set Virtual Pin 0 frequency to PUSH in Blynk app 
 +  Blynk.virtualWrite(V1, umidita);               //  Set Virtual Pin 1 frequency to PUSH in Blynk app 
 +   
 +  delay(5000); 
 +
 +</code>
  
discover.1674128672.txt.gz · Last modified: 2023/01/19 12:44 by brian