Trasmissione dati

Buonasera a tutti, sto cercando di assemblare un modulo a basso consumo per trasmettere la temperatura/umidità esterna (con un DHT22 + HC-12) utilizzando Attiny85. Mi sono quindi posto le seguenti domande:

  1. E' possibile mettere in sleep l'Attiny? Purtroppo non sono riuscito a trovare alcuna informazione in rete!
  2. Qual'è la migliore soluzione per l'alimentazione? Una singola pila da 9V ricaricabile (con eventuale circuito di ricarica) e riduzione a 6V ? 4 pile (sempre ricaricabili) da 1.5V in serie? (ma come ricaricarle senza doverle togliere?)

Qualcuno ha suggerimenti?

Saluti
Enrico

per lo sleep dello attiny sono sicuro che si trova info in rete

anche lo HC12 ha metodi a basso consumo

per la tua seconda domanda
io userei 4 stilo ricaricabili con un portapile
per quando si saranno scaricate e' un attimo cambiarle

ciao
Nel mio progetto ci sono 3 moduli con temperatura e umidita' che tramettono quando interrogati
Per la alimentazione ho usato 4 batt 18650 ma non mi sono preoccupato di mandare in sleep tolgo e sostiuisco con quelle cariche
In rete trovi portabatterie con circuito ricarica

https://www.ebay.co.uk/itm/255077052656?hash=item3b63c6f0f0:g:NLAAAOSwt5hfkQOm&amdata=enc%3AAQAIAAAA0OLjsbUfcJArQ3PEfxkUai%2FouWTNVf5iHcHHV1iynFAd1Bw6IjGEVtDreLsR2b0xGfOxmC5KqRcTE6gOg%2Fuqis9a0W4Gfr1rJL1JkKuwJknMsFH5NUoXlkPVz1JD3GoAU31XVTB4xQkcKghTm3icJ5Ryg%2FzydRI8dPH29SifzwsFcmP5b4WthexrGA2yeUV9ibdR%2BRAT1iIC%2BA1Sn1fRzjnTqMZSno41Z%2FTgOTKpOwWZFKugA%2BWIJ7GN3YRWdg40Nb%2Bt0bhBFYF830jqUmM56x0%3D%7Ctkp%3ABk9SR6y4p-GFYg

Come descritto nel datasheet al capitolo 7, tutta la parte di "Power Management and Sleep Modes" è implementate, come in tutte le MCU AVR e, anche l'ATtiny 85, disponde di un Power Reduction Register (Cap. 7.3) per cui ...

... dovresti poter normalmente ultilizzare le funzioni/macro che si trovano nella <avr/power.h> (Power Reduction Management) e che fa parte di AVR libc (libreria sempre disponibile in Arduino per le MCU AVR).

Guglielmo

Grazie a tutti, ma mi è sorta una domanda, è possibile far funzionare lo Hc-12, con quali PIN? Sto provando con: 0/set, 1/RX e 2/TX con AT85 ma non riesco a farlo funzionare!
Saluti
Enrico

…..ovviamente con nano, uno, ecc. lo Hc-12 funziona benissimo

Cosa usi? La SoftwreSerial? Non superare i 9600 bps ...

Guglielmo

Noi lo abbiamo usato con gli stessi PIN e andava

Mostra il programma

Appena Vodafone aggiusta la linea lo metto in rete; è comunque un semplice programmino con un DHT22 su uno dei pin restanti(NON il reset!:smiley:)
Enrico

Come promesso:

//http://alessiobigini.it/2017/03/20/attiny85/
//AT85
//clock internal 8MhZ

#include <SimpleDHT.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(1, 2); //TX, RX

int pinDHT22 = 4;
int t = 0;
int u = 0;
long dato = 0;

SimpleDHT22 dht22(pinDHT22);

void setup() {
  mySerial.begin(9600);

  pinMode(0, OUTPUT);

  digitalWrite(0, LOW);

  mySerial.begin(9600);
  delay(200);
  mySerial.print("AT+B9600");
  delay(200);
  mySerial.print("AT+C020");
  delay(200);
  mySerial.print("AT+P20");
  delay(200);
  mySerial.print("AT+FU3");
  delay(200);

  digitalWrite(0, HIGH); // enter transparent mode
}

void loop() {
  float temperature = 0;
  float humidity = 0;
  int err = SimpleDHTErrSuccess;
  if ((err = dht22.read2(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
    delay(2000);
    return;
  }
  //  Serial.print((float)temperature);
  //  Serial.println(" *C, ");
  t = ((float)temperature) * 10;
  u = ((float)humidity) * 10;
  dato = (t * 1000) + u;

  // delay (1000);
  //  Serial.println(t);
  //  Serial.println(u);
  //  Serial.println(dato);

  mySerial.print(t);
  delay(25000);
  //  delay (1000);
  //  digitalWrite(12, HIGH);
  //    delay(1000);
  //    digitalWrite(12, LOW);
  delay(1000);

}

Non mi sembra vi siano errori evidenti.

Cmq in serata riproverò ricontrollando i collegamenti.

Saluti
Enrico

Sicuro non serva println() ?

Perché, magari ricordo male, ma normalmente i comandi AT vanno terminati da CR/LF ... :roll_eyes:

Guglielmo

EDIT: ... mmm ... effettivamente lo scarno datasheet sembra riportare il CR/LF solo sulle risposte, ma non ne parla nelle richieste ... :roll_eyes:

Altra domanda, che "core" stai usando per gli ATtiny85?

Guglielmo

Utilizzando gli Arduino sicuramente non è necessario, penso ciò sia valido anche per gli Attiny.

Se ho ben capito la domanda uso un Nano 328 old utilizzando i pin 10/11/12/13 sui 0/1/2 e reset dello AT85. Utilizzando il programma ArduinoISP di Randall Bohn.

Enrico

NO, per usare gli ATtiny85 all'interno dell'IDE occorre aver installato un "core", ovvero il ftamework Arduino e le librerie specifiche per quel tipo di MCU, quindi ... che "core" hai installato?

Perché se il "core" non è quello corretto non va bene ... :roll_eyes:

Guglielmo

Ho sempre programmato gli Attiny seguendo questo tutorial; qundi ho installato questo:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

E' quello che chiamate "core"?

Saluti
Enrico

PS: scusate l'ignoranza! Purtroppo sempre più mi accorgo quanto è difficile programmare senza le adeguate basi!

Totalmente obsoleto ed inadeguato ... difficilmente con quello ne esci.

Quello più aggiornato ed attualmente il migliore è QUESTO che, tra l'altro, ha una SoftwareSerial fatta apposta per gli ATtiny.

E' ben documentato, elimina quello vecchio che stai usando e passa al nuovo.

Guglielmo

Grazie

seguo perche' anche io devo programmare un ATTiny85

Mi sorge un dub, dove lo scarico, nelle librerie
? O basta inserirlo nella impostazioni?

Enrico

..o forse basta leggere le istruzioni.

Ciao, Ale.

1 Like