Агуулгын хүснэгт:
- Хангамж
- Алхам 1: Яагаад өөр цаг уурын станц гэж?
- Алхам 2: Танд юу хэрэгтэй вэ?
- Алхам 3: Энэхүү төсөл нь намайг маш их бодож, сурахад хүргэсэн …
- Алхам 4: Цахим дэлгэц ашиглах
- Алхам 5: Үүнийг хийх
- Алхам 6: Код ба файлууд
Видео: Өөр нэг ухаалаг цаг уурын станц, гэхдээ : 6 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Тийм ээ, хаа сайгүй ийм олон цаг агаарын станц байдгийг би мэднэ, гэхдээ ялгааг олж харахын тулд хэдэн минут зарцуулаарай.
- Бага чадалтай
- 2 цахим цаасан дэлгэц …
- гэхдээ 10 өөр дэлгэц!
- ESP32 дээр суурилсан
- акселерометр ба температур / чийгшлийн мэдрэгч
- Wifi шинэчлэлт
- 3D хэвлэсэн хайрцаг
болон бусад олон хэрэгтэй заль мэхүүд …
Гол санаа нь хайрцагны чиглэлээс хамааран янз бүрийн мэдээллийг хоёр дэлгэц дээр харуулах явдал юм. Энэ хайрцаг нь параллелепипед хайрцаг хэлбэртэй бөгөөд хучилтын чулуу бөгөөд хөлийн үүргийг гүйцэтгэдэг бүстэй.
Хангамж
Таны харж байгаагаар систем нь 2 цахим цаасан дэлгэц, 3D хэвлэсэн хайрцагнаас бүрдэнэ. Гэхдээ үүнд олон зүйл бий:
- ESP32
- Нэг MPU6050 хурдасгуур
- DHT22 мэдрэгч
- LiPo батерей
- Бүх зүйлийг холбох ПХБ
- Гар хийцийн duPont утас
болон Wi-Fi холболт. Үнэн хэрэгтээ 3 сүлжээг зарласан бөгөөд систем амжилттай холбогдож дуустал нь тэдгээрийг нэг нэгээр нь шалгадаг.
Алхам 1: Яагаад өөр цаг уурын станц гэж?
Санаа нь хайрцгийн чиглэлээс хамааран янз бүрийн мэдээллийг хоёр дэлгэц дээр харуулах явдал юм. Энэ хайрцаг нь параллелепипед хайрцаг хэлбэртэй бөгөөд хучилтын чулуу бөгөөд нэг төрлийн бүстэй бөгөөд энэ нь зогсоход дэмжлэг болдог.
Акселерометр нь хөдөлгөөн, чиглэлийг илрүүлж, дэлгэцийг идэвхжүүлдэг.
Эрчим хүч хэмнэхийн тулд би цахилгаан тэжээлгүй болсон ч гэсэн дэлгэцийг хадгалдаг цахим цаасан дэлгэцийг (доорх лавлагааг үзнэ үү) сонгосон. Үүний нэгэн адил ESP32-ийн хувьд би Lolin32 модулийг (хэмнэлттэй гэдгээрээ) сонгосон бөгөөд гүн нойрыг хэрхэн яаж зохицуулах, хурдатгал хэмжигчээр үүсгэгдсэн тасалдлыг сэрээх талаар сурах шаардлагатай болсон.
Дэлгэцүүд нь SPI -ээр холбогдсон тул ESP32 -тэй холбох зөв зүүг олохын өмнө би нэлээд хайсан бөгөөд энэ нь надад хурдасгуурт I2C, DHT22 -ийг унших зүү, батерейны хүчдэлийг хэмжихэд бусад 2 төхөөрөмж хэрэгтэй болохыг мэдэж байсан. ESP32 бараг бүрэн цэнэглэгдсэн байна! Зарим тээглүүрийг зөвхөн унших боломжтой гэдгийг мэддэг (би тэдгээрийг DHT мэдрэгчийн хувьд ашигласан), бусад хэсгийг Wifi-тай хамт ашиглах боломжгүй тул зөв тохиргоог олоход хэцүү байсан.
Хайрцгийг 4 чиглэлд, хавтгай дээр чиглүүлэх боломжтой. Энэ нь 4*2+2 = 10 төрлийн мэдээллийг зөвхөн 2 дэлгэцээр харуулах боломжийг олгодог. Тиймээс энэ нь танд маш олон зүйлийг харуулах боломжийг олгоно.
- Огноо, тэр өдрийн гэгээнтэн
- Одоогийн цаг
- Өнөөдрийн цаг агаарын урьдчилсан мэдээ
- Ойрын хэдэн цагийн цаг агаарын урьдчилсан мэдээ
- Ойрын өдрүүдийн цаг агаарын урьдчилсан мэдээ
- Батерейны цэнэгийн түвшин
- Надад өрөө байсаар байтал тусгайлсан вэбсайтаас санамсаргүй байдлаар иш татав.
Алхам 2: Танд юу хэрэгтэй вэ?
- ESP32: Lolin32 модуль (маш бага чадалтай, батерейны холбогчоор тоноглогдсон, батерейг USB плюсээр цэнэглэх боломжтой)
- 2 ширхэг цаасны дэлгэц: 4.2 инч ба 2.9 инч. Би Good Display дэлгүүрийн загваруудыг сонгосон.
- DHT22 мэдрэгч
- MCU6050 акселерометр - гирометр I2C мэдрэгч
- LiPo батерей
- Батерейны хүчдэлийг хэмжихэд: 2 10k резистор, 10000 резистор, 100nF конденсатор, 1 MOSFET транзистор
- Гагнуур ба гагнуурын төмөр, хэвлэмэл хэлхээний самбар
- Хэргийн 3D принтер рүү нэвтрэх
Хавсаргасан зураг нь ПХБ дээрх бүх бүрэлдэхүүн хэсгүүдийн байрлалыг харуулж байна: Би хайрцагт багтахаар зай хэмнэх ёстой байсан бөгөөд энэ нь хэт том биш байх ёстой.
Цаг агаарын мэдээллийг авахын тулд та цаг агаарын API -д бүртгүүлж, түлхүүрээ 'Variables.h' файлд зөв байрлуулах хэрэгтэй (доороос үзнэ үү).
Цаг агаарын вэбсайтууд:
- apixu
- accuweather
Алхам 3: Энэхүү төсөл нь намайг маш их бодож, сурахад хүргэсэн …
Энэ систем нь бага чадалтай байх ёстой байсан тул та орой бүр батерейгаа цэнэглэх шаардлагагүй болно … Эрчим хүч хэмнэхийн тулд би цахилгаан тэжээлгүй болсон ч гэсэн дэлгэцийг хадгалдаг цахим цаасан дэлгэцийг сонгосон. Үүний нэгэн адил ESP32-ийн хувьд би Lolin32 модулийг (хэмнэлттэй гэдгээрээ) сонгосон бөгөөд гүн нойрыг хэрхэн яаж зохицуулах, акселерометрээс үүдэлтэй тасалдлын сэрүүлгийг сурах шаардлагатай болсон.
Хайрцгийг 4 чиглэлд чиглүүлэх боломжтой, илүү хавтгай. Энэ нь 4*2+2 = 10 төрлийн мэдээллийг харуулах боломжтой болгодог. Тиймээс энэ нь танд маш олон зүйлийг хийх боломжийг олгодог: огноо, тухайн өдрийн гэгээнтэн, цаг, өнөөгийн цаг агаарын урьдчилсан мэдээ, ирэх цаг, хоногийн цаг агаарын урьдчилсан мэдээ, батерейны цэнэгийн түвшин, тусгай вэбсайтаас санамсаргүй үнийн санал авах.
Интернетээс хайж олох нь маш их зүйл бөгөөд таны мэдэж байгаагаар WiFi бол эрчим хүч хэмнэх дайсан юм.
Тиймээс бид хамгийн сүүлийн үеийн мэдээллийг харуулахын тулд холболтыг удирдах ёстой боловч холбогдоход хэт их цаг зарцуулах шаардлагагүй болно. Өөр нэг нарийн төвөгтэй асуудал бол цагийг үнэн зөв байлгах явдал юм. Надад RTC хэрэггүй, учир нь би интернэтэд цагаа олж чаддаг, гэхдээ ESP32 -ийн дотоод цаг, ялангуяа унтах үед бага зэрэг хазайдаг. Интернетээр цагийг дахин тохируулахыг хүлээж байхдаа би хангалттай нарийвчлалтай байх арга замыг олох ёстой байв. Би үүнийг интернет дээр цаг тутамд дахин синхрончилж байна.
Тиймээс бие даасан байдал (интернет холболтын давтамж) ба харуулсан мэдээллийн үнэн зөв байдлын хооронд ялгаа байдаг.
Шийдэх ёстой өөр нэг асуудал бол санах ой юм. ESP32 нь гүн нойрсох үед санах ой нь RTC RAM гэж нэрлэгддэгийг эс тооцвол алдагддаг. Энэхүү санах ойн хэмжээ нь 4 MB бөгөөд үүнээс зөвхөн 2 програмыг ашиглах боломжтой. Энэ санах ойд би унтах үе дууссаны дараа нэг гүйцэтгэлээс нөгөөг хүртэл хадгалагдах ёстой програмын янз бүрийн хувьсагчдыг хадгалах ёстой: цаг агаарын урьдчилсан мэдээ, цаг, огноо, дүрс файлын нэр, ишлэл гэх мэт..
Дүрсүүдийн тухай ярихдаа тэдгээрийг SPIFFS, ESP32 файлын системд хадгалдаг. Үнэгүй Wunderground цаг агаарын API хаагдсаны дараа би бусад үнэгүй цаг агаарын мэдээлэл нийлүүлэгчдийг хайх шаардлагатай болсон. Би хоёрыг сонгосон: нэг нь өнөөгийн цаг агаар, 12 цагийн урьдчилсан мэдээ, нөгөө нь олон өдрийн урьдчилсан мэдээ. Дүрсүүд ижил биш тул надад хоёр шинэ асуудал үүсгэв.
- Дүрсний багцыг сонгоно уу
- Эдгээр дүрсийг 2 сайтын урьдчилсан кодтой тааруулна уу
Энэхүү захидал харилцааг мөн RTC RAM -д хадгалсан бөгөөд үүнийг дахин ачаалах шаардлагагүй болно.
Дүрсүүдтэй холбоотой сүүлийн асуудал. Бүгдийг SPIFFS -д хадгалах боломжгүй юм. Миний бүх файлд зай хэтэрхий бага байна. Зургийн шахалтыг хийх шаардлагатай байсан. Би Python дээр миний дүрс файлуудыг уншиж, тэдгээрийг RLE болгон шахаж, дараа нь шахсан файлуудыг SPIFFS дээр хадгалдаг скрипт бичсэн. Тэнд зохион байгуулав.
Гэхдээ цахим цаасан дэлгэцийн номын сан нь зөвхөн BMP төрлийн файлуудыг авдаг, шахсан зураг биш юм. Тиймээс би эдгээр шахсан файлуудаас дүрсээ харуулахын тулд нэмэлт функц бичих шаардлагатай болсон.
Интернет дээр уншсан өгөгдөл нь ихэвчлэн json форматтай байдаг: цаг агаарын мэдээлэл, өдрийн гэгээнтэн. Үүний тулд би (агуу) arduinoJson номын санг ашигладаг. Гэхдээ ишлэл нь тийм биш юм. Би тэдгээрийг зориулалтын сайтаас авдаг тул вэб хуудасны агуулгыг шууд харах замаар унших ёстой. Үүний тулд би тодорхой код бичих ёстой байсан. Өдөр бүр, шөнө дундын орчимд, энэ сайт руу орж, арав орчим санамсаргүй ишлэл уншиж, тэдгээрийг RTC RAM дээр хадгалдаг. Орон сууцыг том дэлгэцийг дээш нь чиглүүлэх үед нэгийг нь санамсаргүй байдлаар харуулдаг.
Өргөгдсөн тэмдэгтүүдийг харуулах асуудлыг би танд дамжуулж байна (уучлаарай, ишлэлүүд франц хэл дээр байна).
Жижиг дэлгэц асах үед батерейны хүчдэлийг харуулах бөгөөд үлдсэн түвшинг илүү сайн харахын тулд зураг зурна. Зайны хүчдэлийг уншихын тулд электрон угсралт хийх шаардлагатай байв. Хэмжилт нь батерейг цэнэггүй болгохын тулд би интернетээс олдсон диаграммыг ашигласан бөгөөд зөвхөн хэмжилт хийх үед гүйдэл зарцуулахын тулд MOSFET транзисторыг унтраалга болгон ашигладаг.
Энэ хэлхээг хийж, бүх зүйлийг хайрцагт багтахын тулд би аль болох жижиг хэмжээтэй байхыг хүссэн тул системийн бүх бүрэлдэхүүн хэсгүүдийг холбохын тулд ПХБ хийх шаардлагатай болсон. Энэ бол миний анхны ПХБ юм. Энэ тал дээр анх удаа бүх зүйл сайн ажилласан болохоор би азтай байсан …
Суулгацын газрын зургийг үзнэ үү: "хориотой бүс" нь USB кабелийг холбох зориулалттай газар юм. Lolin32 модуль нь батерейг USB -ээр цэнэглэх боломжийг олгодог: хэрэв USB кабель холбогдсон бол батерейг цэнэглэж, модуль нэгэн зэрэг ажилладаг.
Сүүлийн цэг: фонтууд. Зоригтой ч бай, өөр хэмжээтэй ч бай тэдгээрийг бүтээж хадгалах ёстой байв. Adafruit GFX номын сан нь фонтын файлуудыг зөв лавлах санд суулгасны дараа үүнийг маш сайн анхаарч үздэг. Файл үүсгэхийн тулд би Font Converter сайтыг ашигласан бөгөөд энэ нь маш тохиромжтой!
Та сонгосон эсэхээ шалгаарай:
- Урьдчилан харах дэлгэц: TFT 2.4"
- Номын сангийн хувилбар: Adafruit GFX фонт
Дүгнэж хэлэхэд: маш их зүйлийг сурч мэдэх боломжийг олгосон том төсөл
Алхам 4: Цахим дэлгэц ашиглах
Эдгээр дэлгэцийн гол сул тал нь видеон дээр тодорхой харагдаж байна: дэлгэцийн шинэчлэлт нь нэг эсвэл хоёр секунд үргэлжилдэг бөгөөд анивчих замаар хийгддэг (хоёр дэлгэцийн ердийн ба урвуу хувилбаруудын өөр дэлгэц). Энэ нь цаг агаарын мэдээллийг хүлээн зөвшөөрдөг, учир нь би үүнийг байнга шинэчилдэггүй (хайрцагны чиглэл өөрчлөгдөхөөс бусад цаг тутамд). Гэхдээ одоогоор тийм биш. Тийм ч учраас (мөн хэрэглээг хязгаарлахын тулд) би HH: MM дэлгэцийг ашигладаг (секунд биш).
Тиймээс би дэлгэцийг шинэчлэх өөр арга хайх хэрэгтэй болсон. Эдгээр дэлгэцүүд (зарим нь) хэсэгчилсэн шинэчлэлтийг дэмждэг (дэлгэцийн аль нэг хэсэгт эсвэл дэлгэцийн бүх хэсэгт хэрэглэнэ …) гэхдээ миний том дэлгэц (цагийг харуулдаг) пикселийн хий үзэгдлийг хадгалдаг тул энэ нь надад сайн биш байсан. тэдгээрийг сольж байна. Жишээлбэл, 10:12 - 10:13 хүртэл өнгөрөхөд '2' нь '3' дотор бага зэрэг харагддаг бөгөөд '4', '5' гэх мэтийн дараа бүр илүү тод харагддаг. Энэ бол миний дэлгэцийн хувьд ийм зүйл болохыг онцлохын тулд: Би үүнийг цахим дэлгэцийн номын сангийн GxEPD2 зохиогчтой ярилцсан бөгөөд тэрээр энэ үзэгдлийг өөрийн дэлгэцээр ажиглаагүй гэж хэлсэн. Бид хий үзэгдэл агнах амжилтанд хүрээгүй параметрүүдийг өөрчлөхийг оролдсон.
Тиймээс бид өөр шийдлийг олох хэрэгтэй болсон: Би хэсэгчлэн давхар сэргээн засварлах санал тавьсан нь асуудлыг шийдсэн (ядаж миний хувьд сэтгэл хангалуун байгаа). Дэлгэц анивчихгүй, хий үзэгдэл байхгүй цаг өнгөрч байна. Гэсэн хэдий ч өөрчлөлт нь шууд хийгддэггүй: цагийг өөрчлөхөд нэг секундээс илүү хугацаа шаардагдана.
Алхам 5: Үүнийг хийх
Чиглэл өөрчлөгдөхөд дотор нь юу ч хөдлөхгүй байхын тулд янз бүрийн эд ангиудыг (дэлгэц, электрон модуль, ПХБ, батерей) цавуугаар наасан байна. ПХБ -ийн доорхи утсыг чиглүүлэхийн тулд би үүнийг зайгаар хийсэн хөл дээр суулгасан.
Удалгүй би гадаад USB микрофон холбогч суурилуулах тул батерейгаа цэнэглэхийн тулд хэргийг нээх шаардлагагүй болно.
Магадгүй би энэ бүхнийг төгс болгохын тулд OTA -ийг шинэчлэхийг сонирхож магадгүй юм.
Алхам 6: Код ба файлууд
Гурван архивын файлыг өгсөн болно.
- Цаг агаарын станц.zip: Arduino IDE ашиглан байршуулах Arduino код
- Boite ecran.zip: CAD ба 3D принтерийн файлууд
- data.zip: ESP32 -ийн SPIFFS -д байршуулах файлууд.
Хэрэв та ESP32 -ийн SPIFFS файлыг хэрхэн байршуулахаа мэдэхгүй байгаа бол маш хэрэгтэй залгаасыг танилцуулж, үүнийг Arduino IDE дээр хэрхэн ашиглах талаар энэ гарын авлагыг уншаарай.
Гүн нойрны програмчлал нь Arduino -ийн стандарт програмчлалаас огт өөр юм. ESP32 -ийн хувьд ESP32 нь сэрж, тохиргоог хийж, дараа нь унтдаг гэсэн үг юм. Тиймээс давталтын функц хоосон бөгөөд хэзээ ч гүйцэтгэгддэггүй.
Эхний эхлүүлэх үе шатыг эхний гүйцэтгэлд зөвхөн нэг удаа ажиллуулах ёстой (цаг авах, цаг агаарын мэдээлэл, ишлэл гэх мэт), тиймээс ESP32 нь одоогийн сэрэх нь эхнийх эсэхийг мэдэх ёстой: үүний тулд Үүний шийдэл бол хувьсагчийг RTC RAM-д хадгалах явдал юм. Хэрэв энэ нь 1 -тэй тэнцүү бол энэ нь анхны гүйцэтгэл бөгөөд ESP32 нь эхлүүлэх үе шатыг ажиллуулдаг, эс тэгвээс энэ үе шатыг алгасдаг.
ESP32 -ийг сэрээхийн тулд хэд хэдэн боломжууд байдаг.
- Таймерыг сэрээх: код нь унтахаасаа өмнө гүн нойрны үргэлжлэх хугацааг тооцоолно. Энэ нь тухайн өдрийн гэгээнтнүүдийн цаг (1, 2, 3, 5 минут тутамд) эсвэл цаг агаарын мэдээллийг (3, 4 цаг тутамд) (24 цаг тутамд) шинэчлэхэд ашиглагддаг.
- Тасалдсан сэрүүлэг: хурдасгуур нь ESP32-ийг сэрээхэд ашигладаг дохио илгээдэг. Энэ нь чиг баримжааны өөрчлөлтийг илрүүлэх, дэлгэцийг шинэчлэхэд ашиглагддаг
- Мэдрэгч мэдрэгчийг сэрээх: ESP32 нь мэдрэгчээр ажилладаг хэд хэдэн тээглүүрээр тоноглогдсон боловч тэдгээрийг таймерын сэрүүлэгт ашиглах боломжгүй тул би үүнийг ашиглаагүй.
Эрчим хүч хэмнэх цагийг үнэн зөв байлгах (өөрөөр хэлбэл NTP серверийг минут тутамд холбож болохгүй), Adafruit GFX номын сангаар дэмжигдээгүй өргөлтийг арилгахын тулд дэлгэцийг шинэчлэхээс зайлсхийхийн тулд кодын бусад хэсэгт програмчлалын бусад заль мэх байдаг. Ялангуяа тасалдалт сэрүүлгийн хувьд акселерометрийн параметрүүдийг тохируулах, таймер сэрэх үед унтах хугацааг зөв тооцоолох, IDE-д холбогдоогүй тохиолдолд цуваа консол ашиглахаас зайлсхийх (дахин эрчим хүч хэмнэх), салгах шаардлагагүй үед wifi гэх мэт … мөн код нь функцийг ойлгоход туслах тайлбаруудаар дүүрэн байдаг.
Энэхүү зааврыг уншсан танд баярлалаа (миний анхных). Танд таалагдаж, энэхүү цаг уурын станцыг бүтээх нь танд таалагдана гэж найдаж байна
Мэдрэгчдийн тэмцээнд дэд байр эзэлсэн
Зөвлөмж болгож буй:
NaTaLia цаг уурын станц: Arduino нарны эрчим хүчээр ажилладаг цаг уурын станц зөв замаар хийсэн: 8 алхам (зурагтай)
NaTaLia цаг уурын станц: Arduino нарны эрчим хүчээр ажилладаг цаг уурын станц зөв замаар хийсэн: 1 жилийн турш 2 өөр байршилд амжилттай ажилласны дараа би нарны эрчим хүчээр ажилладаг цаг уурын станцын төслийн төлөвлөгөөгөө хуваалцаж, хэрхэн урт хугацаанд үнэхээр оршин тогтнож чадах систем болж хөгжсөн тухай тайлбарлаж байна. нарны эрчим хүчнээс үүссэн үе. Хэрэв та дагах бол
Хөдөлж буй OLOID - өөр өөр цаг үед өөр өөр гэрийн тэжээвэр амьтан: 10 алхам (зурагтай)
Хөдөлж буй OLOID - өөр өөр цаг үед өөр өөр гэрийн тэжээвэр амьтан: Корона нь бидний амьдралыг өөрчилсөн: энэ нь биднийг бие махбодийн хувьд хол байлгахыг шаарддаг бөгөөд энэ нь эргээд нийгмийн холдолд хүргэдэг. Тэгэхээр ямар шийдэл байж болох вэ? Магадгүй гэрийн тэжээвэр амьтан уу? Гэхдээ үгүй, Корона амьтдаас гаралтай. Өөр Corona 2.0 -ээс өөрсдийгөө аварцгаая. Гэхдээ хэрэв бид
Өөр нэг IoT цаг уурын станц: 8 алхам
Өөр нэг IoT цаг уурын станц: Дараахь зүйл бол аавдаа төрсөн өдрийн бэлэг байсан; Миний олж харсан өөр зааварчилгаанаас санаа авч, түүнд өөрийгөө бүтээх хэрэгсэл болгон батлахыг хүссэн юм. Гэсэн хэдий ч түүнтэй хамт энэ төсөл дээр ажиллаж эхэлмэгц би анхны т
JAWS: Өөр нэг цаг уурын станц: 6 алхам
JAWS: Өөр нэг цаг уурын станц: Зорилго нь юу вэ? Бага байхаасаа л би цаг агаарыг их сонирхдог байсан. Миний цуглуулсан анхны мэдээлэл бол гадаа өлгөгдсөн хуучин мөнгөн усаар дүүргэсэн термометр юм. Өдөр бүр, хэдэн сар дараалан би температур, огноо, цагийг смарт бичдэг байсан
Өөр нэг Arduino цаг уурын станц (ESP-01 & BMP280 & DHT11 & OneWire): 4 алхам
Өөр нэг Arduino цаг уурын станц (ESP-01 & BMP280 & DHT11 & OneWire): Эндээс та EWS-01-ийн цөөн тооны голтой OneWire-ийг ашиглах нэг давталтыг олох боломжтой. Энэхүү зааварчилгаанд бүтээсэн төхөөрөмж нь таны Wifi сүлжээнд холбогддог сонголт (танд итгэмжлэл байх ёстой …) BMP280 болон DHT11 -ээс мэдрэхүйн өгөгдлийг цуглуулдаг