Բովանդակություն:
Video: Խորոված Pi (տվյալների արտացոլմամբ): 4 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Ներածություն
Խորովածը սովորաբար վերաբերում է ձեր սիրած միսը եփելու համար անուղղակի ջերմության օգտագործման դանդաղ գործընթացին: Թեև խոհարարության այս մեթոդը մեծ ժողովրդականություն է վայելում, հատկապես ԱՄՆ-ում, այն ունի այն, ինչը ոմանք կարող են համարել բավականին լուրջ թուլություն. Դա պահանջում է ժամեր շարունակ կիսաթափանցիկ ուշադրություն դարձնել ձեր փոսի և սննդի ջերմաստիճանը վերահսկելու համար: Մուտքագրեք ՝ Raspberry Pi:
Օրիգինալ նախագիծ
Այս նախագծի սկզբնաղբյուրը կարելի է գտնել այստեղ ՝ https://old.reddit.com/r/raspberry_pi/comments/a0… Դրա հիմնական էությունն այն է, որ reddit օգտվող Produkt- ը կարողացել է համեմատաբար էժան փոխանցել սննդի և փոսի ջերմաստիճանի տվյալները:, առևտրային հասանելի անլար ջերմաչափեր Raspberry Pi- ի համար (որը կցված էր GPIO- ի կապում փոքր ՌԴ մոդուլ): Սկզբնական նախագծում (վերը նշված հղումով) Պրոդուկտը իր տվյալները պահում էր sqlite տվյալների շտեմարանում և ցուցադրվում տեղական apache2 php վեբ կայքում:
Այս լուծումն արդեն լուծում է օրիգինալ խնդիրը, որին անդրադարձել է այս բլոգի ներդրումը. Այժմ կարող եք վեբ դիտարկիչով հեռակա վերահսկել ձեր սննդի և փոսի ջերմաստիճանը: Բայց ի՞նչ կլիներ, եթե մենք ցանկանայինք ընդլայնել սա: Մուտքագրեք ՝ GridDB:
Պարագաներ
Ազնվամորի Pi4
SUNKEE 433Mhz Superheterodyne անլար ընդունիչ մոդուլ
Քայլ 1: GridDB Web API և FluentD
Այս նախագիծը տեսնելուն պես, իմ առաջին միտքը `հուզմունքի սկզբնական ալիքից հետո, մտածում էր, թե ինչպես կարող եմ ընդլայնել ֆունկցիոնալությունը: Օգտագործելով GridDB- ն և դրա Grafana հավելվածը, ես ձգտեցի պատկերացնել իմ սննդի և փոսի տվյալները: Դրանից դուրս, ես ցանկանում էի Grafana- ի ծանոթագրություններ տեղադրել `անոմալ տվյալների ցանկացած կետ գտնելու համար. Չի կարող ածխած միս ունենալ:
Սկսելու համար ես պետք է օգտագործեի սկզբնական նախագծի C կոդը `անլար ջերմաչափից եկող տվյալները կարդալու և այդ տվյալները տեղադրելու իմ GridDB սերվերում: Այս ամենը գործարկելու համար ես պտտեցի GridDB սերվերը Azure- ում ՝ օգտագործելով CentOS վիրտուալ մեքենա: Մեր եզրային մեքենայից (Raspberry Pi) մեր ամպային սերվերին տվյալներ կիսելու ամենահեշտ ձևը GridDB Web API- ն էր: Այսպիսով, այդ vm- ի վրա ես ստեղծեցի GridDB– ի WebAPI- ն ՝ Fluentd- ի և ուղեկցող GridDB միակցիչի հետ միասին:
Նախքան տվյալների ամպ ուղարկելը, ես պետք է ստեղծեի իմ BBQ Pi կոնտեյների հիմնական սխեման: Տվյալների հավաքածուն չափազանց պարզ է. Մենք ունենք երկու ջերմաստիճանի տվիչ, մեկ խոհարարի ID և, իհարկե, ժամանակային նշան: Այսպիսով, մեր սխեման ունի հետևյալ տեսքը.
timeseries = gridstore.put_container ("bbqpi", [(«ժամանակ», griddb. GS_TYPE_TIMESTAMP), («cookid», griddb. GS_TYPE_INT), («probe1», griddb. GS_TYPE_INT), («probe2», griddb. GS_TYPE_INT)_TIME
Timesամկետների այս կոնտեյները ստեղծելու համար ես պարզապես օգտագործեցի WebAPI (նավահանգիստ 8080).
curl -X POST -հիմնական -u admin: admin -H "Content -type: application/json" -d
'{"container_name": "bbqpi", "container_type": "TIME_SERIES", / "rowkey": true, "colunns": [{"name": "time", "type": "TIMESTAMP"}, {"name": "cookid", "type": "INTEGER"}, {"name": "probe1", "type": "INTEGER"}, {"name": "probe2", "type" ՝ "INTEGER"}]} '\ https:// localhost: 8080/griddb/v2/defaultCluster/dbs/public/բեռնարկղեր
Ստեղծված կոնտեյներով, ես պետք է օգտագործեի Fluentd (նավահանգիստ 8888) ՝ իրական տվյալները մեր կոնտեյների մեջ տեղադրելու համար: Ահա CURL հրաման, որը տեղադրում է որոշ կեղծ տվյալներ.
curl -X POST -d 'json = {"date": "2020-01-01T12: 08: 21.112Z", "cookid": "1", "probe1": "150", "probe2": "140" } 'https:// localhost: 8888/griddb
Այնտեղից ես պետք է կցեի բնօրինակի կոդը ՝ HTTP POST հարցում ուղարկելու համար, երբ մեր Pi- ն մեր փոսից տվյալներ էր կարդում (մոտ 12 վայրկյան մեկ անգամ):
Որպես կողմնակի նշում. Այս ծածկագիրը գրելն ինձ սովորեցրեց գնահատել, թե որքանով կարող է C լեզուն խոսուն լինել.
int postData (լիցքավորման ժամանակ , int cookid, int probe1, int probe2, char url )
{CURL *curl; CURL կոդ res; / * Windows- ում սա նախաստորագրում է վիզոկի իրերը */ curl_global_init (CURL_GLOBAL_ALL); char errbuf [CURL_ERROR_SIZE] = {0,}; char գործակալ [1024] = {0,}; char json [1000]; snprintf (json, 200, "json = {" date / ": \"%s.112Z / ", \" cookid / ": \"%d / ", \" probe1 / ": \"%d / ", / "probe2 \": / "%d \"} ", ժամանակը, cookid, probe1, probe2); / * ստանալ գանգուր բռնակ */ curl = curl_easy_init (); if (curl) { /* Նախ նշեք այն URL- ը, որը պատրաստվում է ստանալ մեր POST- ը: Այս URL- ը կարող է լինել նաև https:// URL, եթե դա այն է, ինչ պետք է ստանա տվյալները: */ snprintf (գործակալ, sizeof գործակալ, «libcurl/%s», curl_version_info (CURLVERSION_NOW)-> տարբերակ); գործակալ [sizeofent - 1] = 0; curl_easy_setopt (curl, CURLOPT_USERAGENT, գործակալ); curl_easy_setopt (curl, CURLOPT_URL, url); curl_easy_setopt (curl, CURLOPT_USERNAME, "admin"); curl_easy_setopt (curl, CURLOPT_PASSWORD, "admin"); curl_easy_setopt (curl, CURLOPT_VERBOSE, 1L); curl_easy_setopt (curl, CURLOPT_ERRORBUFFER, errbuf); curl_easy_setopt (curl, CURLOPT_POSTFIELDS, json); / * Կատարեք հարցումը, res- ը կստանա վերադարձի կոդը */ res = curl_easy_perform (curl); եթե (res! = CURLE_OK) {size_t len = strlen (errbuf); fprintf (stderr, "\ nlibcurl: (%d)", res); if (len) fprintf (stderr, "%s%s", errbuf, ((errbuf [len - 1]! = '\ n')? "\ n": "")); fprintf (stderr, "%s / n / n", curl_easy_strerror (res)); գնալ մաքրման; } մաքրում. curl_easy_cleanup (curl); curl_global_cleanup (); վերադարձ 0; }}
Այս ֆունկցիան գրված լինելով, ինձ պարզապես անհրաժեշտ էր, որ այն աշխատեր միաժամանակ, երբ տեղադրվում էին sqlite տվյալները.
եթե (goodData == 1) {
if (last_db_write == 0 || (secs-last_db_write> = 10)) {snprintf (sql, 100, "ՄՏԱԵՔ ընթերցումների մեջ (խաշած, ժամանակ, հետաքննիչ 1, զոնդ 2) ԱՐUԵՔՆԵՐ (%d, '%s',%d, %d); ", cookID, buff, probe1, probe2); printf ("%s / n", sql); rc = sqlite3_exec (db, sql, callback, 0, & zErrMsg); if (rc! = SQLITE_OK) {printf ("SQL սխալ. %s / n", zErrMsg); } else {last_db_write = վայրկյաններ; } char url = "https://xx.xx.xx.xx: 8888/griddb"; postData (buff, cookID, probe1, probe2, url); }}
Որպեսզի համոզվեք, որ ձեր տվյալները իրականում տեղադրվում են ձեր սերվերի մեջ, կարող եք գործարկել հետևյալ հրամանը ՝ ձեր տվյալների բազան հարցնելու և արդյունքները դիտելու համար.
curl -X POST -հիմնական -u admin: admin -H "Content -type: application/json" -d '{"limit": 1000}' https:// localhost: 8080/griddb/v2/defaultCluster/dbs/ հանրային/բեռնարկղեր/bbqpi/տողեր
Քայլ 2: Գրաֆանա
Տեղադրված ծածկագրով, այժմ, երբ մենք օգտագործում ենք սկզբնական վեբ պորտալը `« խոհարար »սկսելու համար, մենք միաժամանակ կպահենք մեր ջերմաստիճանի տվյալները մեր GridDB սերվերում:
Հաջորդ քայլը կլինի Grafana- ի միջոցով մեր տվյալների արտացոլումը: Դա անելու համար մենք հետևեցինք այս բլոգի տեղեկատվությանը ՝ այստեղ: Այս իրականացման հաճելի բանն այն է, որ չափազանց հեշտ է տեսնել մեր տվյալները ՝ գծագրված գեղեցիկ գրաֆիկի մեջ: Այն նաև ավելացնում է ծանոթագրություններ:
Բլոգում քննարկված ծանոթագրությունները մեզ համար չափազանց դյուրին են դարձնում վերահսկելը, երբ ինչ -որ բան սխալ է տեղի ունենում կամ մեր սննդի կամ բուն փոսի հետ: Իմ դեպքում ես տավարի կարճ կողիկներ էի պատրաստում: Նրանց հետ ես չէի ցանկանա, որ փոսի ջերմաստիճանը բարձրանար 275 աստիճանից: Եթե տեսնեի, որ ջերմաստիճանը դրանից ավելի է անցնում, կարող էի անջատել այրիչը և թույլ տալ, որ շոգը նորից ընկնի.
Ես ունեի նման կանոն սենսորի համար, որն իրականում պահում էր ինքնին սնունդը. Եթե սնունդը հասնում էր 203 աստիճանի فارենհայտի ներքին ջերմաստիճանի, կողերը պատրաստ էին: Խոհարարի վերջում միայնակ ծանոթագրությունը կարող եք տեսնել այստեղ.
Ընդհանուր առմամբ, խոհարարը ինձանից տևեց մոտ ~ 4 ժամ, բայց այս կարգավորումն իսկապես գերազանց կլիներ, եթե ես պատրաստեի մի բան, որը նույնիսկ ավելի շատ ժամանակ կպահանջեր գրիլում (մտածեք ցածր դանդաղ ծխի մասին, որը տևում է 12 ֆունտ) ժամեր). Չնայած դրան, ես կարծում եմ, որ արժեքը, եթե այս գործիքը հեշտությամբ երևում է. Կարողանալ գրանցել ձեր սննդի արդյունքները և այն համեմատել նախորդ խոհարարների հետ, նշանակում է, որ ձեր խորովածը ժամանակի ընթացքում կամաց -կամաց կբարելավվի, քանի որ կարող եք օգտագործել տվյալները ՝ տեսնելու, թե ինչն է աշխատում և ինչը ՝ ոչ: 't
Քայլ 3: Սնունդ
Սա առաջին անգամն էր, երբ ես երբևէ տավարի կարճ կողիկներ էի պատրաստում. համեմունքների համար ես պարզապես օգտագործում էի աղ, սև պղպեղ և սխտորի փոշի: Չնայած որոշ խնդիրներին, որ այրիչը չափազանց բարձր էր դառնում սկզբում այնտեղ, կողերը ֆանտաստիկ էին դուրս գալիս: Խնդրում ենք դիտել.
Քայլ 4: Եզրակացություն
Ի վերջո, սնունդը հոյակապ դուրս եկավ, սենսորները, GridDB- ն և Գրաֆանան բոլորը համերաշխ աշխատում էին գեղեցիկ, և մենք ստացանք որոշ արժեքավոր տվյալներ այն մասին, թե ինչպես կարելի է նորից պատրաստել այս իրերը հաջորդ անգամ, երբ ցանկանում ենք տպավորություն թողնել որոշ ընկերների վրա:
Խորհուրդ ենք տալիս:
Տվյալների ուղարկում Arduino- ից Excel (և գծագրում). 3 քայլ (նկարներով)
Տվյալների ուղարկում Arduino- ից Excel (և գծագրում այն). Ես լայնորեն փնտրել եմ մի եղանակ, որը կարող էր իրական ժամանակում գծագրել իմ Arduino սենսորի ընթերցումը: Ոչ միայն գծապատկեր, այլև ցուցադրեք և պահեք տվյալները հետագա փորձերի և ուղղումների համար: Ամենապարզ լուծումը, որը ես գտա, Excel- ի օգտագործումն էր, բայց
Ինչպես կատարել խոնավության և ջերմաստիճանի իրական ժամանակի տվյալների գրանցիչ Arduino UNO- ի և SD- քարտի միջոցով: - DHT11 Տվյալների գրանցման մոդելավորում Proteus- ում. 5 քայլ
Ինչպես կատարել խոնավության և ջերմաստիճանի իրական ժամանակի տվյալների գրանցիչ Arduino UNO- ի և SD- քարտի միջոցով DHT11 Տվյալների գրանցման մոդելավորում Proteus- ում. Ներածություն. Բարև, սա Liono Maker- ն է, ահա YouTube- ի հղումը: Մենք ստեղծում ենք ստեղծագործական նախագիծ Arduino- ի հետ և աշխատում ներկառուցված համակարգերի վրա: Data-Logger: Տվյալների գրանցիչ (նաև տվյալների գրանցիչ կամ տվյալների գրանցիչ) էլեկտրոնային սարք է, որը ժամանակի ընթացքում գրանցում է տվյալները
Ինքնամփոփ տվյալների անտոմետր ՝ 11 քայլ (նկարներով)
Ինքնամփոփ տվյալների անտոմետր. Ես սիրում եմ հավաքել և վերլուծել տվյալները: Ես նույնպես սիրում եմ էլեկտրոնային գաջեթներ կառուցել: Մեկ տարի առաջ, երբ հայտնաբերեցի Arduino- ի արտադրանքը, ես անմիջապես մտածեցի. " Ես կցանկանայի հավաքել բնապահպանական տվյալներ " Պորտլենդում քամոտ օր էր, OR, այնպես որ ես
Տվյալների ձեռքբերման և տվյալների տեսողականացման համակարգ MotoStudent Electric Racing Bike– ի համար ՝ 23 քայլ
Տվյալների ձեռքբերման և տվյալների տեսողականացման համակարգ MotoStudent Electric Racing Bike- ի համար. Տվյալների ձեռքբերման համակարգն ապարատային և ծրագրային ապահովման հավաքածու է, որը աշխատում է միասին ՝ արտաքին սենսորներից տվյալներ հավաքելու, դրանք պահելու և հետագայում մշակելու համար, որպեսզի դրանք գրաֆիկականորեն պատկերացվեն և վերլուծվեն, թույլ տալով ինժեներներին կատարել
Գրասեղանի ուժեղացուցիչ `աուդիո արտացոլմամբ, երկուական ժամացույցով և FM ընդունիչով. 8 քայլ (նկարներով)
Գրասեղանի ուժեղացուցիչ `աուդիո արտացոլմամբ, երկուական ժամացույցով և FM ընդունիչով. Ինձ դուր են գալիս ուժեղացուցիչները, և այսօր ես կկիսեմ վերջերս պատրաստած իմ ցածր էներգիայի գրասեղանի ուժեղացուցիչով: Իմ նախագծած ուժեղացուցիչն ունի մի քանի հետաքրքիր առանձնահատկություններ: Այն ունի ինտեգրված երկուական ժամացույց և կարող է տալ ժամ և ամսաթիվ, և այն կարող է պատկերացնել աուդիո, որը հաճախ կոչվում է աուդիո