![Թողունակության մոնիտոր `7 քայլ (նկարներով) Թողունակության մոնիտոր `7 քայլ (նկարներով)](https://i.howwhatproduce.com/images/005/image-14388-j.webp)
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48
![Թողունակության մոնիտոր Թողունակության մոնիտոր](https://i.howwhatproduce.com/images/005/image-14388-1-j.webp)
![Թողունակության մոնիտոր Թողունակության մոնիտոր](https://i.howwhatproduce.com/images/005/image-14388-2-j.webp)
![Թողունակության մոնիտոր Թողունակության մոնիտոր](https://i.howwhatproduce.com/images/005/image-14388-3-j.webp)
Քանի որ ես հաճախ ինքս ինձ հարց էի տալիս, թե ինչ թողունակություն է ներկայումս տրամադրում իմ ISP- ն (ինտերնետ կապի համար օգտագործում եմ LTE մոդեմ), ես մտածեցի թողունակության մոնիտորինգի համակարգի մասին: Քանի որ համակարգը պետք է լինի կոմպակտ և էներգախնայող, ես ընտրեցի Raspberry Pi Zero- ն որպես կենտրոնական բաղադրիչ: Ազնվամորին միացված է մոդեմին WLAN- ի միջոցով, հետևաբար WLAN- ի խնդիրները նույնպես կարող են հայտնաբերվել:
Պարագաներ
- Ազնվամորի Pi Zero WH
- Waveshare էլեկտրոնային թանաքի էկրան (2.9 դյույմ-e-paper-module)
- DC-DC փոխարկիչ (օրինակ ՝ DEBO DCDC 20W)
- RGB LED (հանված հին սարքից)
- Կոճակ
- Անջատիչ
- Relais մոդուլ (օրինակ ՝ 2 Way Relay մոդուլ 2 Way Relay մոդուլ)
- Արական միակցիչ + իգական միակցիչ (երկուսն էլ համապատասխանում են մոդեմի սնուցման վարդակի չափին)
- 3D տպագիր պատյան
Քայլ 1: Առանձնահատկություններ
![Հատկություններ Հատկություններ](https://i.howwhatproduce.com/images/005/image-14388-4-j.webp)
![Հատկություններ Հատկություններ](https://i.howwhatproduce.com/images/005/image-14388-5-j.webp)
![Հատկություններ Հատկություններ](https://i.howwhatproduce.com/images/005/image-14388-6-j.webp)
- Raspberry Pi Zero- ն միացված է WLAN- ի միջոցով, ստուգում է ներլցման և ներբեռնման արագությունը և յուրաքանչյուր կես ժամը մեկ կատարում է պինգի չափում: Չափումների համար հիմք է ծառայում speedtest.net հրամանի տողի տարբերակը:
- Թողունակության և պինգի չափման արդյունքը ցուցադրվում է էլեկտրոնային թանաքի էկրանին: Չափման ժամանակը նույնպես ցուցադրվում է:
- Եթե ներբեռնման արագությունը ընկնում է սահմանված շեմային արժեքից, ապա ռելեն կարճ ժամանակով անջատում և միացնում է մոդեմը: Այսպիսով, մոդեմը վերակայվում է առանց սարքի որևէ փոփոխության (ընդհատվում է միայն էներգիայի մատակարարումը):
- Սարքի դիմային մասում առկա է կոճակ, որը թույլ է տալիս ձեռքով թողնել թողունակության չափումը:
- Չափված արժեքները ցուցադրվում են Ubidots վահանակի վրա (IOT պորտալ): Ակնարկում կարող եք տեսնել նաև չափված արժեքների ժամանակային պատմությունը և վերջին վերակայումների պատճառները:
- IOT պորտալում կարող եք գտնել նաև մոդեմը հեռակա կարգաբերելու կոճակ:
- Bandwidth մոնիտորը օգտագործում է մոդեմի սնուցման աղբյուրը: Լրացուցիչ մատակարարման կարիք չկա: Ռելեները ընդհատում են հոսանքի մատակարարումը դեպի մոդեմ `ազնվամորին մնում է միացված:
Քայլ 2: Լարերի տեղադրում
![Հաղորդալարեր Հաղորդալարեր](https://i.howwhatproduce.com/images/005/image-14388-7-j.webp)
![Հաղորդալարեր Հաղորդալարեր](https://i.howwhatproduce.com/images/005/image-14388-8-j.webp)
![Հաղորդալարեր Հաղորդալարեր](https://i.howwhatproduce.com/images/005/image-14388-9-j.webp)
![Հաղորդալարեր Հաղորդալարեր](https://i.howwhatproduce.com/images/005/image-14388-10-j.webp)
Առաջին նկարում կարող եք տեսնել թողունակության մոնիտորի ներքին դիզայնը.
Հիմնական բաղադրիչներն են.
- Կտտացրեք կոճակը
- Էլեկտրոնային թանաքի էկրան
- Ազնվամորի Պի eroրո
- Ռելեի մոդուլ
- RGB LED + դիմադրիչներ (կախված ձեր օգտագործած RGB LED- ից)
- Անջատիչ
- DC-DC փոխարկիչ
- Իգական միակցիչ
Երկրորդ նկարը ցույց է տալիս էլեկտրագծերի սխեմատիկ պատկերը: Մատակարարման լարման դրական բևեռը սնվում է DC-DC լարման փոխարկիչին (որը երթուղիչի 12 Վ լարման հոսանքը փոխում է Ազնվամորիի համար 5 Վ) և ռելեի միջոցով (նորմալ միացված քորոցի միջոցով) ետ դեպի ելքային միակցիչ: Այսպիսով, մոդեմը սնուցվում է նաև, երբ թողունակության մոնիտորը անջատված է:
Թողունակության չափումը կարելի է ձեռքով սկսել կոճակի միջոցով: RGB LED- ն օգտագործվում է տեսնելու տարբեր գործառնական վիճակներ:
Raspberry Pi- ի և էլեկտրոնային թանաքի ցուցադրման միջև կապը ցուցադրված չէ սխեմայի սխեմայում: Միացրեք էկրանը ըստ աղյուսակի և վերևի քորոցին:
Քայլ 3. 3D տպագրություն և հետապնդման կառուցում
![3D տպագրություն և կառուցում հետապնդում 3D տպագրություն և կառուցում հետապնդում](https://i.howwhatproduce.com/images/005/image-14388-11-j.webp)
![3D տպագրություն և կառուցում հետապնդում 3D տպագրություն և կառուցում հետապնդում](https://i.howwhatproduce.com/images/005/image-14388-12-j.webp)
![3D տպագրություն և կառուցում հետապնդում 3D տպագրություն և կառուցում հետապնդում](https://i.howwhatproduce.com/images/005/image-14388-13-j.webp)
![3D տպագրություն և կառուցում հետապնդում 3D տպագրություն և կառուցում հետապնդում](https://i.howwhatproduce.com/images/005/image-14388-14-j.webp)
Գործի համար անհրաժեշտ են հետևյալ մասերը (տե՛ս վերը նկարը).
- ստորին հատված
- վերին հատված
- ճակատ
- հետ
- 4x լեռ
Բոլոր մասերը կարող են տպվել առանց հենարանների: Դուք նաև կարող եք գտնել ֆայլերը և իմ որոշ այլ նախագծեր Thingiverse- ում ՝
Էկրանը կարող է ամրացվել առջևի վահանակին ՝ ամրակներով և երկկողմանի ժապավենով: Կոճակի անջատիչը և կանացի միակցիչը պտուտակված են հետևի և հետևի վահանակի վրա: Ես օգտագործեցի 3x20 մմ պտուտակներ ՝ պատյանների երկու կեսերը միացնելու համար: Առջևի և հետևի վահանակների համար ակոսների հանդուրժողականությունը համեմատաբար ամուր է: Անհրաժեշտության դեպքում առջևի և հետևի վահանակները պետք է հղկված լինեն եզրին (ներսից `մակերեսը քայքայելու համար):
Քայլ 4: Ազնվամորի PI- ի կարգավորում
![Ազնվամորի PI- ի կարգավորում Ազնվամորի PI- ի կարգավորում](https://i.howwhatproduce.com/images/005/image-14388-15-j.webp)
![Ազնվամորի PI- ի կարգավորում Ազնվամորի PI- ի կարգավորում](https://i.howwhatproduce.com/images/005/image-14388-16-j.webp)
Կարգավորման այս ուղեցույցը հիմնված է տարբեր աղբյուրներից տեղադրման մի քանի հրահանգների (էլեկտրոնային թանաքի ցուցադրման արտադրողների,…) վրա: Ինձ համար հրահանգները բերեցին ցանկալի արդյունքի: Քանի որ ես Linux- ի փորձագետ չեմ, ոչ մի օպտիմալացում կամ նման բան չի արվել: Ես տեղյակ եմ, որ անշուշտ կան ավելի լավ և արդյունավետ լուծումներ:
Ենթադրենք, դուք արդեն ունեք Raspbian- ը ձեր Pi- ի վրա տեղադրված (կան բազմաթիվ ձեռնարկներ, թե ինչպես տեղադրել հիմնական օպերացիոն համակարգը), և դուք ունեք մի էկրան (miniHDMI- ի միջոցով), մկնիկը և ստեղնաշարը միացված են: Ենթադրվում է նաև երթուղղիչին կամ ինտերնետին ճիշտ WLAN միացում: Եթե այլ բան նշված չէ, տեղադրման բոլոր ընթացակարգերը կատարվում են տերմինալում:
Տեղադրեք հեռակա աշխատասեղան (ձեր համակարգչից PI մուտք գործելու համար).
sudo apt-get թարմացում
sudo apt-get
տեղադրել xrdp
կամ կարող եք նաև անգլուխ աշխատել ssh- ի միջոցով (տե՛ս օրինակ ՝
Փոխել գաղտնաբառը:
www.raspberrypi.org/forums/viewtopic.php?t=193620
Տեղադրեք speedtest:
sudo
apt-get տեղադրել python-pip
sudo pip տեղադրեք speedtest-cli
ստուգելու, թե արդյոք տեղադրումը հաջող էր, գործարկեք Speedtest- ը տերմինալում.
speedtest-cli
եթե ամեն ինչ ճիշտ է, ապա պետք է ինչ -որ բան ստանաք, ինչպես վերևի առաջին նկարում:
Տեղադրեք wiringPI
sudo apt-get տեղադրել git-core
git clone git: //git.drogon.net/wiringPi
cd էլեկտրագծեր
./ կառուցել
(տես նաև
Այլընտրանքային:
sudo apt-get տեղադրել wiringpi
(տե՛ս
Տեղադրեք BCM2835
(տե՛ս
Ներբեռնեք bcm2835-1.60.tar.gz (կամ ավելի նոր տարբերակ, եթե առկա է)
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60
./ կոնֆիգուրացիա
կատարել
sudo make check
sudo make install
Տեղադրեք Python պատկերապատման գրադարանը
sudo apt-get տեղադրել python-imaging
Այլընտրանքային:
sudo apt-get տեղադրել python-pil
Միացնել I2C գործառույթը:
Գործարկեք հետևյալ հրամանը ՝ ձեր Raspberry Pi խորհուրդը կազմաձևելու համար.
sudo raspi-config
Ընտրեք ինտերֆեյսի ընտրանքներ-> I2C -> այո, I2C հիմնական վարորդը գործարկելու համար: Այնուհետեւ դուք նույնպես պետք է փոփոխեք կազմաձեւման ֆայլը: Գործարկեք հետևյալ հրամանը ՝ կազմաձևման ֆայլը բացելու համար.
sudo nano /etc /մոդուլներ
Կազմաձևման ֆայլին ավելացրեք հետևյալ երկու տողերը
i2c-bcm2708
i2c-dev
Տես նաև
Միացնել SPI գործառույթը
Գործարկեք հետևյալ հրամանը ՝ ձեր Raspberry Pi խորհուրդը կազմաձևելու համար.
sudo raspi-config
Ընտրեք ինտերֆեյսի ընտրանքներ-> SPI -> այո, SPI հիմնական վարորդը գործարկելու համար:
Տեղադրեք լրացուցիչ տառատեսակներ.
sudo apt-get տեղադրել ttf-mscorefonts-installer
Ներբեռնեք և տեղադրեք տառատեսակներ (Roboto + Droid)
գկսուդո
pcmanfm
Սկսելու համար ֆայլերի կառավարիչ արմատային իրավունքներով և պատճենել truetype տառատեսակները թղթապանակում/usr/share/fonts/truetype
Այլընտրանքային:
WinSCP- ով պատճենեք տառատեսակները Ներլցումների թղթապանակին (WinSP- ն օգտագործելու համար ssh- ը պետք է միացված լինի)
sudo cp -r/home/pi/Ներլցումներ/droid/usr/share/fonts/truetype
sudo cp -r/home/pi/Ներլցումներ/roboto/usr/share/fonts/truetype
Տառատեսակի թղթապանակ մուտք գործելու համար ձեզ անհրաժեշտ են արմատային իրավունքներ: Գուցե կան ավելի լավ եղանակներ դա անելու համար (ինչպես նշվեց, ես Linux- ի մասնագետ չեմ), բայց երկու եղանակներն էլ ինձ մոտ աշխատում էին:
Python ֆայլեր
Օգտագործեք ֆայլերի կառավարիչը ՝ «bandwidth_monitor» նոր թղթապանակ ստեղծելու համար
Պատճենեք բոլոր ֆայլերը գրացուցակում bandwidth_monitor
Պիթոնի ֆայլերը և սցենարը կատարելի դարձնել
chmod +x *.py
chmod +x speedtest-cron.sh
Կարգավորել crontab- ը
crontab -e
Crontab- ն օգտագործվում է ծրագրի կատարումը պլանավորելու համար, օրինակ. ամենաարագ ստուգում յուրաքանչյուր 30 րոպեում: Ձեր crontab- ին ավելացրեք հետևյալ տողերը (տես նաև երկրորդ նկարը).
@reboot/usr/bin/python /home/pi/bandwidth_monitor/post_restart_message.py &
@reboot sleep 30 &&/usr/bin/python /home/pi/bandwidth_monitor/poll_test_now_button.py */30 * * * * /home/pi/bandwidth_monitor/speedtest-cron.sh */3 * * * */usr/ bin/python /home/pi/bandwidth_monitor/poll_killswitch.py 13 03 * * */usr/bin/python /home/pi/bandwidth_monitor/refresh_display.py
Պլանավորված առաջադրանքների նկարագրություն.
- վերագործարկման ժամանակ վերագործարկման հաղորդագրությունը գրվում է IOT վահանակին
- վերագործարկման ժամանակ հարցման test_now_button- ը սկսված է
- յուրաքանչյուր 30 րոպեն մեկ կատարվում է թողունակության չափում
- յուրաքանչյուր 3 րոպեն մեկ ստուգվում է հեռակառավարման կոճակի կարգավիճակը (IOT վահանակի վրա)
- օրը մեկ անգամ սկսվում է ցուցադրման թարմացման ցիկլը:
Seeրագրերի համառոտ նկարագրության համար տես ծրագրաշարի բաժինը:
Քայլ 5: Softwareրագրակազմ
![Ծրագրային ապահովում Ծրագրային ապահովում](https://i.howwhatproduce.com/images/005/image-14388-17-j.webp)
Softwareրագիրը բաժանված է մի քանի ֆայլերի / ծրագրերի.
bandwidth_monitor_0_4.py- ն այն հիմնական ծրագիրն է, որը յուրաքանչյուր կես ժամը մեկ կանչվում է Crontab- ի կողմից: Այն կատարում է թողունակության թեստ (speedtest.net հրամանի տողի տարբերակի միջոցով): Փորձարկման ընթացքում RGB LED- ը կապույտ է: Եթե թողունակությունը ընտրված շեմից բարձր է, ապա արժեքը ցուցադրվում է էլեկտրոնային թանաքի էկրանին (ժամանակացույցի հետ միասին) և արտահանվում է Ubidots- ի վահանակ: Եթե թողունակությունը շեմից ցածր է, LED- ը դառնում է կարմիր, և չափումը կրկնվում է կարճ ուշացումից հետո: 3 բացասական փորձից հետո ռելեն ակտիվանում է, և այդպիսով մոդեմի սնուցումն ընդհատվում է: Վերակայման ծածկագիրը (արժեքը = 2) գրված է մատյանների հատվածում:
poll_killswitch.py կարդում է բուլի փոփոխականի կարգավիճակը վահանակի վրա: Եթե killswitch_state- ը ճշմարիտ է, ապա ռելան ակտիվանում է, և մոդեմի սնուցման աղբյուրն ընդհատվում է: RGB LED- ը կանաչ է դառնում killswitch- ի քվեարկության ժամանակ: Վերականգնումից հետո killswitch_state- ը սահմանվում է false և ստեղծվում է վահանակի տեղեկամատյանում գրառում (արժեք = 1):
poll_test_now_button.py սպասում է գործի առջևի վահանակի սեղմիչին սեղմելուն: Կոճակն ակտիվացնելով ՝ թողունակության չափումը ձեռքով սկսվում է: Երբ ծրագիրը սկսվում է (Raspberry Pi- ի վերագործարկման ժամանակ) RGB LED- ը կարմիր թարթում է:
post_restart_message.py- ն գրում է վերակայման կոդը (արժեքը = 3) վահանակի տեղեկամատյանում: Սա ցույց է տալիս, որ թողունակության մոնիտորը վերագործարկվել է: Programրագրի մեկնարկի ժամանակ RGB LED լուսարձակը կապույտ է:
test_LED.py և test_relay.py պարզ սցենարներ են, որոնք կարող են օգտագործվել RGB LED- ի և ռելեի ապարատային գործառույթը ստուգելու համար:
epdconfig.py- ն և epd2in9.py- ն Waveshare- ի տրամադրած էլեկտրոնային թանաքի ցուցադրման սարքի վարորդն են:
Որպեսզի թույլ տաք ծրագրերին մուտք գործել Ubidots- ի վահանակ, դուք պետք է ավելացնեք ձեր անհատական նշաններն ու սարքի կամ փոփոխականների անունները (եթե օգտագործում եք տարբեր նշումներ): Որոնեք վերևում պատկերված հատվածի նման հատված (փոխարինեք XXXXXXXX- ը ձեր նշանով):
Գործիքային վահանակը կառուցելու և վահանակը Python ծրագրում ինտեգրելու մասին համապարփակ ձեռնարկներ կարելի է գտնել անմիջապես Ubidots էջում (https://help.ubidots.com/hy/) կամ Google- ի միջոցով:
Քայլ 6: IOT վահանակ
![IOT վահանակ IOT վահանակ](https://i.howwhatproduce.com/images/005/image-14388-18-j.webp)
Ubidots- ի կողմից տեղադրված կառավարման վահանակը (տե՛ս https://ubidots.com) պարունակում է մի քանի ոլորտ, որոնք համառոտ նկարագրված են ստորև:
- Վերբեռնման և ներբեռնման արագության ժամանակային հաջորդականություն: Ամեն կես ժամը մեկ նոր արժեք է տեղադրվում գծապատկերում:
- Չափված պինգի ժամանակի ընթացքը: Ամեն կես ժամը մեկ դիագրամում տեղադրվում է նոր արժեք:
- Ներբեռնման միջին արագության ժամանակային հաջորդականություն: 24 ժամվա ընթացքում միջին արժեքը հաշվարկվում և գրվում է գծապատկերում:
- Ներկայիս չափման արժեքների աղյուսակների ներկայացում, ներառյալ ժամանակային կնիքը:
- Ինտերնետի միջոցով մոդեմի վերակայման հեռակառավարման կոճակ: Հարցումը տեղի է ունենում յուրաքանչյուր 3 րոպեն մեկ, այսինքն ՝ կարող է որոշ ժամանակ պահանջվել մինչև գործողության իրականացումը:
- Վերջին վերակայումների գրանցում, ներառյալ վերակայման պատճառը (հեռահար միացում, անջատում կամ լարման կորուստ, նվազագույն թողունակությունից ցածր)
Գործիքային վահանակը կառուցելու և վահանակը Python ծրագրում ինտեգրելու մասին համապարփակ ձեռնարկներ կարելի է գտնել անմիջապես Ubidots էջում (https://help.ubidots.com/hy/) կամ Google- ի միջոցով:
Խորհուրդ ենք տալիս:
MQTT լողավազանի ջերմաստիճանի մոնիտոր. 7 քայլ (նկարներով)
![MQTT լողավազանի ջերմաստիճանի մոնիտոր. 7 քայլ (նկարներով) MQTT լողավազանի ջերմաստիճանի մոնիտոր. 7 քայլ (նկարներով)](https://i.howwhatproduce.com/images/002/image-3478-j.webp)
MQTT լողավազանի ջերմաստիճանի մոնիտոր. Այս նախագիծը տան այլ ավտոմատացման իմ նախագծերի ուղեկիցն է: Խելացի տվյալների մուտքագրում գեյզերների վերահսկիչ և բազմաֆունկցիոնալ սենյակի լուսավորություն և սարքերի վերահսկիչ: Դա լողավազանի կողքին տեղադրված մոնիտոր է, որը չափում է լողավազանի ջրի ջերմաստիճանը, շրջապատող օդը
Arduino գործարանի մոնիտոր `հողի թողունակության տվիչով - ձեռնարկ` 6 քայլ
![Arduino գործարանի մոնիտոր `հողի թողունակության տվիչով - ձեռնարկ` 6 քայլ Arduino գործարանի մոնիտոր `հողի թողունակության տվիչով - ձեռնարկ` 6 քայլ](https://i.howwhatproduce.com/images/001/image-586-13-j.webp)
Arduino գործարանի մոնիտոր `հողի թողունակության տվիչով - ձեռնարկ. Այս ձեռնարկում մենք կսովորենք, թե ինչպես կարելի է հայտնաբերել հողի խոնավությունը` օգտագործելով հզորության խոնավության տվիչ `OLED էկրանով և Visuino- ով: Դիտեք տեսանյութը:
Խելացի փակ բույսերի մոնիտոր - Իմացեք, երբ ձեր բույսը ջրելու կարիք ունի. 8 քայլ (նկարներով)
![Խելացի փակ բույսերի մոնիտոր - Իմացեք, երբ ձեր բույսը ջրելու կարիք ունի. 8 քայլ (նկարներով) Խելացի փակ բույսերի մոնիտոր - Իմացեք, երբ ձեր բույսը ջրելու կարիք ունի. 8 քայլ (նկարներով)](https://i.howwhatproduce.com/images/001/image-1459-39-j.webp)
Smart Indoor Plant Monitor - Իմացեք, երբ ձեր բույսը ջրելու կարիք ունի. Մի քանի ամիս առաջ ես պատրաստեցի հողի խոնավության մոնիտորինգի մարտկոց, որը մարտկոցով է սնվում և կարող է խրված լինել ձեր փակ բույսերի կաթսայի հողի մեջ `որոշ օգտակար տեղեկություններ տալու հողի մասին: խոնավության մակարդակը և բռնկման LED- ները ՝ ձեզ ասելու, թե երբ պետք է սպասել
DIY շարժական մինի մոնիտոր. 5 քայլ (նկարներով)
![DIY շարժական մինի մոնիտոր. 5 քայլ (նկարներով) DIY շարժական մինի մոնիտոր. 5 քայլ (նկարներով)](https://i.howwhatproduce.com/images/002/image-5584-j.webp)
DIY շարժական մինի մոնիտոր. Այս նախագծում ես ձեզ ցույց կտամ, թե ինչպես եմ օգտագործել 1280x800 LCD հավաքածու ՝ մարտկոցով աշխատող շարժական մինի մոնիտոր կառուցելու համար, որն օգտակար է ձեր DSLR տեսախցիկի, ձեր Raspberry Pi- ի կամ ձեր համակարգչի դիտման դաշտը ընդլայնելու համար: Եկեք սկսենք
Լարման մոնիտոր բարձր լարման մարտկոցների համար `3 քայլ (նկարներով)
![Լարման մոնիտոր բարձր լարման մարտկոցների համար `3 քայլ (նկարներով) Լարման մոնիտոր բարձր լարման մարտկոցների համար `3 քայլ (նկարներով)](https://i.howwhatproduce.com/images/005/image-12694-j.webp)
Լարման մոնիտոր բարձր լարման մարտկոցների համար. Այս ուղեցույցում ես ձեզ կբացատրեմ, թե ինչպես եմ կառուցել մարտկոցի լարման մոնիտորը իմ էլեկտրական երկարատախտակի համար: Տեղադրեք այն ինչպես ցանկանում եք և միացրեք ընդամենը երկու լար ձեր մարտկոցին (Gnd և Vcc): Այս ուղեցույցը ենթադրում էր, որ ձեր մարտկոցի լարումը գերազանցում է 30 վոլտ, w