Агуулгын хүснэгт:

Угаалгын машины мэдэгдэх мэдрэгч: 6 алхам (зурагтай)
Угаалгын машины мэдэгдэх мэдрэгч: 6 алхам (зурагтай)

Видео: Угаалгын машины мэдэгдэх мэдрэгч: 6 алхам (зурагтай)

Видео: Угаалгын машины мэдэгдэх мэдрэгч: 6 алхам (зурагтай)
Видео: ВСЯ НОЧЬ С ПОЛТЕРГЕЙСТОМ В ЖИЛОМ ДОМЕ, я заснял жуткую активность. 2024, Арваннэгдүгээр
Anonim
Image
Image
Прототип
Прототип

Энэхүү угаалгын машин мэдрэгч нь миний угаалгын машин дээр байрладаг бөгөөд машинаас чичиргээг илрүүлэхийн тулд акселерометр ашигладаг. Угаах мөчлөг дууссан гэдгийг мэдрэх үед энэ нь надад утсан дээрээ мэдэгдэл илгээдэг. Би үүнийг барьж дуусгасан, учир нь машин өөрөө дуугарахаа больсон бөгөөд угаалга хийхээ мартахаас залхаж байсан.

Кодыг эндээс олж болно:

Бүтэн хэсгүүдийн жагсаалт:

  • WEMOS LOLIN32
  • Хагас хэмжээтэй талхны самбар (загварчлахад зориулагдсан)
  • Матрицын самбар бүхий ABS төслийн хайрцаг 59х88х30мм
  • 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 зүү эмэгтэй JST PH загварын кабель (14см)
  • 4х M1219-8 Неодим диск соронз 6х4мм

Алхам 1: Прототип

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

Төхөөрөмж нь ESP32 микроконтроллер ашигладаг. Энэ тохиолдолд би Wemos -ийн Lolin32 хөгжүүлэлтийн самбарыг ашиглаж байгаа бөгөөд үүнийг AliExpress дээрээс 7 доллараар худалдаж авах боломжтой. Акселерометр бол Sparkfun LIS3DH юм. Хурд хэмжигч нь аналог биш тоон байх нь чухал юм. Хуучин блютүүт чанга яригчаас авсан зай.

ESP32 нь хурдасгуурт I2C -ээр холбогддог. Кодын эхний хувилбар нь хурдатгалын гурван тэнхлэгийг (x, y ба z) 20м тутамд хэмжсэн хурдатгалын утгад зориулж санал асуулга хийсэн болно. Талхны хавтангийн загварыг угаалгын машин дээр тавиад угаах мөчлөгийн янз бүрийн үе шатанд хурдатгалын оргил үеийг харуулсан дээрх графикийг гаргав. Үнэмлэхүй хурдатгал нь 125 мг -аас (ердийн хүндийн хүчний 125 мянга нэг) илүү байсан оргилуудыг улбар шар өнгөөр харуулжээ. Бид эдгээр үеийг илрүүлж, угаалгын машины статусыг тодорхойлохыг хүсч байна.

Машин асаалттай эсвэл унтарсан эсэхийг хэрхэн тодорхойлох вэ?

Энэхүү төхөөрөмжийг бүтээх нэг зорилго бол энэ нь идэвхгүй байх явдал байв. Өөрөөр хэлбэл ямар ч товчлуур дарах шаардлагагүй; зүгээр л ажиллах болно. Энэ нь маш бага хүч чадалтай байх ёстой, учир нь миний хувьд цахилгаан кабелийг угаалгын машин руу сунгах боломжгүй байсан.

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

Хуурамч код иймэрхүү харагдах болно:

# Төхөөрөмж сэрлээ

мэдэгдэх_босго = 240 тоолуур = 10 хурдатгал хэмжигч.босго (96) # 96мг байхад тоолуур> 0: бол акселерометр.болгооны босго (): тоолуур ++ өөр: тоолуур- хэрэв тоолуур> мэдэгдлийн_ босго: # эцсийн эргэлтийн мөчлөг унтах (1 секунд) хурдасгуурыг илрүүлэв. () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Одоогийн сэрэх хугацаанд хэдэн секундын хурдатгал байгааг илрүүлэхийн тулд бид тоолуур ашигладаг болохыг эндээс харж болно. Хэрэв тоолуур тэг болж буурвал бид төхөөрөмжийг унтраах боломжтой. Хэрэв тоолуур 240 (мэдэгдлийн босго) хүрвэл энэ нь бид 4 минутын чичиргээг илрүүлсэн гэсэн үг юм. Төхөөрөмж эцсийн эргэлтийн мөчлөгийг зөв илрүүлсэн эсэхийг шалгахын тулд бид эдгээр босго утгыг өөрчилж болно. Хангалттай чичиргээ илрүүлсний дараа бид мэдэгдэл илгээхээс өмнө өөр 5 минут унтаж болно (миний хувьд угааж дуусах хүртэл ийм хугацаа шаардагдана).

Алхам 2: Блинкээр дамжуулан мэдэгдэл илгээх

Блинкээр дамжуулан мэдэгдэл илгээх
Блинкээр дамжуулан мэдэгдэл илгээх

Blynk бол утсан дээрх апп ашиглан IoT төхөөрөмжтэй харилцах боломжийг олгодог үйлчилгээ юм. Энэ тохиолдолд би энгийн HTTP POST -ээр Blynk API руу өдөөгдсөн түлхэх мэдэгдлийн API ашиглаж байна.

Алхам 3: Цахилгаан зарцуулалтыг хэмжих, батерейны ашиглалтын хугацааг тооцоолох

Цахилгаан зарцуулалтыг хэмжих, батерейны ашиглалтын хугацааг тооцоолох
Цахилгаан зарцуулалтыг хэмжих, батерейны ашиглалтын хугацааг тооцоолох

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

  • Гүн нойр: 144.5uA
  • Сэрэх: 45 мА
  • Wifi идэвхжсэн: 150 мА

Би машиныг долоо хоногт хоёр удаа ашигладаг гэж үзвэл мэдрэгч бүрийн мужид зарцуулах хугацааг дараахь байдлаар тооцоолсон.

  • Гүн нойр: 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.3 В -оос 3.3 В хүртэл буурах болно. Нийт эсэргүүцэл 430 кОм байсан тул одоогийн сугалаа 11.6uA болно (Омын хуулийг ашиглана). Бидний гүн нойрны өнөөгийн хэрэглээ 144uA байдаг тул энэ нь мэдэгдэхүйц өсөлт юм.

Бид мэдэгдэл илгээхээс өмнө батерейны хүчдэлийг нэг удаа хэмжихийг хүсч байгаа тул бид юу ч хэмжихгүй байгаа үед хүчдэл хуваагчийн хэлхээг унтраах нь утгагүй болно. Аз болоход бид үүнийг GPIO тээглүүрийн аль нэгэнд холбогдсон хэд хэдэн транзисторын тусламжтайгаар хийж чадна. Би энэ стекийн солилцооны хариултанд өгөгдсөн хэлхээг ашигласан. Та намайг дээрх зурган дээрх Arduino болон талхны хавтангаар хэлхээг туршиж байгааг харж болно.

Дээрх хэлхээг байрлуулснаар би батерейны хувь хэмжээг авахын тулд дараах псевдо кодыг ашигладаг.

зай_хувь ():

# зайны хүчдэлийн хэлхээг идэвхжүүлэх gpio_set_level (BATTERY_EN_PIN, HIGH) # Зайны түвшинг 0 -ээс 4095 хүртэлх бүхэл тоо болгон буцаана adc_value = adc1_get_value (ADC_PIN) хуваагч нь 100k/330k ом эсэргүүцэл ашигладаг # 4.3V -> 3.223, 2.4 -> 1.842 хүлээгдэж буй_мах = 4.3*330/(100+330) хүлээгдэж буй_мин = 2.4*330/(100+330) зайны_зэрэг = (adc_ хүчдэл -хүлээгдэж буй_мин)/(хүлээгдэж буй -хүлээгдэж буй_мин) зайны түвшинг буцаах * 100.0

Алхам 5: Үүнийг илүү хөөрхөн болгох

Үүнийг илүү хөөрхөн болгох
Үүнийг илүү хөөрхөн болгох
Үүнийг илүү хөөрхөн болгох
Үүнийг илүү хөөрхөн болгох
Үүнийг илүү хөөрхөн болгох
Үүнийг илүү хөөрхөн болгох

Талхны хавтангийн хувилбар сайн ажиллаж байгаа ч гэсэн би үүнийг цэвэрхэн, илүү найдвартай багц болгон оруулахыг хүссэн (утас нь тасарч, тасрахгүй). Би өөрийн хэрэгцээнд тохирсон, хайрцагны хавтан, бэхэлгээ, эрэг зэргийг багтаасан төслийн хайрцгийг олж чадсан. Түүнчлэн, энэ нь 2 фунт стерлингээс хямд үнээр үхсэн байв. Хайрцгийг хүлээн авсны дараа миний хийх ёстой зүйл бол бүрэлдэхүүн хэсгүүдийг зүү хавтан дээр гагнах явдал байв.

Үүний хамгийн хэцүү хэсэг нь батерейны хүчдэлийн хэлхээний бүх бүрэлдэхүүн хэсгүүдийг Lolin32 -ийн хажууд байрлах жижиг орон зайд суурилуулах явдал байв. Аз болоход жаахан жигнэмэг, гагнуураар хийсэн зохих холболт нь хэлхээнд маш сайн нийцдэг. Түүнчлэн, Wemos Lolin32 нь батерейны эерэг терминалыг ил гаргах зүүгүй тул би зайны холбогчоос зүү хавтан руу утас гагнах шаардлагатай болсон.

Төхөөрөмжийн хөдөлгөөнийг илрүүлэх үед би анивчдаг LED -ийг нэмж оруулсан.

Алхам 6: Хүрч дуусгах

Image
Image
Мэдээллийг дуусгах
Мэдээллийг дуусгах
Мэдээллийг дуусгах
Мэдээллийг дуусгах

Би хайрцгийн ёроолд 6 мм х 4 мм хэмжээтэй 4 неодим соронзыг супер наасан бөгөөд энэ нь угаалгын машины металл хэсэгт найдвартай наалддаг.

Төслийн хайрцагт кабельд нэвтрэх боломжийг олгодог жижиг нүх байдаг. Аз болоход би ESP32 хавтанг энэ нүхний ойролцоо байрлуулж микро USB холбогч руу нэвтрэх боломжтой болсон. Нүхийг гар хийцийн хутгаар томруулсны дараа батерейг хялбархан цэнэглэхийн тулд кабель нь төгс тохирсон байв.

Хэрэв та энэхүү төслийн дэлгэрэнгүй мэдээллийг сонирхож байвал сэтгэгдлээ үлдээнэ үү. Хэрэв та кодыг үзэхийг хүсвэл Github дээрээс шалгана уу.

github.com/alexspurling/washingmachine

Зөвлөмж болгож буй: