สารบัญ:
- ขั้นตอนที่ 1: วัสดุและเครื่องมือ
- ขั้นตอนที่ 2: เตรียม ATTINY85
- ขั้นตอนที่ 3: ประกอบวงจร
- ขั้นตอนที่ 4: การทดสอบ
- ขั้นตอนที่ 5: ขั้นตอนต่อไป
วีดีโอ: IOT123 - I2C MQ2 อิฐ: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
อิฐ IOT123 เป็นหน่วยโมดูลาร์ DIY ที่สามารถผสมกับอิฐ IOT123 อื่นๆ เพื่อเพิ่มฟังก์ชันการทำงานให้กับโหนดหรืออุปกรณ์สวมใส่ได้ พวกเขาอยู่บนพื้นฐานของตารางนิ้วโปรโตบอร์ดสองด้านที่เชื่อมต่อกันผ่านรู
อิฐจำนวนหนึ่งคาดว่าจะอยู่บนหลายโหนด (Master MCU - ESP8266 หรือ ATTINY84) บนไซต์ MCU ไม่จำเป็นต้องมีความรู้เกี่ยวกับวัตถุประสงค์ของเซ็นเซอร์หรือซอฟต์แวร์มาก่อน มันสแกนหาโหนด I2C จากนั้นขอการถ่ายโอนข้อมูลคุณสมบัติ (ข้อมูลเซ็นเซอร์) จากทาสแต่ละตัว อิฐเหล่านี้จ่ายไฟ 5.0V, 3.3V และสาย AUX อื่นที่ปรับแต่งได้
อิฐ I2C MQ2 นี้ทิ้งคุณสมบัติ 3 อย่าง:
LPG (ส่วนต่อล้าน), CO (PPM), SMOKE (PPM)
เซนเซอร์นี้ให้สถานการณ์ที่น่าสนใจ: ต้องใช้เวลาอย่างน้อย 2 นาที (สูงสุด 5 นาที) ในการอุ่นเครื่อง จากนั้นจึงจำเป็นต้องปรับเทียบเป็นเวลา 20 วินาทีก่อนใช้งาน เนื่องจาก MCU ของโฮสต์ถูก inteseted ในการรับคู่ชื่อ/ค่า (และข้อความต่อ) เราจึงได้แนะนำคุณสมบัติ "PREPARE" เนื่องจากข้อความต่อคือ "1" (มีอีกมาก) Host MCU จะทำการสำรวจ BRICK ต่อไปจนกว่าจะพร้อม นอกจากนี้ ขอแนะนำให้ "เบิร์นอิน" MQ2 ก่อนใช้งาน เช่น ปล่อยให้เชื่อมต่อกับวงจร 5V ของคุณเป็นเวลา 24 ชั่วโมง
อิฐเซ็นเซอร์ประเภท Keyes จะถูกแยกออกก่อน เนื่องจากมีวิตามิน (จำเป็นต้องมีส่วนประกอบเพิ่มเติม) รวมอยู่ด้วยและค่อนข้างถูก (ฉันซื้อ 37 ในราคา 10AUD) บอร์ด/วงจรอื่นๆ จะถูกนำมาใช้กับ I2C BRICKS
รูทะลุที่อยู่ติดกับ ATTINY85 นั้นไม่ได้ถูกใช้งาน เพื่อเปิดใช้งานโปรแกรมเมอร์พิน pogo ในขณะที่ DIP8 ถูกบัดกรีเข้ากับ PCB
สิ่งที่เป็นนามธรรมเพิ่มเติม การบรรจุอิฐในกระบอกสูบขนาดเล็กที่เสียบเข้ากับฮับ D1M WIFI BLOCK ปั๊มค่าไปยังเซิร์ฟเวอร์ MQTT กำลังอยู่ระหว่างการพัฒนา
ขั้นตอนที่ 1: วัสดุและเครื่องมือ
มีรายการ Bill of Material and Sourcing ฉบับเต็ม
- อิฐเซ็นเซอร์ MQ2 (1)
- ATTINY85 20PU (1)
- 1" โปรโตบอร์ดสองด้าน (1)
- ส่วนหัวชาย90º (3P, 3P)
- ส่วนหัวชาย (2P, 2P)
- จัมเปอร์ Shunt (1)
- สายเชื่อมต่อ (~7)
- บัดกรีและเหล็ก (1)
ขั้นตอนที่ 2: เตรียม ATTINY85
ต้องการ AttinyCore จาก Boards Manager เบิร์น bootloader "EEPROM Retained", "8mHZ Internal" (การกำหนดค่าทั้งหมดที่แสดงด้านบน)
ใช้แหล่งที่มาที่รวมไว้ คอมไพล์และโปรแกรมไปที่ ATtiny85
GIST อยู่ที่นี่:
gist.github.com/IOT-123/4c501046d365d01a60…
คุณอาจพบรายละเอียดเพิ่มเติมในคำแนะนำเหล่านี้:
www.instructables.com/id/Programming-the-A…
www.instructables.com/id/How-to-Program-AT…
www.instructables.com/id/How-to-program-th…
www.instructables.com/id/Programming-the-A…
www.instructables.com/id/Programming-an-At…
ดีที่สุดในการทดสอบผ่าน breadboard ก่อนดำเนินการต่อ
หากคุณมีเซ็นเซอร์ ASSIMILATE อยู่แล้ว ตรวจสอบให้แน่ใจว่าที่อยู่รองแตกต่างกันในการรวมโฮสต์ SENSOR/MCU เช่น เซ็นเซอร์อุณหภูมิทั้งหมดสามารถมีที่อยู่เดียวกันได้ตราบใดที่คุณมีเซ็นเซอร์อุณหภูมิเพียงตัวเดียวบน MCU/โหนด
ขั้นตอนที่ 3: ประกอบวงจร
- ที่ด้านหน้า ใส่ส่วนประกอบ ATTINY85 (1), ส่วนหัว 3P 90deg ตัวผู้ (2) (3), ส่วนหัวของตัวผู้ 2P (4) (5) และบัดกรีที่ด้านหลัง
- ที่ด้านหลัง ลากเส้นลวดสีส้มจาก ORANGE1 ถึง ORANGE2 แล้วบัดกรี
- ที่ด้านหลัง ให้ลากเส้นลวดสีน้ำเงินจาก BLUE1 ถึง BLUE2 และบัดกรี
- ที่ด้านหลัง ให้ลากเส้นลวดสีเขียวจาก GREEN1 ถึง GREEN2 และบัดกรี
- ที่ด้านหลัง ให้ลากเส้นลวดเปล่าจาก SILVER1 ถึง SILVER2 แล้วบัดกรี
- ที่ด้านหลัง ให้ลากเส้นลวดเปล่าจาก SILVER3 ถึง SILVER4 และบัดกรี
- ที่ด้านหลัง ให้ลากเส้นลวดสีดำจาก BLACK1 ถึง BLACK2 แล้วบัดกรี
- ที่ด้านหลัง ลากเส้นลวดสีดำจาก BLACK3 ถึง BLACK4 และบัดกรี
- ที่ด้านหลัง ลากเส้นสีแดงจาก RED1 ถึง RED2 แล้วบัดกรี
- ที่ด้านหลัง ลากเส้นสีแดงจาก RED3 ถึง RED4 แล้วบัดกรี
- ที่ด้านหลัง ลากเส้นลวดสีเหลืองจาก YELLOW1 ถึง YELLOW2 และบัดกรี
ขณะนี้เซ็นเซอร์สามารถเชื่อมต่อได้โดยตรงผ่านหมุดไปยัง PCB หรือผ่านสายไฟ ไปยังจุดที่แสดงในสัญญาพิน
ขั้นตอนที่ 4: การทดสอบ
อิฐจำนวนหนึ่งคาดว่าจะอยู่บนหลายโหนด (MCU - ESP8266 หรือ ATTINY84) ในสภาพแวดล้อม นี่คือการทดสอบหน่วย: ตรวจสอบคำขอ/การตอบสนองของ UNO จนกว่าข้อมูลทั้งหมดจะถูกทิ้ง จากนั้นจึงละเลยทาส I2C
- อัปโหลดรหัส UNO ไปยังสายรัดทดสอบ UNO ของคุณ ตรวจสอบให้แน่ใจว่า ADDRESS_SLAVE ตรงกับที่อยู่ I2C ของ BRICK
- เชื่อมต่อ 5.0V บน UNO กับ VCC บน BRICK
- ตรวจสอบให้แน่ใจว่าจัมเปอร์สำหรับพินนั้นเปิดอยู่
- เชื่อมต่อ GND บน UNO กับ GND บนอิฐ
- เชื่อมต่อ A5 บน UNO กับ SCL บน BRICK
- เชื่อมต่อ A4 บน UNO กับ SDA บน BRICK
- เชื่อมต่อตัวต้านทานแบบดึงขึ้น 4K7 จาก SDA กับ VCC
- เชื่อมต่อตัวต้านทานแบบดึงขึ้น 4K7 จาก SCL กับ VCC
- เชื่อมต่อ UNO ของคุณกับ Dev PC ของคุณด้วย USB
- เปิดคอนโซล Arduino เลือก 9600 บอด (รีสตาร์ท UNO และเปิดคอนโซลอีกครั้งหากต้องการ)
- ควรพิมพ์ชื่อคุณสมบัติและค่าไปที่คอนโซล จากนั้นจึงใช้คำว่า sleep ซ้ำ
หากคุณเห็น "การตั้งค่า" แสดงว่ามีขยะซ้ำ 3 บรรทัด คุณอาจมีบรรทัด SDA และ SCL ของคุณอยู่ข้างหน้า
การบันทึก I2C Master จากทาส I2C พร้อมการสนับสนุนพล็อตเตอร์/ข้อมูลเมตา
#รวม |
#defineADDRESS_SLAVE10 |
bool _outputPlotterOnly = เท็จ; |
bool _confirmedMetadata = เท็จ; |
int _packetSegment = 0; |
bool _i2cNodeProcessed = เท็จ; |
ถ่าน _property[2][24] = {"name", "value"}; |
voidsetup() { |
Wire.begin(); // เข้าร่วมบัส i2c (ที่อยู่หรือไม่ก็ได้สำหรับมาสเตอร์) |
Serial.begin(9600); // เริ่มซีเรียลสำหรับเอาต์พุต |
ล่าช้า (1000); |
ถ้า (!_outputPlotterOnly){ |
Serial.println("ตั้งค่า"); |
Serial.println(); |
} |
} |
โมฆะลูป () { |
ถ้า (_i2cNodeProcessed){ |
if (!_confirmedMetadata){// แจ้งให้สเลฟทราบเพื่อเริ่มส่งข้อมูลเซ็นเซอร์ |
ล่าช้า(1); |
Wire.beginTransmission (ADDRESS_SLAVE); |
Wire.write(1); |
Wire.endTransmission(); |
ล่าช้า (100); |
_confirmedMetadata = จริง; |
} |
_i2cNodeProcessed = เท็จ; |
ถ้า (!_outputPlotterOnly){ |
Serial.println(); |
} |
กลับ; |
} |
Wire.requestFrom(ADDRESS_SLAVE, 16); |
_packetSegment++; |
ถ่านแพ็คเก็ต [16]; |
ดัชนี = 0; |
bool isContinueSegment = false; // continueSegment (ที่ 3) 1=มากกว่า 0=สุดท้าย |
ในขณะที่ (Wire.available ()) { // ทาสอาจส่งน้อยกว่าที่ร้องขอ |
ถ่าน c = Wire.read(); |
packet[index] = int(c) > -1 ? c: '';// แทนที่อักขระที่ไม่ถูกต้องด้วยช่องว่าง |
ถ้า (_packetSegment == 3){ |
_packetSegment = 0; |
isContinueSegment = จริง; |
//Serial.println("-------------"); |
//Serial.println(int(c)); |
//Serial.println("-------------"); |
if (int(c) == 48 || int(c) == 86){// 0 ในคุณสมบัติสุดท้าย |
_i2cNodeProcessed = จริง; |
// ส่งค่าไปที่ MQTT |
หยุดพัก; |
} |
} |
ดัชนี++; |
} |
ถ้า (!isContinueSegment){ |
ถ้า (!_outputPlotterOnly){ |
Serial.println (แพ็กเก็ต); |
} |
strcpy(_property[_packetSegment - 1], packet);// ตั้งค่า var ในเครื่องด้วยชื่อ/ค่า |
}อื่น{ |
ถ้า (_outputPlotterOnly && _confirmedMetadata){ |
ถ้า (_i2cNodeProcessed){ |
Serial.println(_คุณสมบัติ [1]); |
}อื่น{ |
Serial.print(_คุณสมบัติ[1]); |
Serial.print(""); |
} |
} |
} |
} |
ดู rawuno_i2c_generic_sensor_test_w_plotter_v2.ino โฮสต์ด้วย ❤ โดย GitHub
ขั้นตอนที่ 5: ขั้นตอนต่อไป
เลย์เอาต์พื้นฐานของวงจรและเลเยอร์ I2C ของซอฟต์แวร์นั้นสัมพันธ์กับเซ็นเซอร์ต่างๆ มากมาย สิ่งสำคัญที่ควรเริ่มต้นคือสัญญาแพ็กเก็ตระหว่างมาสเตอร์และทาส
ฉันได้กำหนด/เริ่มเครือข่ายเซ็นเซอร์แบบแพ็กเกจ (พิมพ์ 3 มิติ) ที่ใช้เฟรมเวิร์กนี้แล้ว และจะลิงก์ไปยังส่วนต่างๆ เมื่อมีการเผยแพร่
BLOCK นี้ถูกใช้โดย MQ2 ASSIMILATE SENSOR
แนะนำ:
IOT123 - D1M BLOCK - การประกอบ 2xAMUX: 7 ขั้นตอน (พร้อมรูปภาพ)
IOT123 - D1M BLOCK - 2xAMUX Assembly: D1M BLOCKS เพิ่มเคสที่สัมผัสได้ ฉลาก ป้ายบอกขั้ว และรอยแยกสำหรับ Wemos D1 Mini SOC/Shields/Clones ยอดนิยม ปัญหาหนึ่งของชิป ESP8266 คือมีพิน IO แบบอะนาล็อกเพียงอันเดียวเท่านั้น คำแนะนำนี้แสดงวิธีการประกอบ 2xA
IOT123 - D1M BLOCK - การประกอบ RFTXRX: 8 ขั้นตอน
IOT123 - D1M BLOCK - RFTXRX Assembly: D1M BLOCKS เพิ่มเคสที่สัมผัสได้ ฉลาก ป้ายบอกขั้ว และรอยแยกสำหรับ Wemos D1 Mini SOC/Shields/Clones ยอดนิยม เครื่องส่งสัญญาณ/เครื่องรับ RF ช่วยให้ ESP8266 เข้าถึงระบบอัตโนมัติภายในบ้าน/อุตสาหกรรมที่มีอยู่ เคสนี้ให้แบ่งออกสำหรับ 433/
IOT123 - D1M BLOCK - GY521 การประกอบ: 8 ขั้นตอน
IOT123 - D1M BLOCK - GY521 Assembly: D1M BLOCKS เพิ่มเคสที่สัมผัสได้ ฉลาก ป้ายบอกขั้ว และรอยแยกสำหรับ Wemos D1 Mini SOC/Shields/Clones ยอดนิยม D1M BLOCK นี้ให้การเชื่อมต่อระหว่าง Wemos D1 Mini และโมดูล GY-521 อย่างง่าย (สามารถเชื่อมต่อหมุดที่อยู่และหมุดขัดจังหวะ
IOT123 - เซ็นเซอร์ตรวจจับ: MQ2: 4 ขั้นตอน
IOT123 - ASSIMILATE SENSOR: MQ2: ASSIMILATE SENSORS เป็นเซ็นเซอร์สภาพแวดล้อมที่มีเลเยอร์ที่เป็นนามธรรมของฮาร์ดแวร์และซอฟต์แวร์เพิ่มเติม ทำให้สามารถเพิ่มประเภทใหม่ทั้งหมดลงใน ASSIMILATE SENSOR HUB และการอ่านค่าจะถูกปั๊มไปยังเซิร์ฟเวอร์ MQTT โดยไม่ต้องเพิ่ม codin
IOT123 - 5PIN ATTINY85 NRF24L01 อิฐ: 4 ขั้นตอน
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: อัปเดต: การตั้งค่านี้ส่วนใหญ่เป็นการศึกษาหรือเป็นพื้นฐานสำหรับการทดสอบซอฟต์แวร์/พาวเวอร์ซัพพลาย แม้ว่า PB5 จะถูกปิดใช้งานเป็น RESET แต่ก็ไม่สามารถอ่านค่าได้อย่างแม่นยำโดยใช้ analogRead: กรณีการใช้งานหลักสำหรับการอ่านเซ็นเซอร์ จะตรวจสอบการตั้งค่า ATTINY84