Talaan ng mga Nilalaman:

NaTaLia Weather Station: Arduino Solar Powered Weather Station Tapos na sa Tamang Daan: 8 Hakbang (na may Mga Larawan)
NaTaLia Weather Station: Arduino Solar Powered Weather Station Tapos na sa Tamang Daan: 8 Hakbang (na may Mga Larawan)

Video: NaTaLia Weather Station: Arduino Solar Powered Weather Station Tapos na sa Tamang Daan: 8 Hakbang (na may Mga Larawan)

Video: NaTaLia Weather Station: Arduino Solar Powered Weather Station Tapos na sa Tamang Daan: 8 Hakbang (na may Mga Larawan)
Video: My hotel mirror was TWO SIDED 😱 2024, Hulyo
Anonim
NaTaLia Weather Station: Tapos ng Tamang Daan ang Arduino Solar Powered Weather Station
NaTaLia Weather Station: Tapos ng Tamang Daan ang Arduino Solar Powered Weather Station
NaTaLia Weather Station: Tapos ng Tamang Daan ang Arduino Solar Powered Weather Station
NaTaLia Weather Station: Tapos ng Tamang Daan ang Arduino Solar Powered Weather Station

Matapos ang 1 taon ng matagumpay na pagpapatakbo sa 2 magkakaibang mga lokasyon binabahagi ko ang aking mga plano ng proyekto ng solar Power Weather at ipinapaliwanag kung paano ito umunlad sa isang system na maaaring mabuhay sa mahabang panahon mula sa solar power. Kung susundin mo ang aking mga tagubilin at ginagamit ang eksaktong parehong mga materyales tulad ng nakalista, maaari kang bumuo ng isang solar Powered Weather Station na tatakbo sa loob ng maraming taon. Sa totoo lang ang tanging kadahilanan na naglilimita kung gaano katagal ito tatakbo ay ang habang-buhay ng baterya na iyong ginagamit.

Hakbang 1: Pagpapatakbo ng Weather Station

1, Transmitter: Panlabas na naka-mount na kahon na may solar panel na nagpapadala ng telemetry ng panahon (Temperatura, Humidity, Heat Index, Solar Strenght) pana-panahon sa unit ng panloob na receiver.

2, Receiver: Panloob na yunit na ginawa mula sa isang Raspberry PI 2 + Arduino Mega pagkakaroon ng 433 Mhz RF Receiver na konektado para sa pagtanggap ng data. Sa aking pag-set up ang yunit na ito ay walang anumang lokal na pagpapaandar sa display ng LCD. Tumatakbo itong walang ingat. Ang isang pangunahing programa ng C ay nangangalaga sa pagtanggap ng papasok na data mula sa Arduino sa pamamagitan ng serial, pagkatapos ay pag-log ng data sa isang text file at ginawang magagamit ang huling natanggap na data sa pamamagitan ng telnet para sa iba pang mga aparato upang i-query ito.

Kinokontrol ng istasyon ang mga ilaw sa aking bahay sa pamamagitan ng pagbabasa ng photoresistor (na tumutukoy kung araw o gabi sa labas). Ang tatanggap ay walang ulo sa aking kaso ngunit madali mong mababago ang proyekto upang magdagdag ng isang LCD display. Ang isa sa mga aparato na gumagamit, pag-parse at pagpapakita ng data ng panahon mula sa istasyon ay ang aking iba pang proyekto: Ironforge ang NetBSD Toaster.

Hakbang 2: Mga Unang Bersyon

Mga unang Bersyon
Mga unang Bersyon
Mga unang Bersyon
Mga unang Bersyon
Mga unang Bersyon
Mga unang Bersyon
Mga unang Bersyon
Mga unang Bersyon

Mayroong maraming mga solar na proyekto sa net ngunit marami sa kanila ang gumagawa ng karaniwang pagkakamali na ang system ay kumukuha ng mas maraming enerhiya mula sa baterya sa paglipas ng panahon kung ano ang maaaring mapunan ng solar panel, lalo na sa maulap, madilim na buwan ng taglamig.

Kapag nag-disenyo ka ng isang solar powered system na ang mahalaga lamang ay POWER CONSUMPTION, sa lahat ng mga bahagi: mcu, radio transmitter, voltage regulator atbp.

Ang paggamit ng isang malaking computer tulad ng isang raspberry pi o power gutom na wifi aparato tulad ng ESP upang makolekta at magdala ng ilang mga piraso ng data ng panahon ay magiging labis na labis ngunit tulad ng ipapakita ko sa tutorial na ito kahit na isang maliit na board ng Arduino ay.

Ang pinakamahusay ay palaging pagsukat ng kasalukuyang sa panahon ng iyong proseso ng pagbuo na may isang metro o may isang saklaw (kapaki-pakinabang kapag sinubukan mong sukatin ang maliliit na mga spike sa paggamit sa panahon ng operasyon sa napakakaunting mga timepans (milliseconds)).

Sa unang larawan maaari mong makita ang aking unang (Arduino Nano Batay) istasyon at ang pangalawang Arduino Barebone Atmega 328P board.

Ang unang bersyon, kahit na ito ay ganap na gumana (pagsubaybay sa kapaligiran at pagpapadala ng data sa pamamagitan ng radyo) ay masyadong mataas ang pagkonsumo ng kuryente ~ 46mA at pinatuyo ang baterya sa loob ng ilang linggo.

Ang lahat ng mga bersyon ay gumagamit ng sumusunod na baterya:

18650 6000mAh Protected Li-ion Rechargeable Battery Built-in Protection Board

I-UPDATE sa mga bateryang ito ng ScamFire. Kahit na ito ay isang medyo luma na Nakagagawa ay naramdaman kong pinilit na iwasto ito dahil sa bogus na baterya na ito. HUWAG bilhin ang nabanggit na baterya, gawin ang iyong sariling pagsasaliksik tungkol sa iba pang mga baterya ng LION / LIPO, lahat ng mga 3.7V na baterya ay gagana sa proyektong ito.

Sa wakas nagkaroon ako ng oras upang i-debunk ang baterya ng ScamFire upang makita kung ano ang tunay na kakayahan. Samakatuwid tatakbo kami ng 2 mga kalkulasyon sa tabi ng tunay at ang "na-advertise" na mga kapasidad.

Una sa lahat iyan ang isang bagay na ang baterya na ito ay peke at walang anuman ang kanilang inaangkin tungkol dito ay totoo, ang mga bagong bersyon ay mas masahol pa na kinopya nila ang pekeng na iniwan ang 2 sentimo proteksyon circuit kaya walang makakapigil sa kanila na maalis ang zero.

Isang maliit na artikulo sa mga baterya ng LION / LIPO:

TLDR:

Ang ibig sabihin nito ay ang maximum na boltahe ng cell ay 4.2v at ang "nominal" (average) na boltahe ay 3.7V.

Halimbawa, narito ang isang profile ng boltahe para sa isang 'klasikong' 3.7V / 4.2V na baterya. Ang boltahe ay nagsisimula sa 4.2 maximum at mabilis na bumaba sa tungkol sa 3.7V para sa karamihan ng buhay ng baterya. Kapag na-hit mo ang 3.4V ang baterya ay patay na at sa 3.0V ang cutoff circuitry ay ididiskonekta ang baterya.

Ang aking mga sukat gamit ang isang dummy load:

Sisingilin ang baterya: 4.1V

Itinakda ang Cutoff sa: 3.4V

Pag-load ng simulation: 0.15A (ang aking aparato ay may kaunting problema sa pagbaba ng mas mababa sa ito.)

Sinusukat na kapasidad: 0.77Ah bigyan ito ng isang walang bayad na 0.8 Ah na 800mAh sa halip na na-advertise na 6000mAh!

Dahil ang baterya na ito ay wala kahit na ang circuit ng proteksyon maaari akong malayang bumaba ngunit sa 3.4V pagkatapos ng 10 minuto nag-crash ito pababa sa 3.0V.

Samakatuwid sa mga simpleng kalkulasyon na ibinibigay ng baterya:

Teoretikal

Boltahe boltahe = 3.7V

Lakas = 3.7x6000 = 22000 mWh

Totoo

Boltahe ng baterya = 3.7VPower = 3.7x800 = 2960 mWh

Bersyon: 0.1 ARDUINO NANO BASED

Kahit na sa library ng LowPower isang Arduino nano ang kumonsumo ~ 16 mA (sa mode ng pagtulog) -> Nabigo.

Teoretikal

Pavg = VxIavg = 5Vx16mA = 80 mW

Buhay ng baterya = 22000/80 = 275 oras = 11 araw na tinatayang

RealPavg = VxIavg = 5Vx16mA = 80 mW

Buhay ng baterya = 800/80 = 10 oras

Bersyon: 0.2 Atmega 328P Barebone

Ang lakas na natupok ng isang ATmega328 ay nakasalalay nang malaki sa iyong ginagawa dito. Nakaupo lamang doon sa isang default na estado, maaari itong gumamit ng 16mA @ 5V habang tumatakbo sa 16MHz.

Kapag ang ATmega328P ay nasa Aktibo Mode, patuloy itong magpapatupad ng milyun-milyong mga tagubilin bawat segundo. Dagdag dito, ang On-Board Peripherals Analog to Digital Converter (ADC), Serial Peripheral Interface (SPI), Timer 0, 1, 2, Two Wire Interface (I2C), USART, Watchdog Timer (WDT), at ang Brown-out Detection (BOD) ubusin ang lakas.

Upang makatipid ng kuryente, sinusuportahan ng ATmega328P MCU ang isang bilang ng mga mode ng pagtulog at maaaring i-off ang mga hindi nagamit na peripheral. Ang mga mode ng pagtulog ay magkakaiba sa kung anong mga bahagi ang mananatiling aktibo, sa tagal ng pagtulog at sa oras na kinakailangan upang magising (panahon ng paggising). Ang mode ng pagtulog at mga aktibong peripheral ay maaaring kontrolin gamit ang AVR na pagtulog at mga library ng kuryente o, mas maikli, na may mahusay na Low-Power library.

Ang Low-Power library ay simpleng gamitin ngunit napakalakas. Ang pahayag na LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); inilalagay ang MCU sa SLEEP_MODE_PWR_DOWN sa loob ng 16 ms hanggang 8 s, depende sa unang argumento. Hindi pinagagana nito ang ADC at ang BOD. Ang pagtulog na power-down ay nangangahulugang ang lahat ng mga pagpapaandar ng maliit na tilad ay hindi pinagana hanggang sa susunod na nakakagambala. Dagdag dito, ang panlabas na oscillator ay tumigil. Ang mga antas lamang na nakakagambala sa INT1 at INT2, ang mga pagkagambala sa pagbabago ng pin, tugma sa address ng TWI / I2C, o ang WDT, kung pinagana, ang maaaring magising ang MCU. Kaya't sa solong pahayag, mababawasan ang pagkonsumo ng enerhiya. Para sa isang 3.3 V Pro Mini na walang kapangyarihan na LED at walang regulator (tingnan sa ibaba) na nagpapatakbo ng pahayag, ang pagkonsumo ng enerhiya ay 4.5 μA. Napakalapit iyon sa binanggit sa ATmega328P datasheet para sa power-down na pagtulog na pinagana ng WDT na 4.2 μA (naka-link ang datasheet sa mga mapagkukunan). Samakatuwid, ako ay lubos na may tiwala, na ang powerDown na function ay nakasara sa lahat ng bagay na posible na posible. Sa pahayag na LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, ang WDT ay hindi pagaganahin at hindi ka gigising hanggang sa magkaroon ng isang nagagambala.

Kaya sa pag-set up ng barebone maaari naming ilagay ang maliit na tilad sa mode ng pagtulog sa loob ng 5 minuto, habang kumakain ito ng napakaliit na halaga ng enerhiya (0.04 mA nang walang mga peripheral). Gayunpaman ito ay lamang ang Atmega 328P chip na may kristal oscillator at wala nang iba pa, ang boltahe booster na ginamit sa pagsasaayos na ito upang mapalakas ang boltahe ng baterya mula sa 3.7V -> 5.0 V ay kumakain din ng 0.01 mA.

Ang isang pare-pareho na boltahe na alisan ng tubig ay ang idinagdag na risistor ng larawan na bumubulusok ang pagkonsumo sa mode ng pagtulog sa isang pangkalahatang 1 mA (kasama rito ang lahat ng mga bahagi).

Ang formula para sa pagkalkula ng tumpak na pagkonsumo para sa aparato sa parehong mode ng pagtulog at paggising ay:

Iava =

Ion = 13mA

Karamihan ito ay nagmumula sa RF433 Mhz transmitter:

Transmitter:

Nagtatrabaho boltahe: 3V - 12V fo max. paggamit ng kuryente 12VWowing kasalukuyang: max Mas mababa sa 40mA max, at min 9mAResonance mode: (SAW) Modulate mode: ASKWorking frequency: Eve 315MHz O 433MHzTransmission power: 25mW (315MHz sa 12V) Error sa dalas: + 150kHz (max) Velocity: mas mababa sa 10Kbps

Tulog = 1mA

Ay makabuluhang mas mababa nang walang photoresistor.

Trunon time Ton = 250 mS = 0.25s

Oras ng pagtulog Tulog = 5 min = 300s

Iava =

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

Iavg = 1.26mA

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

Teoretikal

Buhay ng baterya = 22000mWh / 6mW = 3666 na oras = 152 araw na tinatayang

Totoo

Buhay ng baterya = 800mWh / 6mW = 133 oras = 5.5 araw na tinatayang

Bagaman ang mga ito ay isang mas mahusay na serye ng UltraFire kung ano ang ginamit ko sa una maaari mong makita na wala ang solar panel o ang mababang 1mA na pagkonsumo ng proyektong ito ay hindi makakaligtas nang matagal.

Huwag mag-atubiling itayo ang istasyon at isulat ang iyong mga natuklasan at kalkulasyon sa mga komento at ia-update ko ang artikulo. Gusto ko ring pahalagahan ang mga resulta sa iba't ibang mga MCU at palakasin ang mga converter.

Hakbang 3: Pagbuo ng isang Matagumpay na Istasyon ng Panahon

Pagbuo ng isang matagumpay na Weather Station
Pagbuo ng isang matagumpay na Weather Station
Pagbuo ng isang matagumpay na Weather Station
Pagbuo ng isang matagumpay na Weather Station
Pagbuo ng isang matagumpay na Weather Station
Pagbuo ng isang matagumpay na Weather Station
Pagbuo ng isang matagumpay na Weather Station
Pagbuo ng isang matagumpay na Weather Station

Bagaman ito ang unang matagumpay na bersyon, naglalaman ito ng kaunting kabiguan sa mga larawan at hindi ko muling mabubuo ang mga iyon dahil na-deploy na ang mga istasyon. Ang dalawang boltahe na boosters na ipinakita sa larawan ay maaaring makuha sa oras ng pagsulat para sa aero-modeling at iba pang mga application. Nang muling idisenyo ko ang aking istasyon iniisip ko ang pagkuha ng isang mas maliit at mas mahusay na stepup board ng boltahe, subalit mas maliit ang sukat ay tiyak na hindi nangangahulugan na ito ay mas mahusay.

Ang bagong maliit na module sa larawan na kung saan ay walang kahit isang tagapagpahiwatig na humantong talagang pinatuyo ang 3mA (* FAIL *) nang mag-isa, kaya't nanatili ako sa aking lumang board:

Kontrol ng PFM DC-DC USB 0.9V-5V hanggang 5V dc Boost Step-up na Power Supply Module

Sa oras ng pagsulat ng modyul na ito ay magagamit pa rin sa Ebay para sa 99 sentimo ngunit kung magpasya kang gumamit ng isa pang booster, laging suriin ang standby na pagkonsumo ng kuryente. Sa pamamagitan ng isang mahusay na kalidad booster hindi ito dapat higit sa minahan (0.01 mA), kahit na ang maliit na LED sa board ay kailangang ma-de-solder.

Hakbang 4: Listahan ng Hardware

Listahan ng Hardware
Listahan ng Hardware
  • 18650 6000mAh Protected Li-ion Rechargeable Battery Built-in Protection Board
  • Atmega 328P16M 5V na may bootloader
  • Adafruit DC Boarduino (Arduino compatible) Kit (w / ATmega328) <ito ay magiging isang mahusay na pamumuhunan kung gumagawa ka ng mga hinaharap na barebone na proyekto
  • Photo Light Sensitive Resistor Photoresistor Optoresistor 5mm GL5539
  • 1A 1000V Diode 1N4007 IN4007 DO-41 Rectifier Diodes
  • Kontrol ng PFM DC-DC USB 0.9V-5V hanggang 5V dc Boost Step-up na Power Supply Module
  • 1.6W 5.5V 266mA Mini Solar Panel Module System Epoxy Cell Charger DIY
  • TP405 5V Mini USB 1A Lithium Battery Charging Board Charger Module
  • 433Mhz RF transmitter at receiver link kit para sa Arduino / ARM / MC remote control <Kit, naglalaman ng parehong transmiter at tagapaghayag
  • IP65 Switch Protector Junction Box Panlabas na Waterproof Enclosure 150x110x70mm
  • Bagong DHT22 Temperatura at Kamag-anak na Module ng Sensor ng Humidity para sa Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007diode
  • Adafruit 16 MHz Ceramic Resonator / Oscillator [ADA1873]
  • Arduino UNO / Mega atbp para sa istasyon ng tatanggap + Raspberry PI 1/2/3
  • I-clear ang Acrylic Plastic Box (opsyonal)

Mahahanap mo ang lahat ng ito sa Ebay, hindi ko nais na itaguyod ang anumang mga nagbebenta sa pamamagitan ng pag-link sa kanilang mga pahina at ang mga link ay magiging patay sa hinaharap.

Mga tala para sa listahan ng hardware:

Kung sakali na brick mo ang Atmega kahit papaano sa programa bumili ng higit sa mga ito, pareho para sa boltahe booster at solar charge controller.

Naglalaman ang solar charger ng 2 maliit na mga kulay ng LED na naka-on lamang sa kaso ng pagsingil ng solar at ipahiwatig (pula-> singilin, asul-> ganap na sisingilin ang mga estado). Ang mga ito ay maaaring hindi naka-unsold din. Sa halip ay nagbibigay ng kaunti pang dagdag na juice sa baterya habang nagcha-charge.

Tulad ng nakikita mong walang mga may hawak ng baterya sa aking listahan. Bakit? Dahil hindi sila maaasahan. Maraming beses akong nagkaroon ng mga pagkakataong lumabas ang baterya mula sa may-ari nito at nawala ang koneksyon. Lalo na kung ang iyong pag-set up ay naka-mount sa isang mataas na poste ng pinggan tulad ng sa akin, buksan para sa anumang malupit na kondisyon ng panahon. Inilagay ko pa ang baterya sa may hawak na may 2 siper at nagawa pa rin nitong ilipat. Huwag gawin ito, alisin lamang ang panlabas na patong mula sa baterya at solder ang mga wire nang direkta sa ilalim ng baterya, na naglalaman ng circuit ng proteksyon na labis na labis (huwag lampasan ang proteksyon). Maaaring magamit ang isang may hawak ng baterya para sa paghawak lamang ng baterya sa aparato.

TP405 5V Mini USB 1A Lithium Battery Charging Board: sa kasamaang palad ang board na ito ay hindi kasama ang pabalik na kasalukuyang proteksyon sa solar panel, dahil dito kakailanganin mo ng 1 higit pang diode upang mailagay sa pagitan ng isang binti ng solar panel at singilin ang circuit upang ihinto ang kasalukuyang sumusubok upang dumaloy pabalik sa solar panel sa gabi.

Hakbang 5: Assembly

Assembly
Assembly
Assembly
Assembly
Assembly
Assembly

Naglalaman ang board na ito ng medyo ilang mga bahagi at ang mga marker sa board ay medyo simple.

Siguraduhin na HUWAG mong ipasok ang Atmega328P sa maling paraan (na maaaring magpainit at brick ang maliit na tilad, maaaring sirain din ang boltahe booster).

Sa setup na ito ang chip ay nakaharap pababa (maliit na pagmamarka ng hole ng PIN1). Ang lahat ng iba pang mga bahagi ay dapat na halata.

Gumamit ng kalasag na kable (hal.: Audio Cable mula sa CDrom ay makakabuti) para sa LDR. Sa ilang mga kaso (sa loob ng maraming linggo ng pagsubok) naka-out na ito ay nakakagambala sa paghahatid ng signal ng radyo. Ito ay isa sa mga bug na mahirap i-troubleshoot kaya kung hindi mo nais ang gulo gumamit lamang ng isang kalasag na kable, pagtatapos ng kwento.

LED: Ang LED sa ilalim ng kahon ay orihinal na idinagdag upang kumurap kapag may papalabas na paghahatid ng radyo ngunit sa paglaon ay isinasaalang-alang ko ito bilang isang pag-aaksaya ng lakas at kumikislap lamang ito ng 3 beses sa proseso ng bootup.

TP: ay ang punto ng pagsubok para sa pagsukat ng kasalukuyang para sa pangkalahatang circuit.

DHT22: Huwag bumili ng murang DHT11, gumastos ng 50 sentimo pa upang makuha ang puting DHT22 na maaaring masukat din ng mga negatibong temperatura.

Hakbang 6: Disenyo ng Kaso

Disenyo ng Kaso
Disenyo ng Kaso
Disenyo ng Kaso
Disenyo ng Kaso
Disenyo ng Kaso
Disenyo ng Kaso

Bagaman ito ay isang labis na labis na paggamit, isang 3D naka-print na kubo (weather_cube) ang ginawa upang hawakan ang sensor ng temperatura ng DHT22 sa lugar. Ang kubo ay nakadikit sa ilalim ng kahon ng IP, na nagtatampok lamang ng 1 butas para maabot ng hangin ang sensor. Nagdagdag ako ng isang net sa butas laban sa mga bees, wasps at iba pang maliliit na langaw.

Ang isang panlabas na kahon ay maaaring gamitin nang opsyonal upang gawing mas hindi tinatagusan ng tubig ang istasyon sakaling ilalagay mo ito sa isang pinggan ng pinggan sa bukas.

Ideya para sa 1 kapaki-pakinabang na tampok: pagdaragdag ng isang malaking metal na plate ng bubong na 1-2cms sa tuktok ng kahon na nagbibigay ng anino mula sa araw sa panahon ng tag-init, bagaman maaari rin nitong alisin ang aming kapaki-pakinabang na sikat ng araw mula sa panel. Maaari kang magkaroon ng isang disenyo na naghihiwalay sa panel at kahon (iniiwan ang panel sa araw, ang kahon sa anino).

Sa mga larawan: ang isa sa mga istasyon na inalis mula sa kapaligiran sa pagtatrabaho pagkalipas ng 1 taon, ang boltahe ng baterya ay nasa nakamamanghang 3.9V pa rin, walang pinsala sa tubig sa anumang bahagi ng kahon kahit na ang lambat na idinikit ko sa ilalim ng kubo ay napunit. Ang kadahilanang ang istasyon na kailangan upang ma-serbisyuhan ay ang pagkakamali sa koneksyon sa konektor ng LDR, bagaman ang jumper cable ay tila nasa lugar pa rin, nasira ang koneksyon samakatuwid ang pin ay kung minsan ay lumulutang na nagbibigay ng masamang mga pagbasa ng analog na LDR. Mungkahi: kung gumagamit ka ng karaniwang mga jumpercable ng PC, i-hotglue silang lahat matapos na ganap na gumana ang istasyon upang maiwasan ito.

Hakbang 7: Software

Software
Software

Mangangailangan ang code ng software ng 3 mga panlabas na aklatan (LowPower, DHT, VirtualWire). Nagkaproblema ako sa paghanap ng ilan sa kanila ng madali online kamakailan lamang kaya inilalakip ko sila sa isang hiwalay na ZIP file. Anuman ang ginagamit mong OS / Linux, hanapin lamang ang folder ng library ng Arduino IDE mo at i-extract ang mga ito doon.

Isang tala lamang, hindi alintana na pinapayuhan ko na laban sa pagbili ng DHT11, kung gagamit ka ng maling uri ng sensor ng DHT ang programa ay tatambay magpakailanman sa simula sa seksyon ng pagsisimula (hindi mo rin makikita ang startup led blink ng 3 beses).

Ang pangunahing loop code ay napaka-simple, unang binabasa nito ang mga halaga sa kapaligiran (temperatura, index ng init, kahalumigmigan, solar), ipinapadala ang mga ito sa pamamagitan ng radyo pagkatapos ay gumagamit ito ng lowpower library upang ipatulog ang Arduino sa loob ng 5 minuto.

Nalaman ko na ang pagbaba ng baudrate ay magpapataas ng katatagan ng mga pagpapadala ng radyo. Ang istasyon ay nagpapadala ng isang napakaliit na data, 300 bps ay higit sa sapat. Gayundin huwag kalimutan na ang transmiter ay tumatakbo lamang mula sa tinatayang. 4.8V, sa hinaharap na bersyon ng 3.3V maaari itong humantong sa mas masahol pa ring kalidad ng paghahatid (pagpapadala ng data sa pamamagitan ng mga pader at iba pang mga hadlang). Naranasan ko ang isang isyu sa paggamit ng isang Arduino Mega na nakakabit sa isang Raspberry PI 2 na nagpapagana sa Mega mula sa PI, na hindi ako nakatanggap ng anumang paghahatid. Ang solusyon ay upang mapagana ang Mega mula sa isang hiwalay na panlabas na 12V na supply.

Hakbang 8: Bersyon 2 (Batay sa ESP32)

Bersyon 2 (Batay sa ESP32)
Bersyon 2 (Batay sa ESP32)
Bersyon 2 (Batay sa ESP32)
Bersyon 2 (Batay sa ESP32)
Bersyon 2 (Batay sa ESP32)
Bersyon 2 (Batay sa ESP32)

Ang lahat na maaaring masira ay masisira upang sipiin ang magandang lumang Murphy at kalaunan pagkatapos ng mga taon ay nabigo ang mga istasyon sa mahiwagang paraan. Sinimulan ng isang pagpapadala ng isang walang katuturang solar data na umakyat sa libu-libo, na imposible dahil sa: Ang Arduino board ay naglalaman ng isang 6 na channel (8 mga channel sa Mini at Nano, 16 sa Mega), 10-bit analog sa digital converter. Nangangahulugan ito na mapa ang mga input voltage sa pagitan ng 0 at 5 volts sa mga integer na halaga sa pagitan ng 0 at 1023. Kaya pagkatapos ng pagpapalit ng radyo, LDR at muling pagprogram ng Atmega 328P ng maraming beses na sumuko ako at nagpasyang oras na para sa pagbabago. Pumunta tayo sa ESP32.

Ang board na ginamit ko ay isang: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

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

Microcontroller ESP-32

Operating Boltahe 3.3V Digital I / O Mga Pin 19 Analog Input Pins 6 Bilis ng Orasan (Max) 240Mhz Flash 4M bytes Haba 5mm Lapad 2.54mm Timbang 4g

Alin hindi katulad ng nakalarawan ang isa ay walang logo ng LOLIN (pekeng mula sa Tsina). Ang aking kauna-unahang sorpresa ay ang pinout na nakalimbag sa board ay tumutugma sa Arduino pinout! Matapos makitungo sa napakaraming mga hindi pangalang board kung saan kailangan kong maghanap ng mga pinout buong araw na patay na pagod sa paggawa ng mga pagkakamali sa wakas isang board kung saan ang pinout ay tuwid na pasulong WoW!

Gayunpaman narito ang madilim na bahagi ng kuwento:

Sa una ay nakakonekta ko ang LDR sa A15 na kung saan ay pin 12 dahil mas madali itong pag-hotgluing ng mga pin nang magkasama. Pagkatapos ay nakakuha ako ng 4095 na pagbabasa (na kung saan ay ang pinakamataas na makukuha mo sa AnlogRead sa ESP32) na naghimok sa akin dahil ang buong dahilan kung bakit ko itinayong muli ang istasyon ay ang sirang mga readout ng LDR mula sa luma (ang DHT ay gumagana pa rin ng maayos). Kaya't lumalabas na:

Ang esp 32 ay nagsasama ng dalawang 12-bit na rehistro ng ACD. Ang ADC1 whit 8 na mga channel ay nakakabit sa GPIO 32-39 ande ADC2 whit 10 mga channel sa isa pang mga pin. Ang bagay ay ang ESP32 ay gumagamit ng ADC2 upang pamahalaan ang mga pagpapaandar ng wifi, kaya kung gumagamit ka ng Wifi, hindi mo magagamit ang rehistro na iyon. Sinusuportahan ng ADC driver API ang ADC1 (8 mga channel, naka-attach sa GPIO 32 - 39), at ADC2 (10 mga channel, naka-attach sa GPIO 0, 2, 4, 12 - 15 at 25 - 27). Gayunpaman, ang paggamit ng ADC2 ay may ilang mga paghihigpit para sa aplikasyon:

Ang ADC2 ay ginagamit ng driver ng Wi-Fi. Samakatuwid ang application ay maaari lamang gumamit ng ADC2 kapag ang Wi-Fi driver ay hindi pa nagsimula. Ang ilan sa mga ADC2 na pin ay ginagamit bilang mga straling pin (GPIO 0, 2, 15) sa gayon ay hindi malayang magagamit. Ganito ang kaso sa mga sumusunod na opisyal na Development Kit:

Kaya't ang pagkonekta sa LDR mula sa pin 12 hanggang A0 na kung saan ay ang VP nalutas ang lahat ngunit hindi ko nakuha kung bakit nakalista pa ang mga ADC2 na pin na magagamit para sa mga gumagawa. Gaano karaming iba pang hobbist ang nag-aksaya ng tone-toneladang oras hanggang sa malaman ito? Hindi bababa sa markahan ang mga hindi magagamit na mga pin na may pula o isang bagay o huwag banggitin ito sa manu-manong sa lahat upang ang iba pang mga gumagawa ay malalaman lamang ang tungkol sa kanila kung talagang kailangan nila ang mga ito. Ang buong layunin ng ESP32 ay gamitin ito sa WIFI, lahat ay ginagamit ito sa WIFI.

Isang magandang pagsisimula kung paano i-set up ang Arduino IDE para sa board na ito:

Bagaman inilagay ko ito sa code dito ay muling napupunta ito:

Ang code na ito ay maaaring hindi makaipon para sa iba pang mga modelo ng ESP32 kaysa sa Weemos LOLIN 32!

Bumuo ng mga setting: -Gumamit ng upload / serial: 115200 -Gamitin ang CPU / ram: 240Mhz (Wifi | BT) -Gamitin ang flash freq: 80 Mhz

Mayroong mga tonelada ng mga istasyon ng lagay ng panahon ng ESP32 sa net, ang mga ito ay higit na mas madalas kaysa sa aking bersyon 1 na kasama ang barebone chip sapagkat mas madaling i-set up, hindi mo kailangan ng programmer i-plugin lamang ang aparato sa usb at i-program ito at ang kanilang malalim na mode ng pagtulog ay mahusay para sa mahabang panahon na tumatakbo mula sa baterya. Mula mismo sa paniki ito ang kauna-unahang bagay na nasubukan ko kahit bago pa maghinang sa mga breakout pin dahil habang nabanggit ko ang maraming lugar sa proyektong ito ang PINAKA pinakamahalagang bagay ay ang pagkonsumo ng kuryente at gamit ang kasalukuyang (pekeng) baterya at maliit na solar panel ang standby ang kapangyarihan ay hindi talaga maaaring lumampas sa 1-2mAs kung hindi man ang proyekto ay hindi makapanatili sa sarili sa mahabang panahon.

Ito ay isang kaaya-ayang sorpresa muli na ang malalim na mode ng pagtulog ay gumagana tulad ng na-advertise. Sa panahon ng mahimbing na pagtulog ang agos ay napakababa na ang aking murang multi meter ay hindi maaaring sukatin ito (gumagana para sa akin).

Sa panahon ng pagpapadala ng data ang kasalukuyang ay sa paligid ng 80mA (na kung saan ay tungkol sa 5 beses na higit pa kaysa sa kapag ang Atmega 328P ay nakakagising at nagpapadala), gayunpaman huwag kalimutan na sa V1 mayroong isang avg 1mA power drain sa LDR sa mode ng pagtulog (na nakasalalay din sa mga antas ng ilaw at nagmula sa 0.5mA - 1mA) na wala na ngayon.

Ngayon na ang baterya ng UltraFire ay na-debunk kung gagamitin mo ang parehong baterya narito ang maaari mong asahan:

Iava =

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

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

Teoretikal

Buhay ng baterya = 22000mWh / 2.5mW = 8800 oras = 366 araw na tinatayang

Totoo

Buhay ng baterya = 800mWh / 2.5mW = 320 oras = 13 araw na tinatayang

Wala akong saklaw upang sukatin nang tumpak ang oras ng pag-on, ngunit sa aking mga pag-aayos ay tumataas ito sa paligid ng 2 segundo.

Hindi ko nais na gugulin ang hapon sa pasadyang pag-coding ng lahat kaya naghanap ako ng iba pang mga istasyon ng panahon sa Mga Instructable batay sa ESP32 upang makita kung ano ang ginagawa nila para sa pag-iimbak ng data. Nakalulungkot na napansin na gumagamit sila ng hindi nababaluktot at limitadong mga site tulad ng weathercloud. Dahil hindi ako tagahanga ng "ulap" at matagal nang nasira ang kanilang code dahil binago ng site na ito ay API mula pa noon, kinuha ko ang aking 10 minuto upang makagawa ng isang pasadyang solusyon sapagkat hindi ito mahirap kung iisipin ng isa. Magsimula na tayo!

Una sa lahat walang hiwalay na circuit board pic para sa proyektong ito, dahil gumagamit ito ng eksaktong parehong mga sangkap (paumanhin para sa na-solder sa pangit na larawan ng breadboard) bilang V1 na may pagkakaiba na ang lahat ay tumatakbo sa 3.3V. Ang DHT ay naka-hook up gamit ang isang pullup sa VCC, ang LDR ay bumaba na may 10k. Ang problema na maaaring makita ng isang 18650 na baterya tulad ng aking pekeng Intsik (6500 mAh ultra sun sun lol: D) ay sinisimulan nila ang paglabas ng curve mula sa paligid ng 4.1V bagong edad at magpunta hanggang sa ang kanilang cutoff circuitry ay sumipa upang ihinto ang pagkasira ng cell (ang mga kung saan ay masuwerteng magkaroon nito). Ito ay kahit saan mabuti para sa amin bilang 3.3V input. Kahit na ang LOLIN board na ito ay may isang konektor ng baterya ng lithium at singilin ang circuit sa proyektong ito nais kong i-refurb ang karamihan kung ano ang magagawa ko mula sa lumang istasyon kaya sa lumang 18650 HINDI mo ito magagamit na built in na charger. Ang solusyon ay patay na simple: Pinutol ko ang isang micro USB cable na solder sa 5V mula sa dating boltahe tagasunod at problema sa voila na nalutas, dahil ang board sa microUSB ay may regulator.

Kaya't ang pagkakaiba sa pagitan ng luma at bagong bersyon na sa lumang baterya ay nagbibigay ng 3.7V -> pinalakas sa 5V -> ang ardu ay tumatakbo sa 5V -> lahat ng mga bahagi ay tumatakbo sa 5V.

Sa bago: ang baterya ay nagbibigay ng 3.7V -> pinalakas sa 5V -> kinokontrol sa pamamagitan ng onboard reg sa ESP32 -> lahat ng mga bahagi ay tumatakbo sa 3.3V.

Marunong ng software kakailanganin din natin ng isa pang library ng DHT, ang DHT ng Arduino ay hindi tugma sa ESP. Ang kailangan natin ay tinatawag na DHT ESP.

Sinimulan kong ibase ang aking code sa paligid ng halimbawa ng DHT na ibinigay ng code na ito. Ang pagtatrabaho ng code ay:

1, Kunin ang data sa kapaligiran mula sa data ng DHT + Solar mula sa photocell

2, Kumonekta sa wifi na may static IP

3, I-post ang data sa isang php script

4, matulog ng 10 minuto

Tulad ng mapapansin mo na naayos ko ang code para sa kahusayan upang ganap na i-minimize ang oras ng paggising dahil umaalis ito ng 5 beses na lakas kaysa sa dating proyekto nang ito ay buksan. Paano ko nagawa ito? Una sa lahat kung mayroong ANUMANG uri ng error ang function na getTemperature () ay babalik na may maling (na nangangahulugang 10 minutong pagtulog muli). Maaari itong maging katulad ng sensor ng DHT na hindi maaaring pasimulan o ang koneksyon sa wifi ay hindi magagamit. Tulad ng napansin mo ang karaniwang habang () loop para sa patuloy na pagsubok ang samahan ng wifi magpakailanman ay inalis din ngunit ang isang 1 seg na pagkaantala na kinakailangan upang maiwan doon kung hindi man ay hindi palaging kumokonekta at nakasalalay din ito sa uri ng AP, pagkarga atbp kung gaano kabilis ito magaganap, sa 0.5s Nakakuha ako ng hindi pantay na pag-uugali (minsan hindi ito makakonekta). Kung may nakakaalam ng isang mas mahusay na paraan para sa paggawa nito mangyaring iwanan ito sa mga komento. Kapag nabasa lamang ang data ng DHT AT tapos na ang koneksyon sa wifi susubukan nitong mai-post ang data sa script sa webserver. Ang lahat ng uri ng pag-andar ng waster ng oras tulad ng Serial.println () ay hindi pinagana sa normal na pagpapatakbo mode din. Bilang server gumagamit din ako ng IP upang maiwasan ang isang hindi kinakailangang paghahanap ng DNS, sa aking code kapwa ang default na gateway at dns server na nakatakda sa 0.0.0.0.

Hindi ko maintindihan kung bakit napakahirap lumikha ng iyong sariling API kung ang kinakailangan lamang ay:

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

int httpResponseCode = http. POST (tugon);

Inilagay mo ang maliit na php code na ito sa anumang raspberry pi at maaari mong gawin ang mga gawain ng system () kaagad batay sa telemetry tulad ng pag-on ng mga tagahanga o pag-on ang mga ilaw kung sapat itong madilim.

Ang ilang mga tala tungkol sa code:

WiFi.config (staticIP, gateway, subnet, dns); // DAPAT matapos ang Wifi magsimula kung gaano ka pipi…

WiFi.mode (WIFI_STA); // DAPAT kung hindi man lilikha din ito ng isang hindi ginustong AP

Yeah well ngayon alam mo na. Gayundin ang pagkakasunud-sunod ng mga config ng IP ay maaaring magbago sa pamamagitan ng mga platform, sinubukan ko muna ang iba pang mga halimbawa kung saan lumipat ang mga halaga ng gateway at subnet. Bakit magtakda ng static IP? Sa gayon ito ay halata, kung mayroon kang isang nakalaang kahon sa iyong network tulad ng isang linux server na nagpapatakbo ng isc dhcpd, hindi mo nais ang isang daang milyong mga entry sa log mula nang magising ang ESP at makuha ang IP mula sa DHCP. Karaniwang hindi nag-log ang mga router ng mga asosasyon upang hindi makita. Ito ang presyo ng lakas ng pag-save.

Ang V2 ay hindi kailanman napapanatili ang sarili dahil sa hindi magandang kalidad ng baterya at inilagay ko lamang ito sa isang adapter kaya kung nais mong buuin ang alinman sa V1 o V2 HUWAG bilhin ang nabanggit na baterya, gawin ang iyong sariling pagsasaliksik sa mga baterya (anumang 18650 higit sa 2000mAh na-advertise na kapasidad sa Ebay ay isang scam na may mataas na posibilidad).

Inirerekumendang: