Daftar Isi:

Stasiun Cuaca NaTaLia: Stasiun Cuaca Bertenaga Surya Arduino Dilakukan dengan Cara yang Benar: 8 Langkah (dengan Gambar)
Stasiun Cuaca NaTaLia: Stasiun Cuaca Bertenaga Surya Arduino Dilakukan dengan Cara yang Benar: 8 Langkah (dengan Gambar)

Video: Stasiun Cuaca NaTaLia: Stasiun Cuaca Bertenaga Surya Arduino Dilakukan dengan Cara yang Benar: 8 Langkah (dengan Gambar)

Video: Stasiun Cuaca NaTaLia: Stasiun Cuaca Bertenaga Surya Arduino Dilakukan dengan Cara yang Benar: 8 Langkah (dengan Gambar)
Video: detik detik pesawat Sriwijaya air sj182 2024, Juni
Anonim
Stasiun Cuaca NaTaLia: Stasiun Cuaca Bertenaga Surya Arduino Dilakukan dengan Cara yang Benar
Stasiun Cuaca NaTaLia: Stasiun Cuaca Bertenaga Surya Arduino Dilakukan dengan Cara yang Benar
Stasiun Cuaca NaTaLia: Stasiun Cuaca Bertenaga Surya Arduino Dilakukan dengan Cara yang Benar
Stasiun Cuaca NaTaLia: Stasiun Cuaca Bertenaga Surya Arduino Dilakukan dengan Cara yang Benar

Setelah 1 tahun beroperasi dengan sukses di 2 lokasi berbeda, saya membagikan rencana proyek stasiun cuaca bertenaga surya saya dan menjelaskan bagaimana hal itu berkembang menjadi sistem yang benar-benar dapat bertahan selama periode waktu yang lama dari tenaga surya. Jika Anda mengikuti instruksi saya dan menggunakan bahan yang sama persis seperti yang tercantum, Anda dapat membangun stasiun cuaca bertenaga surya yang akan berjalan selama bertahun-tahun. Sebenarnya satu-satunya faktor yang membatasi berapa lama itu akan berjalan adalah umur baterai yang Anda gunakan.

Langkah 1: Operasi Stasiun Cuaca

1, Pemancar: Kotak yang dipasang di luar ruangan dengan panel surya yang mengirimkan telemetri cuaca (Suhu, Kelembaban, Indeks Panas, Kekuatan Surya) secara berkala ke unit penerima dalam ruangan.

2, Penerima: Unit dalam ruangan yang terbuat dari Raspberry PI 2 + Arduino Mega yang memiliki Penerima RF 433 Mhz yang terhubung untuk penerimaan data. Dalam pengaturan saya, unit ini tidak memiliki fungsi tampilan LCD lokal. Ia berjalan dengan acuh tak acuh. Program C utama menangani penerimaan data yang masuk dari Arduino melalui serial, kemudian memasukkan data ke dalam file teks dan membuat data yang diterima terakhir tersedia melalui telnet untuk perangkat lain untuk menanyakannya.

Stasiun mengendalikan lampu di rumah saya dengan membaca fotoresistor (yang menentukan apakah di luar siang atau malam). Penerima tanpa kepala dalam kasus saya tetapi Anda dapat dengan mudah memodifikasi proyek untuk menambahkan layar LCD. Salah satu perangkat yang menggunakan, mengurai dan menampilkan data cuaca dari stasiun adalah proyek 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

Ada banyak proyek surya di internet tetapi banyak dari mereka melakukan kesalahan umum bahwa sistem mengambil lebih banyak energi dari baterai dari waktu ke waktu apa yang dapat diisi ulang oleh panel surya, terutama selama bulan-bulan musim dingin yang berawan dan gelap.

Ketika Anda merancang sistem tenaga surya, satu-satunya hal yang penting adalah KONSUMSI DAYA, pada semua komponen: mcu, pemancar radio, pengatur tegangan, dll.

Menggunakan komputer besar seperti raspberry pi atau perangkat wifi yang haus daya seperti ESP hanya untuk mengumpulkan dan mengangkut beberapa bit data cuaca akan berlebihan tetapi seperti yang akan saya tunjukkan dalam tutorial ini, bahkan papan Arduino kecil pun demikian.

Yang terbaik adalah selalu mengukur arus selama proses pembuatan Anda dengan meteran atau dengan lingkup (berguna saat Anda mencoba mengukur lonjakan kecil dalam penggunaan selama operasi dalam rentang waktu yang sangat singkat (milidetik)).

Pada gambar pertama Anda dapat melihat stasiun pertama saya (Berbasis Arduino Nano) dan papan Arduino Barebone Atmega 328P kedua.

Versi pertama, meskipun bekerja dengan sempurna (memantau lingkungan dan mengirim data melalui radio) memiliki konsumsi daya yang terlalu tinggi ~ 46mA dan menguras baterai dalam beberapa minggu.

Semua versi menggunakan baterai berikut:

18650 6000mAh Baterai Isi Ulang Li-ion yang Dilindungi Papan Perlindungan Built-in

UPDATE pada baterai ScamFire ini. Meskipun ini adalah Instruksi yang cukup lama, saya masih merasa harus memperbaikinya karena baterai palsu ini. JANGAN membeli baterai yang disebutkan, lakukan penelitian Anda sendiri tentang baterai LION/LIPO lainnya, semua baterai 3.7V akan bekerja dengan proyek ini.

Akhirnya saya punya waktu untuk membongkar baterai ScamFire untuk melihat kapasitas sebenarnya. Oleh karena itu kami akan menjalankan 2 perhitungan berdampingan dengan kapasitas nyata dan "diiklankan".

Pertama-tama itu satu hal bahwa baterai ini palsu dan tidak ada apa yang mereka klaim tentang itu benar, versi baru bahkan lebih buruk mereka menyalin palsu dengan meninggalkan sirkuit perlindungan 2 sen sehingga tidak ada yang akan menghentikan mereka pemakaian ke nol.

Artikel kecil tentang baterai LION/LIPO:

TLDR:

Artinya, tegangan maksimum sel adalah 4.2v dan tegangan "nominal" (rata-rata) adalah 3.7V.

Sebagai contoh, berikut adalah profil tegangan untuk baterai 3.7V/4.2V 'klasik'. Tegangan dimulai pada maksimum 4,2 dan dengan cepat turun menjadi sekitar 3,7V untuk sebagian besar masa pakai baterai. Setelah Anda menekan 3.4V, baterai mati dan pada 3.0V sirkuit pemutus memutuskan baterai.

Pengukuran saya menggunakan dummy load:

Baterai terisi: 4.1V

Cutoff diatur ke: 3.4V

Simulasi beban: 0.15A (perangkat saya memiliki sedikit masalah dengan lebih rendah dari ini.)

Kapasitas terukur: 0,77Ah berikan 0,8 Ah gratis yang 800mAh, bukan 6000mAh yang diiklankan!

Karena baterai ini bahkan tidak memiliki sirkuit pelindung, saya dapat dengan bebas menurunkannya, tetapi pada 3.4V setelah 10 menit, baterai sudah turun menjadi 3.0V.

Oleh karena itu dengan perhitungan sederhana baterai menyediakan:

Teoretis

Tegangan baterai = 3.7V

Daya = 3,7x6000 = 22000 mWh

Nyata

Tegangan baterai = 3,7VDaya = 3,7x800= 2960 mWh

Versi: 0.1 BERBASIS ARDUINO NANO

Bahkan dengan perpustakaan LowPower, Arduino nano mengkonsumsi ~ 16 mA (dalam mode tidur) -> GAGAL.

Teoretis

Pavg=VxIavg =5Vx16mA= 80 mW

Daya tahan baterai = 22000/80 = 275 jam = 11 hari kira-kira

RealPavg=VxIavg =5Vx16mA= 80 mW

Daya tahan baterai = 800/80 = 10 jam

Versi: 0.2 Atmega 328P Barebone

Daya yang dikonsumsi oleh ATmega328 sangat bergantung pada apa yang Anda lakukan dengannya. Hanya duduk di sana dalam keadaan default, dapat menggunakan 16mA @ 5V saat berjalan pada 16MHz.

Ketika ATmega328P dalam Mode Aktif, ia akan terus mengeksekusi beberapa juta instruksi per detik. Selanjutnya, On-Board Peripherals Analog to Digital Converter (ADC), Serial Peripheral Interface (SPI), Timer 0, 1, 2, Two Wire Interface (I2C), USART, Watchdog Timer (WDT), dan Brown-out Detection (BOD) mengkonsumsi daya.

Untuk menghemat daya, ATmega328P MCU mendukung sejumlah mode tidur dan periferal yang tidak digunakan dapat dimatikan. Mode tidur berbeda di bagian mana yang tetap aktif, berdasarkan durasi tidur dan waktu yang dibutuhkan untuk bangun (periode bangun). Mode tidur dan periferal aktif dapat dikontrol dengan perpustakaan tidur dan daya AVR atau, lebih ringkasnya, dengan perpustakaan Daya Rendah yang luar biasa.

Pustaka Daya Rendah mudah digunakan tetapi sangat kuat. Pernyataan LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); menempatkan MCU di SLEEP_MODE_PWR_DOWN selama 16 md hingga 8 d, tergantung pada argumen pertama. Ini menonaktifkan ADC dan BOD. Power-down sleep berarti semua fungsi chip dinonaktifkan hingga interupsi berikutnya. Selanjutnya, osilator eksternal dihentikan. Hanya interupsi level pada INT1 dan INT2, interupsi perubahan pin, pencocokan alamat TWI/I2C, atau WDT, jika diaktifkan, yang dapat membangunkan MCU. Jadi dengan pernyataan tunggal, Anda akan meminimalkan konsumsi energi. Untuk 3.3 V Pro Mini tanpa LED daya dan tanpa regulator (lihat di bawah) yang menjalankan pernyataan, konsumsi energinya adalah 4,5 A. Itu sangat dekat dengan apa yang disebutkan dalam lembar data ATmega328P untuk tidur mati dengan WDT diaktifkan 4,2 A (lembar data ditautkan dalam sumber). Oleh karena itu, saya cukup yakin, bahwa fungsi powerDown mematikan segala sesuatu yang mungkin secara wajar. Dengan pernyataan LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);, WDT akan dinonaktifkan dan Anda tidak akan bangun sampai interupsi dipicu.

Jadi dengan pengaturan barebone kita dapat menempatkan chip ke mode tidur selama 5 menit, sementara itu mengkonsumsi energi yang sangat sedikit (0,04 mA tanpa periferal). Namun ini hanya chip Atmega 328P dengan osilator kristal dan tidak ada yang lain, penguat tegangan yang digunakan dalam konfigurasi ini untuk meningkatkan tegangan baterai dari 3,7V -> 5,0 V juga mengkonsumsi 0,01 mA.

Salah satu penguras tegangan konstan adalah resistor foto tambahan yang meningkatkan konsumsi dalam mode tidur ke keseluruhan 1 mA (ini termasuk semua komponen).

Rumus untuk menghitung konsumsi yang tepat untuk perangkat dalam mode tidur dan bangun adalah:

Rata-rata = (Ton*Ion + Tsleep*Isleep) / (Ton +Tsleep)

Ion = 13mA

Ini sebagian besar berasal dari pemancar RF433 Mhz:

Pemancar:

Tegangan kerja: 3V - 12V untuk maks. penggunaan daya 12VArus kerja: maks Kurang dari 40mA maks, dan min 9mARMode resonansi: (SAW)Mode modulasi: ASKFrekuensi kerja: Eve 315MHz Atau 433MHzDaya transmisi: 25mW (315MHz pada 12V)Kesalahan frekuensi: +150kHz (maks)Kecepatan: kurang dari 10Kbps

Tidur = 1mA

Akan jauh lebih sedikit tanpa photoresistor.

Waktu trunon Ton=250 mS = 0,25s

Waktu tidur Tidur = 5 menit = 300 detik

Rata-rata = (Ton*Ion + Tsleep*Isleep) / (Ton +Tsleep)

Rata-rata = (0,25dtk*13mA + 300dtk*1mA) / (0,25dtk+300dtk)

Rata-rata = 1,26mA

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

Teoretis

Daya tahan baterai = 22000mWh/6mW = 3666 jam = sekitar 152 hari

Nyata

Daya tahan baterai = 800mWh/6mW = 133 jam = kira-kira 5,5 hari

Meskipun ini masih merupakan seri UltraFire yang lebih baik yang saya gunakan pada awalnya, Anda dapat melihat bahwa tanpa panel surya atau konsumsi 1mA yang rendah, proyek ini tidak akan bertahan lama.

Jangan ragu untuk membangun stasiun dan tuliskan temuan dan perhitungan Anda di komentar dan saya akan memperbarui artikelnya. Saya juga akan menghargai hasil dengan MCU yang berbeda dan konverter boost.

Langkah 3: Membangun Stasiun Cuaca yang Sukses

Membangun Stasiun Cuaca yang Sukses
Membangun Stasiun Cuaca yang Sukses
Membangun Stasiun Cuaca yang Sukses
Membangun Stasiun Cuaca yang Sukses
Membangun Stasiun Cuaca yang Sukses
Membangun Stasiun Cuaca yang Sukses
Membangun Stasiun Cuaca yang Sukses
Membangun Stasiun Cuaca yang Sukses

Meskipun ini adalah versi pertama yang berhasil, ini berisi sedikit kegagalan pada gambar dan saya tidak dapat membuat ulang karena stasiun sudah digunakan. Dua penguat tegangan yang ditunjukkan pada gambar dapat diperoleh pada saat penulisan untuk aero-modelling dan aplikasi lainnya. Ketika saya mendesain ulang stasiun saya, saya berpikir untuk mendapatkan papan stepup tegangan yang lebih kecil dan lebih efisien, namun ukurannya lebih kecil jelas tidak berarti lebih efisien.

Modul kecil baru pada gambar yang bahkan tidak memiliki indikator led sebenarnya menguras 3mA (*GAGAL*) dengan sendirinya, jadi saya tetap menggunakan papan lama saya:

Kontrol PFM DC-DC USB 0.9V-5V ke 5V dc Boost Step-up Power Supply Module

Pada saat penulisan modul ini masih tersedia di Ebay seharga 99 sen tetapi jika Anda memutuskan untuk menggunakan booster lain, selalu periksa konsumsi daya siaga. Dengan booster berkualitas baik, seharusnya tidak lebih dari milik saya (0,01 mA), meskipun LED kecil di papan harus disolder.

Langkah 4: Daftar Perangkat Keras

Daftar Perangkat Keras
Daftar Perangkat Keras
  • 18650 6000mAh Baterai Isi Ulang Li-ion yang Dilindungi Papan Perlindungan Built-in
  • Atmega 328P16M 5V dengan bootloader
  • Adafruit DC Boarduino (Kompatibel dengan Arduino) Kit (w/ATmega328) < ini akan menjadi investasi yang baik jika Anda melakukan proyek barebone di masa depan
  • Foto Resistor Peka Cahaya Fotoresistor Optoresistor 5mm GL5539
  • 1A 1000V Dioda 1N4007 IN4007 DO-41 Dioda Penyearah
  • Kontrol PFM DC-DC USB 0.9V-5V ke 5V dc Boost Step-up Power Supply Module
  • 1.6W 5.5V 266mA Sistem Modul Panel Surya Mini Pengisi Daya Sel Epoxy DIY
  • TP405 5V Mini USB 1A Baterai Lithium Pengisian Papan Charger Modul
  • 433Mhz RF transmitter dan receiver link kit untuk Arduino/ARM/MC remote control <Kit, berisi pemancar dan reveiver
  • IP65 Switch Protector Junction Box Kandang Tahan Air Luar Ruangan 150x110x70mm
  • Modul Sensor Suhu dan Kelembaban Relatif DHT22 Baru untuk Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007dioda
  • Adafruit 16 MHz Ceramic Resonator / Oscillator [ADA1873]
  • Arduino UNO/Mega dll untuk stasiun penerima + Raspberry PI 1/2/3
  • Kotak Plastik Akrilik Bening (opsional)

Anda dapat menemukan semua ini di Ebay, saya tidak ingin mempromosikan penjual mana pun dengan menautkan ke halaman mereka dan tautannya akan mati di masa mendatang.

Catatan untuk daftar perangkat keras:

Untuk berjaga-jaga jika Anda merusak Atmega entah bagaimana dengan pemrograman, beli lebih banyak, hal yang sama berlaku untuk penguat tegangan dan pengontrol muatan surya.

Pengisi daya surya berisi 2 LED warna kecil yang hanya menyala jika pengisian daya surya dan menunjukkan (merah-> pengisian daya, biru-> status terisi penuh). Ini bisa tidak disolder juga. Ini lebih memberi sedikit lebih banyak jus ekstra ke baterai saat mengisi daya.

Seperti yang Anda lihat, tidak ada tempat baterai di daftar saya. Mengapa? Karena mereka tidak bisa diandalkan. Saya memiliki banyak kesempatan ketika baterai keluar dari dudukannya dan kehilangan koneksi. Terutama jika pengaturan Anda dipasang di tiang piringan tinggi seperti milik saya, buka untuk kondisi cuaca buruk apa pun. Saya bahkan memasang ritsleting baterai ke dalam dudukan dengan 2 ritsleting dan masih berhasil keluar. Jangan lakukan itu, cukup lepaskan lapisan eksternal dari baterai dan solder kabel langsung ke bagian bawah baterai, yang berisi sirkuit perlindungan overcharge (jangan melewati perlindungan). Dudukan baterai hanya dapat digunakan untuk menahan baterai pada tempatnya di perangkat.

TP405 5V Mini USB 1A Papan Pengisian Baterai Lithium: sayangnya papan ini tidak menyertakan perlindungan arus balik ke panel surya, untuk ini Anda memerlukan 1 dioda lagi untuk ditempatkan di antara satu kaki panel surya dan sirkuit pengisian untuk menghentikan percobaan arus mengalir kembali ke panel surya di malam hari.

Langkah 5: Perakitan

perakitan
perakitan
perakitan
perakitan
perakitan
perakitan

Papan ini berisi komponen yang relatif sedikit dan penanda di papan cukup sederhana.

Pastikan Anda TIDAK memasukkan Atmega328P dengan cara yang salah (yang dapat memanaskan dan merusak chip, dapat merusak penguat tegangan juga).

Dalam pengaturan ini, chip menghadap ke bawah (lubang U kecil menandai PIN1). Semua komponen lainnya harus jelas.

Gunakan kabel berpelindung (mis.: Kabel Audio dari CDrom akan baik-baik saja) untuk LDR. Dalam beberapa kasus (pengujian selama berminggu-minggu) ternyata mengganggu transmisi sinyal radio. Ini adalah salah satu bug yang sulit untuk dipecahkan, jadi jika Anda tidak ingin masalah cukup gunakan kabel berpelindung, akhir cerita.

LED: LED di bagian bawah kotak awalnya ditambahkan untuk berkedip ketika ada transmisi radio keluar tetapi kemudian saya menganggapnya sebagai pemborosan daya dan hanya berkedip 3 kali pada proses bootup.

TP: adalah titik uji untuk mengukur arus untuk rangkaian keseluruhan.

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

Langkah 6: Desain Kasus

Desain Kasus
Desain Kasus
Desain Kasus
Desain Kasus
Desain Kasus
Desain Kasus

Meskipun sedikit berlebihan, kubus cetak 3D (weather_cube) dibuat untuk menahan sensor suhu DHT22 di tempatnya. Kubus direkatkan ke bagian bawah kotak IP, hanya menampilkan 1 lubang untuk udara mencapai sensor. Saya telah menambahkan jaring di lubang melawan lebah, tawon dan lalat kecil lainnya.

Kotak eksternal dapat digunakan secara opsional untuk membuat stasiun lebih tahan air jika Anda memasangnya di tiang piring di tempat terbuka.

Ide untuk 1 fitur yang berguna: menambahkan pelat atap logam besar 1-2cm di bagian atas kotak yang memberikan bayangan dari matahari selama musim panas, meskipun ini juga dapat menghilangkan sinar matahari yang berguna dari panel. Anda dapat membuat desain yang memisahkan panel dan kotak (membiarkan panel di bawah sinar matahari, kotak dalam bayangan).

Pada gambar: salah satu stasiun dihapus dari lingkungan kerja setelah 1 tahun, tegangan baterai masih menakjubkan 3,9V, tidak ada kerusakan air pada bagian mana pun dari kotak meskipun jaring yang saya rekatkan di bagian bawah kubus terkoyak. Alasan stasiun perlu diservis adalah kesalahan koneksi pada konektor LDR, meskipun kabel jumper tampaknya masih pada tempatnya, koneksi terputus oleh karena itu pin terkadang mengambang memberikan pembacaan analog LDR yang buruk. Saran: jika Anda menggunakan kabel jumper PC standar, lem semuanya setelah stasiun bekerja dengan sempurna untuk menghindari hal ini.

Langkah 7: Perangkat Lunak

Perangkat lunak
Perangkat lunak

Kode perangkat lunak akan memerlukan 3 perpustakaan eksternal (LowPower, DHT, VirtualWire). Saya kesulitan menemukan beberapa dari mereka dengan mudah online akhir-akhir ini, jadi saya melampirkannya dalam file ZIP terpisah. Terlepas dari OS apa yang Anda gunakan Linux / Windows, cukup temukan folder perpustakaan Arduino IDE Anda dan ekstrak di sana.

Sekadar catatan, terlepas dari itu saya sudah menyarankan untuk tidak membeli DHT11, jika Anda menggunakan jenis sensor DHT yang salah, program hanya akan hang selamanya di awal di bagian inisialisasi (Anda bahkan tidak akan melihat led startup berkedip 3 kali).

Kode loop utama sangat sederhana, pertama membaca nilai lingkungan (suhu, indeks panas, kelembaban, matahari), mengirimkannya melalui radio kemudian menggunakan perpustakaan daya rendah untuk membuat Arduino dalam keadaan tidur selama 5 menit.

Saya telah menemukan bahwa menurunkan baudrate akan meningkatkan stabilitas transmisi radio. Stasiun mengirimkan sejumlah kecil data, 300 bps lebih dari cukup. Juga jangan lupa bahwa pemancar hanya beroperasi dari kira-kira. 4.8V, di masa depan versi 3.3V ini mungkin menyebabkan kualitas transmisi yang lebih buruk (mengirim data melalui dinding dan hambatan lainnya). Saya mengalami masalah dengan menggunakan Arduino Mega yang terpasang pada Raspberry PI 2 yang memberi daya pada Mega dari PI, sehingga saya tidak menerima transmisi apa pun. Solusinya adalah memberi daya pada Mega dari catu 12V eksternal yang terpisah.

Langkah 8: Versi 2 (Berbasis ESP32)

Versi 2 (Berbasis ESP32)
Versi 2 (Berbasis ESP32)
Versi 2 (Berbasis ESP32)
Versi 2 (Berbasis ESP32)
Versi 2 (Berbasis ESP32)
Versi 2 (Berbasis ESP32)

Segala sesuatu yang bisa pecah akan pecah untuk mengutip Murphy tua yang baik dan akhirnya setelah bertahun-tahun stasiun gagal dengan cara yang misterius. Seseorang mulai mengirim data surya yang tidak masuk akal yang mencapai puluhan ribu, yang tidak mungkin karena: Papan Arduino berisi 6 saluran (8 saluran pada Mini dan Nano, 16 pada Mega), konverter analog ke digital 10-bit. Ini berarti akan memetakan tegangan input antara 0 dan 5 volt menjadi nilai integer antara 0 dan 1023. Jadi setelah mengganti radio, LDR dan memprogram ulang Atmega 328P beberapa kali saya menyerah dan memutuskan sudah waktunya untuk inovasi. Ayo ESP32.

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

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

Mikrokontroler ESP-32

Tegangan Operasi 3.3V Pin I/O Digital 19 Pin Input Analog 6 Kecepatan Jam (Maks) 240Mhz Flash 4M byte Panjang 5mm Lebar 2.54mm Berat 4g

Yang tidak seperti gambar yang tidak memiliki logo LOLIN (palsu dari China). Kejutan menyenangkan pertama saya adalah pinout yang tercetak di papan cocok dengan pinout Arduino! Setelah berurusan dengan begitu banyak papan noname di mana saya harus mencari pinout sepanjang hari, lelah membuat kesalahan, akhirnya papan di mana pinout lurus ke depan WoW!

Namun inilah sisi gelap dari cerita ini:

Awalnya saya sudah menghubungkan LDR ke A15 yang merupakan pin 12 karena lebih mudah merekatkan kedua pin tersebut. Lalu saya mendapatkan 4095 pembacaan (yang merupakan maksimum yang bisa Anda dapatkan dengan AnlogRead di ESP32) yang membuat saya gila karena seluruh alasan mengapa saya membangun kembali stasiun adalah pembacaan LDR yang rusak dari yang lama (DHT masih berfungsi dengan baik). Jadi ternyata:

Esp 32 mengintegrasikan dua register ACD 12-bit. ADC1 dengan 8 saluran terpasang ke GPIO 32-39 dan ADC2 dengan 10 saluran di pin lain. Masalahnya ESP32 menggunakan ADC2 untuk mengatur fungsi wifi, jadi jika Anda menggunakan Wifi, Anda tidak dapat menggunakan register itu. API driver ADC mendukung ADC1 (8 saluran, terpasang ke GPIO 32 - 39), dan ADC2 (10 saluran, terpasang ke GPIO 0, 2, 4, 12 - 15 dan 25 - 27). Namun, penggunaan ADC2 memiliki beberapa batasan untuk aplikasi:

ADC2 digunakan oleh driver Wi-Fi. Oleh karena itu aplikasi hanya dapat menggunakan ADC2 ketika driver Wi-Fi belum dimulai. Beberapa pin ADC2 digunakan sebagai strapping pin (GPIO 0, 2, 15) sehingga tidak dapat digunakan secara bebas. Seperti halnya dalam Kit Pengembangan resmi berikut:

Jadi menghubungkan LDR dari pin 12 ke A0 yang merupakan VP menyelesaikan semuanya tetapi saya tidak mengerti mengapa mereka bahkan mencantumkan pin ADC2 sebagai tersedia untuk pembuat. Berapa banyak hobbist lain yang membuang banyak waktu sampai menemukan ini? Setidaknya tandai pin yang tidak dapat digunakan dengan warna merah atau sesuatu atau jangan sebutkan di manual sama sekali sehingga pembuat lain hanya dapat mengetahuinya jika mereka benar-benar membutuhkannya. Seluruh tujuan ESP32 adalah menggunakannya dengan WIFI, semua orang menggunakannya dengan WIFI.

Awal yang baik bagaimana mengatur Arduino IDE untuk board ini:

Meskipun saya memasukkannya ke dalam kode di sini sekali lagi:

Kode ini mungkin tidak dapat dikompilasi untuk model ESP32 lain selain Weemos LOLIN 32 !

Pengaturan build: -Gunakan upload/serial: 115200 -Gunakan CPU/ram: 240Mhz(Wifi|BT) -Gunakan frekuensi flash: 80 Mhz

Ada banyak stasiun cuaca berbasis ESP32 di internet, mereka jauh lebih umum daripada versi 1 saya dengan chip barebone karena lebih mudah diatur, Anda tidak perlu programmer hanya memasang perangkat di usb dan memprogramnya dan mereka mode tidur nyenyak sangat baik untuk waktu lama berjalan dari baterai. Langsung dari kelelawar ini adalah hal pertama yang saya uji bahkan sebelum menyolder di pin breakout karena seperti yang saya catat beberapa tempat dalam proyek ini, yang PALING penting adalah konsumsi daya dan dengan baterai (palsu) saat ini dan panel surya kecil siaga daya tidak dapat benar-benar melampaui 1-2mA jika tidak, proyek tidak akan dapat menopang dirinya sendiri dalam jangka panjang.

Itu adalah kejutan yang menyenangkan lagi bahwa mode tidur nyenyak berfungsi seperti yang diiklankan. Selama tidur nyenyak, arusnya sangat rendah sehingga multimeter murah saya bahkan tidak dapat mengukurnya (berfungsi untuk saya).

Selama pengiriman data, arusnya sekitar 80mA (yaitu sekitar 5 kali lebih banyak daripada saat Atmega 328P bangun dan mengirim), namun jangan lupa bahwa dengan V1 ada pengurasan daya rata-rata 1mA pada LDR dalam mode tidur (yang juga tergantung pada tingkat cahaya dan beralih dari 0,5mA - 1mA) yang sekarang hilang.

Sekarang baterai UltraFire dibantah jika Anda menggunakan baterai yang sama, inilah yang dapat Anda harapkan:

Rata-rata = (Ton*Ion + Tsleep*Isleep) / (Ton +Tsleep)

Rata-rata = (2 d*80mA + 300 d*0,01mA) / (2 d+300 d) Rata-rata = 0,5mA

Pavg=VxIavg =5Vx0.5mA=2,5 mW

Teoretis

Daya tahan baterai = 22000mWh/2,5mW = 8800 jam = kira-kira 366 hari

Nyata

Daya tahan baterai = 800mWh/2,5mW = 320 jam = 13 hari kira-kira

Saya tidak memiliki ruang lingkup untuk mengukur dengan tepat waktu nyala, tetapi dengan penyesuaian saya, itu mencapai sekitar 2 detik.

Saya tidak ingin menghabiskan sore hari untuk mengkodekan semuanya secara khusus, jadi saya mencari beberapa stasiun cuaca lain di Instructables berdasarkan ESP32 untuk melihat apa yang mereka lakukan untuk penyimpanan data. Sayangnya perhatikan bahwa mereka menggunakan situs yang tidak fleksibel dan terbatas seperti cuaca. Karena saya bukan penggemar "cloud" dan kode mereka lama rusak karena situs tersebut telah mengubah API-nya sejak saat itu, saya telah mengambil 10 menit untuk membuat solusi khusus karena tidak sesulit yang dibayangkan. Mari kita mulai!

Pertama-tama tidak ada gambar papan sirkuit secara terpisah untuk proyek ini, karena menggunakan komponen yang sama persis (maaf untuk yang disolder dalam gambar papan tempat memotong roti yang jelek) sebagai V1 dengan perbedaan bahwa semuanya berjalan 3.3V. DHT disambungkan dengan pullup ke VCC, LDR ditarik ke bawah dengan 10k. Masalah yang mungkin terlihat dengan baterai 18650 seperti baterai palsu Cina saya (6500 mAh ultra sun fire lol:D) adalah bahwa mereka memulai kurva pelepasan dari sekitar 4.1V usia baru dan pergi sampai sirkuit pemutus mereka dimulai untuk menghentikan kerusakan sel (mereka yang cukup beruntung untuk memilikinya). Ini tidak baik bagi kami sebagai input 3.3V. Meskipun papan LOLIN ini memiliki konektor baterai lithium dan sirkuit pengisian daya dalam proyek ini, saya ingin memperbarui sebagian besar apa yang saya bisa dari stasiun lama sehingga dengan 18650 lama Anda TIDAK BISA menggunakan pengisi daya bawaan ini. Solusinya sangat sederhana: Saya memotong kabel micro USB yang disolder ke 5V dari penguat tegangan lama dan masalah selesai, karena papan pada microUSB memiliki regulator.

Jadi perbedaan antara versi lama dan baru yang di baterai lama menyediakan 3.7V -> ditingkatkan ke 5V -> ardu berjalan di 5V -> semua komponen berjalan di 5V.

Yang baru: baterai menyediakan 3.7V -> ditingkatkan ke 5V -> diatur melalui reg onboard pada ESP32 -> semua komponen berjalan pada 3.3V.

Dari segi perangkat lunak, kita akan membutuhkan pustaka DHT lain juga, DHT Arduino tidak kompatibel dengan ESP. Apa yang kita butuhkan disebut DHT ESP.

Saya mulai mendasarkan kode saya pada contoh DHT yang diberikan kode ini. Cara kerja kodenya adalah:

1, Dapatkan data lingkungan dari data DHT + Solar dari fotosel

2, Hubungkan ke wifi dengan IP statis

3, POST data ke skrip php

4, Tidurlah selama 10 menit

Seperti yang akan Anda perhatikan, saya menyetel kode untuk efisiensi untuk benar-benar meminimalkan waktu bangun karena menghabiskan daya 5 kali lipat daripada yang dilakukan proyek lama ketika dihidupkan. Bagaimana saya melakukan ini? Pertama-tama jika ada kesalahan APAPUN, fungsi getTemperature() akan kembali dengan false (yang berarti 10 menit tidur lagi). Ini bisa seperti sensor DHT tidak dapat dimulai atau koneksi wifi tidak tersedia. Seperti yang Anda perhatikan loop while() yang biasa untuk terus mencoba asosiasi wifi selamanya juga dihapus tetapi penundaan 1 detik harus dibiarkan di sana jika tidak, itu tidak akan selalu terhubung dan itu juga tergantung pada jenis AP, memuat dll seberapa cepat itu akan terjadi, dengan 0,5 detik saya mendapatkan perilaku yang tidak konsisten (kadang-kadang tidak dapat terhubung). Jika ada yang tahu cara yang lebih baik untuk melakukan ini, silakan tinggalkan di komentar. Hanya ketika data DHT dibaca DAN koneksi wifi menyala, ia akan mencoba memposting data ke skrip di server web. Semua jenis fungsi pembuang waktu seperti Serial.println() juga dinonaktifkan dalam mode operasional normal. Sebagai server saya juga menggunakan IP untuk menghindari pencarian DNS yang tidak perlu, dalam kode saya gateway default dan server dns diatur ke 0.0.0.0.

Saya tidak mengerti mengapa begitu sulit untuk membuat API Anda sendiri ketika yang diperlukan hanyalah:

sprintf(respons, "temp=%d&hum=%d&hi=%d&sol=%d", temp, hum, hai, sol);

int httpResponseCode =

Anda meletakkan kode php kecil ini ke raspberry pi apa pun dan Anda dapat melakukan tugas system() segera berdasarkan telemetri seperti menyalakan kipas angin atau menyalakan lampu jika hari cukup gelap.

Beberapa catatan tentang kode:

WiFi.config (IP statis, gateway, subnet, dns); // HARUS setelah Wifi dimulai betapa bodohnya…

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

Ya baik sekarang Anda tahu. Juga urutan konfigurasi IP dapat berubah melalui platform, saya mencoba contoh lain terlebih dahulu di mana nilai gateway dan subnet dialihkan. Mengapa mengatur IP statis? Yah itu cukup jelas, jika Anda memiliki kotak khusus di jaringan Anda seperti server linux yang menjalankan isc dhcpd, Anda tidak ingin seratus juta entri log dari saat ESP bangun dan mendapatkan IP dari DHCP. Router biasanya tidak mencatat asosiasi sehingga tidak terlihat. Ini adalah harga penghematan daya.

V2 tidak pernah dapat mempertahankan dirinya sendiri karena baterai berkualitas buruk dan saya hanya memasangnya di adaptor jadi jika Anda ingin membuat V1 atau V2 JANGAN membeli baterai yang disebutkan, lakukan riset sendiri tentang baterai (setiap 18650 lebih dari 2000mAh kapasitas yang diiklankan di Ebay adalah penipuan dengan probabilitas tinggi).

Direkomendasikan: