Мазмуну:

Кир жуугуч машинанын эскертүү сенсору: 6 кадам (сүрөттөр менен)
Кир жуугуч машинанын эскертүү сенсору: 6 кадам (сүрөттөр менен)

Video: Кир жуугуч машинанын эскертүү сенсору: 6 кадам (сүрөттөр менен)

Video: Кир жуугуч машинанын эскертүү сенсору: 6 кадам (сүрөттөр менен)
Video: RENAULT CLIO 5 КЫЗМАТЧЫСЫНЫН КАТАРЫ (НАЗАР!) 2024, Ноябрь
Anonim
Image
Image
Прототип
Прототип

Бул кир жуугуч машинанын сенсору менин кир жуугуч машинамдын үстүндө отурат жана машинадан чыккан дирилдөөнү аныктоо үчүн акселерометрди колдонот. Жуу айлампасы бүткөнүн сезгенде, мага телефонума билдирүү жөнөтөт. Мен муну курдум, анткени машинанын өзү бүткөндө эч кандай сигнал бербейт жана кирди чыгарууну унутуп чарчадым.

Кодду бул жерден тапса болот:

Толук бөлүктөр тизмеси:

  • WEMOS LOLIN32
  • Жарым өлчөмдүү нан тактасы (прототиптөө үчүн)
  • Matrix Board 59x88x30mm менен ABS долбоорунун кутусу
  • Sparkfun LIS3DH - үч огунун акселерометринин үзүлүшү
  • 1x ZVP3306A P-канал MOSFET, 160 мА, 60 В, 3-пин E-Line
  • 1x BC549B TO92 30V NPN транзистору
  • 5мм LED көк 68 мкд
  • 1x 100k 0.125W CF резистору
  • 1x 330k 0.125W CF резистору
  • 2x 10k 0.250W CF резистору
  • 1x 100 0.250W CF резистору
  • 2-Pin Аял JST PH-Style Cable (14см)
  • 4x M1219-8 Neodymium Disc Magnet 6x4mm

1 -кадам: Прототип

Прототип
Прототип

Түзмөк ESP32 микроконтроллерин колдонот. Бул учурда мен Wemos тарабынан Lolin32 иштеп чыгуу тактасын колдонуп жатам, аны AliExpressтен болжол менен $ 7 үчүн сатып алсаңыз болот. Акселерометр Sparkfun LIS3DH - бул акселерометр аналог эмес, санариптик, кийинчерээк көрө аласыз. Батареяны эски bluetooth колонкасынан алдым.

ESP32 акселерометрге I2C аркылуу туташат. Коддун биринчи версиясы үч ылдамдатуу огун (x, y жана z) ар бир 20ms ченелген ылдамдануу мааниси үчүн сурамжылаган. Кир жуугуч машинага нан тактасынын прототибин коюп, мен жогоруда көрсөтүлгөн графикти чыгардым, ал жуу циклинин ар кандай фазаларында ылдамдатуу чокуларын көрсөтөт. Абсолюттук ылдамдануусу 125 мгдан (нормалдуу тартылуунун 125 миңден бир бөлүгү) жогору болгон чокулар кызгылт сары түстө көрсөтүлгөн. Биз бул мезгилдерди аныктап, кир жуучу машинанын абалын аныктоо үчүн колдонууну каалайбыз.

Машинанын күйүк же өчүк экенин кантип аныктаса болот?

Бул аппаратты куруунун максаттарынын бири ал толугу менен пассивдүү болмок. Башкача айтканда эч кандай баскычты басуунун кажети жок; бул жөн эле иштейт Бул ошондой эле өтө аз кубаттуулукта болушу керек, анткени чындыгында кир кабыктарын кир жуугуч машинага узартуу мүмкүн эмес болчу.

Бактыга жараша, LIS3DH акселерометринде ылдамдануу белгиленген чектен ашканда үзгүлтүккө учуратуучу өзгөчөлүк бар (эскертүү, бул акселерометрдин камтылган жогорку өткөрмө чыпкасын колдонууну талап кылат-чоо-жайын билүү үчүн Githubдагы кодду караңыз) жана ESP32 ойготулушу мүмкүн үзгүлтүккө учуроо аркылуу терең уйку режиминен. Бул өзгөчөлүктөрдүн айкалышын кыймыл менен шартталган өтө аз кубаттуулуктагы уйку режимин түзүү үчүн колдоно алабыз.

Псевдо коду мындай көрүнөт:

# Түзмөк ойгонот

эскертме_ босогосу = 240 эсептегич = 10 акселерометр.set_threshold (96) # 96mg while counter> 0: if accelerometer.above_threshold (): counter ++ else: counter-- if counter> notification_threshold: # акыркы айлануу цикли уйкуну (1 секунд) акселерометрди аныктаган.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Бул жерде биз азыркы ойгонуу мезгилинде канча секунда ылдамдатууну аныктагандыгыбыз үчүн эсептегичти колдоноорубузду көрө аласыз. Эгерде эсептегич нөлгө түшсө, анда биз аппаратты кайра уктата алабыз. Эгерде эсептегич 240ка жетсе (кабарлоо босогосу), демек, биз 4 мүнөттүк дирилдөөнү аныктадык. Биз түзмөктүн акыркы айлануу циклин туура аныкташына ынануу үчүн бул босоголордун маанилерин өзгөртө алабыз. Жеткиликтүү дирилдөө аныкталгандан кийин, биз жөн гана дагы 5 мүнөт уктай алабыз (менин учурда бул жууп бүткөнгө чейин канча убакыт кетет) билдирүү жөнөтүүдөн мурун.

2 -кадам: Blynk аркылуу билдирүү жөнөтүү

Blynk аркылуу билдирүү жөнөтүү
Blynk аркылуу билдирүү жөнөтүү

Blynk - бул телефонуңуздагы тиркеме менен IoT түзмөктөрү менен иштешүүгө мүмкүндүк берүүчү кызмат. Бул учурда, мен Blynk APIге жөнөкөй HTTP POST тарабынан ишке киргизилген push билдирүү APIсин колдонуп жатам.

3 -кадам: Электр керектөөнү өлчөө жана Батарея өмүрүн баалоо

Электр керектөөнү өлчөө жана батареянын иштөө мөөнөтүн баалоо
Электр керектөөнү өлчөө жана батареянын иштөө мөөнөтүн баалоо

ESP32 чипи терең уйкуда (5uAга чейин) энергияны өтө аз керектөөчү катары жарыяланган. Тилекке каршы, ар кандай өнүгүү такталарындагы схемалар электр энергиясын керектөөнүн ар кандай мүнөздөмөлөрүн камсыз кылат - ESP32 түзмөктөрүнүн бардыгы бирдей түзүлгөн эмес. Мисалы, мен бул долбоорду биринчи баштаганда, мен терең уйку режиминде 1мАга жакын энергияны сарптай турган Sparkfun ESP32 Thing колдондум (LED ди өчүргөндөн кийин деле). Ошондон бери мен терең уйку режиминде турганда 144.5uA токту өлчөгөн Lolin32 (Lite версиясы эмес) колдонуп келе жатам. Бул өлчөө үчүн, мен жөн эле батарейка жана аппарат менен катар мультиметрди зымдап өткөрдүм. Бул, албетте, нан тактасы менен прототиптөө учурунда оңой. Мен түзмөк ойгонгондо учурдагы колдонууну өлчөдүм:

  • Терең уйку: 144.5uA
  • Ойгонуу: 45mA
  • Wifi иштетилген: 150mA

Мен машинаны жумасына эки жолу колдоном деп ойлосом, сенсордун ар бир штатта өткөргөн убактысы үчүн төмөнкү убакытты эсептеп чыктым:

  • Терең уйку: 604090 секунд (~ 1 жума)
  • Ойгонуу: 720 секунд (12 мүнөт)
  • Wifi иштетилген: 10 секунд

Бул көрсөткүчтөрдөн, биз батарейканын иштөө мөөнөтүн болжолдой алабыз. Мен бул ыңгайлуу эсептегичти колдонуп, орточо 0,2А кубаттуулукка ээ болдум. Болжолдуу батареянын иштөө мөөнөтү 201 күн же болжол менен 6 ай! Чындыгында, мен түзмөк 2 айдан кийин иштебей калат, андыктан өлчөөдө же батарейканын кубаттуулугунда каталар болушу мүмкүн экенин байкадым.

4 -кадам: Батареянын деңгээлин өлчөө

Батарея деңгээлин өлчөө
Батарея деңгээлин өлчөө
Батарея деңгээлин өлчөө
Батарея деңгээлин өлчөө

Мен батареянын заряды азайып баратканда түзмөк айтып берсе жакшы болмок деп ойлогом, ошондуктан аны качан заряддоо керек экенин билем. Муну өлчөө үчүн биз батарейканын чыңалуусун өлчөшүбүз керек. Батарея 4.3V - 2.2V чыңалуу диапазонуна ээ (ESP32 минималдуу иштөө чыңалуусу). Тилекке каршы, ESP32деги ADC казыктарынын чыңалуу диапазону 0-3.3V. Бул ADCге ашыкча жүктөө болбош үчүн батареянын чыңалуусун максималдуу 4.3төн 3.3кө чейин түшүрүүбүз керек дегенди билдирет. Бул чыңалуу бөлүштүргүч менен жасалышы мүмкүн. Батареядан жерге туура келген эки резисторду жөн эле зым менен тартып, ортодогу чыңалууну өлчөңүз.

Тилекке каршы, жөнөкөй чыңалуу бөлүштүргүч схемасы чыңалуу өлчөнбөгөндө да батареядан кубатты кетирет. Сиз муну жогорку баалуу резисторлорду колдонуу менен азайта аласыз, бирок төмөнкү жагы ADC так өлчөө үчүн жетиштүү токту тарта албашы мүмкүн. Мен 100 кОм жана 330 кОм мааниси бар резисторлорду колдонууну чечтим, бул чыңалуу бөлүштүрүүчү формула боюнча 4.3Vдан 3.3Vга чейин төмөндөйт. 430kΩ жалпы каршылыгын эске алганда, биз учурдагы 11.6uA чүчүкулакты күтөбүз (Ом мыйзамын колдонуу менен). Биздин терең уйкубуздун учурдагы колдонулушу 144uA экенин эске алганда, бул олуттуу түрдө өсүш.

Батареянын чыңалуусун эскертме жөнөтүүдөн мурун бир гана жолу өлчөгүбүз келгендиктен, биз эч нерсени өлчөбөгөн убакта чыңалуу бөлүштүргүч схемасын өчүрүү мааниге ээ. Бактыга жараша, биз муну GPIO казыктарынын бирине туташкан бир нече транзистор менен жасай алабыз. Мен бул stackexchange жоопто берилген схеманы колдондум. Сиз мени жогорудагы сүрөттө Arduino жана нан тактасы менен текшерип жатканымды көрө аласыз (көңүл бургула, чынында мен күтүлгөндөн жогору чыңалууну өлчөп жатам).

Жогоруда көрсөтүлгөн схема менен, мен батареянын пайыздык маанисин алуу үчүн төмөнкү псевдо кодду колдоном:

battery_percentage ():

# батареянын чыңалуу схемасын иштетүү gpio_set_level (BATTERY_EN_PIN, HIGH) # Батарея деңгээли 0 менен 4095 ортосундагы бүтүн сан катары кайтарылат adc_value = adc1_get_value (ADC_PIN) бөлүштүрүүчү 100k/330k ohm резисторлорун колдонот # 4.3V -> 3.223, 2.4 -> 1.842 күтүлгөн_мах = 4.3*330/(100+330) күтүлгөн_мин = 2.4*330/(100+330) battery_level = (adc_voltage -күтүлгөн_мин)/(күтүлгөн_макс -күтүлгөн_мин) кайтуу батареянын деңгээли * 100.0

5 -кадам: аны сулуу кылуу

Аны сулуураак кылуу
Аны сулуураак кылуу
Аны сулуураак кылуу
Аны сулуураак кылуу
Аны сулуураак кылуу
Аны сулуураак кылуу

Банндын версиясы жакшы иштеп жатканда, мен аны тыкан жана ишенимдүү боло турган пакетке салгым келди (бошоп же үзүлүп кетүүчү зымдар жок). Мен керектүү өлчөмдөгү эң керектүү долбоор кутучасын таба алдым, анын ичине пин такта, монтаж кармагычтары жана бурамалар кошулду. Ошондой эле, ал 2 фунт стерлингден арзан болчу. Кутучаны алгандан кийин, мен болгону компоненттерди пин тактайга ширетүүм керек болчу.

Балким, мунун эң татаал бөлүгү батарейканын чыңалуусунун бардык компоненттерин Lolin32дин жанындагы кичинекей мейкиндикке орнотуу болгон. Бактыга жараша, бир аз джокердик покеры жана ширетүү менен жасалган тиешелүү байланыштар тыкан туура келет. Ошондой эле, Wemos Lolin32де оң батарейканын терминалын ачуу үчүн пин жок болгондуктан, батарейканын туташтыргычынан пин тактасына зымды ширетүүгө туура келди.

Мен ошондой эле түзмөктүн кыймылын аныктаганда жарк эткен LED коштум.

6 -кадам: Тийиштерди бүтүрүү

Image
Image
Тийиштерди бүтүрүү
Тийиштерди бүтүрүү
Тийиштерди бүтүрүү
Тийиштерди бүтүрүү

Мен кутучанын түбүнө 4 6мм х 4мм неодим магнитин чаптап койгом, ал кир жуучу машинанын металл үстүнө бекем жабышып калат.

Долбоор кутусу кабелдерге кирүүнү камсыз кылуу үчүн кичинекей тешик менен келет. Бактыга жараша, мен микро -USB туташтыргычына кирүү үчүн ESP32 тактасын ушул тешикке жакын жайгаштыра алдым. Кол өнөрчүлүк бычагы менен тешикти чоңойткондон кийин, кабель батарейканы оңой кубаттоо үчүн эң сонун дал келет.

Эгерде сизди бул долбоордун майда -чүйдөсү кызыктырса, комментарий калтырыңыз. Эгерде сиз кодду көргүңүз келсе, аны Githubдан текшериңиз:

github.com/alexspurling/washingmachine

Сунушталууда: