جدول المحتويات:
- اللوازم
- الخطوة 1: Descripción Del Funcionamiento
- الخطوة 2: الدوائر
- الخطوة 3: البرمجة
- الخطوة 4: الاستنتاجات
- الخطوة 5: الروابط Y Lecturas Relacionados
فيديو: Attiny85 Termómetro OLED: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:37
تتكون هذه الاستنتاجات من حد أقصى للتكيف مع درجات الحرارة البسيطة. Puede realizarse con un ATmega328p، pero lo interesante de esta versión es utilizar un ATtiny85 cuyo tamaño y Consumer batería convergen en unpositivo pequeño y portátil.
وصف مستمر للعملية والتشغيل النهائي للبرامج والأجناس المرتبطة بالعموم.
اللوازم
1 × ATtiny85
1 × Arduino UNO / PRO / إلخ (programador del ATtiny)
1 × 128 × 64 بانتالا I2C OLED
1 × مستشعر درجة حرارة DHT22
1 × ريزيستنسيا 4.7 ميجا أوم (1/4 واط)
1 × مكثف electrolítico 0.1 فائق التوهج
1 x Fuente de 3.3V - 5V 10+ x Jumpers
الخطوة 1: Descripción 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. لا باتيريا.
Nuestro programa se guiará por el siguiente proceso: Leer temperature -> Mostrar temperature en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.
Para cada uno de estos dejaremos la mayor parte del trabajo a las librerías ya presententes، por lo que no renventaremos la rueda. مكتبة مستشعر La librería DHT de Adafruit (disponible en el IDE) y Tiny4kOLED de datacute que descargaremos de Github ya que، al 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 encender el equipo. على المستوى الشخصي ، فإنه يلتقي في مجال عمل لاس بلاكاس metálicas más التفاعلي.
الخطوة 2: الدوائر
En la primer imagen se encuentra el creque que reberimos para programar el 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. En caso de utilizar una fuente de poder como una batería es necesario conectar la masa (GND) del Arduino y el ATtiny85.
Colocar un botón entre el pin 13 del Arduino y el 2 del ATtiny puede simple el hacer pruebas ya que la pantalla no puede estar conectada cuando se programa al ATtiny.
كومو حد المراقبة في لاس فيغاس. El Pin SDA del ATyiny es el 0 y el SCL / CLK es el 2. Nuestro DHT está conectado en el pin 4.
الخطوة 3: البرمجة
Primeramente ، debemos seleccionar "Arduino as ISP" كومو البرنامج. Si aún no han instalado la placa para el ATtiny، recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no me generó ningún problema de compilación durante la realización del proyecto.
La placa debe estar configurada sin BOD ، مع إعادة تشغيل 8 ميجا هرتز داخليًا وخطأ OptiBoot. استخدام 1 ميجاهرتز لاتصالات من خلال I2C no es estable y a 16MHz con cristal externo، además de perder dos pines digitales، el Consumo energético aumenta.
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)) تعطيل = "" adcine = "DHINTP Converter # 4 # تعريف DHTTYPE DHT22 DHT dht (DHTPIN ، DHTTYPE) ؛ عرض ثابت uint8_t = 128 ؛ ارتفاع uint8_t = 64 ؛ تحول منطقي متقلب = خطأ ؛ / * * * Interrupt handler * * / ISR (PCINT_VECTOR) {// المقاطعة دائمًا ما تتعافى من السكون إذا (digitalRead (I_PIN) == HIGH) {turn = true؛ // تعيين العلم لإعادة رسم الشاشة مرة أخرى}} إعداد باطل () {cli ()؛ // إيقاف تشغيل المقاطعات PCMSK | = (1 << I_PINB) ؛ GIMSK | = (1 << PCIE) ؛ pinMode (I_PIN ، INPUT) ؛ سي () ؛ // قم بتشغيل المقاطعات adc_disable () ؛ // حفظ الطاقة إيقاف تشغيل المحول set_sleep_mode (SLEEP_MODE_PWR_DOWN) ؛ // اضبط نوع النوم على النوم العميق oled.begin (العرض ، الارتفاع ، الحجم (tiny4koled_init_128x64br) ، tiny4koled_init_128x64br) ؛ // بدء كائن oled oled.setFont (FONT8X16) ؛ // هذا الخط يبدو أفضل من الآخر drawScreen () ؛ oled.on () ؛ تأخير (2000) ؛ dht.begin () ، تحول = صحيح ؛ // flag for drawing screen} void sleep () {sleep_enable ()؛ sleep_cpu () ؛ } حلقة باطلة () {إذا (تحولت) {cli ()؛ // إيقاف المقاطعات oled.on () ؛ float h = dht.readHumidity () ؛ // قراءة خاطئة لإعادة تعيين تأخير ذاكرة التخزين المؤقت dht (2200) ؛ // انتظر dht لتحميل h = dht.readHumidity () ؛ تعويم t = dht.readTemperature () ، تعويم i = dht.computeHeatIndex (t، h، false) ؛ oled.setCursor (55، 1) ؛ oled.print (ر) ؛ oled.print ("~ C") ؛ oled.setCursor (55، 3) ؛ oled.print (ح ، 0) ؛ oled.print ("٪") ؛ oled.setCursor (55، 5) ؛ oled.print (ط) ؛ oled.print ("~ C") ؛ // تم تغيير الرمز ~ في المكتبة ليبدو وكأنه تأخير رمز درجة درجة (5000) ؛ // عرض لمدة 5 ثوان oled.off () ؛ تحول = خطأ ؛ sei () ؛ // إرفاق المقاطعات مرة أخرى} sleep () ؛ // دائمًا اذهب إلى وضع السكون في النهاية} 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 <(height - 8) / 8 ؛ y ++) {oled.setCursor (0، y) ؛ oled.startData () ، oled.sendData (0b11111111) ؛ oled.repeat البيانات (0b00000000 ، العرض - 2) ؛ oled.sendData (0b11111111) ؛ oled.endData () ، } oled.setCursor (0، (height - 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 insignificante، 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 posible 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. La librería GFX de Adafruit no me permitió compilar por lo que decidí buscar algo precisamente para el ATtiny، pero موجودة otras librerías y soluciones que son interesantes de explorar
El الاستهلاك الخاص بجهاز muy bajo. ضع في اعتبارك أن الاستخدام الثابت ، هو medido y Estimado la vida para una batería de 3000mAh (NiMH o LiIon) en 500 días. يتم تقليل استهلاك الطاقة من خلال تصميم جهاز استشعار وتوجيه جهاز استشعار ، حتى لا يتم التفكير فيه بشكل ضروري
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 Consumo mayor que concee all de la segunda imagen. El Consumo de la batería Contina siendo lo sufactemente 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/en/DeviceDoc/A…
embeddedactts.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup…
www.technoblogy.com/show؟WNM
www.technoblogy.com/show؟2F5D
موصى به:
نجمة عيد الميلاد Neopixel Attiny85 الأكبر والمحسّنة: 3 خطوات (بالصور)
نجمة عيد الميلاد الأكبر حجمًا والمحسّنة Neopixel Attiny85: في العام الماضي صنعت نجمة عيد ميلاد صغيرة مطبوعة ثلاثية الأبعاد ، انظر https://www.instructables.com/id/Christmas-Star-LE..هذا العام صنعت نجمًا أكبر من حبلا عدد 50 نيوبكسل (5 فولت WS2811). كان لهذا النجم الأكبر أنماطًا أكثر (ما زلت أضيف وأتحسّن
تقليل استهلاك طاقة البطارية لـ Digispark ATtiny85: 7 خطوات
تقليل استهلاك طاقة البطارية لـ Digispark ATtiny85: أو: تشغيل Arduino بخلية عملة 2032 لمدة عامين. باستخدام لوحة Digispark Arduino خارج الصندوق مع برنامج Arduino ، فإنها تسحب 20 مللي أمبير عند 5 فولت. 2000 مللي أمبير في الساعة يعمل لمدة 4 أيام فقط
ATtiny85 ساعة تتبع النشاط بالاهتزاز يمكن ارتداؤها وبرمجة ATtiny85 مع Arduino Uno: 4 خطوات (بالصور)
ATtiny85 ساعة تتبع النشاط بالاهتزاز يمكن ارتداؤها وبرمجتها ATtiny85 مع Arduino Uno: كيف تصنع ساعة تتبع النشاط القابلة للارتداء؟ هذه أداة يمكن ارتداؤها مصممة لتهتز عندما تكتشف ركودًا. هل تقضي معظم وقتك على الكمبيوتر مثلي؟ هل تجلس لساعات دون أن تدرك ذلك؟ هذا الجهاز هو f
Flappy Bird على ATtiny85 وشاشة OLED SSD1306: 6 خطوات (بالصور)
Flappy Bird على ATtiny85 و OLED Display SSD1306: مرحبًا بالجميع ، سأريكم اليوم نسخة أساسية من لعبة Flappy Bird التي قمت بإنشائها ، وكيف يمكنك المضي قدمًا في صنع لعبة مماثلة. سأقوم بشكل أساسي بتشغيل الكود الخاص بي معك وأشرح كيف يعمل في كل خطوة على الطريق. هذه اللعبة مبنية على ru
بطاقة العمل / وحدة التحكم في الألعاب: ATtiny85 وشاشة OLED: 5 خطوات (بالصور)
بطاقة العمل / وحدة التحكم في الألعاب: ATtiny85 وشاشة OLED: مرحبًا بالجميع! سأوضح لك اليوم كيف يمكنك بناء بطاقة العمل / وحدة التحكم في الألعاب / كل ما يمكنك تخيله والذي يتميز بإضاءة خلفية I2C OLED ومعالج ATtiny85. في هذا الدليل ، سأخبرك كيف أن ثنائي الفينيل متعدد الكلور الذي أصممه