สารบัญ:

IOT123 - I2C MQ2 อิฐ: 5 ขั้นตอน
IOT123 - I2C MQ2 อิฐ: 5 ขั้นตอน

วีดีโอ: IOT123 - I2C MQ2 อิฐ: 5 ขั้นตอน

วีดีโอ: IOT123 - I2C MQ2 อิฐ: 5 ขั้นตอน
วีดีโอ: MQ-2 датчик газов и дыма подключаем к Arduino 2024, พฤศจิกายน
Anonim
IOT123 - I2C MQ2 อิฐ
IOT123 - I2C MQ2 อิฐ
IOT123 - I2C MQ2 อิฐ
IOT123 - I2C MQ2 อิฐ
IOT123 - I2C MQ2 อิฐ
IOT123 - I2C MQ2 อิฐ
IOT123 - I2C MQ2 อิฐ
IOT123 - I2C MQ2 อิฐ

อิฐ 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 ฉบับเต็ม

  1. อิฐเซ็นเซอร์ MQ2 (1)
  2. ATTINY85 20PU (1)
  3. 1" โปรโตบอร์ดสองด้าน (1)
  4. ส่วนหัวชาย90º (3P, 3P)
  5. ส่วนหัวชาย (2P, 2P)
  6. จัมเปอร์ Shunt (1)
  7. สายเชื่อมต่อ (~7)
  8. บัดกรีและเหล็ก (1)

ขั้นตอนที่ 2: เตรียม ATTINY85

เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม 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: ประกอบวงจร

ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
  1. ที่ด้านหน้า ใส่ส่วนประกอบ ATTINY85 (1), ส่วนหัว 3P 90deg ตัวผู้ (2) (3), ส่วนหัวของตัวผู้ 2P (4) (5) และบัดกรีที่ด้านหลัง
  2. ที่ด้านหลัง ลากเส้นลวดสีส้มจาก ORANGE1 ถึง ORANGE2 แล้วบัดกรี
  3. ที่ด้านหลัง ให้ลากเส้นลวดสีน้ำเงินจาก BLUE1 ถึง BLUE2 และบัดกรี
  4. ที่ด้านหลัง ให้ลากเส้นลวดสีเขียวจาก GREEN1 ถึง GREEN2 และบัดกรี
  5. ที่ด้านหลัง ให้ลากเส้นลวดเปล่าจาก SILVER1 ถึง SILVER2 แล้วบัดกรี
  6. ที่ด้านหลัง ให้ลากเส้นลวดเปล่าจาก SILVER3 ถึง SILVER4 และบัดกรี
  7. ที่ด้านหลัง ให้ลากเส้นลวดสีดำจาก BLACK1 ถึง BLACK2 แล้วบัดกรี
  8. ที่ด้านหลัง ลากเส้นลวดสีดำจาก BLACK3 ถึง BLACK4 และบัดกรี
  9. ที่ด้านหลัง ลากเส้นสีแดงจาก RED1 ถึง RED2 แล้วบัดกรี
  10. ที่ด้านหลัง ลากเส้นสีแดงจาก RED3 ถึง RED4 แล้วบัดกรี
  11. ที่ด้านหลัง ลากเส้นลวดสีเหลืองจาก YELLOW1 ถึง YELLOW2 และบัดกรี

ขณะนี้เซ็นเซอร์สามารถเชื่อมต่อได้โดยตรงผ่านหมุดไปยัง PCB หรือผ่านสายไฟ ไปยังจุดที่แสดงในสัญญาพิน

ขั้นตอนที่ 4: การทดสอบ

การทดสอบ
การทดสอบ
การทดสอบ
การทดสอบ
การทดสอบ
การทดสอบ

อิฐจำนวนหนึ่งคาดว่าจะอยู่บนหลายโหนด (MCU - ESP8266 หรือ ATTINY84) ในสภาพแวดล้อม นี่คือการทดสอบหน่วย: ตรวจสอบคำขอ/การตอบสนองของ UNO จนกว่าข้อมูลทั้งหมดจะถูกทิ้ง จากนั้นจึงละเลยทาส I2C

  1. อัปโหลดรหัส UNO ไปยังสายรัดทดสอบ UNO ของคุณ ตรวจสอบให้แน่ใจว่า ADDRESS_SLAVE ตรงกับที่อยู่ I2C ของ BRICK
  2. เชื่อมต่อ 5.0V บน UNO กับ VCC บน BRICK
  3. ตรวจสอบให้แน่ใจว่าจัมเปอร์สำหรับพินนั้นเปิดอยู่
  4. เชื่อมต่อ GND บน UNO กับ GND บนอิฐ
  5. เชื่อมต่อ A5 บน UNO กับ SCL บน BRICK
  6. เชื่อมต่อ A4 บน UNO กับ SDA บน BRICK
  7. เชื่อมต่อตัวต้านทานแบบดึงขึ้น 4K7 จาก SDA กับ VCC
  8. เชื่อมต่อตัวต้านทานแบบดึงขึ้น 4K7 จาก SCL กับ VCC
  9. เชื่อมต่อ UNO ของคุณกับ Dev PC ของคุณด้วย USB
  10. เปิดคอนโซล Arduino เลือก 9600 บอด (รีสตาร์ท UNO และเปิดคอนโซลอีกครั้งหากต้องการ)
  11. ควรพิมพ์ชื่อคุณสมบัติและค่าไปที่คอนโซล จากนั้นจึงใช้คำว่า 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

แนะนำ: