İçindekiler:

WiFi Sıcaklık Kaydedici (ESP8266 ile): 11 Adım (Resimlerle)
WiFi Sıcaklık Kaydedici (ESP8266 ile): 11 Adım (Resimlerle)

Video: WiFi Sıcaklık Kaydedici (ESP8266 ile): 11 Adım (Resimlerle)

Video: WiFi Sıcaklık Kaydedici (ESP8266 ile): 11 Adım (Resimlerle)
Video: BİLGİSAYARIN TAM PERFORMANSTA ÇALIŞMIYOR OLABİLİR #shorts 2024, Temmuz
Anonim
Image
Image
Malzemeler
Malzemeler

Merhaba, sizi burada gördüğüme sevindim. Umarım bu talimatta bazı yararlı bilgiler bulacaksınız. Bana önerilerinizi, sorularınızı göndermekten çekinmeyin… İşte bazı temel veriler ve projeye hızlı bir genel bakış. Mobil kullanıcılar için: Video. Yorum bölümünde proje hakkında ne düşündüğünüzü bana bildirin, teşekkürler. Geçenlerde sadece denemek için bir NodeMcu (esp8266 tabanlı) anakart satın aldım, bu yüzden bu gerçekten gelişmiş bir proje değil. Ama işe yarıyor ve ihtiyacım olan şey bu, bu yüzden sorun değil. Bu veri kaydedicinin ana işlevi, sıcaklığı toplamak ve bir sunucuya kaydetmektir. Bu, kullanıcıların günlükçüyle aynı konumda olmasalar bile (örneğin bir hava durumu istasyonu için) verileri çevrimiçi olarak kontrol etmelerine ve grafik çizmelerine olanak tanır. Bir başka kullanışlı özellik de, kullanıcının yazılımı kolayca güncellemesini ve özelleştirmesini sağlayan kodda bulunan OTA güncellemesidir. Tüm artıları ve eksileri dengelemek için iki sensörü ve ilgili toplama yöntemini analiz edeceğim.

Spoiler: Biraz testten sonra DS18B20 gibi bir dijital sensörün en iyi çözüm olduğunu buldum çünkü stabilite ve daha yüksek doğruluk sunuyor. Zaten su geçirmez ve kablolu.

Adım 1: Malzemeler

Malzemeler
Malzemeler
Malzemeler
Malzemeler
Malzemeler
Malzemeler

Bu, yalnızca birkaç harici bileşene sahip minimal bir projedir, bunun için Malzeme Listesi listesi gerçekten kısa olacaktır. Ancak, hangi malzemenin talep edildiğini görelim:

  • NodeMcu V3 (veya herhangi bir uyumlu ESP8266 μişlemci);
  • RGB led (ortak anot);
  • Led için dirençler (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim Entegre termometre);
  • LM35 (Texas Enstrüman termometresi);
  • Harici pil (isteğe bağlı);
  • Kablo;
  • Bağlayıcı (daha "gelişmiş" hale getirmek için);
  • Kutu (isteğe bağlı, daha "gelişmiş" hale getirmek için tekrar);
  • Led tutucu (isteğe bağlı);

Not: Dediğim gibi iki yöntemden birini seçmeniz gerekiyor. LM35 termometreyi seçerseniz, birkaç bileşene daha ihtiyacınız olacak:

  • Attiny45/85;
  • AVR programcısı (veya ISP olarak Arduino);
  • Direnç (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2,54 mm şerit konektör (isteğe bağlı)
  • Diyot (2x1N914)
  • Perfboard veya PCB;

Adım 2: Sensörü Seçme

Sensörü Seçme
Sensörü Seçme

Sensör seçimi zor bir adım olabilir: bugün farklı sıcaklık aralığı, doğruluk ve kasaya sahip hem analog hem de dijital tonlarca dönüştürücü (TI 144 farklı eleman sunar) bulunmaktadır. Analog Sensörler (TI'den 46 parça mevcuttur): Artıları:

  • Veri kaydedici sıcaklıktan başka bir niceliğe (voltaj, akım, …) kolayca değiştirilebilir;
  • Biraz daha ucuz olabilir;
  • Özel bir kütüphane gerektirmediği için kullanımı kolaydır;

Eksileri:

  • ADC (ölçümün doğruluğunu etkileyebilir) ve diğer harici bileşenleri gerektirir. esp8266'nın yalnızca bir ADC'si olduğundan (ve gerçekten doğru değil) harici bir tane kullanmanızı öneririm.
  • Herhangi bir indüklenen voltaj sonucu değiştirebileceğinden, gürültü önleyici özel kabloya ihtiyaç duyar.

Biraz düşündükten sonra, +10mV/°C ölçek faktörlü, 0,5°C hassasiyetli ve çok düşük akımlı (yaklaşık 60uA), 4V ile 30V arası çalışma voltajına sahip lineer bir sensör olan LM35'i kullanmaya karar verdim. Daha fazla ayrıntı için veri sayfasını görmenizi öneririm: LM35.

Dijital Sensörler (şiddetle tavsiye edilir) Artıları:

Hemen hemen tüm harici bileşenlere ihtiyaç duyulur;

Entegre ADC

Eksileri:

Dijital sinyalin (I2C, SPI, Serial, One Wire, …) kodunu çözmek için kitaplık veya yazılım isteyin;

Daha pahalı;

DS18B20'yi seçtim çünkü Amazon'da bir dizi 5 su geçirmez sensör buldum ve internette yaygın olarak belgelendi. Ana özellik 9-12 bit ölçüm, 1 Kablolu veri yolu, 3,0 ila 5,5 besleme gerilimi, 0,5°C doğruluktur. Yine, daha fazla ayrıntı için işte veri sayfası: DS18B20.

Adım 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

LM35 termometre için harici ADC'yi ve diğer özellikleri nasıl uyguladığımı analiz edelim. Biri ekranlı, ikisi ekransız olmak üzere üç telli bir kablo buldum. Sensörün yakınındaki besleme voltajını stabilize etmek için bir dekuplaj kondansatörü eklemeye karar verdim. Analog sıcaklığı dijitale dönüştürmek için bir dip8 paketinde Attiny85 mikroişlemci kullandım (yine daha fazla bilgi için veri sayfasına bakın: attiny85). Bizim için en önemli şey 10 bit ADC'dir (gerçekten en iyisi değil ama benim için yeterince hassas). Esp8266 ile iletişim kurmak için, esp8266'nın 3.3V ve attiny85'in 5V'de (sensörü çalıştırması gerektiğinden) çalıştığını akılda tutarak Seri iletişimi kullanmaya karar verdim. Bunu başarmak için basit bir voltaj bölücü kullandım (şemaya bakın). Negatif sıcaklığı okumak için bazı harici bileşenler eklememiz gerekiyor (2x1N914 ve 1x18k direnç), çünkü negatif güç kaynağı kullanmak istemiyorum. İşte kod: TinyADC deposu. Not: Bu kodu derlemek için yüklemeniz gerekir. ide attiny (bunu seçeneğe ekleyin: https://drazzy.com/package_drazzy.com_index.json), nasıl yapacağınızı bilmiyorsanız, sadece Google'da arama yapın. Veya doğrudan.hex dosyasını yükleyin.

Adım 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Bu sensörleri Amazon'dan aldım (5 maliyeti yaklaşık 10€). Paslanmaz çelik bir kapak ve 1m uzunluğunda bir kablo ile geldi. Bu sensör 9 ila 12 bitlik sıcaklık verilerini döndürebilir. Hepsinin benzersiz bir ID'si olduğu için birçok sensör aynı pime takılabilir. DS18B20'yi esp8266'ya takmak için şemayı takip etmeniz yeterlidir (ikinci fotoğraf). Kaydedicimin üç sondası olacağına karar verdiğimden, hangisinin hangisi olduğunu ayırt etmem gerekti. Bu yüzden onlara yazılım aracılığıyla adreslerine bağlı bir renk vermeyi düşündüm. Bazı ısıyla daralan tüp kullandım (üçüncü fotoğraf).

Adım 5: ESP8266 Kodu

ESP8266 Kodu
ESP8266 Kodu
ESP8266 Kodu
ESP8266 Kodu

Bu dünyada yeni olduğum için birçok kütüphane kullanmaya karar verdim. Giriş bölümünde belirtildiği gibi ana özellikler şunlardır:

  • OTA güncellemesi: kodu her yüklemeniz gerektiğinde esp8266'yı bilgisayarınıza takmanız gerekmez (bunu yalnızca ilk seferde yapmanız gerekir);
  • Kablosuz yönetici, kablosuz ağ değişirse taslağı yeniden yüklemeniz gerekmez. esp8266 erişim noktasına bağlanan ağ parametrelerini yeniden yapılandırabilirsiniz;
  • Thingspeak veri aktarımı;
  • Hem LM35 hem de DS18B20 desteklenir;
  • Basit Kullanıcı Arayüzü (RGB led'i bazı yararlı bilgileri gösterir);

Lütfen benden özür dile çünkü yazılımım en iyisi değil ve gerçekten iyi sıralı değil. Cihaza yükleme yapmadan önce, kodu kurulumunuza uyacak şekilde bazı parametreleri değiştirmeniz gerekir. Yazılımı buradan indirebilirsiniz. Ortak LM35 ve DS18B20 konfigürasyonu OTA güncellemesi için pin tanımı, token, kanal numarası, kullanıcı ve şifreyi değiştirmeniz gerekmektedir. 15'ten 23'e kadar satır.

#kırmızı YOURPINHERE'ı tanımlayın #yeşil YOURPINHERE'ı tanımlayın

#define blue YOURPINHERE const char* host = "host adresini seç"; //gerçekten gerekli değil esp8266-webupdate const char* update_path = "/firmware"; //güncelleme adresini değiştirmek için örn: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char* update_password = "YOURPASSWORDHERE; imzasız uzun myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey = "WRITEAPIHERE";

Adım 6: ESP8266 Kodu: LM35 Kullanıcısı

ADC ünitesine güç sağlamak için VU pinini ve G pinini kullanmak için attiny kartını esp8266'ya bağlamanız gerekir. Seri iletişim için hangi pini kullanmak istediğinizi seçmeniz gerekir (debug amacıyla donanım serilerini boş tutmak için). Tx pini seçilmelidir ancak gerçekte kullanılmamaktadır. (Satır 27). SoftwareSerial mySerial (RXPIN, TXPIN); En üste şunu eklemeniz gerekir:#define LM35USER

Adım 7: ESP8266 Kodu: DS18B20 Kullanıcısı

İlk işlem olarak, her sensör için cihaz Adresini tanımlamanız gerekir. Bu kodu esp'e derleyin ve programlayın ve sonuçları seri olarak arayın. Kodu burada bulabilirsiniz (bu başlığı sayfada arayın: «Bireysel DS18B20 Dahili Adreslerini okuyun»). Adresi almak için sadece bir sensör bağlayın, sonuçlar şöyle bir şey olmalıdır (burada rastgele sayı! Sadece örnek olarak):0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12O zaman bölümdeki kodumu değiştirmeniz gerekiyor " DS18B20" (31 ila 36 numaralı hat)" için yapılandırma:

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION //(9'dan 12'ye kadar) #define delayDallas READINTERVAL //(Milisaniye cinsinden minimum 15s veya 15000mS'dir) AygıtAdresi blueSensor = { 0x11, 0x22, D 0x9, 0xBxBx, 0x17, 0xBx 0x12}; //ADRESİNİZLE DEĞİŞTİRİN DeviceAddress redSensor = { 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; //ADRESİNİZLE DEĞİŞTİRİN DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 }; //ADRESİNİZLE DEĞİŞTİRİN En üste şunu eklemeniz gerekir:#define DSUSER

Adım 8: ESP8266 Küçük Numara

ESP8266 Küçük Hile
ESP8266 Küçük Hile

Biraz testten sonra, esp8266'yı programlamadan takarsanız, bir kez sıfırla tuşuna basana kadar kodu çalıştırmayacağını buldum. Bu sorunu çözmek için biraz araştırma yaptıktan sonra 3.3V'dan D3'e bir pull-up direnci eklemeniz gerektiğini keşfettim. Bu, işlemciye kodu flash bellekten yüklemesini söyleyecektir. Bu yöntemle D3, DS18B20 sensörleri için doğrudan veri girişi için kullanılabilir.

Adım 9: İlk Kez Çalıştırma

İlk Kez Çalıştırma
İlk Kez Çalıştırma
İlk Kez Çalıştırma
İlk Kez Çalıştırma

Kodu doğru yüklediyseniz ancak Wifi yöneticisi kitaplığını hiç kullanmadıysanız, wifi bağlantınızı yapılandırmanın zamanı geldi. RGB ledinin eskisinden daha hızlı yanıp söndüğünü görene kadar bekleyin, ardından cep telefonunuz veya PC'niz ile "AutoConnectAp" adlı wifi ağını arayın ve bağlanın. Bağlantıdan sonra, bir web tarayıcısı açın ve 192.168.4.1 girin, wifi yöneticisinin GUI arayüzünü bulacaksınız (fotoğraflara bakın) ve "Wifi Yapılandır" a basın. esp8266'nın wifi ağlarını aramasını bekleyin ve istediğinizi seçin. Şifreyi girin ve "kaydet"e basın. Esp8266 yeniden başlayacak (bu sefer RGB led'ine aldırmayın çünkü bazı rasgele bilgiler verecek) ve ağa bağlanacak.

Adım 10: Sonuç

Çözüm
Çözüm
Çözüm
Çözüm
Çözüm
Çözüm
Çözüm
Çözüm

Sonunda, dondurucu sıcaklığımı kaydederken veri kaydediciden alınan bir grafik. Turuncu renkte DS18B20 ve mavi renkte LM35 ve devresidir. Bazı fiziksel olmayan veriler veren dijital sensörden analog sensöre (benim zayıf "ADC devrem" ile) doğruluktaki en büyük farkı görebilirsiniz. Özetle, bu kaydediciyi oluşturmak istiyorsanız DS18B20 dijital sıcaklık sensörünü kullanmanızı öneririm çünkü okunması daha kolay ve neredeyse "tak ve çalıştır", daha kararlı ve doğru, 3.3V'ta çalışıyor ve çok sayıda sensör için sadece bir pin gerektiriyor. İlginiz için teşekkürler, umarım bu proje sizin için ve sizin için iyi olur bazı yararlı bilgiler buldu. Ve bunu gerçekleştirmek isteyenler için, gereken tüm bilgileri vermiş olmayı diliyorum. Her şeyi sormakta özgür değilsem, tüm soruları cevaplamaktan mutluluk duyacağım. İngilizce konuşan biri olmadığım için, yanlış olan veya anlaşılmayan bir şey varsa lütfen bana bildirin. Bu projeyi beğendiyseniz, lütfen yarışmalar için oy verin ve/veya yorum bırakın ☺. Yeni içerikleri güncellemeye ve yayınlamaya devam etmem için beni teşvik edecek. Teşekkürler.

Önerilen: