Съдържание:

JAWS: Просто още една метеорологична станция: 6 стъпки
JAWS: Просто още една метеорологична станция: 6 стъпки

Видео: JAWS: Просто още една метеорологична станция: 6 стъпки

Видео: JAWS: Просто още една метеорологична станция: 6 стъпки
Видео: Екипаж (драма, филм за катастрофа, реж. Александър Мита, 1979) 2024, Юли
Anonim
JAWS: Подготовка на нашите неща
JAWS: Подготовка на нашите неща
JAWS: Подготовка на нашите неща
JAWS: Подготовка на нашите неща
JAWS: Подготовка на нашите неща
JAWS: Подготовка на нашите неща

Създаването на такъв JAWS е съвсем просто.

Получавате сензорите си, хвърляте ги заедно на дъски и започвате да използвате библиотеките, които се доставят със сензорите.

Нека започнем с настройката на програмата.

Тъй като говоря холандски (роден говорител), всички данни и голяма част от променливите, които използвам, са на холандски. Така че сега имате възможност да научите друг език …

Какво искаме от JAWS?

Лесно: искаме да гледаме екран, който да ни показва действителното време, дата, ефемериди (изгрев слънце, залез слънце, продължителност на деня и астрономически обед).

Освен това би било хубаво да се видят вътрешната и външната температура, относителната влажност и точка на оросяване и въздушното налягане.

За да улесня нещата, използвам стоградуси за температура и hPa (= mBar) за налягане. Така че никой не трябва да изчислява обратно от Фаренхайт или лири на квадратни разстояния …

Понастоящем са налични само тези данни …

В бъдеще ще добавя скорост на въздуха, посока на вятъра и валежи.

Идеята е, че ще имам външна метеорологична хижа и всички данни ще бъдат изпращани през 2.4GHz до вътрешното тяло.

Стъпка 3: JAWS: Софтуер

JAWS: Софтуер
JAWS: Софтуер

За да стигнем до нашия софтуер, повечето могат да бъдат намерени със съществуващи библиотеки.

В JAWS използвам следните:

  1. SPI.h: Оригиналната библиотека от Arduino за 4 -жичен протокол. Тя се използва за TFT-щит
  2. Adafruit_GFX.h и MCUfriend_kbv.h: и двете се използват за графиката и екрана. Те правят много лесно писането на текст, изчертаване на линии и полета на TFT екрана.
  3. dht.h: за нашите DHT: тази библиотека може да се използва за DHT11 (синята) и DHT22.
  4. Wire.h: библиотеката Arduino за улесняване на серийната комуникация. Използва се за часовника и SD картата.
  5. SD.h: Отново оригинал на Arduino, за писане и четене от SD картата.
  6. TimeLord.h: този, който използвам за запазване на времето, изчисляване на залеза или изгрева на слънцето от всяка географска позиция. Той също така настройва часовника за лятно или зимно време.

Нека започнем с часовника.

Когато четете часовник, имате нужда от променливите, които получавате от различните регистри в модула на часовника. Когато ги правим повече от просто числа, можем да използваме следните редове:

const int DS1307 = 0x68; const char* дни = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};

const char* месеца = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 ", "12"};

н

С TimeLord получаваме това като данни за моето място: (Локерен, Белгия)

ТаймЛорд Локерен; настройка на Lokeren. Position (51.096, 3.99); дължина и ширина

Lokeren. TimeZone (+1*60); GMT +1 = +1 x 60 минути

Lokeren. DstRules (3, 4, 10, 4, 60); DST от 3 -ти месец, 4 -та седмица до 10 -ти месец, 4 -та седмица, +60 минути

int jaar = година +2000;

байт sunRise = {0, 0, 12, ден от месец, месец, година}; започнете да изчислявате всеки ден от 00 часа

байт sunSet = {0, 0, 12, ден от месец, месец, година}; същото като по -горе

байт maan = {0, 0, 12, ден от месец, месец, година}; същото като по -горе

поплавъчна фаза;

Оттук се правят изчисленията.

фаза = Lokeren. MoonPhase (maan);

Lokeren. SunRise (sunRise);

Lokeren. SunSet (sunSet);

Lokeren. DST (sunRise);

Lokeren. DST (sunSet);

int ZonOpUur = sunRise [tl_hour];

int ZonOpMin = sunRise [tl_minute];

int ZonOnUur = sunSet [tl_hour];

int ZonOnMin = sunSet [tl_minute];

Това е примерът за това как нещата се изчисляват във TimeLord. С тази библиотека получавате (доста) точни времена на залез и изгрев.

В края ще сложа цялата програма с този Instructable. Това е доста директно.

Стъпка 4: Още софтуер …

Още софтуер …
Още софтуер …
Още софтуер …
Още софтуер …

Повече за софтуера …

Имаме три големи части в софтуера.

1) Получаваме някои необработени данни от нашите различни сензори: от нашия часовник, DHT и BMP180. Това е нашият принос.

2) Трябва да преведем данните на (1 и 0) в нещо, което има смисъл. За това използваме нашите библиотеки и променливи.

3) Искаме да четем и съхраняваме нашите данни. Това е нашият изход. За незабавна употреба разполагаме с LCD-TFT, за по-късна употреба имаме запазени данни на нашата SD карта.

В нашия цикъл () получаваме много „GOTO“: прескачаме до различните библиотеки. Ние получаваме нашите данни от един от сензорите, получаваме данните и ги съхраняваме в (най -вече) плаваща променлива от данни. Избираме имената на променливите си разумно, не с x или y, а с имена като „tempOutside“или „pressure“или подобни неща. За да бъдат по -четливи. Добре, това го прави малко по-тежък при използването на променливи и отнема повече памет.

Тук идва трикът: когато правим променливите си видими на екрана, просто ги поставяме на правилната позиция.

Двете библиотеки, използвани тук, Adafruit_GFX.h и MCUfriend_kbv.h имат хубав набор за използване на цветове, шрифтове и възможност за чертане на линии. На първо място използвах 12864-екран с тези библиотеки, по-късно го промених в tft-екрана. Всичко, което трябваше да направя, е да поставя кутии, правоъгълници и линии и да се уверя, че данните са излезли на правилното място. За това можете да използвате setCursor и tft. Write като команда. Лесно го прави. Цветовете също могат да бъдат зададени като променливи, в тези библиотеки има много примери как да ги изберете.

За писане на SD картата се нуждаем и от няколко прости трика.

Например четем нашите данни от часовника като отделни часове, минути и секунди. Температурите са DHT.температура и DHTT.температура, за да се прави разлика между вътрешна или външна.

Когато искаме да ги поставим на SD картата, използваме низ: започваме всеки цикъл като празен низ:

variablestring = ""; След това можем да го попълним с всички наши данни:

variablestring = variablestring + hours + ":" + minutes + ":" + seconds. Това дава низ като 12:00:00.

Тъй като го пишем като TXT-файл (вижте SD.h на Arduino.cc), за следващите променливи добавяме раздел, така че е по-лесно да го импортирате в Excel.

Така стигаме до: variablestring = variablestring + "\ t" + DHT.temperature + "\ t" + DHTT. Temperature.

И така нататък.

Стъпка 5: Някои екранни снимки …

Някои екранни снимки…
Някои екранни снимки…
Някои екранни снимки…
Някои екранни снимки…
Някои екранни снимки…
Някои екранни снимки…

За да сме сигурни, че не „претоварваме“нашите набори от данни, писах данни само веднъж на всеки 10 минути. Дава ни 144 записи на ден. Мисля, че не е лошо.

И разбира се, можете да продължите да обработвате тези данни: можете да правите средни стойности, можете да търсите максимуми и минимуми, можете да сравнявате с последните години …

Службите за срещи обикновено правят средни стойности за деня и нощта, за температури: денят започва в 8 сутринта и продължава до 20:00.

За вятъра, налягането и валежите средните стойности се вземат от полунощ до полунощ.

Стъпка 6: Готово?

Готово?
Готово?
Готово?
Готово?

Всъщност не … Както казах, бих искал най-накрая да накарам сензора за скорост и посока на вятъра да работи с останалата част от JAWS.

Малката конструкция, която направих, е с височина около 4 м. Метеоролозите получават скорост на вятъра от 10 м височина. Малко прекалено високо за мен …

Надявам се да ви е харесало да прочетете това!

Adafruit-GFX е обяснено тук:

MCUFRIEND_kbv.h можете да намерите тук:

Повече за BMP 120 (същото като BMP085):

За DHT22:

Препоръчано: