İçindekiler:

Nodemcu Üzerinde Reed Anahtarlar, Hall Etki Sensörü ve Bazı Hurdalar Kullanarak Kendi Anemometrenizi Nasıl Yapabilirsiniz - Bölüm 2 - Yazılım: 5 Adım (Resimlerle)
Nodemcu Üzerinde Reed Anahtarlar, Hall Etki Sensörü ve Bazı Hurdalar Kullanarak Kendi Anemometrenizi Nasıl Yapabilirsiniz - Bölüm 2 - Yazılım: 5 Adım (Resimlerle)

Video: Nodemcu Üzerinde Reed Anahtarlar, Hall Etki Sensörü ve Bazı Hurdalar Kullanarak Kendi Anemometrenizi Nasıl Yapabilirsiniz - Bölüm 2 - Yazılım: 5 Adım (Resimlerle)

Video: Nodemcu Üzerinde Reed Anahtarlar, Hall Etki Sensörü ve Bazı Hurdalar Kullanarak Kendi Anemometrenizi Nasıl Yapabilirsiniz - Bölüm 2 - Yazılım: 5 Adım (Resimlerle)
Video: Hall Effect Sensörler Nedir? Nasıl Çalışır? Nerelerde Kullanılır? Çalışma Mantığı ile Birlikte 2024, Aralık
Anonim
Nodemcu'da Manyetik Anahtarlar, Hall Etkisi Sensörü ve Bazı Hurdaları Kullanarak Kendi Anemometrenizi Nasıl Yapabilirsiniz - Bölüm 2 - Yazılım
Nodemcu'da Manyetik Anahtarlar, Hall Etkisi Sensörü ve Bazı Hurdaları Kullanarak Kendi Anemometrenizi Nasıl Yapabilirsiniz - Bölüm 2 - Yazılım
Nodemcu'da Manyetik Anahtarlar, Hall Etkisi Sensörü ve Bazı Hurdaları Kullanarak Kendi Anemometrenizi Nasıl Yapabilirsiniz - Bölüm 2 - Yazılım
Nodemcu'da Manyetik Anahtarlar, Hall Etkisi Sensörü ve Bazı Hurdaları Kullanarak Kendi Anemometrenizi Nasıl Yapabilirsiniz - Bölüm 2 - Yazılım

Tanıtım

Bu, rüzgar hızı ve yön ölçüm cihazlarının nasıl monte edileceğini gösterdiğim ilk yazı olan "Nodemcu'da Reed Anahtarlar, Hall Etki Sensörü ve Bazı Hurdalar - Bölüm 1 - Donanım Kullanarak Kendi Anemometrenizi Nasıl Oluşturursunuz"un devamı niteliğindedir. Burada Arduino IDE kullanarak bir Nodemcu'da kullanılmak üzere tasarlanmış ölçüm kontrol yazılımından yararlanacağız.

Proje Açıklaması

Bir önceki gönderide, Nodemcu'ya silahlı ve bağlı cihazlar, rüzgarın hızını ve yönünü ölçebiliyor. Kontrol yazılımı, anemometrenin belirli bir süre dönüşünü okumak, doğrusal hızı hesaplamak, kanadın yönünü okumak, sonuçları OLED'de göstermek, sonuçları ThingSpeak'te yayınlamak ve 15 dakika boyunca uyumak için tasarlanmıştır. sonraki ölçüm.

Sorumluluk Reddi: Bu anemometre profesyonel amaçlar için kullanılmamalıdır. Sadece akademik veya ev kullanımı içindir.

Not: İngilizce benim doğal dilim değil. Projeyi anlamanıza engel olan dilbilgisi hataları bulursanız, düzeltmem için lütfen bana bildirin. Çok teşekkür ederim.

Adım 1: Arduino IDE, ESP8266 Boards and Libraries ve ThingSpeak Hesabınızı Kurma

Arduino IDE, ESP8266 Anakartları ve Kitaplıkları ile ThingSpeak Hesabınızı Kurma
Arduino IDE, ESP8266 Anakartları ve Kitaplıkları ile ThingSpeak Hesabınızı Kurma
Arduino IDE, ESP8266 Anakartları ve Kitaplıkları ile ThingSpeak Hesabınızı Kurma
Arduino IDE, ESP8266 Anakartları ve Kitaplıkları ile ThingSpeak Hesabınızı Kurma

Arduino IDE ve Nodemcu Kurulumu

Arduino IDE'sini hiç yüklemediyseniz, lütfen tüm talimatları bulabileceğiniz - Arduino IDE nasıl kurulur - bağlantısındaki öğreticiyi okuyun.

Sonraki adım, Nodemcu panosunu kurmak için çok eksiksiz olan Magesh Jayakumar Instructables'taki bu öğreticiyi kullanın. Nodemcu no Arduino IDE nasıl kurulur

Kitaplıkları Yükleme

Sonraki adımda, eskizin kullandığı kitaplıkları yüklemelisiniz. Bunlar yaygındır ve aşağıda gösterilen adımları takip edebilirsiniz.

ThingSpeak Kütüphanesi -

ESP8266 Kütüphanesi -

ThingSpeak Hesabı Oluşturma

ThingSpeak'i (https://thingspeak.com/) kullanmak için, anemometrenizde ölçülen verileri kaydedebileceğiniz ve evinizdeki rüzgar koşullarını izleyebileceğiniz bir hesap (belirli sayıda etkileşim için hala ücretsizdir) oluşturmalısınız, hatta cep telefonu ile. ThingSpeak'i kullanarak, ilgilenen herkese toplanan verilerinize herkesin erişmesini sağlayabilirsiniz. Bu, ThingSpeak'in iyi bir avantajı. Ana sayfaya girin ve hesabınızı oluşturmak için adımları izleyin.

Hesap oluşturulduktan sonra, kanallarınızı oluşturmak için bu eğiticiye - ThingSpeak Başlarken - girin. Oldukça iyi anlatılmış. Özetle, verilerin saklanacağı bir kanal oluşturmalısınız. Bu kanalın, her veri kaydetmek istediğinizde çizimde referans alınması gereken bir ID ve bir Anahtar API'si vardır. ThingSpeak, tüm verileri bir bankada saklayacak ve yapılandırdığınız şekilde hesabınıza her eriştiğinizde bunları gösterecektir.

Adım 2: Sketch'i Keşfetmek

Sketch'i Keşfetmek
Sketch'i Keşfetmek
Sketch'i Keşfetmek
Sketch'i Keşfetmek

Akış çizelgesi

Diyagramda, eskizin fluksogramını anlayabilirsiniz. Nodemcu'yu uyandırdığınızda (bağladığınızda) parametrelerini yapılandırmış olduğunuz Wi-Fi ağınıza bağlanacak ve ölçümleri gerçekleştirmek için 1 dakikalık süreyi saymaya başlayacaktır. İlk olarak, anemometre dönüşlerini 25 saniye boyunca sayacak, hesaplayacaktır. doğrusal hız ve rüzgarın yönünü okuyun. Sonuçlar OLED'de gösterilir. Aynı adımları tekrar yapın ve bu ikinci okuma için ThingSpeak'e iletilecektir.

Ardından Nodemcu pilden tasarruf etmek için 15 dakika uyur. Küçük bir güneş paneli kullandığım için bunu yapmam şart. 5V'luk bir kaynak kullanıyorsanız, programı, uyumaması ve verileri ölçmeye devam etmesi için değiştirebilirsiniz.

Programların yapısı

Şemada, eskizin yapısını görebilirsiniz.

Anemometer_Instructables

Kütüphaneleri yükleyen, değişkenleri başlatan, ekleme kesmesini kontrol eden, tüm fonksiyonları çağıran, rüzgar hızını hesaplayan, yönünü belirleyen ve uyku moduna geçiren ana programdır.

iletişim

WiFi'yi bağlayın ve verileri ThingSpeak'e gönderin.

kimlik bilgileri.h

WiFi ağınızın anahtarları ve ThingSpeak'teki hesabınızın tanımlayıcıları. Anahtar Kimliklerinizi ve API'lerinizi değiştireceğiniz yer burasıdır.

tanımlar.h

Programın tüm değişkenlerini içerir. Buradan okuma sürelerini veya nodemcu'nun ne kadar uyuması gerektiğini değiştirebilirsiniz.

fonksiyonlar

Parametreleri birleştirme ve çoklayıcıyı okuma işlevlerinin yanı sıra anemometrenin dönüşlerini okuma işlevini içerir.

oledEkran

Rüzgar hızı ve yönünün ekrandaki sonuçlarını göster.

Adım 3: Hakkında Açıklamalar…

Hakkında Açıklamalar…
Hakkında Açıklamalar…
Hakkında Açıklamalar…
Hakkında Açıklamalar…
Hakkında Açıklamalar…
Hakkında Açıklamalar…
Hakkında Açıklamalar…
Hakkında Açıklamalar…

Kesinti Ekle

Anemometrenin dönüşü, Nodemcu'nun GPIO 12'sinde (pin D6) (D0-D8 pinlerinde interrupt özelliği vardır) bulunan AttachInterrupt() (ve detachInterrupt()) fonksiyonu ile ölçülür.

Kesintiler, mikrodenetleyicinin gerçekleştirmekte olduğu görevin yürütülmesini durdurmasına, geçici olarak farklı bir görevde çalışmasına ve ilk göreve geri dönmesine neden olan olay veya koşullardır.

Arduino öğreticisi için linkte fonksiyonun detayını okuyabilirsiniz. EkInterrupt()'a bakın.

Sözdizimi: AttachInterrupt(pin, geri arama işlevi, kesme türü/mod);

pim = D6

geri arama işlevi = rpm_anemometer - bir değişkendeki her darbeyi sayar.

kesme tipi/modu = YÜKSELEN - pin düşükten yükseğe gittiğinde kesinti.

Hall sensöründe manyeto tarafından üretilen her darbede, pin düşükten yükseğe gider ve sayma işlevi etkinleştirilir ve belirlenen 25 saniye boyunca bir değişkende darbe toplanır. Süre sona erdiğinde, sayacın bağlantısı kesilir (detachInterrupt ()) ve rutin bağlantı kesildiğinde hızı hesaplar.

Rüzgar Hızının Hesaplanması

Anemometrenin 25 saniyede kaç tur verdiği belirlendikten sonra hızı hesaplıyoruz.

  • RADYO, anemometrenin merkez ekseninden pinpon topunun ucuna kadar olan ölçümdür. Sizinkini çok iyi ölçmüş olmalısınız - (şemada 10 cm yazan yere bakın).
  • RPS (saniyedeki dönüş sayısı) = dönüş / 25 saniye
  • RPM (dakikadaki devir sayısı) = RPS * 60
  • OMEGA (açısal hız - radyan/saniye) = 2 * PI * RPS
  • Linear_Velocity (saniyede metre) = OMEGA * RADIO
  • Linear_Velocity_kmh (saatte Km) = 3.6 * Linear_Velocity ve ThingSpeak'e gönderilecek olan budur.

Rüzgar gülü yönünü oku

Rüzgar yönünü belirlemek için rüzgar gülü konumunu okumak için program, A, B, C (muxABC matrisi) parametrelerinin tüm kombinasyonları ile çoklayıcıya düşük ve yüksek sinyaller gönderir ve sonucu pin A0'da almayı bekler. 0 ile 3.3V arasında herhangi bir voltaj olabilir. Kombinasyonlar şemada gösterilmiştir.

Örneğin, C = 0 (düşük), B = 0 (düşük), A = 0 (düşük) olduğunda çoklayıcı ona pin 0'ın verilerini verir ve Nodemcu tarafından okunan sinyali A0'a gönderir; C = 0 (düşük), B = 0 (düşük), A = 1 (yüksek) ise, çoklayıcı, 8 kanalın okunması tamamlanana kadar size pin 1 ve benzeri verileri gönderir.

Sinyal analog olduğu için program dijitale (0 veya 1) dönüşür, voltaj 1,3V'den düşük veya ona eşitse sinyal 0 olur; 1.3V'den büyükse sinyal 1'dir. 1.3V değeri isteğe bağlıdır ve benim için çok iyi çalıştı. Her zaman küçük akım kaçakları vardır ve bu, yanlış pozitiflerin olmamasını sağlar.

Bu veriler, pusula olarak adres dizisiyle karşılaştırılacak olan bir val[8] vektöründe saklanır. Diyagramdaki matrise bakın. Örneğin, alınan vektör [0, 0, 1, 0, 0, 0, 0, 0, 0] ise, matriste E yönünü belirtir ve 90 derecelik bir açıya karşılık gelir; [0, 0, 0, 0, 0, 0, 1, 1] matriste WNW adresini gösteriyorsa ve 292,5 derecelik bir açıya karşılık geliyorsa. N, [1, 0, 0, 0, 0, 0, 0, 0, 0] ve 0 derecelik açıya karşılık gelir.

ThingSpeak'e gönderilecek olan şey açıdadır çünkü yalnızca sayıları kabul eder.

4. Adım: İletişim

iletişim
iletişim
iletişim
iletişim

ThingSpeak'e nasıl veri gönderilir?

Thingsspeaksenddata() işlevi verilerin gönderilmesinden sorumludur.

ThingSpeak.setField (1, float (linear_velocity_kmh)) - Hız verilerini kanalımın 1. alanına gönder

ThingSpeak.setField (2, float (wind_Direction_Angle)) - Adres verilerini kanalımın 2. alanına gönder

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - TS tarafından belirtilen yazılı myWriteAPIKey API ile kanalıma myChannelNumber gönder. Bu veriler, hesabınızı ve kanalınızı oluştururken TS tarafından oluşturulmuştur.

Yukarıdaki resimlerde ThingSpeak'in alınan verileri nasıl gösterdiğini görebilirsiniz.

Bu linkte ThingSpeak'in genel kanalındaki projemin verilerine ulaşabilirsiniz.

Adım 5: Ana Değişkenler

rüzgar gülü parametreleri

  • MUX_A D5 - mux pi A'dan Nodemcu pin D5'e
  • MUX_B D4 - mux pin B'den Nodemcu pin D4'e
  • MUX_C D3 - mux pin C'den Nodemcu pin D3'e
  • READPIN 0 - NodeMcu'da analog giriş = A0
  • NO_PINS 8 - mux pin sayısı
  • val[NO_PINS] - mux'ın 0 ila 7 arasındaki bağlantı noktaları
  • wind_Direction_Angle - Rüzgar yönü açısı
  • String windRose[16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "BNW", "NW", "NNW"} - kardenaller, teminatlar ve alt teminatlar
  • windAng[16] = {0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180, 202.5, 225, 247.5, 270, 292.5, 315, 337.5} - her yöndeki açılar
  • Basamak [16] [NO_PINS] - Yol Tarifi Matrisi
  • muxABC[8] [3] - ABC çoklayıcı kombinasyonları

anemometre parametreleri

  • rpmcount - anemometrenin ayrılan sürede kaç tam dönüş yaptığını sayın
  • timemeasure = 25.00 - saniye cinsinden ölçüm bekleme süresi
  • timetoSleep = 1 - Dakika cinsinden Nodemcu uyanıklık süresi
  • sleepTime = 15 - dakikalar içinde uyumaya devam etme zamanı
  • rpm, rpm - dönüş frekansları (dakikadaki devir sayısı, saniyedeki devir sayısı)
  • yarıçap - metre - anemometre kanadının uzunluğunun ölçüsü
  • lineer_velocity - m/seg cinsinden lineer hız
  • linear_velocity_kmh - km/h cinsinden çizgisel hız
  • omega - rad/seg cinsinden radyal hız

Aşağıda tam taslağı bulabilirsiniz. Bilgisayarınızın Arduino klasöründe ana program ile aynı isimde (Anemometer_Instructables) yeni bir klasör oluşturun ve hepsini bir araya getirin.

Wifi ağınızın verilerini ve ThingSpeak ID ve API Writer Key'i Credentials.h bölümüne girin ve kaydedin. Nodemcu'ya yükleyin ve hepsi bu.

Sistemin çalışmasını test etmek için iyi bir döner fan öneririm.

Verilere cep telefonu ile erişmek için, neyse ki hala ücretsiz olan ThingView adlı IOS veya Android uygulamasını indirin.

Hesap ayarlarınızı yapılandırın ve nerede olursanız olun ana rüzgar koşullarınızı görmeye hazır olacaksınız.

Bir ilginiz varsa, herkese açık olan ThingSpeak Kanal Kimliği kanalıma erişin: 438851 ve orada evimde rüzgar ve yön ölçümlerini bulacaksınız.

Umarım gerçekten eğlenirsiniz.

Herhangi bir şüpheniz varsa benimle iletişime geçmekten çekinmeyin.

Saygılarımızla

Önerilen: