Агуулгын хүснэгт:
- Алхам 1: Монголбанк - Билл материал
- Алхам 2: Температур ба чийгшил мэдрэгчийг суурилуулах
- Алхам 3: DS18B20 суурилуулах - Температур мэдрэгч
- Алхам 4: BMP180 -ийг суулгах
- Алхам 5: Цаг агаар, өндрийг BMP180 ашиглан хэмжих
- Алхам 6: Иж бүрэн ЭХ
- Алхам 7: ThingSpeak руу өгөгдөл илгээх
- Алхам 8: ESP8266 ашиглан ThingSpeak руу алсын өгөгдлийг илгээх
- Алхам 9: Эцсийн тэмдэглэл
- Алхам 10: Дүгнэлт
Видео: RPi ба ESP8266 бүхий IoT цаг уурын станц: 10 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
Өмнөх заавар дээр бид NodeMCU, мэдрэгчтэй тоглож, ThingSpeak (үүл дээр мэдрэгчийн өгөгдлийг үүлэн дотор цуглуулж хадгалах, IoT програм хөгжүүлэх боломжийг олгодог ThingSpeak (Интернетийн зүйл) платформ дээр хэрхэн мэдээлэл хадгалах, бүртгэх талаар сурч байсан.
IOT MADE AASY: АЛсын зайнаас цаг агаарын өгөгдлийг авах: хэт ягаан туяа, агаарын температур, чийгшил
Энэхүү шинэ гарын авлагаас бид хэрхэн яаж хийхийг сурах болно, гэхдээ энэ үед Raspberry Pi ашиглан хэд хэдэн өөр мэдрэгчээс өгөгдөл авах, төхөөрөмжүүд болон вэб хооронд харилцах янз бүрийн аргыг судлах болно.
Мэдрэгч ба холболтын төрөл:
- DHT22 (Температур ба чийгшил) ==> Дижитал харилцаа холбоо
- BMP180 (Температур ба даралт) ==> I2C протокол
- DS18B20 (Температур) ==> 1 утастай протокол
Блок диаграм нь энэхүү төслийн төгсгөлд бид юу авахыг харуулж байна.
Алхам 1: Монголбанк - Билл материал
- Raspberry Pi V3 - 32.00 доллар
- DHT22 Температур ба харьцангуй чийгшил мэдрэгч - 9.95 ам
- 4K7 ом эсэргүүцэл
- DS18B20 ус нэвтэрдэггүй температур мэдрэгч - 5.95 ам
- 4K7 ом эсэргүүцэл
- BMP180 Барометрийн даралт, температур ба өндрийн мэдрэгч - USD 6.99
Алхам 2: Температур ба чийгшил мэдрэгчийг суурилуулах
Суурилуулах анхны мэдрэгч нь агаарын температур ба харьцангуй чийгшлийн мэдээллийг авах DHT22 байх болно. ADAFRUIT сайт нь эдгээр мэдрэгчийн талаар гайхалтай мэдээлэл өгдөг. Эндээс зарим мэдээллийг авлаа.
Тойм
Хямд өртөгтэй DHT-ийн температур, чийгшлийн мэдрэгч нь маш энгийн бөгөөд удаан боловч өгөгдлийн анхан шатны бүртгэл хийх хүсэлтэй хобби сонирхогчдод тохиромжтой. DHT мэдрэгч нь багтаамжийн чийгшил мэдрэгч, термистор гэсэн хоёр хэсгээс бүрдэнэ. Дотор нь дижитал хөрвүүлэлтийн аналогийг хийдэг, температур, чийгшил бүхий тоон дохиог цацдаг маш энгийн чип байдаг. Дижитал дохиог ямар ч микроконтроллер ашиглан уншихад хялбар байдаг.
DHT22 Үндсэн шинж чанарууд:
- Бага зардал
- 3-5 вольтын хүч ба I/O
- Хөрвүүлэлтийн үед 2.5mA хамгийн их одоогийн хэрэглээ (өгөгдөл хүсэх үед)
- 2-5% -ийн нарийвчлалтайгаар 0-100% чийгшилтийг уншихад сайн
- -40 -аас 125 хэм хүртэл температурыг уншихад ± 0.5 хэмийн нарийвчлалтай
- 0.5 Гц -ээс ихгүй дээж авах хурд (2 секунд тутамд нэг удаа)
- Биеийн хэмжээ 15.1mm x 25mm x 7.7mm
- 0.1 инчийн зайтай 4 голтой
Ихэвчлэн 20 м -ээс бага зайд мэдрэгчийг ашиглах тохиолдолд Data ба VCC тээглүүр хооронд 4K7 ом эсэргүүцэл холбох шаардлагатай. DHT22 гаралтын өгөгдлийн зүү нь Raspberry GPIO 16 -тай холбогдоно. Дээрх цахилгаан диаграмыг шалгаад мэдрэгчийг RPi тээглүүртэй доорх байдлаар холбоно уу.
- Зүү 1 - Vcc ==> 3.3V
- Зүү 2 - Өгөгдөл ==> GPIO 16
- Зүү 3 - Холбогдоогүй байна
- 4 -р зүү - Gnd ==> Gnd
Vcc ба Data pin -ийн хооронд 4K7 ом эсэргүүцэл суурилуулахаа бүү мартаарай
Мэдрэгчийг холбосны дараа бид түүний номын санг RPi дээрээ суулгах ёстой.
DHT номын санг суулгах:
Бөөрөлзгөнө дээрээ /гэрээсээ эхлэн /Documents руу очно уу
cd баримт бичиг
Номын санг суулгахын тулд лавлах үүсгэж тэнд очно уу.
mkdir DHT22_Sensor
cd DHT22_Sensor
Хөтөч дээрээ Adafruit GitHub руу очно уу.
github.com/adafruit/Adafruit_Python_DHT
Баруун талын татаж авах zip линк дээр дарж номын санг татаж аваад саяхан үүсгэсэн Raspberry Pi архивыг задлаарай. Дараа нь номын сангийн лавлах руу очно уу (файлыг задлахад автоматаар үүсгэгддэг дэд хавтас), дараах тушаалыг ажиллуулна уу.
sudo python3 setup.py суулгах
Миний GITHUB -ээс туршилтын програм (DHT22_test.py) нээнэ үү
Adafruit_DHT импортлох
DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 чийгшил, температур = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin) хэрэв чийгшил байхгүй бол температур байхгүй бол: хэвлэх ('Temp = {0: 0.1f}*C чийгшил = {1: 0.1 f}%'. формат (температур, чийгшил)) өөр: хэвлэх (' Уншиж чадсангүй. Дахин оролдоно уу! ')
Програмыг дараах тушаалаар ажиллуулна уу.
python3 DHT22_test.py
Доорх терминалын хэвлэх дэлгэц нь үр дүнг харуулна.
Алхам 3: DS18B20 суурилуулах - Температур мэдрэгч
Мэдрэгчийн тойм:
Бид энэ хичээлд DS18B20 мэдрэгчийн ус үл нэвтрэх хувилбарыг ашиглах болно. Энэ нь нойтон нөхцөлд алсын температурт, жишээлбэл чийглэг хөрсөнд маш хэрэгтэй байдаг. Мэдрэгч нь тусгаарлагдсан бөгөөд 125 хэм хүртэл хэмжилт хийх боломжтой (Adafrut нь PVC кабельтай кабелийн улмаас 100 хэмээс дээш температурт ашиглахыг зөвлөдөггүй).
DS18B20 бол дижитал мэдрэгч бөгөөд хол зайд ч ашиглахад тохиромжтой болгодог! Эдгээр 1 утастай дижитал температур мэдрэгч нь нэлээд нарийвчлалтай (ихэнх мужид ± 0.5 ° C) бөгөөд дижитал-аналог хөрвүүлэгчээс 12 бит хүртэлх нарийвчлалыг өгдөг. Тэд нэг дижитал зүү ашиглан NodeMCU-тэй маш сайн ажилладаг бөгөөд та хэд хэдэн зүүг нэг зүү рүү холбож чаддаг, тус бүр нь ялгахын тулд үйлдвэрт 64 битийн өвөрмөц ID шатаасан байдаг.
Мэдрэгч нь 3.0 -аас 5.0 В хүртэл ажилладаг бөгөөд энэ нь Raspberry тээглүүр (1 эсвэл 17) -ээр тэжээгддэг 3.3 В -оос шууд тэжээх боломжтой гэсэн үг юм.
Мэдрэгч нь 3 утастай:
- Хар: GND
- Улаан: VCC
- Шар: 1 утастай өгөгдөл
Эндээс та бүрэн мэдээллийг олж авах боломжтой: DS18B20 мэдээллийн хуудас
Мэдрэгчийн суурилуулалт:
Дээрх диаграмыг дагаж холболтыг хий.
- Vcc ==> 3.3V
- Gnd ==> Gnd
- Өгөгдөл ==> GPIO 4 (номын сангийн хувьд анхдагч)
Python номын санг суулгах:
Дараа нь мэдрэгчтэй ажиллах Python номын санг суулгацгаая.
sudo pip3 w1thermsensor суулгана уу
Мэдрэгчийг шалгах скриптийг ажиллуулахаасаа өмнө RPi-д "1-утастай" интерфэйс идэвхжсэн эсэхийг шалгана уу (хэвлэх дэлгэцийн дээд хэсгийг үзнэ үү)
Тохиргоог өөрчилсний дараа RPi -г дахин эхлүүлэхээ бүү мартаарай
Мэдрэгчийн туршилт:
Мэдрэгчийг туршихын тулд энгийн питон скриптийг ашиглаж болно.
импортлох хугацаа
w1thermsensor импортоос W1ThermSensor ds18b20Sensor = W1ThermSensor () байхад True: temperature = ds18b20Sensor.get_temperature () хэвлэх ("Температур нь % s цельсийн" % температур) цаг. унтдаг (1)
Алхам 4: BMP180 -ийг суулгах
Мэдрэгчийн тойм:
BMP180 нь хэрэглэгчийн хэрэглээнд зориулагдсан шинэ үеийн өндөр нарийвчлалтай дижитал даралт мэдрэгч болох BMP085 -ийн залгамжлагч юм. BMP180-ийн хэт бага хүчдэлтэй, бага хүчдэлийн электрон төхөөрөмж нь гар утас, PDA, GPS навигацийн төхөөрөмж, гадаа тоног төхөөрөмжид ашиглахад тохиромжтой. Бага хөрвүүлэлтийн үед ердөө 0.25м өндөрт бага дуу чимээ гаргадаг тул BMP180 нь илүү сайн гүйцэтгэлийг санал болгодог. I2C интерфэйс нь микроконтроллер ашиглан системийг хялбархан нэгтгэх боломжийг олгодог. BMP180 нь EMC-ийн бат бөх байдал, өндөр нарийвчлал, шугаман байдал, урт хугацааны тогтвортой байдлыг хангах пьезо эсэргүүцэх технологид суурилсан болно.
BMP мэдээллийн хүснэгтийг эндээс авах боломжтой: BMP180 - Дижитал даралт мэдрэгч
Мэдрэгчийн суурилуулалт: Дээрх диаграмыг дагаж холболтыг хийнэ үү.
- Vin ==> 3.3V
- GND ==> GND
- SCL ==> GPIO 3
- SDA ==> GPIO 2
I2C интерфэйсийг идэвхжүүлж байна
RPi тохиргоо руу очоод I2C интерфэйс идэвхжсэн эсэхийг баталгаажуулна уу. Үгүй бол үүнийг идэвхжүүлээд RPi -г дахин эхлүүлнэ үү.
BMP180 ашиглаж байна
Хэрэв бүх зүйл зүгээр суулгагдсан бөгөөд бүх зүйл хэвийн холбогдсон бол та одоо Pi -ээ асаагаад BMP180 -ийн эргэн тойрныхоо ертөнцийн талаар юу хэлж байгааг харж эхлэхэд бэлэн боллоо.
Хамгийн эхний хийх зүйл бол Pi таны BMP180 -ийг харж байгаа эсэхийг шалгах явдал юм. Терминал цонхонд дараахь зүйлийг туршиж үзээрэй.
sudo i2cdetect -y 1
Хэрэв тушаал ажилласан бол BMP180 нь '77' суваг дээр байгааг харуулсан дээрх Terminal Printscreen -тэй төстэй зүйлийг харах ёстой.
BMP180 номын санг суулгах:
Номын санг суулгахын тулд лавлах үүсгэ.
mkdir BMP180_Sensorcd BMP180_Sensor
Хөтөч дээрээ Adafruit GITHub руу очно уу:
github.com/adafruit/Adafruit_Python_BMP
Баруун талын татаж авах zip линк дээр дарж номын сангаа татаж аваад Raspberry Pi -ийн үүсгэсэн хавтсан дээрх архивыг задлаарай. Дараа нь үүсгэсэн дэд хавтас руу очоод номын сангийн лавлах санд дараах тушаалыг ажиллуулна уу.
sudo python3 setup.py суулгах
Python IDE -ээ нээж, туршилтын програм үүсгээд үүнийг нэрлэнэ үү, жишээ нь BMP180Test.py
Adafruit_BMP. BMP085 -ийг BMP085sensor = BMP085. BMP085 () хэвлэх ('Temp = {0: 0.2f} *C'.format (sensor.read_temperature ())) хэвлэх (' Даралт = {0: 0.2f} Па ') болгон импортлох. формат (sensor.read_pressure ())) хэвлэх ('Өндөр = {0: 0.2f} м'. формат (sensor.read_altitude ())) хэвлэх. унших_зэргийн_зураг ()))
Туршилтын програмыг ажиллуулна уу:
python3 BMP180Test.py
Дээрх Терминал хэвлэх дэлгэц нь үр дүнг харуулна.
Даралтыг Па (Паскаль) хэл дээр харуулсныг анхаарна уу. Энэ нэгжийн талаар илүү сайн ойлгохын тулд дараагийн алхамыг үзнэ үү.
Алхам 5: Цаг агаар, өндрийг BMP180 ашиглан хэмжих
BMP -ийн уншилтаар юу олж авах талаар бага зэрэг ойлгохын тулд цаг гаргацгаая. Та энэ хичээлийн хэсгийг алгасах эсвэл дараа нь буцаж очих боломжтой.
Хэрэв та Sensor уншилтын талаар илүү ихийг мэдэхийг хүсвэл энэхүү гайхалтай хичээл рүү орно уу:
BMP180 нь атмосферийн даралтыг нарийн хэмжих зориулалттай. Агаар мандлын даралт нь цаг агаар, өндрөөс хамаарч өөр өөр байдаг.
Агаар мандлын даралт гэж юу вэ?
Агаар мандлын даралтын тодорхойлолт бол таны эргэн тойрон дахь агаар бүх зүйлд нөлөөлж буй хүч юм. Агаар мандалд агуулагдах хийн жин нь атмосферийн даралтыг бий болгодог. Даралтын нийтлэг нэгж бол "квадрат инч тутамд фунт" эсвэл psi юм. Бид энд паскаль (Па) гэж нэрлэгддэг олон улсын тэмдэглэгээ, нэг квадрат метр тутамд нейтоныг ашиглах болно.
Хэрэв та 1 см өргөн агаарын багана авбал ойролцоогоор 1 кг жинтэй болно
Энэ жин нь тухайн баганын мөрийг дарахад бид BMP180 гэх мэт мэдрэгчээр хэмжих боломжтой атмосферийн даралтыг бий болгодог. Энэхүү см -ийн өргөнтэй агаарын багана нь ойролцоогоор 1 кг жинтэй тул далайн түвшний дундаж даралт ойролцоогоор 101325 паскал буюу түүнээс дээш 1013.25 гПа (1 гПа -г милибар -мбар гэж нэрлэдэг) байна. Энэ нь таны өгсөх 300 метр тутамд 4% орчим буурах болно. Илүү өндөр байх тусам даралт буурах болно, учир нь агаар мандлын дээд хэсэгт байрлах багана нь маш богино тул жин багатай байдаг. Даралтыг хэмжиж, математик хийснээр та өндрөө тодорхойлох боломжтой тул үүнийг мэдэх нь ашигтай юм.
3,810 метрийн агаарын даралт нь далайн түвшний зөвхөн тал хувь нь юм.
BMP180 нь паскаль дахь үнэмлэхүй даралтыг гаргадаг (Па). Нэг паскал бол маш бага даралт бөгөөд ойролцоогоор нэг цаас ширээн дээр тавигдах хэмжээ юм. Та гектопаскаль (1 гПа = 100 Па) хэмжилтийг илүү олон удаа харах болно. Энд ашигласан номын сан нь hPa-д хөвөгч цэгийн утгыг гаргадаг бөгөөд энэ нь нэг миллибар (mbar) -тай тэнцдэг.
Бусад даралтын нэгж рүү хөрвүүлэх зарим зүйлийг энд оруулав.
- 1 гПа = 100 Па = 1 мбар = 0.001 бар
- 1 hPa = 0.75006168 Torr
- 1 hPa = 0.01450377 psi (квадрат инч тутамд фунт)
- 1 hPa = 0.02953337 inHg (мөнгөн усны инч)
- 1 hpa = 0.00098692 atm (стандарт уур амьсгал)
Температурын нөлөө
Температур нь хийн нягт, нягт нь хийн массад, масс нь даралтад нөлөөлдөг (атгах), атмосферийн даралт температурын нөлөөн дор эрс өөрчлөгддөг. Нисгэгчид үүнийг "нягтралын өндөр" гэж мэддэг бөгөөд энэ нь агаар илүү нягт, илүү аэродинамик нөлөөтэй тул хүйтэн өдөр хөөрөх нь халуун өдрөөс илүү хялбар болгодог. Температурыг нөхөхийн тулд BMP180 нь маш сайн температур мэдрэгч, даралтын мэдрэгчийг агуулдаг.
Даралтын уншилт хийхийн тулд та эхлээд температурын заалтыг аваад дараа нь түүхий даралтын заалттай хослуулан даралтын эцсийн хэмжилтийг гаргаж авна. (Номын сан нь энэ бүхнийг маш хялбар болгодог.)
Үнэмлэхүй даралтыг хэмжих
Хэрэв таны аппликешнд үнэмлэхүй даралтыг хэмжих шаардлагатай бол температурын заалтыг аваад даралтын заалтыг уншихад л хангалттай (дэлгэрэнгүй мэдээллийг ноорогоос үзнэ үү). Даралтын эцсийн үзүүлэлт hPa = mbar байх болно. Хэрэв та хүсвэл дээрх хөрвүүлэх хүчин зүйлүүдийг ашиглан үүнийг өөр нэгж болгон хөрвүүлж болно.
Агаар мандлын үнэмлэхүй даралт нь таны өндөр болон цаг агаарын өнөөгийн байдлаас хамаарч өөр өөр байх болно гэдгийг анхаарна уу.
Цаг агаарын ажиглалт
Дэлхийн аль ч байршилд (эсвэл агаар мандалтай хаана ч байсан) атмосферийн даралт тогтмол биш байдаг. Дэлхий эргэх, тэнхлэгийн хазайлт болон бусад олон хүчин зүйлийн хоорондох нарийн төвөгтэй харилцан үйлчлэл нь өндөр ба доод даралтын хэсгүүдийг хөдөлгөж, улмаар бидний өдөр тутам хардаг цаг агаарын өөрчлөлтийг үүсгэдэг. Даралтын өөрчлөлтийг ажигласнаар цаг агаарын богино хугацааны өөрчлөлтийг урьдчилан таамаглах боломжтой. Жишээлбэл, даралт буурах нь ихэвчлэн нойтон цаг агаар эсвэл шуурга ойртож байна гэсэн үг юм (нам даралтын систем орж ирж байна). Даралт ихсэх нь ихэвчлэн цаг агаар ойртож байна гэсэн үг юм (өндөр даралтын систем дамжиж байна). Гэхдээ атмосферийн даралт нь өндрөөс хамаарч өөр өөр байдаг гэдгийг санаарай. Чилийн Ло Барнечеа (950м өндөр) байшингийн маань үнэмлэхүй даралт нь Сан Францискогийн үнэмлэхүй даралтаас үргэлж доогуур байх болно (2 метрээс бага, бараг далайн түвшин). Хэрэв цаг агаарын станц үнэмлэхүй даралтаа дөнгөж мэдээлж байсан бол даралтын хэмжилтийг нэг газраас нөгөө рүү шууд харьцуулах нь хэцүү байх болно (мөн цаг агаарын томоохон хэмжээний урьдчилсан мэдээ нь аль болох олон станцын хэмжилтээс хамаарна).
Энэ асуудлыг шийдэхийн тулд цаг уурын станцууд мэдээлсэн даралтын уншилтаас өндрийн нөлөөг арилгахын тулд эквивалент тогтмол даралтыг математик байдлаар нэмж далайн түвшнээс авсан мэт харагдуулдаг. Хэрэв та үүнийг хийвэл Сан Францискод Ло Барнечейгаас илүү өндөр уншилт үргэлж өндрөөр биш цаг агаарын байдлаас шалтгаална.
Үүнийг хийхийн тулд номын санд далайн түвшин (P, A) гэж нэрлэгддэг функц байдаг. Энэ нь hPa дахь үнэмлэхүй даралтыг (P), станцын одоогийн өндрийг (A) метрээр авч, өндрийн нөлөөллийг даралтаас арилгадаг. Та энэ функцын гаралтыг ашиглан дэлхийн бусад станцуудтай цаг агаарын үзүүлэлтээ шууд харьцуулж болно.
Өндрийг тодорхойлох
Даралт нь өндрөөс хамаарч өөр өөр байдаг тул та даралтын мэдрэгч ашиглан өндрийг хэмжиж болно (цөөн хэдэн анхааруулгатай). Далайн түвшний агаар мандлын дундаж даралт 1013.25 гПа (эсвэл мбар) байна. Орон зайн вакуум руу авирах үед энэ нь тэг болж буурдаг. Энэхүү уналтын муруйг сайн ойлгодог тул та даралтын хоёр хэмжилтийн (p ба p0) өндрийн ялгааг тодорхой тэгшитгэл ашиглан тооцоолж болно.
Хэрэв та далайн түвшний даралтыг (1013.25 hPa) суурь даралт (p0) болгон ашиглавал тэгшитгэлийн гаралт нь далайн түвшнээс дээш таны одоогийн өндөр болно. Номын санд өндөр (P, P0) гэж нэрлэгддэг "тооцоолсон өндрийг" авах боломжийг олгодог функц байдаг.
Дээрх тайлбарыг BMP 180 Sparkfun хичээлээс авсан болно.
Алхам 6: Иж бүрэн ЭХ
Алхам 7: ThingSpeak руу өгөгдөл илгээх
Энэ үед бид бүх 3 мэдрэгчийн өгөгдлийг авахын тулд RPi -ийг хэрхэн яаж терминал дээр хэвлэх талаар сурсан. Одоо эдгээр өгөгдлийг IoT платформ болох ThingSpeak руу хэрхэн илгээхийг харах цаг болжээ.
Эхлээд үзье!
Нэгдүгээрт, та ThinkSpeak.com дээр данстай байх ёстой
Суваг үүсгэх зааврыг дагаж сувгийнхаа ID болон API түлхүүрийг бичээрэй
Python скриптийг миний GitHub дээрээс татаж аваарай: localData ToTS_v1_EXT.py
Кодыг хамгийн чухал хэсгүүдэд тайлбарлая.
Нэгдүгээрт, ThingSpeak номын санг импортолж, WiFi үйлчлүүлэгчийг тодорхойлж, өөрийн чиглүүлэгч болон Thinkspeak -ийн итгэмжлэлийг тодорхойлъё.
юм ярих
ThingSpeak -тэй харилцах хэд хэдэн арга байдаг бөгөөд хамгийн энгийн арга бол үйлчлүүлэгчдийн номын санг ашиглах явдал юм.
Номын санг https://github.com/mchwalisz/thingspeak хаягаас татаж авах эсвэл терминал дээр PIP ашиглаж болно.
sudo pip3 -т зүйлүүдийг суулгаарай
Дараа нь скрипт дотор ThingSpeak сувгийн итгэмжлэлийг шинэчилнэ үү
chId = 9999999 # Сувгийнхаа ID -р оруулна уу
tsKey = 'СУВААРАА НЭВТРҮҮЛЭХ ТҮЛХҮҮР БИЧИХ' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)
Одоо 3 мэдрэгчийг эхлүүлье.
# DS18B20 1 утастай номын сан
w1thermsensor import -аас W1ThermSensor ds18b20Sensor = W1ThermSensor () # Анхдагч байдлаар GPIO 4 -ийг номын санд ашигладаг # DHT22 Номын сангийн импорт Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # BMP180 номын сан Adafruit_BM5P0P5 Та "altReal" дэлхийн хувьсагчийг шинэчилж, цаг уурын станцынхаа жинхэнэ өндрийг тодорхойлох ёстой. Миний хувьд миний станц далайн түвшнээс 950м өндөрт байрладаг
дэлхийн altReal
altReal = 950
Станцын бодит өндрийг оролт болгон оруулсны дараа бид bmp180GetData (өндөр) функцийг ашиглан үнэмлэхүй даралт, далайн түвшний даралт, температур, өндрийг авах боломжтой болно.
def bmp180GetData (өндөр):
temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres/pow (1.0 - өндөр/44330.0, 5.255) temp = round (temp, 1) pres = round (pres/100), 2) # үнэмлэхүй даралт hPa (эсвэл mbar) alt=дугуй (alt) presSeaLevel = дугуй (presSeaLevel/100, 2)
GetLocalData () функц нь манай станцын авсан бүх локал өгөгдлийг буцаана.
def getLocalData ():
global timeString global humLab global tempExt global tempLab global presSL global altLab global presAbs # Одоо унших цаг = datetime.datetime.now () timeString = now.strftime ("%Y-%m-%d%H:%M") # Гадна температурыг унших (1 метрийн зай) tempExt = дугуй (ds18b20Sensor.get_temperature (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry (DHTPSensor, DHT22Sensor) болон tempDHT нь аль нь ч биш: humLab = дугуй (humDHT
Дээрх функцуудаар бүх өгөгдлийг олж авсны дараа та тэдгээрийг ThingSpeak руу илгээх ёстой. Та үүнийг sendDataTs () функцийг ашиглан хийх болно.
def sendDataTs ():
data = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.update (data) print ("[INFO] 5 талбарт илгээсэн өгөгдөл: ", tempLab, tempExt, humLab, presSL, altLab)
Сувгийнхаа өгөгдлийг шинэчилснээр скриптийг хадгалаад терминал дээрээ ажиллуулна уу.
sudo Python3 localData_ToTs_v1_EXT.py
Харилцааны протоколуудын тухай
"Thingspeak номын сан" -г ашиглан "хүсэлтийн номын сан" -ыг импортлодог бөгөөд энэ нь Python дээр бичигдсэн Apache2 лицензтэй HTTP номын сан юм. Суулгах хүсэлт гаргах албан ёсны баримт бичгийг эндээс олж болно.
docs.python-requests.org/en/latest/user/install/
Шаардлагатай бол скриптийг ажиллуулахаас өмнө хүсэлтийн номын сан суулгасан эсэхийг шалгаж болно.
sudo pip3 суулгах хүсэлт
Та MTTQ -ийг ThingSpeak руу өгөгдөл илгээх арга болгон ашиглаж болно. MQTT нь HTTP -ээс ялгаатай бөгөөд энэ нь хөнгөн жинтэй бөгөөд RAM болон CPU -ийн гүйцэтгэл багатай суулгагдсан төхөөрөмжүүдэд зориулагдсан болно. Түүнчлэн, ихэнх тохиолдолд MQTT нь бага зурвасын өргөнийг ашигладаг.
Энэ гарын авлагаас үзнэ үү: Raspberry Pi дээрх MQTT ашиглан ThingSpeak сувгийг шинэчлээрэй.
Алхам 8: ESP8266 ашиглан ThingSpeak руу алсын өгөгдлийг илгээх
Энэ алхамд бид muy зааварт тайлбарласан ижил HW -ийг ашиглах болно.
IOT MADE AASY: АЛсын зайнаас цаг агаарын өгөгдлийг авах: хэт ягаан туяа, агаарын температур, чийгшил
Энд ашиглах код нь үндсэндээ энэ зааварт ашиглагддаг код юм. Кодыг хамгийн чухал хэсгүүдэд тайлбарлая.
Нэгдүгээрт, ESP8266 номын сан руу залгаж, WiFi клиентийг тодорхойлж, өөрийн чиглүүлэгч болон Thinkspeak итгэмжлэлийг тодорхойлъё.
/ * NodeMCU ESP12-E */
#WiFiClient үйлчлүүлэгчийг оруулах; const char* MY_SSID = "SSDID -ТЭЭ ОРУУЛАХ"; const char* MY_PWD = "Нууц үгээ оруулна уу"; /* Thinkspeak*/ const char* TS_SERVER = "api.thingspeak.com"; String TS_API_KEY = "БИЧИХ ТҮЛХҮҮРЭЭ ОРУУЛАХ";
Хоёрдугаарт, IoT төслүүдийн хувьд маш чухал номын санг оруулъя: SimpleTimer.h:
/ * TIMER */
#SimpleTimer таймер оруулах;
Гуравдугаарт, setup () хийх явцад бид цуваа холболтыг эхлүүлж, connectWiFi () функцийг дуудаж, таймеруудыг тодорхойлно. Кодын мөр: timer.setInterval (60000L, sendDataTS); ThinkSpeak суваг руу мэдээлэл оруулахын тулд 60 секунд тутамд sendDataTS () функцийг дуудах болно.
хүчингүй тохиргоо ()
{… Serial.begin (115200); саатал (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}
Эцэст нь хэлэхэд, () давталтын үед таймерыг эхлүүлэх цорын ганц тушаал л шаардлагатай болно.
хоосон давталт ()
{… Timer.run (); // SimpleTimer -ийг эхлүүлнэ}
Доороос та Thinkspeak холбоог зохицуулахад ашигладаг хоёр чухал үүргийг харж болно.
Таны WiFi сүлжээнд ESP12-E холболт:
/***************************************************
*WiFi холболт ********************************************* ***/ void connectWifi () {Serial.print ("Холбогдож байна"+*MY_SSID); WiFi.begin (MY_SSID, MY_PWD); while (WiFi.status ()! = WL_CONNECTED) {саатал (1000); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi холбогдсон"); Serial.println (""); }
ESP12-E нь ThinkSpeak руу өгөгдөл илгээх:
***************************************************
*Thinkspeak суваг руу мэдээлэл илгээх **************************************** ******/ void sendDataTS (void) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr += "& field6 ="; postStr += String (temp); postStr += "& field7 ="; postStr += String (хум); postStr += "& field8 ="; postStr += String (dataSensorUV); postStr += "\ r / n / r / n"; client.print ("POST /update HTTP /1.1 / n"); client.print ("Хост: api.thingspeak.com / n"); client.print ("Холболт: хаах / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("Агуулгын төрөл: application/x-www-form-urlencoded / n"); client.print ("Агуулга-Урт:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); саатал (1000); } илгээсэн ++; client.stop (); }
Бүрэн кодыг миний GitHub дээрээс олж болно: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT
Та кодоо NodeMCU -д байршуулсны дараа. Гадны батерейг холбоод нарны доор хэмжилт хийцгээе. Би алсын станцыг дээвэр дээр тавиад дээрх зургуудад үзүүлсэн шиг ThingSpeak.com дээр мэдээлэл авч эхлэв.
Алхам 9: Эцсийн тэмдэглэл
Энэхүү гарын авлагын гол зорилго нь Raspberry Pi -ийг ThingSpeak -т хэрхэн холбохыг харуулах явдал байв. Энэ нь өгөгдлийг цуглуулж, IoT платформ дээр бүртгэх нь гайхалтай юм.
Энэ боломжийг ашиглан бид тухайн суваг руу мэдээлэл илгээж, ESP8266 ашиглан алсын станцаас барьж авав. Энэ бол зөв арга боловч хамгийн сайн арга биш. Бид "асинхрон" ажиллагаатай байдаг тул заримдаа RPi болон ESP8266 хоёулаа ThingSpeak -ээс няцаагдсан зүйлийг нэгэн зэрэг (эсвэл бага интервалаар) оруулахыг оролддог. Хамгийн тохиромжтой нь ESP8266 өгөгдлийг Raspberry Pi руу орон нутаг руу илгээх бөгөөд хамгийн сүүлийнх нь бүх өгөгдлийг зохицуулах үүрэгтэй байх болно. Үүнийг хийснээр "Үндсэн станц" (Raspberry Pi) 3 зүйлийг хийж чадна:
- Бүх өгөгдлийг орон нутгийн мэдээллийн санд бүртгэх
- Орон нутгийн вэб хуудсан дээрх бүх өгөгдлийг танилцуулах (дээрх зураг дээр үзүүлсэн шиг колбыг ашиглана уу)
- Бүх өгөгдлийг ThingSpeak руу нэгэн зэрэг илгээх.
Ирээдүйн заавар дээр бид эдгээр сонголтуудыг судлах болно.
Алхам 10: Дүгнэлт
Урьдын адил энэ төсөл нь бусад хүмүүст электроникийн ертөнцөд аялахад нь тусална гэж найдаж байна!
Дэлгэрэнгүй мэдээлэл, эцсийн кодыг авахын тулд миний GitHub хадгаламж руу зочилно уу: RPi-NodeMCU-Weather-Station
Бусад төслүүдийн талаар MJRoBot.org миний блогоос үзнэ үү
Хүлээж байгаарай! Дараагийн заавар нь бид Raspberry Pi вэб сервер дээр суурилсан алсын цаг уурын станцаас өгөгдлийг төв рүү дамжуулах болно.
Дэлхийн өмнөд хэсгээс мэндчилгээ дэвшүүлье!
Дараагийн зааварчилгаагаараа уулзацгаая!
Баярлалаа, Марсело
Зөвлөмж болгож буй:
Magicbit бүхий WIFI цаг уурын станц (Arduino): 6 алхам
Magicbit -тэй WIFI цаг уурын станц (Arduino): Энэхүү заавар нь ухаалаг гар утаснаасаа дэлгэрэнгүй мэдээллийг авах боломжтой Arduino ашиглан Magicbit -аас цаг агаарын станц барих аргыг харуулсан болно
NaTaLia цаг уурын станц: Arduino нарны эрчим хүчээр ажилладаг цаг уурын станц зөв замаар хийсэн: 8 алхам (зурагтай)
NaTaLia цаг уурын станц: Arduino нарны эрчим хүчээр ажилладаг цаг уурын станц зөв замаар хийсэн: 1 жилийн турш 2 өөр байршилд амжилттай ажилласны дараа би нарны эрчим хүчээр ажилладаг цаг уурын станцын төслийн төлөвлөгөөгөө хуваалцаж, хэрхэн урт хугацаанд үнэхээр оршин тогтнож чадах систем болж хөгжсөн тухай тайлбарлаж байна. нарны эрчим хүчнээс үүссэн үе. Хэрэв та дагах бол
DIY цаг уурын станц ба WiFi мэдрэгч станц: 7 алхам (зурагтай)
DIY цаг уурын станц ба WiFi мэдрэгч станц: Энэхүү төсөлд би WiFi мэдрэгч станцын хамт цаг агаарын станцыг хэрхэн яаж хийхийг танд үзүүлэх болно. Мэдрэгч станц нь орон нутгийн температур, чийгшлийн өгөгдлийг хэмжиж, WiFi -ээр цаг уурын станц руу илгээдэг. Цаг уурын станц дараа нь
Atmega328P-PU микроконтроллер бүхий цаг уурын станц: 5 алхам
Atmega328P-PU микроконтроллертой цаг уурын станц: Саяхан би edx-тэй онлайн үнэгүй сургалтанд хамрагдсан (2012 онд Харвардын их сургууль, MIT-ээс үүсгэн байгуулагдсан, edX бол дэлхийн шилдэг их дээд сургууль, байгууллагуудын өндөр чанартай сургалтуудыг санал болгодог онлайн сургалтын чиглэл, MOOC үйлчилгээ үзүүлэгч юм. сурагчдад зориулан
RPi цаг уурын станц ба дижитал цаг: 4 алхам (зурагтай)
RPi цаг уурын станц ба дижитал цаг: Энэ бол хурдан бөгөөд хялбар төсөл бөгөөд үзүүлэх сайхан дэлгэц юм. Энэ нь цаг хугацаа, цаг агаарын нөхцөл байдал, температурыг хоёуланг нь харуулдаг. Хэрэв танд харсан зүйл тань таалагдаж байвал миний хийсэн зүйлийг дагаж мөрдөхийн тулд намайг Instagram, Twitter (@Anders644PI) дээр дагаарай