Mundarija:

Uy yordamchisi Geiger Counter integratsiyasi: 8 qadam
Uy yordamchisi Geiger Counter integratsiyasi: 8 qadam

Video: Uy yordamchisi Geiger Counter integratsiyasi: 8 qadam

Video: Uy yordamchisi Geiger Counter integratsiyasi: 8 qadam
Video: ИНЦИДЕНТ С НЛО В ШКОЛЕ АРИЭЛЬ 2024, Iyul
Anonim
Image
Image
Ish printsipi
Ish printsipi

Bu qo'llanmada men sizga HASS (uy yordamchisi) ga maxsus sensorlarni qanday qo'shish kerakligini ko'rsataman, aniqrog'i geiger hisoblagichi, lekin jarayon boshqa sensorlar uchun ham xuddi shunday.

Biz NodeMCU taxtasidan, arduino asosidagi geiger hisoblagichidan va allaqachon o'rnatilgan uy yordamchisidan foydalanamiz.

Integratsiya MQTT serveriga (ochiq yoki xususiy) asoslangan bo'ladi va men bu bilan sizni bosqichma -bosqich olib boraman.

Agar siz uy yordamchisi nima ekanligini bilmasangiz, ularning sahifasiga tashrif buyuring https://www.home-assistant.io/. Bu taniqli uy avtomatlashtirish platformasi bo'lib, u juda yaxshi saqlanadi va juda moslashtiriladi.

Siz quyidagilarni bilib olasiz:

- Home Assistant uchun rivojlangan konfiguratsiya

- NodeMCU (ishlab chiqish taxtasi) va uni Arduino IDE bilan qanday dasturlash

- NodeMCU taxtasi uchun Arduino IDE yordamida OTA (efirda)

- ketma -ket qurilmani NodeMCU -ga qanday ulash mumkin

- Linuxda MQTT serverini qo'lda o'rnatish (ixtiyoriy)

Asosiy taxminlar:

- sizda uy yordamchisi ishga tushgan

- Siz elektronika haqida ozgina bilasiz

- sizda Arduino IDE o'rnatilgan

1 -qadam: ehtiyot qismlar va asboblar

Qismlar:

1. NodeMCU taxtasi

2. non bord

3. erkak-erkak va erkak-urg'ochi juper simlari

3. usb to micro usb kabeli

4. ketma -ket interfeysli arduino geiger hisoblagichi

("arduino geiger couter" ni Ebaydan qidiring)

5. radioaktiv material (ixtiyoriy kichik sinov namunasi)

Asboblar:

1. Arduino IDE

2. Uy yordamchisi o'rnatilgan

2 -qadam: Ish printsipi

Bizning maqsadimiz - HomeAssistat (HASS) gaiger taymeridan o'qishni ko'rsatish. Bir tomondan bizda HASS serveri ishlayapti, u malina pi yoki boshqa qurilma bo'lishi mumkin, boshqa tomondan bizda geiger hisoblagichi bor.

Geiger hisoblagichi ketma -ket portga ega, bitta yechim ketma -ket portni HASS ishlaydigan RaspberryPi -ga ulashdir.

Yaxshi fikr bo'lmasligining ba'zi sabablari:

- u erda jismoniy bo'shliq yo'q

- bizda ketma -ket portda boshqa qurilmalar bor

- biz geiger hisoblagichi o'rniga tashqarida joylashtirilishi kerak bo'lgan atrof -muhit sensori biriktirmoqchimiz

OK, shuning uchun biz Wi -Fi orqali ulanishning yana bir imkoniyatini o'rganamiz.

HASS sensori ma'lumotlarini o'qishni qo'llab -quvvatlaydi va MQTT -server orqali bunday turdagi server kichik qurilmalar uchun oddiy ulanish ekanligini ko'rsatadi, bitta qurilma "mavzu" bo'yicha xabar chiqaradi, boshqasi esa xabarni qabul qilish uchun shu mavzuda tinglaydi. Shunday qilib, HASS tinglaydi va bizga xabarni nashr etadigan narsa kerak.

Bizning sensorimiz ketma -ket chiziq orqali gaplashishni biladi, shuning uchun biz ketma -ket chiziqni o'qiy oladigan va WIFI orqali ulanadigan va MQTT serveri bilan gaplashadigan taxtadan foydalanamiz. Buni amalga oshiradigan arzon taxta - bu NodeMCU.

NodeMCU Arduino IDE bilan dasturlashtirilishi mumkin. Eskiz juda oddiy, u quyidagilarni bajaradi:

- Wi -Fi tarmog'iga ulanadi

- server bilan MQTT aloqasini saqlaydi va ishlamay qolganda yoki uzilganda ulanishni qayta urinib ko'radi

- ketma -ket keladigan ma'lumotlarni butun sonlar qatori sifatida tinglaydi

- butun son kelganida uni MQTT orqali ma'lum bir mavzuga yuboradi

3 -qadam: qurilmani yig'ing

Qurilmani yig'ing
Qurilmani yig'ing

Biz taxtalar va simlardan foydalanamiz, shuning uchun bu juda oddiy, bizda bir necha qadam bor:

- NodeMCU -ni non paneliga qo'ying

- geiger trubkasini geiger taymeriga ulang (kutupluluğa e'tibor bering)

- VIN geiger taymeriga tushadi +

- GND geiger taymeriga o'tadi -

- NodeMCU D7 (pin 13) geiger TX ga o'tadi

- NodeMCU D8 (pin 15) geiger RX ga o'tadi

- NodeMCU -ni kompyuterdan mikro USB orqali quvvatlantirish

4 -qadam: Kodni yuklang

Kodni yuklang
Kodni yuklang
Kodni yuklang
Kodni yuklang
Kodni yuklang
Kodni yuklang
Kodni yuklang
Kodni yuklang

Biz Arduino IDE -dan foydalanamiz va biz NodeMCU taxtasi va Adafruit_MQTT kutubxonasi o'rnatilganligiga ishonch hosil qilamiz.

1. Github omborini klonlang: https://github.com/danionescu0/arduino va eskizni loyihalardan nusxa ko'chiring/HASSGeigerIntegration of your arduino sketchbook

2. Arduino IDE -ni oching va NodeMCU -ni o'rnating

- Fayl -> Tanlovlar -ga o'ting, Qo'shimcha taxtalar menejeri URL -lariga https://arduino.esp8266.com/stable/package_esp8266com_index.json -ni kiriting, agar sizda biror narsa bo'lsa, oldingizga koma qo'ying va OK tugmasini bosing.

-Asboblar -> Kengash -> Kengash menejeri "nodemcu" ni kiriting va ESP8266 hamjamiyatining esp8266 yozuvini tanlang va o'rnatish tugmasini bosing.

3. Adafruit_MQTT -ni o'rnating

-Asboblar -> Kutubxonalarni boshqarish -> "Adafruit_MQTT" -ga o'ting va "Arduino MQTT kutubxonasi" ni o'rnating.

4. Kompyuterga USB kabelini ulang va taxtani sozlang:

-Asboblar -> Kengash -> NodeMcu 1.0 -ga o'ting

-Asboblar -> Port -> USB portingiz

- boshqa sozlamalarni o'zgarishsiz qoldiring

4. Eskizda WIFI hisob ma'lumotlarini o'zingiznikiga mos keladigan tarzda o'zgartiring:

#define STASSID "ssid" // WIFI SSID bilan almashtiring

#define STAPSK "pass" // WIFI parolingiz bilan almashtiring

5. Eskizni taxtangizga yuklang va yuklagandan so'ng taxtani tugmachadan o'rnating

6. Ketma -ket monitorni oching, agar hammasi yaxshi bo'lsa, siz shunday chiqishni ko'rasiz:

Yuklash

IP manzili: 192.168.1.168 OTA yoqilgan MQTT ga ulanmoqda… MQTT ulandi! {"nurlanish": 0,03}..

5 -qadam: HomeAssistant -ni sozlang

HomeAssistant -ni sozlash
HomeAssistant -ni sozlash
HomeAssistant -ni sozlash
HomeAssistant -ni sozlash

Sizda uy yordamchisi ishlayapti deb taxmin qilamiz. Mening tizimimda RaspberryPi -da HASSOS 3.12 versiyasi bor. Agar uy yordamchisining versiyasi juda eski yoki juda yangi bo'lsa, ba'zi xususiyatlar farq qilishi mumkin. Ushbu qo'llanma, albatta, 3.12 versiyasi bilan ishlaydi.

Agar sizda uy yordamchisi o'rnatilmagan bo'lsa, ularning rasmiy o'rnatish qo'llanmasini ko'rib chiqing:

O'rnatishni boshlashdan oldin, NodeMCU ulanganligiga va ma'lumotlarni nashr etayotganiga ishonch hosil qiling.

OK, bizda konfiguratsiya uchun bu erda ham bir qator qadamlar bo'ladi:

1. "Fayl muharriri" ni o'rnating, agar u menyuda bo'lmasa, bu erda rasmiy qo'llanma:

2. "/config/configuration.yaml" faylini tahrir qiling va quyidagilarni qo'shing va saqlang

- mqtt bo'limi, agar u sizda yo'q bo'lsa

mqtt:

broker: broker.hivemq.com kashfiyoti: haqiqiy discovery_prefix: ha

- sensorlar bo'limi

Sensor:

- platforma: mqtt nomi: "Radiatsiya" holati_tavosi: "ha/nurlanish" birligi_of_ o'lchov: 'uSv' noyob_id: "nurlanish" qiymati_template: "{{value_json.radiation}}"

3. Konfiguratsiya -> Server boshqaruvidan: "Konfiguratsiyani tekshirish" tugmachasini bosing, yaml konfiguratsiya faylini xatolarga tekshiring, so'ng "Qayta ishga tushirish" tugmasini bosing va u qayta ishga tushguncha kuting.

4. Umumiy nuqtai -> O'ng yuqori burchak menyusi -> UI -ni sozlash -> pastki o'ng burchakdagi + tugmasini bosing

5. Ro'yxatdan "sensor" ni tanlang -> "ob'ekt" maydonida "sensor.radiatsiya" ni qidiring, ism maydoniga "Radiatsiya" deb yozing va ok tugmasini bosing, u hozir asosiy sahifada bo'lishi kerak.

6 -qadam: O'z MQTT serveringizni sozlash [ixtiyoriy]

Keling, MQTT haqida biroz gaplashaylik

"MQTT - bu mijozlar serverining xabarlarni tashish protokoli. Bu engil, ochiq, sodda va amalga oshirish oson bo'lishi uchun mo'ljallangan. Bu xususiyatlar ko'p holatlarda, shu jumladan, cheklangan muhitda, masalan, "Mashinadan mashinaga" (M2M) va Internetning narsalari (IoT) kontekstida kichik kod izi talab qilinadigan va/yoki tarmoqli o'tkazish qobiliyati yuqori bo'lgan kontekstlarda foydalanish uchun ideal holga keltiradi.”

MQTT 3.1.1 rasmiy spetsifikatsiyasidan iqtibos.

Shunday qilib, biz xabarni bir tomondan nashr qilishimiz mumkin, boshqa tomondan biz bu xabarlarni tinglashimiz va ma'lumotlar bilan biror narsa qilishimiz mumkin. MQTT "mavzular" ni qo'llab -quvvatlaydi, mavzular - bu broker har bir mijoz uchun xabarlarni filtrlash uchun ishlatadigan satrlar, shuning uchun agar biz "/radiatsiya" mavzusiga xabar e'lon qilsak, tinglovchi biz yuborayotgan xabarlarni olish uchun o'sha mavzuga obuna bo'lishi kerak.

Bu erda MQTT haqida batafsil qo'llanma:

Bepul uyali serverdan foydalanishning ba'zi kamchiliklari bor:

- sizning mavzuni tinglayotgan har bir kishi sizning xabarlaringizni oladi

- agar u pasayib ketsa yoki keyinroq to'lov talab qilinsa, siz undan foydalana olmaysiz (to'lamasangiz)

- Agar kimdir bir xil mavzuda xabarlar nashr qilsa, siz ham ularning xabarlarini olasiz, ular mos kelmaydigan xabarlarni e'lon qilib, HASS grafiklarini buzishi mumkin.

Maxsus serverdan foydalanish

Agar siz ochiq serverdan foydalanishni xohlamasangiz, sizda shaxsiy server mavjud. Biz Mosquitto MQTT ni malina pi yoki kompyuter kabi ubuntu / debian serveriga o'rnatamiz.

Mosquitto - MQTT protokoli bilan ishlaydigan server va u bepul.

Uni o'rnatish uchun raspnerry pi yoki debianga asoslangan boshqa serverga kiring va ishga tushiring:

sudo apt yangilash

sudo apt install -y chivinli chivin -mijozlar sudo systemctl mosquitto.service -ni yoqadi.

Bu omborni yangilaydi, chivinli server va mijozni o'rnatadi va ishga tushganda xizmat ko'rsatishga imkon beradi

IP -serverni ishga tushirish uchun:

mezbon nomi -I.

va u shunga o'xshash narsani chiqaradi:

192.168.1.52 172.17.0.1 172.18.0.1

Shunday qilib, mening IP -manzilim 192.168.1.52, quyidagi buyruqlarda uni o'z ip -ga almashtiring

Siz MQTT serverini xabarni chop etish va uni konsol vositasi bilan qabul qilish orqali sinab ko'rishingiz mumkin, chunki bu ikkita terminalni xabarni tinglaydigan, xabarni chiqaradigan birini ochish kerak.

Birinchidan, terminalda "/ba'zi mavzu" haqidagi xabarni tinglash uchun ushbu buyruqni bajaring.

mosquitto_sub -h 192.168.1.52 -t /ba'zi -mavzu

Boshqa terminalni oching va shu mavzuga oid xabarni chop eting:

mosquitto_pub -h 192.168.1.52 -t /ba'zi -mavzu -m '{"namlik": 74.0}'

Birinchi terminalda siz "{" namlik ": 74.0}" ni ko'rishingiz kerak.

Maxsus e'tibor:

- bu sozlash HASS, Mosquitto va NodeMCU bir xil WIFI tarmog'iga ulanganligini va xavfsizlik devori qoidalari yo'qligini va ular erkin muloqot qilishini taxmin qiladi.

-Mosquitt MQTT serverida foydalanuvchi nomi/parol yo'q, agar siz hisob ma'lumotlarini o'rnatmoqchi bo'lsangiz, buni tekshiring: https://www.steves-internet-guide.com/mqtt-username-password-example/ Shuningdek, siz sozlashingiz kerak bo'ladi. uy yordamchisi va arduino eskizidagi hisob ma'lumotlari

7 -qadam: NodeMCU uchun OTA (havo yangilanishlari)

Havoda yangilanishlar shuni anglatadiki, ishlab chiqarish kartasi simsiz uzatilishi mumkin.

Arduino IDE bu funktsiyani ESP8266 seriyali va boshqa ba'zi platalar uchun qo'llab -quvvatlaydi:

- USB kabeli orqali dastlabki chirog'ni talab qiladi

- WIFI orqali virtual port yaratadi va uni faqat Arduino IDE -da ko'rish mumkin

- ketma -ket disk raskadrovka haqida ma'lumot yo'q

- parol bilan himoyani qo'llab -quvvatlaydi

OTAni ESP8266 eskizida yoqish uchun avval kutubxonani kiriting:

#"ArduinoOTA.h" ni qo'shing

Bundan tashqari, ushbu eskiz parolini aniqlang:

#SKETCHPASS "some_password" ni aniqlang

O'rnatish bo'limiga quyidagi qatorlarni qo'shing:

while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("Ulanish muvaffaqiyatsiz tugadi! Qayta yuklanmoqda …"); kechikish (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {String turi; agar (ArduinoOTA.getCommand () == U_FLASH) {type = "eskiz";} boshqa {// U_FS type = "fayl tizimi";} Serial.println ("Yangilanishni boshlang) " + turi);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA.onProgress ( (imzosiz int jarayoni, imzosiz int jami) {Serial.printf ("Progress:%u %% / r", (progress / (jami / 100)));}); ArduinoOTA.onError ( (ota_error_t xatosi) {Serial.printf ("Xato [%u]:", xato); agar (xato == OTA_AUTH_ERROR) {Serial.println ("Auth Failed");} if if (error == OTA_BEGIN_ERROR) {Serial.println ("Ishga tushmadi");} if if (error == OTA_CONNECT_ERROR) {Serial.println ("Ulanish muvaffaqiyatsiz tugadi");} boshqa bo'lsa (xato == OTA_RECEIVE_ERROR) {Serial.println (" Qabul qilmadi ");} else if (xato == OTA_END_ERROR) {Serial.println (" Oxirigacha ");}}); ArduinoOTA.begin (); Serial.print ("IP -manzil:"); Serial.println (WiFi.localIP ());

Va pastadir bo'limiga ushbu qatorni qo'shing:

ArduinoOTA.handle ();

Kengash ochilgandan so'ng, dastlabki kodni yuklaganingizdan so'ng, Arduino IDE da Tools-> Port bo'limida ikkita turdagi portni ko'rishingiz kerak:

Seriyali portlar: /dev /ttyUSB0 (masalan)

Tarmoq portlari: esp8266-xxxxx 192.168.1.xxx da

Endi siz tarmoq portini tanlashingiz va eskizni masofadan boshqarish pultiga yuklashingiz mumkin, sizdan eskiz parolini so'rashadi (siz yuqorida aniqlagan parol).

8 -qadam: Xulosa, kelgusi ish

Sensorlarning boshqa turlari haqida ma'lumot yuborish uchun ushbu qo'llanmani osongina o'zgartirish mumkin:

- agar sizning sensoringiz kutubxona orqali NodeMCU tomonidan to'g'ridan -to'g'ri qo'llab -quvvatlansa, sensordan ma'lumotlarni to'plang va uni to'g'ridan -to'g'ri MQTT orqali o'tkazing.

- agar sensorlar kutubxonasi NodeMCU bilan ishlamasa, lekin bu faqat Arduino uchun bo'lsa, kodingizni arduino -ga yuklang, qiymatni ketma -ket chiziq orqali chiqaring va NodeMCU -da o'qing va uni bosing (xuddi biz geiger taymerida bo'lgani kabi)

Biz hatto ma'lumotlarni bir nechta sensorlardan yuborish uchun o'zgartirishimiz mumkin:

- sensorlaringizni NodeMCU -ga ulang

- har bir sensordan so'rov ma'lumotlari

- Sensorlarning har biri uchun ma'lumotlarni boshqa mavzu bo'yicha nashr qilish

- HASSda har xil mavzularni tinglaydigan bir nechta datchiklar aniqlanadi (biz gayger bilan bo'lgani kabi)

Tavsiya: