Πίνακας περιεχομένων:

Attiny85 Termómetro OLED: 5 βήματα
Attiny85 Termómetro OLED: 5 βήματα

Βίντεο: Attiny85 Termómetro OLED: 5 βήματα

Βίντεο: Attiny85 Termómetro OLED: 5 βήματα
Βίντεο: ATtiny13 и ATtiny85. Обзор и программирование с помощью Arduino 2024, Δεκέμβριος
Anonim
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED

Αυτό το προϊόν αποτελείται από μια απλή ένδειξη της πραγματικής θερμοκρασίας, που σχετίζεται με τη θερμοκρασία. Puede realizarse con un ATmega328p, pero lo interesante de esta versión es utilizar un ATtiny85 cuyo tamaño y καταναλώνοντας de batería convergen en un dispositivo pequeño y portátil.

Μια συνέχιση που περιγράφει τη λειτουργία, επιλέγει το κύκλωμα και την τελική εκτέλεση των προγραμμάτων και των συνολικών σχολίων του γενικού έργου.

Προμήθειες

1 x ATtiny85

1 x Arduino UNO/PRO/etc (programador del ATtiny)

1 x 128x64 pantalla I2C OLED

1 x Αισθητήρας θερμοκρασίας DHT22

1 x Resistencia 4.7MOhm (1/4W)

1 x Πυκνωτής electrolítico 0.1uF

1 x Fuente de 3.3V - 5V 10+ x άλτες

Βήμα 1: Περιγραφή Del Funcionamiento

El objetivo del proyecto es mostrar los tres valores anteriormente mencionados en la pantalla OLED, además, como objetivo secundario, e incluido el uso de la librería sleep.he interrupt.h para activar el termómetro manualmente y así reducir el καταναλώνω παράταση la batería.

Ενημερωτικό πρόγραμμα για την επεξεργασία της διαδικασίας: Leer temperatura -> Mostrar temperatura en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.

Para cada uno de estos pasos dejaremos la Mayor parte del trabajo a las librerías ya existentes, por lo que no reinventaremos la rueda. Ελεύθερη βιβλιοθήκη αισθητήρων DHT από το Adafruit (disponible en el IDE) και το Tiny4kOLED για δεδομένα που είναι διαθέσιμα για το Github ya que, από parecer, el autor original es datacute y, además, necesitaremos modificarla un poco luego.

El método de reinicio puede ser tanto un botón como dos placas metálicas que se tocan para encender el equipo. Στο προσωπικό του περιβάλλον, ο χρήστης μπορεί να ελέγξει τη λειτουργία του με τις αλληλεπιδράσεις.

Βήμα 2: Circuitos

Circuitos
Circuitos
Circuitos
Circuitos
Circuitos
Circuitos

Ενσωματωμένη εικόνα για το κύκλωμα που απαιτεί το πρόγραμμα ATtiny85. Primeramente se debe programar al Arduino (el capacitor debe estar desconectado) con el sketch ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el capacitor para evitar que nuestro Arduino se reinicie al programar el ATtiny85.

El ATtiny se puede alimentar directamente del Arduino. Εν ολίγοις, μπορείς να χρησιμοποιήσεις τη δύναμη που θέλεις να κάνεις και να κάνεις ένα σύμπλεγμα με μάσκα (GND) del Arduino και el ATtiny85.

Colocar un botón entre el pin 13 del Arduino y el 2 del ATtiny puede διευκολύνοντας το hacer pruebas ya que la pantalla no puede estar conectada cuando se programa al ATtiny.

Como se observva en las imágenes. El pin SDA del ATyiny es el 0 y el SCL/CLK es el 2. Nuestro DHT está conectado en el pin 4.

Βήμα 3: Προγραμματισμός

Πρωταρχική, δημοφιλής επιλογή "Arduino as ISP" como el programador. Για να μην προμηθευτείτε την πλατφόρμα για το ATtiny, προτείνουμε την εγκατάσταση ATtinyCore de Spence Konde. Esta placa no me generó ningún problema compilación durante la realización del proyecto.

Μπορείτε επίσης να ρυθμίσετε τις παραμέτρους του BOD, να ενεργοποιήσετε τη λειτουργία 8MHz στο εσωτερικό και το OptiBoot. Για χρήση 1MHz για την επικοινωνία του I2C δεν είναι δυνατή σε 16MHz σε εξωτερική εξωτερική μονάδα, προσφορές για ψηφιακές συσκευές, πολύ ενεργειακά χρήσιμα σημαντικά στοιχεία.

Cabe destacar que he modificado un archivo en la librería Tiny4kOLED. El archivo modificado es "font8x16.h" y he cambiado la línea 117 por el siguiente código con el fin de cambiar el símbolo ~ por ° que usaremos en ° C.

0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

Συνεχίζοντας το σκίτσο που χρειάζεται για το πρότυπο.

#include #include #include #include #define I_PINB PCINT3 #define I_PIN PB3 #define I_VECTOR PCINT0_vect #define adc_disable () (ADCSRA & = ~ (1 << aden)) disable = "" adc = "" #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t πλάτος = 128; const uint8_t ύψος = 64; πτητικό bool γύρισε = false; / * * * Διακοπή χειρισμού * */ISR (PCINT_VECTOR) {// η διακοπή ανακάμπτει πάντα από τον ύπνο εάν (digitalRead (I_PIN) == HIGH) {turn = true; // ρυθμίστε τη σημαία να ξανασχεδιάσει την οθόνη ξανά}} void setup () {cli (); // απενεργοποίηση διακοπών PCMSK | = (1 << I_PINB]; GIMSK | = (1 << PCIE]; pinMode (I_PIN, INPUT); sei (); // ενεργοποίηση διακοπών adc_disable (); // εξοικονόμηση ενέργειας απενεργοποιώντας τον μετατροπέα set_sleep_mode (SLEEP_MODE_PWR_DOWN). // ρυθμίστε τον τύπο ύπνου σε βαθύ ύπνο oled.begin (πλάτος, ύψος, μέγεθος (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // εκκίνηση λαδωμένου αντικειμένου oled.setFont (FONT8X16); // αυτή η γραμματοσειρά φαίνεται καλύτερη από την άλλη drawScreen (); oled.on (); καθυστέρηση (2000). dht.begin (); μετατράπηκε = αλήθεια? // σημαία για σχεδίαση οθόνης} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (turn) {cli (); // απενεργοποίηση διακοπών oled.on (); float h = dht.readHumidity (); // false read για επαναφορά dht cache καθυστέρησης (2200); // περιμένετε dht για φόρτωση h = dht.readHumidity (); float t = dht.readTemperature (); float i = dht.computeHeatIndex (t, h, false); oled.setCursor (55, 1); oled.print (t); oled.print ("~ C"); oled.setCursor (55, 3); oled.print (h, 0); oled.print ("%"); oled.setCursor (55, 5); oled.print (i); oled.print ("~ C"); // το σύμβολο ~ άλλαξε στη βιβλιοθήκη για να μοιάζει με καθυστέρηση συμβόλου βαθμού ° (5000). // εμφάνιση για 5 δευτερόλεπτα oled.off (); γύρισε = ψευδές? sei (); // επισύναψη διακοπών ξανά} ύπνος (); // πάνε πάντα για ύπνο στο τέλος} void drawScreen () {// σχεδιάζει το πλαίσιο και το κύριο κείμενο για (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); για (uint8_t x = 0; x <128; x += 2) {oled.sendData (0b10101010); oled.sendData (0b01010101); } oled.endData (); } oled.setCursor (0, 0); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000101, πλάτος - 2); oled.sendData (0b11111111); oled.endData (); για (uint8_t y = 1; y <(ύψος - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, πλάτος - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (ύψος - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, πλάτος - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Temp:"); oled.setCursor (4, 3); oled.print ("Hum:"); oled.setCursor (4, 5); oled.print ("Sens:"); }

Βήμα 4: Συμπεράσματα

Συμπεράσματα
Συμπεράσματα
Συμπεράσματα
Συμπεράσματα

A pesar de su tamaño infignificante, el ATtiny85 ofrece una amplia gama de aplicaciones en las que podemos implementar este controlador de bajo costo sin perder funcionalidad. Personalmente no esperaba que fuera potible incluir el control de pantalla y de sleep juntos debido a las limitaciones de memoria. Dichozamente, el programa ha entrado en nuestro ATtiny

Υπαρχουν otras librerías para las pantallas OLED. Ελεύθερη GFX de Adafruit δεν μου επιτρέπουν τη συλλογή για την απόφασή μου να προχωρήσουμε σε προδιαγραφές για το ATtiny, αλλά υπάρχουν ελεύθερες δυνατότητες και λύσεις που είναι ενδιαφέρουσες για τον εξερευνητή

El Consumo del dispositivo es muy bajo. Λαμβάνοντας υπόψη τη σταθερή τιμή, μπορείτε να υπολογίσετε τη μπαταρία των 3000mAh (NiMH o LiIon) και 500 ημερών. El Consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, αλλά no lo he takerado necesario

Según Technoblogy.com el ATtiny puede operar en un Consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido un καταναλώνει δήμαρχος που αντιστοιχεί σε de segunda imagen. El Consumo de la batería Continúa siendo lo suficientemente bajo como para ser un proyecto factible

Βήμα 5: Σύνδεσμοι Y Lecturas Relacionados

www.technoblogy.com/show?KX0&fbclid=IwAR0qu…

github.com/SpenceKonde/ATTinyCore

www.electroschematics.com/am2302-dht22-dat…

ww1.microchip.com/downloads/el/DeviceDoc/A…

embeddedthoughts.com/2016/06/06/attiny85-i…

www.instructables.com/id/ATtiny85-Interrup…

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

Συνιστάται: