Isi kandungan:

Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Cara yang Betul: 8 Langkah (dengan Gambar)
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Cara yang Betul: 8 Langkah (dengan Gambar)

Video: Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Cara yang Betul: 8 Langkah (dengan Gambar)

Video: Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Cara yang Betul: 8 Langkah (dengan Gambar)
Video: 15 Kenderaan Bertenaga Suria yang Menakjubkan 2020 | Evolusi Suria 2024, Julai
Anonim
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Jalan Yang Betul
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Jalan Yang Betul
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Jalan Yang Betul
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Jalan Yang Betul

Setelah 1 tahun berjaya beroperasi di 2 lokasi yang berbeza, saya berkongsi rancangan projek stesen cuaca berkuasa solar saya dan menerangkan bagaimana ia berkembang menjadi sistem yang benar-benar dapat bertahan dalam jangka masa yang lama dari tenaga suria. Sekiranya anda mengikuti arahan saya dan menggunakan bahan yang sama seperti yang disenaraikan, anda boleh membina stesen cuaca berkuasa solar yang akan beroperasi selama bertahun-tahun. Sebenarnya satu-satunya faktor yang mengehadkan jangka masa ia akan digunakan adalah jangka hayat bateri yang anda gunakan.

Langkah 1: Operasi Stesen Cuaca

1, Pemancar: Kotak yang dipasang di luar dengan panel solar yang menghantar telemetri cuaca (Suhu, Kelembapan, Indeks Panas, Kekuatan Suria) secara berkala ke unit penerima dalaman.

2, Penerima: Unit dalaman yang dibuat dari Raspberry PI 2 + Arduino Mega yang mempunyai Penerima RF 433 Mhz yang disambungkan untuk penerimaan data. Dalam persediaan saya, unit ini tidak mempunyai fungsi paparan LCD tempatan. Ia berjalan tanpa henti. Program C utama mengurus penerimaan data masuk dari Arduino melalui siri, kemudian memasukkan data ke dalam fail teks dan membuat data yang diterima terakhir tersedia melalui telnet untuk peranti lain untuk menanyakannya.

Stesen ini mengawal lampu di rumah saya dengan membaca fotoresistor (yang menentukan sama ada siang atau malam di luar). Penerima tanpa kepala dalam kes saya tetapi anda boleh mengubah suai projek dengan mudah untuk menambah paparan LCD. Salah satu peranti yang menggunakan, menghurai dan memaparkan data cuaca dari stesen adalah projek saya yang lain: Ironforge the NetBSD Toaster.

Langkah 2: Versi Pertama

Versi Pertama
Versi Pertama
Versi Pertama
Versi Pertama
Versi Pertama
Versi Pertama
Versi Pertama
Versi Pertama

Terdapat banyak projek solar di internet tetapi banyak di antaranya melakukan kesalahan biasa bahawa sistem mengeluarkan lebih banyak tenaga dari bateri dari masa ke masa yang dapat diisi oleh panel suria, terutama pada bulan-bulan musim sejuk yang gelap.

Apabila anda merancang sistem tenaga suria, satu-satunya perkara yang penting ialah PENGGUNAAN KUASA, pada semua komponen: mcu, pemancar radio, pengatur voltan dll.

Menggunakan komputer besar seperti raspberry pi atau peranti wifi yang lapar seperti ESP hanya untuk mengumpulkan dan mengangkut beberapa data cuaca akan menjadi berlebihan tetapi seperti yang akan saya tunjukkan dalam tutorial ini walaupun papan Arduino kecil.

Yang terbaik ialah selalu mengukur arus semasa proses membina anda dengan meter atau dengan ruang lingkup (berguna apabila anda cuba mengukur lonjakan kecil penggunaan semasa operasi dalam jangka masa yang sangat singkat (milisaat).

Pada gambar pertama anda dapat melihat stesen pertama saya (Arduino Nano Based) dan papan Arduino Barebone Atmega 328P kedua.

Versi pertama, walaupun berfungsi dengan sempurna (memantau lingkungan dan mengirim data melalui radio) mempunyai penggunaan kuasa yang terlalu tinggi ~ 46mA dan menghabiskan bateri dalam beberapa minggu.

Semua versi menggunakan bateri berikut:

18650 6000mAh dilindungi bateri boleh dicas semula bateri dilindungi papan perlindungan

KEMASKINI pada bateri ScamFire ini. Walaupun ini adalah Instructable yang agak lama, saya tetap merasa terpaksa memperbaikinya kerana bateri palsu ini. JANGAN beli bateri yang disebutkan, buat kajian sendiri mengenai bateri LION / LIPO lain, semua bateri 3.7V akan berfungsi dengan projek ini.

Akhirnya saya sempat membuang bateri ScamFire untuk melihat apakah sebenarnya kapasiti. Oleh itu, kami akan menjalankan 2 pengiraan berdampingan dengan kapasiti sebenar dan "diiklankan".

Pertama sekali, satu perkara bahawa bateri ini palsu dan tidak ada apa yang mereka nyatakan tentangnya benar, versi baru lebih buruk lagi mereka menyalin palsu dengan meninggalkan rangkaian perlindungan 2 sen sehingga tidak ada yang akan menghentikan mereka habis hingga sifar.

Artikel kecil mengenai bateri LION / LIPO:

TLDR:

Maksudnya ialah voltan maksimum sel ialah 4.2v dan voltan "nominal" (purata) ialah 3.7V.

Sebagai contoh, berikut adalah profil voltan untuk bateri 3.7V / 4.2V 'klasik'. Voltan bermula pada 4.2 maksimum dan cepat turun hingga sekitar 3.7V untuk sebahagian besar jangka hayat bateri. Sebaik sahaja anda mencapai 3.4V bateri mati dan pada 3.0V litar pemotongan memutuskan bateri.

Pengukuran saya menggunakan beban dummy:

Bateri dicas: 4.1V

Potongan ditetapkan kepada: 3.4V

Muatkan simulasi: 0.15A (peranti saya menghadapi sedikit masalah dengan turun lebih rendah daripada ini.)

Kapasiti yang diukur: 0,77Ah memberikannya 0,8 Ah yang bernilai 800mAh dan bukannya 6000mAh yang diiklankan!

Oleh kerana bateri ini tidak mempunyai litar perlindungan, saya dengan bebas boleh turun lebih rendah tetapi pada 3.4V setelah 10 minit ia sudah jatuh ke 3.0V.

Oleh itu dengan pengiraan mudah yang diberikan oleh bateri:

Secara teori

Voltan bateri = 3.7V

Kuasa = 3.7x6000 = 22000 mWh

Nyata

Voltan bateri = 3.7V Kuasa = 3.7x800 = 2960 mWh

Versi: 0.1 ARDUINO NANO BERDASARKAN

Walaupun dengan perpustakaan LowPower, Arduino nano menggunakan ~ 16 mA (dalam mod tidur) -> GAGAL.

Secara teori

Pavg = VxIavg = 5Vx16mA = 80 mW

Hayat bateri = 22000/80 = 275 jam = lebih kurang 11 hari

RealPavg = VxIavg = 5Vx16mA = 80 mW

Hayat bateri = 800/80 = 10 jam

Versi: 0.2 Atmega 328P Barebone

Kuasa yang digunakan oleh ATmega328 banyak bergantung pada apa yang anda lakukan dengannya. Hanya duduk di sana dalam keadaan lalai, ia boleh menggunakan 16mA @ 5V semasa berjalan pada 16MHz.

Apabila ATmega328P berada dalam Mod Aktif, ia akan terus melaksanakan beberapa juta arahan sesaat. Selanjutnya, Analog ke Digital Penukar Perisian Dalam Talian (ADC), Antara Muka Periferal Siri (SPI), Pemasa 0, 1, 2, Antara Muka Dua Kawat (I2C), USART, Pemantau Pengawas (WDT), dan Pengesanan Brown-out (BOD) menggunakan kuasa.

Untuk menjimatkan kuasa, MCU ATmega328P menyokong sebilangan mod tidur dan periferal yang tidak digunakan dapat dimatikan. Cara tidur berbeza dalam bahagian mana yang tetap aktif, mengikut jangka waktu tidur dan masa yang diperlukan untuk bangun (tempoh bangun tidur). Mod tidur dan periferal aktif dapat dikawal dengan perpustakaan tidur dan daya AVR atau, lebih ringkas, dengan perpustakaan Daya Rendah yang sangat baik.

Perpustakaan Daya Rendah mudah digunakan tetapi sangat berkuasa. Pernyataan LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); meletakkan MCU dalam SLEEP_MODE_PWR_DOWN selama 16 ms hingga 8 s, bergantung pada argumen pertama. Ia melumpuhkan ADC dan BOD. Tidur mati-mati bermaksud semua fungsi cip dilumpuhkan sehingga gangguan seterusnya. Selanjutnya, pengayun luaran dihentikan. Hanya gangguan tahap pada INT1 dan INT2, gangguan penukaran pin, padanan alamat TWI / I2C, atau WDT, jika diaktifkan, dapat menghidupkan MCU. Jadi dengan satu penyataan, anda akan mengurangkan penggunaan tenaga. Untuk 3.3 V Pro Mini tanpa LED kuasa dan tanpa pengatur (lihat di bawah) yang menjalankan pernyataan, penggunaan tenaga adalah 4.5 μA. Itu sangat dekat dengan apa yang disebutkan dalam lembar data ATmega328P untuk tidur mati dengan WDT yang diaktifkan sebanyak 4.2 μA (lembar data dihubungkan dalam sumber). Oleh itu, saya cukup yakin bahawa fungsi powerDown mematikan semua yang mungkin munasabah. Dengan pernyataan LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, WDT akan dilumpuhkan dan anda tidak akan bangun sehingga gangguan dicetuskan.

Oleh itu, dengan pemasangan barebone, kita dapat memasukkan cip ke dalam mod tidur selama 5 minit, sementara ia memerlukan sedikit tenaga (0,04 mA tanpa periferal). Namun ini hanya cip Atmega 328P dengan pengayun kristal dan tidak lain, penggalak voltan yang digunakan dalam konfigurasi ini untuk meningkatkan voltan bateri dari 3.7V -> 5.0 V juga menggunakan 0.01 mA.

Satu pengaliran voltan berterusan adalah perintang foto tambahan yang meningkatkan penggunaan dalam mod tidur ke 1 mA keseluruhan (ini merangkumi semua komponen).

Formula untuk mengira penggunaan tepat untuk peranti dalam mod tidur dan bangun adalah:

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Ion = 13mA

Ini kebanyakannya berasal dari pemancar RF433 Mhz:

Pemancar:

Voltan kerja: 3V - 12V untuk maks. penggunaan kuasa 12V Arus bekerja: maksimum Kurang daripada 40mA maksimum, dan min 9mArama suar: (SAW) Mod modulasi: ASKKekerapan bekerja: Hawa 315MHz Atau 433MHzKuasa penghantaran: 25mW (315MHz pada 12V) Kesalahan frekuensi: + 150kHz (maksimum) Kecepatan: kurang dari 10Kbps

Tidur = 1mA

Akan jauh lebih rendah tanpa photoresistor.

Waktu trunon Ton = 250 mS = 0.25s

Waktu tidur Tsleep = 5 min = 300s

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Iavg = (0.25s * 13mA + 300s * 1mA) / (0.25s + 300s)

Iavg = 1.26mA

Pavg = VxIavg = 5Vx1.26mA = 6 mW

Secara teori

Hayat bateri = 22000mWh / 6mW = 3666 jam = lebih kurang 152 hari

Nyata

Hayat bateri = 800mWh / 6mW = 133 jam = 5.5 hari lebih kurang

Walaupun ini masih merupakan siri UltraFire yang lebih baik yang saya gunakan pada awalnya anda dapat melihat bahawa tanpa panel solar atau penggunaan 1mA rendah projek ini tidak akan bertahan lama.

Jangan ragu untuk membina stesen dan tuliskan penemuan dan pengiraan anda ke komen dan saya akan mengemas kini artikelnya. Saya juga menghargai hasil dengan MCU yang berbeza dan meningkatkan penukar.

Langkah 3: Membina Stesen Cuaca yang Berjaya

Membina Stesen Cuaca yang Berjaya
Membina Stesen Cuaca yang Berjaya
Membina Stesen Cuaca yang Berjaya
Membina Stesen Cuaca yang Berjaya
Membina Stesen Cuaca yang Berjaya
Membina Stesen Cuaca yang Berjaya
Membina Stesen Cuaca yang Berjaya
Membina Stesen Cuaca yang Berjaya

Walaupun ia adalah versi pertama yang berjaya, ia mengandungi sedikit kegagalan pada gambar dan saya tidak dapat membuat semula kerana stesen sudah digunakan. Dua penguat voltan yang ditunjukkan pada gambar dapat diperoleh pada saat penulisan untuk pemodelan aero dan aplikasi lain. Semasa saya merancang semula stesen saya, saya berfikir untuk mendapatkan papan lonjakan voltan yang lebih kecil dan lebih cekap, namun saiznya lebih kecil pastinya tidak bermaksud ia lebih efisien.

Modul kecil baru pada gambar yang tidak mempunyai indikator yang dipimpin sebenarnya telah mengeringkan 3mA (* FAIL *) dengan sendirinya, jadi saya tinggal di papan lama saya:

PFM Control DC-DC USB 0.9V-5V hingga 5V dc Boost Step-up Power Supply Module

Pada masa penulisan modul ini masih tersedia di Ebay dengan harga 99 sen tetapi jika anda memutuskan untuk menggunakan penggalak lain, selalu periksa penggunaan kuasa siap sedia. Dengan penggalak kualiti yang baik, alat ini tidak boleh melebihi dari saya (0,01 mA), walaupun LED kecil di papan harus disolder.

Langkah 4: Senarai Perkakasan

Senarai Perkakasan
Senarai Perkakasan
  • 18650 6000mAh dilindungi bateri boleh dicas semula bateri dilindungi papan perlindungan
  • Atmega 328P16M 5V dengan bootloader
  • Adafruit DC Boarduino (serasi Arduino) (w / ATmega328) <ini akan menjadi pelaburan yang baik jika anda melakukan projek barebone di masa hadapan
  • Photo Light Sensitive Resistor Photoresistor Optoresistor 5mm GL5539
  • 1A 1000V Diod 1N4007 IN4007 DO-41 Rectifier Diodes
  • PFM Control DC-DC USB 0.9V-5V hingga 5V dc Boost Step-up Power Supply Module
  • 1.6W 5.5V 266mA Sistem Panel Suria Mini Pengecas Sel Epoksi DIY
  • Modul Pengecas Papan Bateri Lithium TP405 5V Mini USB 1A
  • Kit pemancar dan penerima RF 433Mhz untuk alat kawalan jauh Arduino / ARM / MC <Kit, mengandungi pemancar dan alat penerima
  • IP65 Switch Protector Junction Box Kandang Kalis Air Luar 150x110x70mm
  • Modul Sensor Suhu dan Kelembapan Relatif DHT22 baru untuk Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007dioda
  • Adafruit 16 MHz Keramik Resonator / Pengayun [ADA1873]
  • Arduino UNO / Mega dll untuk stesen penerima + Raspberry PI 1/2/3
  • Kotak Plastik Akrilik Jelas (pilihan)

Anda boleh mendapatkan semua ini di Ebay, saya tidak mahu mempromosikan penjual dengan memaut ke halaman mereka dan pautan akan menjadi mati di masa hadapan pula.

Nota untuk senarai perkakasan:

Sekiranya anda membuat Atmega dengan pengaturcaraan, beli lebih banyak daripadanya, begitu juga penguat voltan dan pengawal cas solar.

Pengecas solar mengandungi 2 LED warna kecil yang hanya dihidupkan sekiranya berlaku pengecasan solar dan menunjukkan (merah-> pengecasan, biru-> keadaan penuh). Ini juga tidak dapat diselesaikan. Ia lebih banyak memberikan jus tambahan kepada bateri semasa mengecas.

Seperti yang anda lihat tidak ada pemegang bateri dalam senarai saya. Kenapa? Kerana mereka tidak boleh dipercayai. Saya berkali-kali berkali-kali ketika bateri keluar dari pemegangnya dan terputus sambungan. Terutama jika persediaan anda dipasang di tiang pinggan mangkuk tinggi seperti saya, buka untuk keadaan cuaca yang teruk. Saya pun memasukkan bateri ke dalam pemegang dengan 2 ritsleting dan masih berjaya dikeluarkan. Jangan lakukannya, lepaskan lapisan luaran dari bateri dan pateri wayar terus ke bahagian bawah bateri, yang mengandungi litar perlindungan yang berlebihan (jangan memotong perlindungan). Pemegang bateri dapat digunakan hanya untuk menahan bateri di tempatnya di dalam perangkat.

TP405 5V Mini USB 1A Lithium Battery Charging Board: malangnya papan ini tidak termasuk perlindungan arus terbalik ke panel solar, untuk ini anda memerlukan 1 lagi diod untuk diletakkan di antara satu kaki panel solar dan litar pengisian untuk menghentikan percubaan semasa untuk mengalir kembali ke panel suria pada waktu malam.

Langkah 5: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan

Papan ini mengandungi sedikit komponen dan penanda di papan agak mudah.

Pastikan bahawa anda TIDAK memasukkan Atmega328P dengan cara yang salah (yang boleh memanaskan dan menyekat cip, mungkin juga merosakkan penggalak voltan).

Dalam persediaan ini cip menghadap ke bawah (lubang U kecil menandakan PIN1). Semua komponen lain mesti jelas.

Gunakan kabel terlindung (mis.: Kabel Audio dari CDrom akan berfungsi dengan baik) untuk LDR. Dalam beberapa kes (selama beberapa minggu ujian) ternyata mengganggu transmisi isyarat radio. Ini adalah salah satu bug yang sukar untuk diselesaikan, jadi jika anda tidak mahu masalah hanya menggunakan kabel terlindung, akhir cerita.

LED: LED di bahagian bawah kotak pada asalnya ditambahkan untuk berkedip ketika ada penghantaran radio keluar tetapi kemudian saya menganggapnya sebagai pembaziran kuasa dan hanya berkelip 3 kali semasa proses boot.

TP: adalah titik ujian untuk mengukur arus untuk litar keseluruhan.

DHT22: Jangan beli DHT11 yang murah, belanjakan 50 sen lebih banyak untuk mendapatkan DHT22 putih yang dapat mengukur suhu negatif juga.

Langkah 6: Reka Bentuk Kes

Reka Bentuk Kes
Reka Bentuk Kes
Reka Bentuk Kes
Reka Bentuk Kes
Reka Bentuk Kes
Reka Bentuk Kes

Walaupun sedikit berlebihan, kubus cetak 3D (weather_cube) dibuat untuk menahan sensor suhu DHT22 di tempatnya. Kubus dilekatkan ke bahagian bawah kotak IP, yang hanya menampilkan 1 lubang agar udara dapat mencapai sensor. Saya telah menambah jaring di lubang terhadap lebah, tawon dan lalat kecil lain.

Kotak luaran boleh digunakan secara pilihan untuk menjadikan stesen lebih kalis air sekiranya anda memasangnya di tiang pinggan di tempat terbuka.

Idea untuk 1 ciri berguna: menambah plat bumbung logam besar 1-2cms di bahagian atas kotak yang memberikan bayangan dari sinar matahari pada musim panas, walaupun ini juga dapat menghilangkan cahaya matahari yang berguna dari panel. Anda boleh hadir dengan reka bentuk yang memisahkan panel dan kotak (meninggalkan panel di bawah sinar matahari, kotak dalam bayangan).

Pada gambar: salah satu stesen yang dikeluarkan dari persekitaran kerja setelah 1 tahun, voltan bateri masih kekal 3.9V, tidak ada kerosakan air pada bahagian mana pun walaupun jaring saya terpaku di bahagian bawah kubus terkoyak. Sebab stesen perlu diservis adalah kerosakan sambungan pada penyambung LDR, walaupun kabel pelompat sepertinya masih ada, sambungannya terputus oleh itu pin kadangkala terapung memberikan bacaan analog LDR yang buruk. Cadangan: jika anda menggunakan kabel jumpercc PC standard, hotglue semuanya setelah stesen berfungsi dengan sempurna untuk mengelakkan ini.

Langkah 7: Perisian

Perisian
Perisian

Kod perisian akan memerlukan 3 perpustakaan luaran (LowPower, DHT, VirtualWire). Saya menghadapi masalah mencari sebilangan daripadanya dengan mudah dalam talian akhir-akhir ini jadi saya melampirkannya dalam fail ZIP yang berasingan. Tidak kira apa OS yang anda gunakan Linux / Windows, cari folder perpustakaan Arduino IDE anda dan ekstrak di sana.

Sekadar nota, tanpa mengira saya sudah menyarankan agar tidak membeli DHT11, jika anda menggunakan jenis sensor DHT yang salah, program ini akan tergantung selama-lamanya pada permulaan di bahagian permulaan (anda tidak akan melihat sekelip mata pemula 3 kali).

Kod gelung utama sangat mudah, pertama ia membaca nilai persekitaran (suhu, indeks panas, kelembapan, suria), menghantarnya melalui radio kemudian menggunakan perpustakaan daya rendah untuk meletakkan Arduino dalam tidur selama 5 minit.

Saya mendapati bahawa menurunkan kadar baud akan meningkatkan kestabilan penghantaran radio. Stesen menghantar sejumlah kecil data, 300 bps lebih dari cukup. Jangan lupa bahawa pemancar hanya beroperasi dari sekitar. 4.8V, pada versi 3.3V yang akan datang ini mungkin membawa kepada kualiti penghantaran yang lebih buruk (menghantar data melalui dinding dan halangan lain). Saya menghadapi masalah dengan menggunakan Arduino Mega yang dilampirkan pada Raspberry PI 2 yang menggerakkan Mega dari PI, bahawa saya tidak menerima penghantaran. Penyelesaiannya adalah untuk menghidupkan Mega dari bekalan 12V luaran yang terpisah.

Langkah 8: Versi 2 (Berasaskan ESP32)

Versi 2 (Berasaskan ESP32)
Versi 2 (Berasaskan ESP32)
Versi 2 (Berasaskan ESP32)
Versi 2 (Berasaskan ESP32)
Versi 2 (Berasaskan ESP32)
Versi 2 (Berasaskan ESP32)

Segala yang boleh hancur akan hancur untuk mengutip Murphy lama dan akhirnya setelah bertahun-tahun stesen gagal dengan cara misteri. Seseorang mula mengirim data suram yang naik hingga puluhan ribu, yang mustahil disebabkan: Papan Arduino mengandungi 6 saluran (8 saluran pada Mini dan Nano, 16 di Mega), 10-bit analog ke digital converter. Ini bermaksud bahawa ia akan memetakan voltan input antara 0 dan 5 volt menjadi nilai integer antara 0 dan 1023. Oleh itu, setelah menggantikan radio, LDR dan memprogramkan semula Atmega 328P berkali-kali saya menyerah dan memutuskan sudah waktunya untuk inovasi. Jom ESP32.

Papan yang saya gunakan ialah: ESP32 WEMOS LOLIN32 Lite V1.0.0 Kad Wifi & Bluetooth Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

Mikrokontroler ESP-32

Voltan Operasi 3.3V Pin I / O Digital 19 Pin Input Analog 6 Kelajuan Jam (Maks) 240 MHz Flash 4M bait Panjang 5mm Lebar 2.54mm Berat 4g

Yang tidak seperti yang digambarkan tidak mempunyai logo LOLIN (palsu dari China). Kejutan pertama yang menggembirakan saya ialah pinout yang dicetak di papan padanan dengan pin Arduino! Setelah berurusan dengan begitu banyak papan nama tanpa nama di mana saya terpaksa mencari pinout sepanjang hari mati letih membuat kesilapan akhirnya papan di mana pinout lurus ke hadapan WoW!

Walau bagaimanapun, inilah sisi gelap cerita:

Pada mulanya saya telah menyambungkan LDR ke A15 yang merupakan pin 12 kerana lebih mudah memasangkan pin bersama. Kemudian saya mendapat 4095 bacaan (yang merupakan maksimum yang dapat anda dapatkan dengan AnlogRead di ESP32) yang mendorong saya gila kerana keseluruhan sebab mengapa saya membina semula stesen adalah bacaan LDR yang rosak dari yang lama (DHT masih berfungsi dengan baik). Oleh itu, ternyata:

Esp 32 menyatukan dua register ACD 12-bit. ADC1 whit 8 saluran yang dilampirkan pada GPIO 32-39 dan ADC2 whit 10 saluran pada pin lain. Masalahnya ialah ESP32 menggunakan ADC2 untuk menguruskan fungsi wifi, jadi jika anda menggunakan Wifi, anda tidak dapat menggunakan daftar itu. API pemacu ADC menyokong ADC1 (8 saluran, dilampirkan ke GPIO 32 - 39), dan ADC2 (10 saluran, dilampirkan ke GPIO 0, 2, 4, 12 - 15 dan 25 - 27). Walau bagaimanapun, penggunaan ADC2 mempunyai beberapa batasan untuk aplikasi:

ADC2 digunakan oleh pemacu Wi-Fi. Oleh itu aplikasi hanya boleh menggunakan ADC2 apabila pemacu Wi-Fi belum dimulakan. Sebilangan pin ADC2 digunakan sebagai tali pengikat (GPIO 0, 2, 15) sehingga tidak dapat digunakan dengan bebas. Begitulah keadaannya dalam Kit Pembangunan rasmi berikut:

Oleh itu, menghubungkan LDR dari pin 12 ke A0 yang merupakan VP menyelesaikan semuanya tetapi saya tidak faham mengapa mereka menyenaraikan pin ADC2 sebagai tersedia untuk pembuatnya. Berapa banyak hobi lain yang membuang masa sehingga memikirkannya? Sekurang-kurangnya tandakan pin yang tidak dapat digunakan dengan warna merah atau sesuatu atau jangan sebutkan dalam manual sama sekali sehingga pembuat lain hanya dapat mengetahui tentangnya jika mereka benar-benar memerlukannya. Tujuan keseluruhan ESP32 adalah menggunakannya dengan WIFI, semua orang menggunakannya dengan WIFI.

Permulaan yang baik bagaimana menyediakan Arduino IDE untuk papan ini:

Walaupun saya memasukkannya ke dalam kod di sini ia berlaku sekali lagi:

Kod ini mungkin tidak disusun untuk model ESP32 lain daripada Weemos LOLIN 32!

Tetapan binaan: -Gunakan muat naik / bersiri: 115200 -Gunakan CPU / ram: 240Mhz (Wifi | BT) -Gunakan frekuensi denyar: 80 Mhz

Terdapat banyak stesen cuaca berasaskan ESP32 di internet, mereka jauh lebih biasa daripada versi 1 saya dengan cip barebone kerana ia lebih mudah untuk disiapkan, anda tidak memerlukan pengaturcara hanya pasangkan peranti di usb dan atur cara dan mereka mod tidur nyenyak sangat baik untuk jangka masa yang lama daripada bateri. Langsung dari pemukul, ini adalah perkara pertama yang saya uji sebelum menyolder di pin pelarian kerana seperti yang saya nyatakan di beberapa tempat dalam projek ini, yang terpenting adalah penggunaan kuasa dan dengan bateri (palsu) semasa dan panel solar kecil yang siap sedia kuasa tidak dapat melepasi 1-2mA kerana jika tidak, projek itu tidak akan dapat bertahan dalam jangka masa panjang.

Mengejutkan sekali lagi bahawa mod tidur nyenyak berfungsi seperti yang diiklankan. Semasa tidur nyenyak, arus sangat rendah sehingga multi meter murah saya tidak dapat mengukurnya (berfungsi untuk saya).

Semasa menghantar data, arus sekitar 80mA (yang kira-kira 5 kali lebih banyak daripada ketika Atmega 328P bangun dan memancarkan), namun jangan lupa bahawa dengan V1 terdapat aliran daya 1mA rata-rata pada LDR dalam mod tidur (yang juga bergantung pada tahap cahaya dan pergi dari 0.5mA - 1mA) yang kini hilang.

Sekarang bahawa bateri UltraFire habis jika anda menggunakan bateri yang sama inilah yang anda harapkan:

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Iavg = (2s * 80mA + 300s * 0.01mA) / (2s + 300s) Iavg = 0.5mA

Pavg = VxIavg = 5Vx0.5mA = 2.5 mW

Secara teori

Hayat bateri = 22000mWh / 2.5mW = 8800 jam = 366 hari lebih kurang

Nyata

Hayat bateri = 800mWh / 2.5mW = 320 jam = lebih kurang 13 hari

Saya tidak mempunyai ruang untuk mengukur tepatnya masa, tetapi dengan tweak saya, ia akan berakhir sekitar 2 saat.

Saya tidak mahu menghabiskan waktu petang untuk mengkodkan semuanya, jadi saya mencari stesen cuaca lain di Instructables berdasarkan ESP32 untuk melihat apa yang mereka lakukan untuk penyimpanan data. Dengan menyedihkan bahawa mereka menggunakan laman web yang tidak fleksibel dan terhad seperti cuaca. Oleh kerana saya bukan peminat "cloud" dan kod mereka lama rosak kerana laman web tersebut telah mengubahnya API sejak itu, saya mengambil masa 10 minit untuk membuat penyelesaian khusus kerana tidak sesukar yang disangka. Mari kita mulakan!

Pertama sekali, tidak ada gambar papan litar secara berasingan untuk projek ini, kerana ia menggunakan komponen yang sama (maaf kerana yang disolder dalam gambar papan roti jelek) seperti V1 dengan perbezaan bahawa semuanya berjalan 3.3V. DHT dihubungkan dengan penarikan ke VCC, LDR diturunkan dengan 10k. Masalah yang mungkin dilihat oleh bateri 18650 seperti palsu Cina saya (6500 mAh ultra sun fire lol: D) adalah bahawa mereka memulakan keluk pelepasan dari sekitar 4.1V usia baru dan pergi sehingga litar pemotongan mereka bermula untuk menghentikan kerosakan sel (mereka yang cukup bernasib baik memilikinya). Ini tidak baik untuk kita sebagai input 3.3V. Walaupun papan LOLIN ini mempunyai penyambung bateri litium dan litar pengecasan dalam projek ini, saya ingin membaik pulih seberapa banyak yang saya dapat dari stesen lama sehingga dengan 18650 lama anda TIDAK BOLEH menggunakan pengecas terpasang ini. Penyelesaiannya sangat mudah: Saya memotong kabel USB mikro yang disolder ke 5V dari penggalak voltan lama dan masalah voila diselesaikan, kerana papan pada microUSB mempunyai pengatur.

Jadi perbezaan antara versi lama dan baru yang ada pada bateri lama memberikan 3.7V -> ditingkatkan menjadi 5V -> ardu berjalan pada 5V -> semua komponen berjalan pada 5V.

Yang baru: bateri menyediakan 3.7V -> dinaikkan menjadi 5V -> diatur melalui reg onboard pada ESP32 -> semua komponen berjalan pada 3.3V.

Dengan perisian, kita memerlukan perpustakaan DHT yang lain juga, DHT Arduino tidak serasi dengan ESP. Apa yang kita perlukan dipanggil DHT ESP.

Saya mula mendasarkan kod saya di sekitar contoh DHT yang diberikan kod ini. Cara kerja kod adalah:

1, Dapatkan data persekitaran dari data DHT + Solar dari photocell

2, Sambungkan ke wifi dengan IP statik

3, POST data ke skrip php

4, Tidur selama 10 minit

Seperti yang anda perhatikan, saya menyesuaikan kod untuk kecekapan untuk benar-benar meminimumkan waktu bangun kerana ia menghabiskan 5 kali kuasa daripada yang dilakukan oleh projek lama ketika dihidupkan. Bagaimana saya melakukan ini? Pertama sekali jika terdapat sebarang jenis kesalahan, fungsi getTemperature () akan kembali dengan false (yang bermaksud 10 minit tidur lagi). Ini seperti sensor DHT tidak dapat dijalankan atau sambungan wifi tidak tersedia. Seperti yang anda perhatikan gelung sementara () untuk terus mencuba hubungan wifi selamanya juga dihapus tetapi kelewatan 1 saat perlu ditinggalkan di sana jika tidak, ia tidak akan selalu bersambung dan ia juga bergantung pada jenis AP, muat dan seberapa cepatnya akan berlaku, dengan 0.5s saya mempunyai tingkah laku yang tidak konsisten (kadang-kadang tidak dapat berhubung). Sekiranya ada yang tahu cara yang lebih baik untuk melakukan ini, sila tinggalkan di komen. Hanya apabila data DHT dibaca DAN sambungan wifi habis, ia akan mencuba menghantar data ke skrip di pelayan web. Semua jenis fungsi pembaziran masa seperti Serial.println () dilumpuhkan dalam mod operasi biasa juga. Sebagai pelayan, saya juga menggunakan IP untuk mengelakkan pencarian DNS yang tidak perlu, dalam kod saya, gateway lalai dan pelayan dns ditetapkan ke 0.0.0.0.

Saya tidak faham mengapa sukar untuk membuat API anda sendiri apabila yang diperlukan adalah:

sprintf (tindak balas, "temp =% d & hum =% d & hi =% d & sol =% d", temp, hum, hi, sol);

int httpResponseCode = http. POST (tindak balas);

Anda meletakkan kod php kecil ini ke mana-mana raspberry pi dan anda dapat melakukan tugas sistem () dengan segera berdasarkan telemetri seperti menghidupkan kipas atau menyalakan lampu jika cukup gelap.

Beberapa nota mengenai kod:

WiFi.config (staticIP, gateway, subnet, dns); // WAJIB setelah Wifi memulakan bagaimana bodohnya…

WiFi.mode (WIFI_STA); // HARUS jika tidak, ia juga akan membuat AP yang tidak diingini

Yeah sekarang anda tahu. Juga susunan konfigurasi IP dapat berubah melalui platform, saya mencuba contoh lain terlebih dahulu di mana nilai gateway dan subnet ditukar. Mengapa menetapkan IP statik? Ia cukup jelas, jika anda mempunyai kotak khusus di rangkaian anda seperti pelayan linux yang menjalankan isc dhcpd, anda tidak mahu seratus juta entri log bermula ketika ESP bangun dan dapatkan IP dari DHCP. Penghala biasanya tidak mencatatkan perkaitan sehingga tidak kelihatan. Ini adalah harga penjimatan kuasa.

V2 tidak pernah dapat bertahan kerana bateri berkualiti buruk dan saya hanya meletakkannya pada penyesuai jadi jika anda ingin membina V1 atau V2 TIDAK membeli bateri yang disebutkan, lakukan kajian sendiri mengenai bateri (mana-mana 18650 lebih daripada 2000mAh kapasiti yang diiklankan di Ebay adalah penipuan dengan kebarangkalian yang tinggi).

Disyorkan: