Мазмуну:

JAWS: Дагы бир метеостанция: 6 кадам
JAWS: Дагы бир метеостанция: 6 кадам

Video: JAWS: Дагы бир метеостанция: 6 кадам

Video: JAWS: Дагы бир метеостанция: 6 кадам
Video: Еще одна возможность / Новый кыргызский фильм 2020 / Жашоо жаңырыгы 2024, Ноябрь
Anonim
JAWS: Биздин нерселерди даярда
JAWS: Биздин нерселерди даярда
JAWS: Биздин нерселерди даярда
JAWS: Биздин нерселерди даярда
JAWS: Биздин нерселерди даярда
JAWS: Биздин нерселерди даярда

Мындай JAWS жасоо абдан жөнөкөй.

Сиз сенсорлоруңузду алып, тактайларга ыргытып, сенсорлор менен келген китепканаларды колдоно баштайсыз.

Программаны орнотуудан баштайлы.

Мен голланд тилинде сүйлөгөндүктөн (эне тили), мен колдонгон бардык маалыматтар жана өзгөрмөлөрдүн көбү голланд тилинде. Эми сизде башка тилди үйрөнүүгө мүмкүнчүлүк бар …

JAWSтен эмнени каалайбыз?

Оңой: биз чыныгы убакытты, датаны, эфемериддерди (күндүн чыгышы, күндүн батышы, күндүн узактыгы жана астрономиялык түш) көрсөткөн экранды көргүбүз келет.

Анын жанында ички жана тышкы температураны, салыштырмалуу нымдуулукту жана шүүдүрүм чекитин, абанын басымын көрүү жакшы болмок.

Ишти жеңилдетүү үчүн мен температура үчүн центрифтерди, басым үчүн hPa (= mBar) колдоном. Ошентип, эч ким Фаренгейт же фунт үчүн ар бир чарчы фунт үчүн кайра эсептөө кылышы керек эмес …

Учурда бул маалыматтар гана бар…

Келечекте мен аба ылдамдыгын, шамалдын багытын жана жаан -чачынды кошом.

Идея менин сыртта аба ырайы алачыгым болот жана бардык маалыматтар 2.4 ГГцтен ашык ички блокко жөнөтүлөт.

3 -кадам: JAWS: Программалык камсыздоо

JAWS: Программалык камсыздоо
JAWS: Программалык камсыздоо

Биздин программалык камсыздоого жетүү үчүн, көпчүлүгүн учурдагы китепканалардан табууга болот.

JAWSте мен төмөнкүлөрдү колдоном:

  1. SPI.h: 4 зымдуу протокол үчүн Arduino баштапкы китепканасы. Ал 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: муну мен убакытты кармоодо, күндүн батышын же күндүн чыгышын эсептөөдө колдоном. Ал ошондой эле DST (жайкы же кышкы) саатын койду.

Саат менен баштайлы.

Саатты окуп жатканда, сизге саат модулунун ичиндеги ар кандай регистрлерден алган өзгөрмөлөр керек. Биз аларды жөн эле сандар эмес, биз төмөнкү саптарды колдоно алабыз:

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

const char* months = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 "," 12 "};

п

TimeLord менен биз муну маалымат катары, менин ордум үчүн алабыз: (Локерен, Бельгия)

TimeLord Lokeren; аны орнотуу Lokeren. Position (51.096, 3.99); узундук жана кеңдик

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

Lokeren. DstRules (3, 4, 10, 4, 60); 3 -айдан DST, 4 -жумадан 10 -айга чейин, 4 -жума, +60 мүнөт

int jaar = жыл +2000;

байт sunRise = {0, 0, 12, ай күнү, ай, жыл}; күн сайын 00 сааттан баштап эсептей баштаңыз

байт sunSet = {0, 0, 12, ай күнү, ай, жыл}; жогорудагыдай эле

байт мааниси = {0, 0, 12, ай күнү, ай, жыл}; жогорудагыдай эле

сүзүү фазасы;

Бул жерден эсептөөлөр жүргүзүлөт.

фаза = Lokeren. MoonPhase (мааниси);

Lokeren. SunRise (күндүн чыгышы);

Lokeren. SunSet (sunSet);

Lokeren. DST (sunRise);

Lokeren. DST (күндүн батышы);

int ZonOpUur = sunRise [tl_hour];

int ZonOpMin = sunRise [tl_minute];

int ZonOnUur = sunSet [tl_hour];

int ZonOnMin = sunSet [tl_minute];

Бул нерселер TimeLordдо кантип эсептелгенинин мисалы. Бул китепкана менен сиз күндүн батышы менен чыгышынын так убактысын аласыз.

Акырында, мен бүт Программаны ушул Нускамалык менен коём. Бул абдан түз.

4 -кадам: Көбүрөөк программалык камсыздоо…

Көбүрөөк программалык камсыздоо…
Көбүрөөк программалык камсыздоо…
Көбүрөөк программалык камсыздоо…
Көбүрөөк программалык камсыздоо…

Программалык камсыздоо тууралуу кененирээк…

Бизде программалык камсыздоонун үч чоң бөлүгү бар.

1) Биз ар кандай сенсорлордон кээ бир чийки маалыматтарды алабыз: биздин сааттан, DHTsден жана BMP180ден. Бул биздин салымыбыз.

2) Биз маалыматты мааниси бар нерсеге (1 жана 0) которушубуз керек. Бул үчүн биз китепканаларыбызды жана өзгөрмөлөрдү колдонобуз.

3) Биз маалыматтарды окуп, сактагыбыз келет. Бул биздин өндүрүш. Тез арада колдонуу үчүн бизде LCD-TFT бар, кийинчерээк колдонуу үчүн бизде SD картабызда сакталган маалыматтар бар.

Биздин циклде () биз көп "GOTO" алабыз: биз ар кандай китепканаларга секиребиз. Биз маалыматтарды сенсорлордун биринен алабыз, маалыматтарды алабыз жана аларды (көбүнчө) өзгөрмөлүү маалымат өзгөрмөсүндө сактайбыз. Биз өзгөрмөлүү аттарыбызды акылдуулук менен тандайбыз, x же y менен эмес, "tempOutside" же "басым" же ушул сыяктуу нерселер менен. Аларды дагы окумдуу кылуу үчүн. Макул, бул аны өзгөрмөлөрдү бир аз оорлотот жана эс тутумду көбүрөөк сарптайт.

Бул жерде фокус келип чыгат: биздин өзгөрмөлөрдү экранда көрүнүктүү кылып койгондо, аларды жөн гана туура абалга жайгаштыруу.

Бул жерде колдонулган эки китепкана, Adafruit_GFX.h жана MCUfriend_kbv.h, түстөрдү, шрифттерди жана сызыктарды чийүү жөндөмүн колдонуу үчүн жакшы иштейт. Биринчиден, мен бул китепканалар менен 12864-экранды колдондум, кийинчерээк мен аны tft-экранда өзгөрттүм. Мен болгону кутучаларды, тик бурчтуктарды жана сызыктарды коюп, маалыматтардын туура жерде чыкканына ынануум керек болчу. Ал үчүн setCursor жана tft. Write буйруктарын колдонсоңуз болот. Оңой кылат. Түстөрдү да өзгөрмөлүү катары койсо болот, аларды кантип тандоо керек, ошол китепканаларда көптөгөн мисалдар бар.

SD-картага жазуу үчүн бизге дагы жөнөкөй амалдар керек.

Мисалы, биз маалыматтарды сааттан тартып, өзүнчө саат, мүнөт жана секунд катары окуйбуз. Температура DHT.temperature жана DHTT.temperature болуп саналат, ички же сырткы айырмалоо үчүн.

Биз аларды SD картка салгыбыз келгенде, биз сапты колдонобуз: ар бир циклди бош сап катары баштайбыз:

variablestring = ""; Андан кийин биз аны бардык маалыматтар менен толтура алабыз:

variablestring = variablestring + саат + ":" + мүнөт + ":" + секунд. Бул жипти 12:00:00 сыяктуу берет.

Биз аны TXT-файл катары жазгандыктан (Arduino.ccтеги SD.hти караңыз), кийинки өзгөрмөлөр үчүн биз кошумча барагын кошобуз, андыктан аны Excelге импорттоо оңой.

Ошентип, биз келебиз: variablestring = variablestring + "\ t" + DHT.temperature + "\ t" + DHTT. Temperature.

Жана башка.

5 -кадам: Кээ бир скриншоттор…

Кээ бир скриншоттор…
Кээ бир скриншоттор…
Кээ бир скриншоттор…
Кээ бир скриншоттор…
Кээ бир скриншоттор…
Кээ бир скриншоттор…

Маалыматтар топтомубузду "ашыкча жүктөбөгөнүбүзгө" ишенүү үчүн, мен маалыматты 10 мүнөт сайын бир жолу жаздым. Бизге күнүнө 144 жазууну берүү. Жаман эмес, менимче.

Жана албетте, сиз бул маалыматтарды иштетүүнү уланта аласыз: орточо көрсөткүчтөрдү жасай аласыз, максимумдарды жана минимумдарды издей аласыз, өткөн жылдар менен салыштыра аласыз …

Мет офистери, адатта, температура үчүн күндүз менен түндүн орточо көрсөткүчтөрүн түзөт: күндүзгү саат 8де башталып, 20га чейин иштейт.

Шамал, басым жана жаан -чачын үчүн орточо көрсөткүчтөр түн ортосунан түн ортосуна чейин алынат.

6 -кадам: бүттүбү?

Бүттүбү?
Бүттүбү?
Бүттүбү?
Бүттүбү?

Чындыгында эмес … Мен айткандай, акыры JAWSтин калган бөлүктөрү менен иштеген шамалдын ылдамдыгын жана шамалдын багытын сенсорго алууну каалайм.

Мен жасаган кичинекей курулуштун бийиктиги 4 метрдей. Метеоролог шамалдын ылдамдыгын 10 метрден алат. Мен үчүн бир аз жогору…

Муну окуу сизге жакты деп ишенем!

Adafruit-GFX бул жерде түшүндүрүлөт:

MCUFRIEND_kbv.h бул жерден табылышы керек:

BMP 120 жөнүндө көбүрөөк (BMP085 менен бирдей):

DHT22 жөнүндө:

Сунушталууда: