Мазмұны:

Гейгер есептегішінің үйдегі көмекшісі: 8 қадам
Гейгер есептегішінің үйдегі көмекшісі: 8 қадам

Бейне: Гейгер есептегішінің үйдегі көмекшісі: 8 қадам

Бейне: Гейгер есептегішінің үйдегі көмекшісі: 8 қадам
Бейне: Гейгер-Мюллер есептегіші 2024, Шілде
Anonim
Image
Image
Жұмыс принципі
Жұмыс принципі

Бұл оқулықта мен HASS -қа (үй көмекшісі) сенсорларды қалай қосу керектігін көрсетемін, дәлірек айтқанда геигер есептегіші, бірақ процесс басқа сенсорларға ұқсас.

Біз NodeMCU тақтасын, arduino негізіндегі geiger есептегішін және қазірдің өзінде орнатылған үй көмекшісін қолданамыз.

Интеграция MQTT серверіне (ашық немесе жеке) негізделетін болады, мен сізге осылай қадаммен қараймын.

Егер сіз үйдегі көмекші не екенін білмесеңіз, олардың https://www.home-assistant.io/ бетіне кіріңіз. Бұл үйді автоматтандырудың әйгілі платформасы, ол өте жақсы ұсталады және өте теңшеледі.

Сіз білетін боласыз:

- Home Assistant үшін кеңейтілген конфигурация

- NodeMCU (даму тақтасы) және оны Arduino IDE көмегімен қалай бағдарламалау керек

- NodeMCU тақтасы үшін Arduino IDE көмегімен OTA (тікелей эфир жаңартулары)

- сериялық құрылғыны NodeMCU -ге қалай қосу керек

- Linux -те MQTT серверін қолмен орнату (міндетті емес)

Негізгі болжамдар:

- сізде үй көмекшісі жұмыс істейді

- Сіз электроника туралы аз білесіз

- сізде Arduino IDE орнатылған

1 -қадам: Бөлшектер мен құралдар

Бөлшектер:

1. NodeMCU тақтасы

2. нан борты

3. еркек-еркек және еркек-ұрғашы сымдары

3. usb to micro usb кабелі

4. сериялық интерфейсі бар arduino geiger есептегіші

(Ebay -ден «arduino geiger couter» іздеңіз)

5. радиоактивті материал (міндетті емес шағын сынама үлгісі)

Құралдар:

1. Arduino IDE

2. Home Assistant орнатылды

2 -қадам: жұмыс принципі

Біздің мақсатымыз - HomeAssistat (HASS) арқылы геигер есептегішінің көрсеткіштерін көрсету. Бір жағынан бізде HASS сервері жұмыс істейді, ол таңқурай пи немесе басқа құрылғы болуы мүмкін, ал екінші жағында бізде геигер есептегіші бар.

Гейгер есептегішінің сериялық порты бар, оны шешудің бір жолы - сериялық портты HASS жұмыс істейтін RaspberryPi -ге тікелей бекіту.

Бұл жақсы идея болмауы мүмкін кейбір себептер:

- онда физикалық кеңістік жоқ

- бізде сериялық портта басқа құрылғы бар

- біз геигер есептегішінің орнына сыртқа қою керек экологиялық сенсорды қосқымыз келеді

Жақсы, біз WIFI арқылы қосылудың басқа мүмкіндігін қарастырамыз:

HASS сенсорлық деректерді оқуды қолдайды және MQTT сервері арқылы бұл түрдегі кішігірім қондырғылар үшін қарапайым құрылғы болып табылатынын көрсетеді, бір құрылғы «тақырыпта» хабарлама шығарады, екіншісі хабарды алу үшін осы тақырып бойынша тыңдайды. Сондықтан HASS тыңдайды, және бізге хабарламаны жариялайтын нәрсе қажет.

Біздің сенсор тек сериялық желі арқылы сөйлесуді біледі, сондықтан біз желіні оқи алатын және WIFI арқылы қосылатын MQTT серверімен сөйлесе алатын тақтаны қолданамыз. Мұны істейтін арзан тақта - NodeMCU.

NodeMCU Arduino IDE көмегімен бағдарламалануы мүмкін. Эскиз өте қарапайым, ол келесі әрекеттерді орындайды:

- Wi -Fi желісіне қосылады

- сервермен MQTT байланысын қолдайды және сәтсіз немесе ажыратылған кезде қосылымды қайталайды

- сериялық кіріс мәліметтерді бүтін сандар қатары ретінде тыңдайды

- бүтін сан келген соң оны MQTT арқылы белгілі бір тақырыпқа жібереді

3 -қадам: құрылғыны жинаңыз

Құрылғыны жинаңыз
Құрылғыны жинаңыз

Біз тақталар мен сымдарды қолданатын боламыз, сондықтан бұл өте қарапайым, бізде бірнеше қадам бар:

- NodeMCU тақтасына қойыңыз

- геигер түтігін геигер есептегішіне қосыңыз (полярлықты қадағалаңыз)

- VIN geiger есептегішіне түседі +

- GND geiger есептегішіне барады -

- NodeMCU D7 (пин 13) geiger TX -ке өтеді

- NodeMCU D8 (түйреуіш 15) geiger RX -ке өтеді

- NodeMCU -ны компьютерден микро USB арқылы қосу

4 -қадам: кодты жүктеңіз

Кодты жүктеңіз
Кодты жүктеңіз
Кодты жүктеңіз
Кодты жүктеңіз
Кодты жүктеңіз
Кодты жүктеңіз
Кодты жүктеңіз
Кодты жүктеңіз

Біз Arduino IDE қолданамыз және NodeMCU тақтасы мен Adafruit_MQTT кітапханасы орнатылғанына көз жеткіземіз.

1. Github репозиторийін клондау: https://github.com/danionescu0/arduino және эскизді жобалардан көшіру

2. Arduino IDE ашыңыз және NodeMCU орнатыңыз

- Файл -> Параметрлер тармағына өтіңіз, Қосымша тақта менеджерлерінің URL мекенжайларына https://arduino.esp8266.com/stable/package_esp8266com_index.json қосыңыз, егер сізде бірдеңе болса, команы алдына қойып, OK түймесін басыңыз.

-Tools -> Board -> Board Manager ішінен «nodemcu» деп теріп, ESP8266 қауымдастығының esp8266 жазбасын таңдап, орнату түймесін басыңыз.

3. Adafruit_MQTT орнатыңыз

-Құралдар -> Кітапханаларды басқару -> «Adafruit_MQTT» іздеп, «Arduino MQTT кітапханасын» орнатыңыз.

4. Компьютерге USB кабелін жалғап, тақтаны конфигурациялаңыз:

-Tools -> Board -> NodeMcu 1.0 тармағына өтіңіз

-Құралдар -> Порт -> USB порты

- басқа параметрлерді өзгеріссіз қалдырыңыз

4. Эскизде WIFI тіркелгі деректерін өзіңіздікімен сәйкестендіру үшін өзгертіңіз:

#define STASSID «ssid» // WIFI SSID -пен ауыстырыңыз

#анықтаңыз STAPSK «өту» // WIFI құпия сөзімен ауыстырыңыз

5. Эскизді тақтаға жүктеңіз және жүктеуден кейін тақтаны түймеден қалпына келтіріңіз

6. Сериялық мониторды ашыңыз, егер бәрі жақсы болса, сіз келесідей шығуды көресіз:

Жүктеу

IP мекенжайы: 192.168.1.168 OTA қосылды MQTT қосылуда… MQTT қосылды! {«сәулелену»: 0,03}.

5 -қадам: HomeAssistant конфигурациялаңыз

HomeAssistant конфигурациялаңыз
HomeAssistant конфигурациялаңыз
HomeAssistant конфигурациялаңыз
HomeAssistant конфигурациялаңыз

Сізде үй көмекшісі жұмыс істейді деп ойлаймыз. Менің жүйеде RaspberryPi -де HASSOS 3.12 нұсқасы бар. Егер сіздің үй көмекшісінің нұсқасы тым ескі немесе өте жаңа болса, кейбір мүмкіндіктер әр түрлі болуы мүмкін. Бұл оқулық 3.12 нұсқасымен сенімді жұмыс істейді.

Егер сізде Home Assistant орнатылмаған болса, олардың ресми орнату нұсқаулығын қараңыз:

Орнатуды бастамас бұрын NodeMCU қосылғанын және деректерді жариялайтынын тексеріңіз.

Жарайды, бізде конфигурация үшін бірнеше қадамдар болады:

1. «Файлдық редакторды» орнатыңыз, егер ол мәзірде болмаса, мұнда ресми оқулық бар:

2. «/config/configuration.yaml» файлын өңдеңіз және келесіні қосып, сақтаңыз

- mqtt бөлімі, егер ол сізде жоқ болса

mqtt:

брокер: broker.hivemq.com ашылуы: шынайы ашу_префикс: га

- сенсорлар бөлімі

сенсор:

- платформа: mqtt атауы: «Сәулелену» күйі_тақырыбы: «га/сәулелену» бірлігі_өлшеу: 'uSv' бірегей_ид: «сәулелену» мәні_темплейні: «{{value_json.radiation}}»

3. Конфигурация -> Серверді басқару бөлімінен: «Конфигурацияны тексеру» түймесін басып, yaml конфигурация файлының қателерін тексеріңіз, содан кейін «қайта бастау» түймесін басып, қайта басталғанша күтіңіз.

4. Шолу -> Жоғарғы оң жақ бұрыш мәзірінен -> Интерфейсті конфигурациялау -> төменгі оң жақтағы + түймесін басыңыз

5. Тізімнен «сенсорды» таңдаңыз -> «объект» өрісінде «sensor.radiation» іздеңіз, атау өрісінде «Radiation» деп жазыңыз және OK түймесін басыңыз, ол қазір негізгі бетте болуы керек

6 -қадам: Жеке MQTT серверін конфигурациялау [міндетті емес]

MQTT туралы біраз сөйлесейік

«MQTT - бұл клиенттер серверінің хабар алмасу тасымалдау хаттамасы. Бұл жеңіл салмақты, ашық, қарапайым және іске асыруға ыңғайлы етіп жасалған. Бұл сипаттамалар оны көптеген жағдайларда қолдануға мүмкіндік береді, соның ішінде шектеулі орталар, мысалы, Машинадан Машинаға (M2M) және Интернеттегі Заттар (IoT) контекстінде, кодтың ізі қажет және/немесе желінің өткізу қабілеттілігі жоғары. »

MQTT 3.1.1 ресми сипаттамасынан дәйексөз.

Сонымен, біз бір жерде хабарламаны жариялай аламыз, ал екінші жағында біз бұл хабарларды тыңдай аламыз және деректермен бірдеңе жасай аламыз. MQTT «тақырыптарды» қолдайды, тақырыптар - бұл брокер әрбір клиент үшін хабарларды сүзу үшін пайдаланатын жолдар, сондықтан егер біз «/радиация» тақырыбына хабарлама жариялайтын болсақ, тыңдаушы біз жіберетін хабарларды алу үшін сол тақырыпқа жазылуы керек.

Міне, MQTT туралы егжей-тегжейлі оқулық:

Тегін ұялы серверді пайдаланудың кейбір кемшіліктері бар:

- сіздің тақырыпты тыңдайтын кез келген адам сіздің хабарламаңызды алады

- егер ол төмендесе немесе төлемді кейінірек қажет етсе, сіз оны пайдалана алмайсыз (төлем жасамасаңыз)

- егер сол тақырыпқа хабарлама жариялайтын адам болса, сіз олардың хабарларын аласыз, олар сәйкес келмейтін хабарламаларды жариялап, HASS графиктеріңізді бұзуы мүмкін.

Жеке серверді пайдалану

Егер сіз ашық серверді пайдаланғыңыз келмесе, сізде жеке серверді таңдау мүмкіндігі бар. Біз Mosquitto MQTT -ді ubuntu / debian серверіне таңқурай pi немесе компьютер сияқты орнатамыз.

Mosquitto - бұл MQTT протоколын енгізетін сервер және ол ақысыз.

Оны орнату үшін raspnerry pi немесе debian негізіндегі басқа серверге кіріп, іске қосыңыз:

sudo apt жаңарту

sudo apt install -y mosquitto mosquitto -clients sudo systemctl mosquitto.service қызметін қосады

Бұл репозиторийді жаңартады, масалар сервері мен клиентті орнатады және оны іске қосу кезінде қызмет көрсетуге мүмкіндік береді

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 желісіне қосылған және брандмауэр ережелері жоқ және олар еркін сөйлесе алады деп болжайды.

-Mosquitt MQTT серверінде пайдаланушы аты/құпия сөз жоқ, егер сіз тіркелгі деректерін орнатқыңыз келсе, мынаны тексеріңіз: https://www.steves-internet-guide.com/mqtt-username-password-example/ Сондай-ақ конфигурациялау қажет. үй көмекшісіндегі және arduino эскизіндегі тіркелгі деректері

7 -қадам: NodeMCU үшін OTA (әуедегі жаңартулар)

Тікелей эфирдегі жаңартулар әзірлеу тақтасын физикалық кабельді қажет етпестен сыммен жыпылықтауға болатынын білдіреді.

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 ( (қол қойылмаған int прогресс, қол қойылмаған int барлығы) {Serial.printf («Орындалуы:%u %% / r», (прогресс / (барлығы / 100)));}); ArduinoOTA.onError ( (ota_error_t қатесі) {Serial.printf («Қате [%u]:», қате); егер (қате == OTA_AUTH_ERROR) {Serial.println («Авторизация сәтсіз»);} басқа болса (қате) == OTA_BEGIN_ERROR) {Serial.println («Басталмады»);} басқа, егер (қате == OTA_CONNECT_ERROR) {Serial.println («Қосылмады»);} басқа жағдайда (қате == OTA_RECEIVE_ERROR) {Serial.println (« Қабылдау сәтсіз болды «);} if if (error == OTA_END_ERROR) {Serial.println (» Аяқталмады «);}}); ArduinoOTA.begin (); Serial.print («IP мекенжайы:»); Serial.println (WiFi.localIP ());

Ал цикл бөлімінде мына жолды қосыңыз:

ArduinoOTA.handle ();

Бастапқы код жүктелгеннен кейін тақта жүктелгеннен кейін Arduino IDE құралдар> Порт бөлімінде порттардың екі түрін көруге болады:

Сериялық порттар: /dev /ttyUSB0 (мысалы)

Желілік порттар: esp8266-xxxxx бойынша 192.168.1.xxx

Енді сіз желі портын таңдай аласыз және қашықтан басқару эскизін жүктей аласыз, сізге эскиздік құпия сөз сұралады (жоғарыда тұрақты анықталған пароль)

8 -қадам: Қорытынды, болашақ жұмыс

Бұл оқулық сенсорлардың басқа түрлері туралы деректерді жіберу үшін оңай өзгертілуі мүмкін:

- егер сенсорды кітапхана арқылы NodeMCU тікелей қолдайтын болса, сенсордан алынған мәліметтерді жинақтап, оны тікелей MQTT арқылы жіберіңіз.

- егер сенсорлық кітапхана NodeMCU -мен жұмыс істемесе, бірақ бұл тек Arduino үшін болса, онда сіздің кодты arduino -ға жүктеңіз, мәнді сериялық желі арқылы шығарыңыз және оны NodeMCU -де оқыңыз және оны итеріңіз (дәл біз геигер есептегішінде болған сияқты)

Біз оны бірнеше сенсорлардан деректерді жіберу үшін өзгерте аламыз:

- сенсорларды NodeMCU -ге қосыңыз

- әр сенсордан алынған мәліметтер

- сенсорлардың әрқайсысы үшін деректерді басқа тақырыпқа жариялайды

- HASS әр түрлі тақырыптарды тыңдайтын бірнеше сенсорларды анықтайды (біз геигер сияқты)

Ұсынылған: