
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48



Այս ձեռնարկում ես ցույց կտամ, թե ինչպես կարող եք HASS- ին (տնային օգնականին) ավելացնել հատուկ սենսորներ, ավելի կոնկրետ ՝ գեյգերի հաշվիչ, բայց գործընթացը նման է նաև այլ սենսորների համար:
Մենք կօգտագործենք NodeMCU տախտակը, arduino- ի վրա հիմնված գեյգերի հաշվիչը և արդեն տեղադրված տնային օգնականը:
Ինտեգրումը հիմնված կլինի MQTT սերվերի վրա (հանրային կամ մասնավոր), և ես պատրաստվում եմ ձեզ քայլ առ քայլ տանել դրանով:
Եթե չգիտեք, թե ինչ է տան օգնականը, այցելեք նրանց էջը ՝ https://www.home-assistant.io/: Դա տան հայտնի ավտոմատացման հարթակ է, որը շատ լավ պահպանված է և շատ հարմարեցված:
Դուք կսովորեք ՝
- տնային օգնականի առաջադեմ կազմաձևում
- NodeMCU (զարգացման խորհուրդ) և ինչպես ծրագրավորել այն Arduino IDE- ով
- OTA (օդային թարմացումներ) `օգտագործելով Arduino IDE- ն NodeMCU տախտակի համար
- ինչպես միացնել սերիական սարքը NodeMCU- ին
- Linux- ում MQTT սերվեր ձեռքով տեղադրելը (ըստ ցանկության)
Հիմնական ենթադրություններ.
- Դուք ունեք Home Assistant- ը գործարկված
- Դուք մի փոքր գիտեք էլեկտրոնիկայի մասին
- Դուք տեղադրել եք Arduino IDE- ն
Քայլ 1: Մասեր և գործիքներ
Մասեր:
1. NodeMCU տախտակ
2. հացահատիկ
3. արական և արական և իգական ջուփ լարեր
3. usb to micro usb մալուխ
4. arduino geiger հաշվիչ ՝ սերիական ինտերֆեյսով
(Ebay- ում որոնել «arduino geiger couter» բառը)
5. ռադիոակտիվ նյութ (ըստ ցանկության փոքր փորձանմուշ)
Գործիքներ:
1. Arduino IDE
2. Տեղադրված է տան օգնականը
Քայլ 2. Աշխատանքի սկզբունքը
Մեր նպատակն է HomeAssistat- ում (HASS) ցույց տալ ընթերցումները գեյգերի հաշվիչից: Մի կողմից մենք ունենք HASS սերվեր, որը ինչ -որ տեղ գործարկված է, դա կարող է լինել ազնվամորի պի կամ այլ սարք, իսկ մյուս կողմում մենք ունենք գեյգեր հաշվիչ:
Գեյգերի հաշվիչն ունի սերիական նավահանգիստ, լուծումներից մեկը կլինի սերիական պորտի ուղղակի կցումը RaspberryPi- ին, որով աշխատում է HASS- ը:
Որոշ պատճառներ, թե ինչու դա կարող է լավ գաղափար չլինել.
- այնտեղ ֆիզիկական տարածք չկա
- սերիական նավահանգստում մենք ունենք ինչ -որ այլ սարք
- մենք ցանկանում ենք կցել շրջակա միջավայրի տվիչ, որը պետք է դրվի դրսում `գեյգերի հաշվիչի փոխարեն
Լավ, ուրեմն մենք կուսումնասիրենք WIFI- ի միջոցով կապ հաստատելու ևս մեկ հնարավորություն.
HASS- ն աջակցում է սենսորների տվյալների ընթերցմանը և ցուցադրմանը, որ MQTT սերվերի միջոցով այս սերվերը փոքր սարքերի համար թեթև քաշի միացում է: Այսպիսով, HASS- ը կլսի, և մեզ պետք է մի բան, որը կհրապարակի հաղորդագրությունը:
Մեր սենսորը գիտի միայն խոսել սերիական գծի միջոցով, այնպես որ մենք կօգտագործենք տախտակ, որը կարող է կարդալ սերիական տող և որը կարող է միանալ WIFI- ով և խոսել MQTT սերվերի հետ: Էժան տախտակ, որը դա անում է, NodeMCU- ն է:
NodeMCU- ն կարող է ծրագրավորվել Arduino IDE- ով: Էսքիզը բավականին պարզ է, այն կատարում է հետևյալը.
- միանում է WIFI- ին
- պահպանում է MQTT կապը սերվերի հետ և նորից փորձում կապը, երբ այն ձախողված կամ անջատված է
- լսում է հաջորդական մուտքային տվյալները որպես ամբողջ թվերի շարք
- մի ամբողջ թիվ գալուց հետո այն ուղարկում է MQTT- ի միջոցով որոշակի թեմայի
Քայլ 3: Հավաքեք սարքը

Մենք կօգտագործենք գրատախտակներ և լարեր, այնպես որ դա բավականին պարզ է, մենք ունենք մի քանի քայլ.
- NodeMCU- ն դրեք սեղանի վրա
- միացրեք գեյգեր խողովակը գեյգերի հաշվիչին (զգուշացեք բևեռականությունից)
- VIN- ն անցնում է geiger counter +
- GND goest to geiger counter -
- NodeMCU D7 (փին 13) անցնում է geiger TX- ին
- NodeMCU D8 (փին 15) անցնում է geiger RX- ին
- սնուցեք NodeMCU- ն միկրո USB- ի միջոցով համակարգչից
Քայլ 4: Վերբեռնեք ծածկագիրը




Մենք կօգտագործենք Arduino IDE- ն և կհամոզվենք, որ տեղադրված ենք NodeMCU տախտակը և տեղադրված է Adafruit_MQTT գրադարանը:
1. Կլոնավորեք github- ի պահոցը.
2. Բացեք Arduino IDE- ն և տեղադրեք NodeMCU
- գնացեք Ֆայլ -> Նախապատվություններ, Լրացուցիչ տախտակների մենեջերի URL- ներում ավելացրեք https://arduino.esp8266.com/stable/package_esp8266com_index.json, եթե այնտեղ արդեն ինչ -որ բան ունեք, առաջ դրեք կոմա և կտտացրեք լավ
-Գործիքներից -> Տախտակ -> Տախտակի կառավարիչ մուտքագրեք «nodemcu» և ընտրեք ESP8266 Համայնքի կողմից esp8266 գրառումը և սեղմեք install
3. Տեղադրեք Adafruit_MQTT
-գնալ Գործիքներ -> Կառավարել գրադարանները -> որոնել «Adafruit_MQTT» և տեղադրել «Arduino MQTT գրադարան»
4. Միացրեք ձեր համակարգչի USB մալուխը և կազմաձևեք տախտակը.
-գնացեք Գործիքներ -> Տախտակ -> ընտրեք NodeMcu 1.0
-Գործիքներ -> Պորտ -> ձեր USB պորտ
- մնացած պարամետրերը թողեք անփոփոխ
4. Էսքիզում փոխեք ձեր WIFI հավատարմագրերը `ձեր սեփականին համապատասխանելու համար.
#սահմանեք STASSID «ssid» // Փոխարինեք ձեր WIFI SSID- ով
#define STAPSK «անցնել» // Փոխարինեք ձեր WIFI գաղտնաբառով
5. Էսքիզը վերբեռնեք ձեր տախտակին և վերբեռնումից հետո վերակայեք տախտակը կոճակից
6. Բացեք սերիական մոնիտորը, եթե ամեն ինչ կարգին է, ապա պետք է տեսնեք այսպիսի ելք.
Boot
IP հասցե ՝ 192.168.1.168 OTA- ն միացված է MQTT- ին միանալու… MQTT միացված է: {"ճառագայթում" `0.03}..
Քայլ 5: Կարգավորեք HomeAssistant- ը


Մենք ենթադրելու ենք, որ դուք ունեք աշխատող տնային օգնական: Իմ համակարգում ես ունեմ HASSOS 3.12 տարբերակ RaspberryPi- ի վրա: Եթե ձեր տան օգնականի տարբերակը չափազանց հին է կամ շատ նոր, որոշ գործառույթներ կարող են տարբերվել: Այս ձեռնարկը հաստատ աշխատում է 3.12 տարբերակով:
Եթե ձեր տնային օգնականը տեղադրված չէ, ստուգեք դրանց տեղադրման պաշտոնական ուղեցույցը ՝
Տեղադրումից առաջ գնալուց առաջ համոզվեք, որ NodeMCU- ն միացված է և տվյալներ է հրապարակում:
Լավ, մենք այստեղ նույնպես կունենանք մի շարք քայլեր ՝ կազմաձևման համար.
1. Տեղադրեք «ֆայլերի խմբագիր», եթե այն չունեք ընտրացանկում, ահա պաշտոնական ձեռնարկը ՝
2. Խմբագրել «/config/configuration.yaml» ֆայլը և ավելացնել հետևյալը և պահպանել այն
- mqtt բաժինը, եթե այն արդեն չունեք
mqtt:
բրոքեր ՝ broker.hivemq.com հայտնագործություն ՝ ճշմարիտ հայտնագործություն_ նախածանց ՝ հա
- սենսորների բաժին
սենսոր:
- հարթակ: mqtt անվանումը ՝ «Radառագայթում» կարգավիճակի_թեմա ՝ «հա/ճառագայթում» չափման_ միավոր ՝ 'uSv' unique_id:
3. Կազմաձևից -> Սերվերի կառավարում. Կտտացրեք «Ստուգեք կազմաձևումը» և ստուգեք yaml կազմաձևման ֆայլը սխալների համար, այնուհետև կտտացրեք «վերագործարկել» և սպասեք, մինչև այն վերագործարկվի
4. Ակնարկից -> Վերին աջ անկյունի ընտրացանկ -> Կարգավորեք UI -> ներքևի աջից սեղմեք + կոճակը
5. Selectանկից ընտրեք «սենսոր» -> «սուբյեկտ» դաշտում որոնեք «sensor.radiation», անվան դաշտում գրեք «iationառագայթում» և կտտացրեք ok, այն այժմ պետք է լինի գլխավոր էջում
Քայլ 6: Կարգավորեք ձեր սեփական MQTT սերվերը [ըստ ցանկության]
Եկեք մի փոքր քննարկենք MQTT- ի մասին
«MQTT- ը Հաճախորդի սերվեր է, որը հրապարակում/բաժանորդագրվում է հաղորդագրությունների փոխադրման արձանագրությանը: Այն թեթև է, բաց, պարզ և նախագծված այնպես, որ հեշտ լինի իրականացնել: Այս բնութագրերը այն իդեալական են դարձնում շատ իրավիճակներում օգտագործելու համար, ներառյալ այնպիսի սահմանափակ միջավայրեր, ինչպիսիք են Machine to Machine (M2M) և Internet of Things (IoT) համատեքստերը, որտեղ պահանջվում է փոքր կոդի ոտնահետք և/կամ ցանցի թողունակություն: »
Մեջբերում MQTT 3.1.1 պաշտոնական ճշգրտումից:
Այսպիսով, հիմնականում մենք կարող ենք հաղորդագրություն հրապարակել ինչ -որ տեղ մի կողմից, իսկ մյուս կողմից ՝ կարող ենք լսել այդ հաղորդագրությունները և ինչ -որ բան անել տվյալների հետ: MQTT- ն աջակցում է «թեմաներին», թեմաներն այն տողերն են, որոնք միջնորդը օգտագործում է յուրաքանչյուր հաճախորդի համար հաղորդագրությունները զտելու համար, այնպես որ, եթե մենք հաղորդագրություն ենք հրապարակում «/ճառագայթում» թեմային, լսողը պետք է բաժանորդագրվի նույն թեմային, որպեսզի ստանա մեր ուղարկած հաղորդագրությունները:
Ահա մանրամասն MQTT- ի մասին հիանալի ձեռնարկ ՝
Օգտագործելով անվճար փեթակի սերվեր, կան որոշ թերություններ, ինչպիսիք են.
- ցանկացած ոք, ով լսում է ձեր թեման, կստանա ձեր հաղորդագրությունները
- եթե այն նվազում է կամ հետագայում պահանջում է վճարում, դուք չեք կարողանա օգտագործել այն (եթե չեք վճարում)
- եթե որևէ մեկը, ով նույն թեմայի վերաբերյալ հաղորդագրություններ է հրապարակում, դուք նույնպես կստանաք նրա հաղորդագրությունները, նա կարող է անհամատեղելի հաղորդագրություններ հրապարակել և կոտրել ձեր HASS գրաֆիկները
Օգտագործելով մասնավոր սերվեր
Եթե չեք ցանկանում օգտագործել հանրային անվճար սերվերը, ապա ունեք մասնավոր սերվերի տարբերակ: Մենք պատրաստվում ենք Mosquitto MQTT- ն տեղադրել ubuntu / debian սերվերի վրա, ինչպես ազնվամորու pi- ն կամ համակարգիչը:
Mosquitto- ն սերվեր է, որն իրականացնում է MQTT արձանագրությունը և այն անվճար է:
Այն տեղադրելու համար մուտք գործեք ձեր raspnerry pi կամ debian- ի վրա հիմնված այլ սերվեր և գործարկեք.
sudo apt թարմացում
sudo apt տեղադրել -y mosquitto mosquitto- հաճախորդներ sudo systemctl միացնել mosquitto.service
Սա կթարմացնի շտեմարանը, կտեղադրի mosquiito սերվեր և հաճախորդ և հնարավորություն կտա այն գործարկել ծառայությունը գործարկման ժամանակ
Սերվերը ip ստանալու համար կատարեք.
հյուրընկալողի անունը -I
և այն կհեռացնի հետևյալը.
192.168.1.52 172.17.0.1 172.18.0.1
Այսպիսով, իմ ip- ն 192.168.1.52 է, ստորև բերված հրամաններում այն փոխարինեք ձեր սեփական ip- ով
Դուք կարող եք փորձարկել MQTT սերվերը `հաղորդագրություն հրապարակելով և ստանալով այն մխիթարիչ գործիքի միջոցով: Այս երկու տերմինալների համար պետք է բացվի մեկը, որը լսում է հաղորդագրությունը, մեկը, որը կհրապարակի հաղորդագրությունը:
Նախ տերմինալում գործարկեք այս հրամանը ՝ «/ինչ-որ թեմայի» վերաբերյալ հաղորդագրություն լսելու համար:
mosquitto_sub -h 192.168.1.52 -t /ինչ -որ թեմա
Բացեք մեկ այլ տերմինալ և հրապարակեք հաղորդագրություն այդ թեմային.
mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"խոնավություն" `74.0}'
Առաջին տերմինալում դուք պետք է տեսնեք տպված «{" խոնավություն ": 74.0}»:
Հատուկ ուշադրություն.
- այս կարգավորումը ենթադրում է, որ HASS- ը, Mosquitto- ն և NodeMCU- ն միացված են նույն WIFI ցանցին և չկան firewall- ի կանոններ, և նրանք կարող են ազատ հաղորդակցվել
-Mosquitt MQTT սերվերը չունի օգտվողի անուն/գաղտնաբառ: Եթե ցանկանում եք հաստատել հավատարմագրերը, ստուգեք սա ՝ https://www.steves-internet-guide.com/mqtt-username-password-example/ հավատարմագրերը Home Assistant- ում և arduino ուրվագծում
Քայլ 7: OTA (Օդային թարմացումներ) NodeMCU- ի համար
Օդային թարմացումները նշանակում են, որ զարգացման տախտակը կարող է մետաղալարով փայլել առանց ֆիզիկական մալուխի անհրաժեշտության:
Arduino IDE- ն աջակցում է այս գործառույթին ESP8266 շարքի և որոշ այլ տախտակների համար.
- պահանջում է նախնական բռնկում USB մալուխի միջոցով
- ստեղծում է վիրտուալ նավահանգիստ WIFI- ի միջոցով և այն տեսանելի է միայն Arduino IDE- ից
- Սերիայի վրիպազերծման մասին տեղեկություններ չկան
- ապահովում է գաղտնաբառով պաշտպանություն
ESP8266 էսքիզում OTA- ն միացնելու համար նախ ներառեք գրադարանը.
#ներառել «ArduinoOTA.h»
Սահմանեք նաև էսքիզային գաղտնաբառի հաստատուն.
#սահմանել SKETCHPASS «ինչ -որ գաղտնաբառ»
Կարգավորման բաժնում ավելացրեք այս տողերը.
while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {
Serial.println ("Կապը ձախողվեց: Վերագործարկեք …"); ուշացում (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Լարի տիպ; եթե (ArduinoOTA.getCommand () == U_FLASH) {type = "ուրվագիծ";} ուրիշ {// U_FS type = "ֆայլային համակարգ";} Serial.println ("Սկսել թարմացումը " + տեսակը);}); ArduinoOTA.onEnd ( () {Serial.println ("\ n Վերջ");}); ArduinoOTA.onProgress ( (unsigned int progress, unsigned int total) {Serial.printf ("Progress:%u %% / r", (progress / (total / 100)));}); ArduinoOTA.onError ( (ota_error_t error) {Serial.printf ("Error [%u]:", error); if (error == OTA_AUTH_ERROR) {Serial.println ("Հեղինակությունը ձախողվեց");} այլ դեպքում, եթե (սխալ) == OTA_BEGIN_ERROR) {Serial.println ("Սկիզբը ձախողվեց");} այլ դեպքում, եթե (սխալ == OTA_CONNECT_ERROR) {Serial.println ("Միացումը ձախողվեց");} այլ դեպքում (սխալ == OTA_RECEIVE_ERROR) {Serial.println (" Ստանալը ձախողվեց ");} այլ դեպքում (սխալ == OTA_END_ERROR) {Serial.println (" Վերջը ձախողվեց ");}}); ArduinoOTA.begin (); Serial.print («IP հասցե ՝»); Serial.println (WiFi.localIP ());
Իսկ loop բաժնում ավելացրեք այս տողը.
ArduinoOTA.handle ();
Տախտակի գործարկումից հետո ձեր սկզբնական ծածկագիրը վերբեռնելուց հետո դուք պետք է տեսնեք Arduino IDE- ում Գործիքներ-> Պորտ բաժնում երկու տեսակի նավահանգիստ.
Սերիական նավահանգիստներ /dev /ttyUSB0 (օրինակ)
Networkանցային նավահանգիստներ. Esp8266-xxxxx ժամը 192.168.1.xxx
Այժմ կարող եք ընտրել ցանցի նավահանգիստը և վերբեռնել էսքիզը հեռակառավարման վահանակով, ձեզ կառաջարկվի էսքիզային գաղտնաբառ (այն, ինչ դուք սահմանել եք վերևում հաստատված):
Քայլ 8. Եզրակացություններ, ապագա աշխատանք
Այս ձեռնարկը կարող է հեշտությամբ փոփոխվել ՝ այլ տեսակի տվիչների վերաբերյալ տվյալներ ուղարկելու համար.
- եթե ձեր սենսորը ուղղակիորեն աջակցվում է NodeMCU- ի կողմից գրադարանի միջոցով, պարզապես սենսորից հավաքեք տվյալները և ուղղակիորեն դրանք մղեք MQTT- ի միջոցով
- եթե սենսորների գրադարանը չի աշխատում NodeMCU- ի հետ, բայց դա միայն Arduino- ի համար է, ապա վերբեռնեք ձեր կոդը arduino- ում, թողարկեք արժեքը սերիական գծի միջոցով և կարդացեք այն NodeMCU- ում և մղեք այն (ճիշտ այնպես, ինչպես մենք արեցինք geiger հաշվիչի հետ)
Մենք նույնիսկ կարող ենք փոփոխել այն ՝ բազմաթիվ սենսորներից տվյալներ ուղարկելու համար, ինչպիսիք են ՝
- միացրեք ձեր տվիչները NodeMCU- ին
- հարցման տվյալները յուրաքանչյուր սենսորից
- սենսորներից յուրաքանչյուրի համար տվյալները հրապարակեք տարբեր թեմայով
- HASS- ում սահմանեք բազմաթիվ սենսորներ (ինչպես մենք արեցինք գեյգերի հետ), որոնք կլսեն տարբեր թեմաներ
Խորհուրդ ենք տալիս:
DIY Smart Garage Door Opener + Home Assistant Integration: 5 Steps

DIY Smart Garage Door Opener + Home Assistant Integration. Դարձրեք ձեր սովորական ավտոտնակի դուռը խելացի ՝ օգտագործելով այս DIY նախագիծը: Ես ձեզ ցույց կտամ, թե ինչպես կարելի է այն կառուցել և վերահսկել ՝ օգտագործելով Home Assistant- ը (MQTT- ի միջոցով) և ունակություն ունենալու հեռավորությամբ բացել և փակել ձեր ավտոտնակի դուռը: Ես կօգտագործեմ ESP8266 տախտակ, որը կոչվում է Wemos
Աշխատող Geiger Counter W/ նվազագույն մասեր. 4 քայլ (նկարներով)

Աշխատող Geiger Counter W/ Minimal Parts: Ահա, իմ տեղեկություններով, ամենապարզ Գեյգերի հաշվիչը, որը դուք կարող եք կառուցել: Այս մեկը օգտագործում է ռուսական արտադրության SMB-20 Geiger խողովակ, որը շարժվում է բարձրավոլտ բարձրացման սխեմայով, որը թալանված է էլեկտրոնային ճանճի ճաքճքողից: Այն հայտնաբերում է բետա մասնիկները և գամ
PKE Meter Geiger Counter: 7 քայլ (նկարներով)

PKE Meter Geiger Counter. Ես երկար ժամանակ ցանկանում էի կառուցել Գայգերի հաշվիչ `լրացնելու իմ Peltier Cooled Cloud Chamber- ը: Գեյգերի վաճառասեղանին տիրապետելու (հուսով եմ) իրականում ոչ մի օգտակար նպատակ չկա, բայց ես պարզապես սիրում եմ հին ռուսական խողովակները և կարծում էի, որ դա
Ինչպես կառուցել CubeSat- ը Arduino- ի և Geiger Counter Sensor- ի միջոցով. 11 քայլ

Ինչպես կառուցել CubeSat- ը Arduino- ի և Geiger Counter Sensor- ի միջոցով. Երբևէ մտածե՞լ եք, թե արդյոք Մարսը ռադիոակտիվ է, թե ոչ: Իսկ եթե այն ռադիոակտիվ է, ճառագայթման մակարդակն այնքան բարձր է, որ համարվի՞ վնասակար մարդկանց համար: Սրանք այն բոլոր հարցերն են, որոնց մենք հույս ունենք, որ կարող է պատասխանել մեր CubeSat- ը Arduino Geiger Counte- ի հետ
Arduino DIY Geiger Counter: 12 քայլ (նկարներով)

Arduino DIY Geiger Counter. Այսպիսով, դուք պատվիրել եք DIY Geiger հաշվիչ և ցանկանում եք այն միացնել ձեր Arduino- ին: Դուք գնում եք առցանց և փորձում կրկնօրինակել, թե ինչպես են ուրիշները իրենց Geiger հաշվիչը կապել Arduino- ի հետ ՝ միայն սխալ բան գտնելու համար: Թեև ձեր Գայգերի հաշվիչը կարծես