
ttgo paxcounter พร้อมเซ็นเซอร์ฝุ่นละเอียดและ BME280
wird aktuell überarbeitet für v.3 Stack CEwird aktuell überarbeitet für v.3 Stack CEฮาร์ดแวร์:
ส่วนประกอบเสริมขึ้นอยู่กับสถานที่และคำขอที่อยู่อาศัย:
การชุมนุม / การเดินสาย
แถบปากกาจะบัดกรีบนบอร์ด PaxCounter และในเซ็นเซอร์ BME ขึ้นอยู่กับตำแหน่งการติดตั้งหรือตำแหน่งการติดตั้งแถบปากกาที่ด้านบนหรือด้านล่างของบอร์ดพร้อมใช้งาน เสาอากาศสกรูติดตั้ง - ที่นี่คุณสามารถติดตั้งสายเคเบิลที่ยาวนานขึ้นอยู่กับโครงสร้างเซ็นเซอร์ จากนั้นเซ็นเซอร์ทั้งสองจะเชื่อมต่อกับ paxcounter ดังนี้:
เซ็นเซอร์สิ่งแวดล้อมมีสายดังนี้:
VCC (VDC 3,3 Volt) wird mit Pin 3.3V angeschlossen ORANGE
GND (Ground) wird mit dem GND am Paxcounter verbunden GELB
SCL (i2c Bus) --> Pin 22 am Paxcounter (mit SCL oder 22 beschriftet) GRÜN
SDA (i2c Bus) --> Pin 21 am Paxcounter (mit SDA oder 21 beschriftet) BLAU
frei
frei
เซ็นเซอร์ฝุ่นละเอียดมีสายดังนี้:
TXD (Daten senden) wird mit Pin 23 am Paxcounter verbunden WEISS
RXD (Daten empfangen) wird mit Pin LoRa2 am Paxcounter verbunden SCHWARZ
GND (Ground) wird mit einem weiteren Pin GND am Paxcounter angeschlossen BRAUN
frei
VCC (VDC 5 Volt) kommt an den 5 Volt Pin (beschriftet mit 5V) ROT
frei
frei
โปรดดูรูปภาพในโฟลเดอร์ /IMG เพื่อให้คุณสามารถเห็นการเดินสายอีกครั้งได้อย่างชัดเจน! ฉันได้แสดงรายการสายเคเบิลที่ใช้ในตัวอย่างสำหรับคุณในแผนสายไฟ! สำหรับสายเคเบิลเชื่อมต่อ> ที่เสถียรบนแถบปากกาเราขอแนะนำให้ปลั๊กเพียงแค่แก้ไขปลั๊กด้วยกาวร้อนเล็กน้อย ดังนั้นในขณะที่คุณหลีกเลี่ยงการลื่นสายเคเบิลบางส่วนค่อนข้างหลวม ในโฟลเดอร์รูปภาพตอนนี้คุณสามารถเห็นชุดประกอบที่แนะนำที่ฉันได้บันทึกไว้สำหรับคุณ โดยทั่วไปเราติดตามโครงการจาก Stuttgart แต่มีการแก้ไขเล็กน้อย
THETHINGSNETWORK --- wird aktuell überarbeitet für v.3 Stack CE ในขั้นตอนต่อไปเราเตรียมบัญชีของเราที่ thethingsnetwork.org-first (เว้นแต่จะมีอยู่แล้ว) บัญชีถูกสร้างขึ้น แอปพลิเคชันใหม่จะถูกสร้างขึ้น นอกเหนือจากชื่อที่ชัดเจนแล้วมีเพียงตัวจัดการ TTN เท่านั้นที่จะถูกป้อนที่นี่เป็น "TTN-Handler-EU"
ภายในแอปพลิเคชันนี้เราสร้างอุปกรณ์ของเรา - เกือบจะเป็นเซ็นเซอร์ฝุ่น TTN ละเอียดของเรา ในการทำเช่นนี้เราคลิกที่ "อุปกรณ์ลงทะเบียน" ในหน้าต่างถัดไปเราได้รับรางวัลชื่อสั้น ๆ ที่ไม่ซ้ำกันเช่น "Fine Dust Sensor-01"-เราสามารถสร้าง deviceUi โดยอัตโนมัติ ในการทำเช่นนี้เราคลิกที่ลูกศรคู่ที่ด้านหน้าของฟิลด์ที่เกี่ยวข้อง ไม่จำเป็นต้องใช้มากขึ้น ณ จุดนี้คุณสามารถจัดเก็บตำแหน่งและข้อมูลที่คล้ายกันกับอุปกรณ์หากคุณต้องการ เราออกจากหน้าต่างเบราว์เซอร์ด้วย "ภาพรวมอุปกรณ์" มันจะต้องใช้ในภายหลัง!
ซอฟต์แวร์
สำหรับการเขียนโปรแกรมเราใช้รหัส Microsoft Visual Studio กับการขยาย Platformio ID ขั้นแรกให้ติดตั้งรหัส Visual Studio จากนั้นป้อนและติดตั้งภายใต้ "ไฟล์" และ "การตั้งค่า", "ส่วนขยาย" ในฟิลด์การค้นหา Platformio IDE หลังจากรีสตาร์ทซอฟต์แวร์สภาพแวดล้อมการเขียนโปรแกรมของเราก็พร้อม
หมายเหตุ: คำแนะนำมากมายใน www อธิบายการติดตั้งและการตั้งค่ารหัส VS อย่างละเอียดมาก
ที่เก็บ GitHub
เราใช้ Cybmerman54 จาก GitHub เป็นซอฟต์แวร์พื้นฐานมาระยะหนึ่งแล้ว https://github.com/cyberman54/esp32-paxcounter/releases
หมายเหตุสำคัญ: เนื่องจาก repo นี้ได้รับการแก้ไขอย่างมากจากเวอร์ชัน 3.2 การเชื่อมต่อจากเซ็นเซอร์ฝุ่นละเอียดผ่านอินเตอร์เฟสอนุกรมตามที่อธิบายไว้ในคำแนะนำของเราดูเหมือนว่าจะไม่ทำงานอีกต่อไป ดังนั้นดาวน์โหลดเวอร์ชัน 3.1 เพื่อสร้างเซ็นเซอร์สิ่งแวดล้อมตามบอร์ด TTGO PaxCouner !!!
ที่เก็บจะถูกดาวน์โหลดและเปิดออกจากนั้นเปิดในรหัส VS
การเปลี่ยนแปลงและการปรับเปลี่ยน
(1) ในขั้นตอนแรกไฟล์ platformio_orig.ini จะถูกเปลี่ยนชื่อหรือคัดลอกจากไดเรกทอรีหลักแล้วเปลี่ยนชื่อ Platformi.ini จากนั้นบรรทัดที่ 10 จะถูกแทนที่ใน ;halfile = generic.h นี้ ;halfile = generic.h ในไฟล์นี้ด้วยบรรทัดที่ 19 จะถูกแทนที่ด้วย halfile = ttgov21new.h - เครื่องหมายอัฒภาคที่ถูกลบออกและเปิดใช้งาน (ดูรูปภาพ)
(2) ในโฟลเดอร์/src/hal/ไฟล์ "ttgov21new.h" ถูกปรับดังนี้รหัสต่อไปนี้จะถูกแทรกลงในบรรทัด 21:
// BME280 sensor on I2C bus
#define HAS_BME 1 // Enable BME sensors in general
#define HAS_BME280 GPIO_NUM_21, GPIO_NUM_22 // SDA, SCL
#define BME280_ADDR 0x76 // change to 0x77 depending on your wiring
// SDS011 dust sensor settings
#define HAS_SDS011 1 // use SDS011
// used pins on the ESP-side:
#define SDS_TX 12 // connect to RX on the SDS011
#define SDS_RX 35 // connect to TX on the SDS011
เพียงคัดลอกรหัสด้านบนและแทรกลงในรหัส VS ในไฟล์ ผลลัพธ์สามารถเห็นได้ในภาพ
(3) /src/ota_sample.conf: ไฟล์ถูกเปลี่ยนชื่อหรือคัดลอกเป็น "ota.conf" ในไฟล์เองเราไม่จำเป็นต้องทำการเปลี่ยนแปลงใด ๆ
(4) /src/loraconf_sample.h: เปลี่ยนชื่อหรือคัดลอกลงใน "loraconf.h" ในบรรทัดที่ 38, 40 และ 42 แทรก deveui, appeui และ appkey (เป็น msb) ในการทำเช่นนี้เรากลับไปที่หน้าต่างเบราว์เซอร์ด้วย "ภาพรวมอุปกรณ์" เพื่อให้ได้คีย์ในรูปแบบหมายเลขที่ถูกต้องสัญลักษณ์ <> ของบรรทัดที่เกี่ยวข้องจะถูกคลิกคีย์จะเปลี่ยนรูปแบบของมัน เราต้องการรูปแบบ MSB แต่ละแบบ
Expursus: เมื่อการเขียนโปรแกรมคุณได้สะดุดผ่านตัวย่อ "MSB" และ "LSB" คุณสามารถค้นหาว่าตัวย่อคืออะไรในเคล็ดลับที่ใช้งานได้จริงนี้ ค่าบิต: MSB & LSB เพียงแค่อธิบาย Bitterworthy คือการกำหนดความสำคัญของแต่ละบิต ตัวอย่างเช่นนี่เป็นสิ่งสำคัญสำหรับการส่งสัญญาณอนุกรม
- LSB ย่อมาจาก "บิตที่สำคัญน้อยที่สุด" หากลำดับบิตถูกกำหนดหมายเลขตามหมายเลข LSB-0-bit แล้วบิตที่มีดัชนี 0 เป็นสถานะต่ำสุด
- MSB ย่อมาจาก "บิตที่สำคัญที่สุด" ด้วยการกำหนดหมายเลข MSB-0-bit บิตที่มีดัชนี 0 มีความสำคัญสูงสุด หากมีหมายเลขไบนารีที่มีตำแหน่ง 0, 1, ... , N-1 บิตกับดัชนี 0 มีความสำคัญสูงสุดค่าของมันจะต้องคูณด้วย 2 (N-1)
ในตอนท้ายของบรรทัดที่เกี่ยวข้องกับคีย์คุณสามารถคัดลอกส่วนทั้งหมดลงในคลิปบอร์ดย้อนกลับในรหัส VS ทั้งสามปุ่มจะถูกคัดลอกในบรรทัดที่เกี่ยวข้องหนึ่งหลังจากที่อื่น ๆ - ปุ่มตัวอย่างที่ระบุจะถูกเขียนทับ ที่นี่ด้วยฉันก็สร้างภาพให้คุณแสดง
(5) ไฟล์ /.pio/libdepepsusb/sds011 เซ็นเซอร์ไลบรารี/SDS011.cpp กำลังดำเนินการอยู่แล้ว: กำลังดำเนินการอยู่:
รหัสนี้มาจาก Cyberman54/ESP32-PAXCOUNTER#597 (ความคิดเห็น) และอธิบาย "คำสั่งงาน"
ข้อความถูกแทรกลงในบรรทัด 35:
static const byte WORKCMD[19] = {
0xAA, // head
0xB4, // command id
0x06, // data byte 1
0x01, // data byte 2 (set mode)
0x01, // data byte 3 (work)
0x00, // data byte 4
0x00, // data byte 5
0x00, // data byte 6
0x00, // data byte 7
0x00, // data byte 8
0x00, // data byte 9
0x00, // data byte 10
0x00, // data byte 11
0x00, // data byte 12
0x00, // data byte 13
0xFF, // data byte 14 (device id byte 1)
0xFF, // data byte 15 (device id byte 2)
0x06, // checksum
0xAB // tail
};
นอกจากนี้เราต้องเปลี่ยนบรรทัด 113 ใน:
void SDS011::wakeup() {
// sds_data->write(0x01);
// sds_data->flush();
for (uint8_t i = 0; i < 19; i++) {
sds_data->write(WORKCMD[i]);
}
sds_data->flush();
while (sds_data->available() > 0) {
sds_data->read();
}
}
ตัวถอดรหัสและตัวแปลง --- wird aktuell überarbeitet für v.3 Stack CE เมื่อสิ้นสุดการเปลี่ยนแปลงซอฟต์แวร์เราจะยังคงได้รับเนื้อหาของไฟล์นี้จากต่อไปนี้ผ่านทาง Copy & Paste /src/packed_converter.js -> ตัวแปลงและกลับไปที่หน้าต่างเบราว์เซอร์ ในคุณสมบัติของแอปพลิเคชัน TTN เราไปที่แท็บ "รูปแบบการชำระเงิน" และเลือกตัวแปลงที่นั่นเพื่อแทรก หากมีข้อความอยู่ในหน้าต่างแล้วจะถูกลบอย่างสมบูรณ์แล้วข้อความจากไฟล์ OG จะถูกแทรกอยู่ที่นั่น
จากนั้นเราจะได้รับตัวถอดรหัสจากไฟล์ /src/tn/packed_decoder.js ในรหัส VS และคัดลอกเช่นเดียวกับในฟิลด์ "รูปแบบการชำระเงิน -> ตัวถอดรหัส" ยังคงมีการเปลี่ยนแปลงขนาดเล็ก
เพิ่มสิ่งต่อไปนี้ในบรรทัด 37 (รูปแบบการชำระเงิน -> ตัวถอดรหัส):
// combined wifi + ble + SDS011
if (bytes.length === 8) {
return decode(bytes, [uint16, uint16, uint16, uint16], ['wifi', 'ble', 'PM10', 'PM25']);
}
การทดสอบสั้น ๆ ในคอนโซลนำความปลอดภัยที่ตัวถอดรหัสใช้งานได้: แทรก 16x 0 ในฟิลด์สำหรับการชำระเงินใส่พอร์ตบน 1 และคลิก "ทดสอบ" จากนั้นคลิก "บันทึกฟังก์ชั่นการชำระเงิน"
รวบรวมและอัปโหลด
เป็นขั้นตอนสุดท้ายเฉพาะการรวบรวมโปรแกรมในรหัส VS เท่านั้นที่จำเป็นหลังจากนั้นโปรแกรมทั้งหมดจะถูกโหลดลงในตัวนับ PAX ผ่าน USB ดังนั้นเซ็นเซอร์จึงเชื่อมต่อผ่านสายเคเบิล Micro USB และเปิดใช้งานด้วยสวิตช์เลื่อน
ที่ด้านล่างของแถบสีน้ำเงินไม่จำเป็นและเนื้อหารหัสและไฟล์จะถูกทำความสะอาดโดยอัตโนมัติใน "สะอาด" (สัญลักษณ์คลิกถังขยะขยะ)
จากนั้นคลิกที่สัญลักษณ์ด้วยตะขอ "สร้าง" ในแถบสีน้ำเงินที่ด้านล่าง - อาจใช้เวลาสักครู่ แต่ควรปิดหลังจากไม่กี่นาทีล่าสุด
ในที่สุดรหัสโปรแกรมทั้งหมดจะถูกส่งไปยังเซ็นเซอร์ เพียงคลิกที่ลูกศรขวา "อัปโหลด"; โปรแกรมจะถูกถ่ายโอนและจากนั้นเซ็นเซอร์เริ่มต้นใหม่เมื่อการส่งผ่านเสร็จสมบูรณ์
หากคุณคลิกที่สัญลักษณ์เชื่อมต่อ "Serial Monitor" ในแถบสีน้ำเงินคุณสามารถสังเกตได้ในคอนโซลว่าเซ็นเซอร์ใช้งานอยู่และค่าที่วัดได้จะปรากฏขึ้นที่นั่น
สำหรับการทดสอบฟังก์ชั่นโดยตรงในคอนโซล TTN เกตเวย์ TTN เป็นสิ่งจำเป็นภายในการเข้าถึงมิฉะนั้นเซ็นเซอร์จะส่งข้อมูลไปยังพื้นที่โดยรอบ แต่ไม่มีที่ใดที่จะได้รับและประมวลผล
--- wird aktuell überarbeitet für v.3 Stack CE ในแบบขนานเพื่อเปิดแอปพลิเคชัน TTN ในเบราว์เซอร์เลือกอุปกรณ์และคลิกที่ฟิลด์ "ข้อมูล" ที่ด้านบนขวา หลังจากช่วงเวลาสั้น ๆ ข้อมูลควรแสดงที่นี่ซึ่งส่งไปยัง THETHINGNETWORK ผ่าน LORA FunkTechnik หมายเหตุเนื่องจากค่าฝุ่นละเอียดจะถูกส่งเป็น "การเลือกตั้งเต็มรูปแบบ" ค่าที่วัดได้ที่แสดงในคอนโซล TTN จะต้องแชร์ 10 !!! ขอแสดงความยินดีเซ็นเซอร์ฝุ่น Fine Lora ของคุณพร้อมแล้ว !!! ในอีกสองบทเราให้มุมมองเกี่ยวกับสิ่งที่สามารถทำได้กับข้อมูลที่ได้รับและวิธีการเผยแพร่บนการ์ด OpEdata
Outlook 1 - Node -Red, InfluxDB และ Grafana ข้อความดังต่อไปนี้ที่นี่
Outlook 2 - การ์ด OpEndata, ข้อมูลอากาศและ openSensemap ข้อความดังต่อไปนี้ที่นี่