สารบัญ:
- ขั้นตอนที่ 1: ซอฟต์แวร์
- ขั้นตอนที่ 2: ฮาร์ดแวร์
- ขั้นตอนที่ 3: ทดสอบอุปกรณ์
- ขั้นตอนที่ 4: ภาคผนวก: ATtiny85
วีดีโอ: Arduino 1-wire Generic Client/Slave Device (เซ็นเซอร์): 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
โปรดอ่านบทนำและขั้นตอนที่ 2 ของคำแนะนำของฉันเกี่ยวกับวิธีสร้าง Arduino 1-wire Display (144 Chars) เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับสถานการณ์และไลบรารีที่พร้อมใช้งาน ตามที่อธิบายไว้เราจะใช้ไลบรารี OneWire-Hub (โปรแกรมจำลองอุปกรณ์ทาส OneWire) โดย orgua (ให้ความสนใจกับส้อมอื่น ๆ รอบตัว) เพื่อสร้างอุปกรณ์ 1-wire ทั่วไป (เช่นเซ็นเซอร์) โดยใช้ Arduino
ขั้นตอนที่ 1: ซอฟต์แวร์
สิ่งที่สำคัญที่สุดคือการสร้างอุปกรณ์ที่สามารถคืนคุณค่าใด ๆ โดยพื้นฐานในลักษณะที่เรียบง่าย หมายความว่าซอฟต์แวร์มาตรฐานสามารถใช้อ่านค่าทั้งหมดได้โดยตรง (ไม่จำเป็นต้องมีการสนทนาหรือการจัดการแบบไบนารี) เพื่อที่เราต้องการอุปกรณ์ 1 สายเริ่มต้นที่ง่ายมากที่สามารถส่งคืนโฟลตและได้รับการสนับสนุนอย่างกว้างขวาง ทางเลือกเดียวที่ฉันรู้คือเทอร์โมมิเตอร์ DS18B20 (ตัวตรวจสอบแบตเตอรี่ DS2438 น่าสนใจและมีประโยชน์ด้วย แต่ค่อนข้างซับซ้อนและช้ากว่าข้อเสียอื่นๆ) ไลบรารี OneWire-Hub มีตัวอย่างที่เรียกว่า DS18B20_asInterface ที่ทำสิ่งที่เราต้องการอย่างแท้จริง มันสร้างกลุ่มของ DS18B20 ซึ่งทุกอันแทนค่าทศนิยมหนึ่งค่าที่เราต้องการส่งคืนจากเซ็นเซอร์ของเรา ข้อจำกัดที่นี่คือความละเอียดและค่าต้องอยู่ในช่วง -55, 0 … 125, 0 ซึ่งสามารถทำได้ง่าย - ในกรณีที่เลวร้ายที่สุดคือการปรับขนาด - และจริงๆ แล้วดีกว่าค่าที่สามารถแทนได้เช่น ค่า DS2438 (1.5 ถึง 10V) อีกวิธีหนึ่งคือสามารถตั้งค่าช่วงที่ใหญ่กว่าได้โดยใช้:
setTemperatureRaw(static_cast(ค่า * 16.0f));
แต่ซอฟต์แวร์บางตัวอาจไม่รองรับการอ่านและประมวลผลค่าเหล่านี้เนื่องจากไม่มีข้อกำหนด
สิ่งที่คุณต้องระวังคือในตอนแรกจำนวนทาสสูงสุดถูกจำกัดที่ 8 แต่สามารถเปลี่ยนได้ใน "OneWireHub_config.h" โดยเพิ่ม HUB_SLAVE_LIMIT สูงสุด 32 นอกจากนี้ คุณต้องแน่ใจว่าได้ใช้ ONEWIRE_TIME_MSG_HIGH_TIMEOUT หากจำเป็น เครือข่าย 1 สาย (เช่น x10) ตามที่อธิบายไว้ในขั้นตอนที่ 2 ของ Arduino 1-wire Display (144 Chars) และเพื่อใช้ IDE Version >= 1.8.3 เพื่อคอมไพล์และอัปโหลดโค้ดไปยัง Arduino ของคุณ
นี่คือตัวอย่างรหัสของอุปกรณ์ที่ฉันสร้างเมื่อเร็วๆ นี้ เนื่องจากฉันคิดว่าคุณจะไม่ใช้เซ็นเซอร์แบบเดียวกันที่ฉันใช้ ฉันจะไม่ลงรายละเอียดเพิ่มเติมที่นี่ ตรวจสอบรหัสและถามคำถามหากคุณต้องการความช่วยเหลือ
ขั้นตอนที่ 2: ฮาร์ดแวร์
โดยพื้นฐานแล้วทุกสิ่งที่คุณสามารถเชื่อมต่อกับ Arduino สามารถใช้เป็นเซ็นเซอร์ที่คุณเลือกได้ ข้อ จำกัด เพียงอย่างเดียวคือการอ่านเซ็นเซอร์ควรเร็วที่สุดเพื่อให้มีเวลาเหลือเพียงพอสำหรับการสื่อสารแบบ 1 สาย (หารือขั้นตอนที่ 2 ของคำแนะนำของฉันเกี่ยวกับ Arduino 1-wire Display (144 Chars) ตามลำดับ เพื่อรับตัวอย่าง)
ตัวอย่างของฮาร์ดแวร์ที่เป็นไปได้อาจเป็นสถานีตรวจอากาศ เช่น:
https://shop.boxtec.ch/wetter-messer-p-41289.html
นอกจากนี้คุณอาจต้องการใช้ Arduino เป็นเซ็นเซอร์ของคุณแทน คุณสามารถอ่านเพิ่มเติมเกี่ยวกับสิ่งนั้นได้ในคำแนะนำของฉันเกี่ยวกับ Arduino Lesser Known Features - ค่าที่เป็นไปได้คือแรงดันต้นทางและอุณหภูมิภายใน
นี่เป็นตัวอย่างรูปภาพของอุปกรณ์ที่ฉันสร้างเมื่อเร็วๆ นี้ เนื่องจากฉันคิดว่าคุณจะไม่ใช้เซ็นเซอร์แบบเดียวกันที่ฉันใช้ ฉันจะไม่ลงรายละเอียดเพิ่มเติมที่นี่ ตรวจสอบรหัสและถามคำถามหากคุณต้องการความช่วยเหลือ
ขั้นตอนที่ 3: ทดสอบอุปกรณ์
เชื่อมต่อกับเครือข่ายของคุณและตรวจสอบซอฟต์แวร์ของคุณว่ามี ROM ID ทั้งหมดหรือไม่และค่าที่ส่งคืนเป็นอุณหภูมิ
ขั้นตอนที่ 4: ภาคผนวก: ATtiny85
อุปกรณ์เดี่ยว (การจำกัดหน่วยความจำ) สามารถทำได้บน ATtiny85 ต้องใช้เวลาสองสามขั้นตอนในขณะที่เราตั้งโปรแกรม ATtiny85 โดยใช้ Arduino Uno เป็น ISP ด้วยความช่วยเหลือของ Arduino IDE:
-
ลิงค์
- https://playground.boxtec.ch/doku.php/arduino/att…
- https://sebastian.expert/could-not-find-usbtiny-d…
- https://learn.sparkfun.com/tutorials/tiny-avr-pro…
- https://forum.arduino.cc/index.php?topic=425532.0
- https://forum.arduino.cc/index.php?topic=128963.0
- ใช้ Arduino IDE >=1.8.3
-
ติดตั้งตัวเลือก ATtiny เป็น IDE
- ไฟล์ > ค่ากำหนด > URL ตัวจัดการบอร์ดเพิ่มเติม:
- เครื่องมือ > บอร์ด: ??? > ผู้จัดการบอร์ด…
- ค้นหา: "จิ๋ว" และติดตั้ง
-
อัปโหลดภาพร่าง ISP ไปยัง Uno
ไฟล์ > ตัวอย่าง > ArduinoISP > ArduinoISP
-
ใส่ ATtiny85 เข้ากับซ็อกเก็ตการเขียนโปรแกรม (แรงเป็นศูนย์) และต่อสาย:
- Arduino Pin MOSI D11 ถึง ATtiny Pin 5
- Arduino Pin MISO D12 ถึง ATtiny Pin 6
- Arduino Pin SCK D13 ถึง ATtiny Pin 7
- Arduino Pin รีเซ็ต D10 เป็น ATtiny Pin 1
- Arduino Pin GND ถึง ATtiny Pin 4
- Arduino Pin VCC ถึง ATtiny Pin 8
- (>= อาจต้องใช้ฝาปิด 10uF บนพิน Arduino Uno RESET)
-
เลือก ATtiny85 (ดูรูป):
- บอร์ด: "ATtiny25/45/85"
- ตัวจับเวลา 1 นาฬิกา: "CPU"
- B. O. D.: "ผู้พิการ ก.พ.ศ."
- LTO (1.6.11 + เท่านั้น): "ปิดการใช้งาน"
- ชิป: "ATtiny85"
- นาฬิกา: "8 MHz (ภายใน)" (รองรับ ATtiny85 และ ATtiny84)
- นาฬิกา: "16 MHz (PLL)" (การตั้งค่าทางเลือกสำหรับ ATtiny85 เท่านั้น)
- ท่าเรือ: ???
-
เลือกโปรแกรมเมอร์:
เครื่องมือ > โปรแกรมเมอร์: "Arduino as ISP" (ไม่ใช่ "ArduinoISP" !)
-
ตั้งค่าฟิวส์ (นาฬิกา ฯลฯ):
เครื่องมือ > เบิร์น Bootloader
- อัปโหลดรหัสนี้ (ต้องปิด LED ข้อผิดพลาดของโปรแกรมเมอร์ ไม่เช่นนั้นให้รีเซ็ต)
-
เค้าโครงพิน ATtinyX5 (ATtiny85):
- พิน 1: PB5 (RST)
- ขา 2: PB3 (A3) - เชื่อมต่อเสริมผ่าน 220ohm ถึง 1<-TX
- ขา 3: PB4 (A2) - เชื่อมต่อกับ DATA. 1 สาย
- พิน 4: GND - เชื่อมต่อกับ GND
- ขา 5: PB0 (PWM) - เชื่อมต่อกับเซ็นเซอร์ I2C SDA
- ขา 6: PB1 (PWM) - เชื่อมต่อกับ LED ด้วย 4.7k ถึง GND
- Pin 7: PB2 (A1) - เชื่อมต่อกับเซ็นเซอร์ I2C SCL
- ขา 8: VCC - เชื่อมต่อกับ 5V
การทำงานกับ ATTiny85 ต้องการงานเพิ่มขึ้นอีกเล็กน้อย เนื่องจากคุณจำเป็นต้องได้รับไลบรารีเพิ่มเติมสำหรับการสื่อสาร I2C (adafruit/TinyWireM) และเอาต์พุตแบบอนุกรม (TinyDebugSerial) นอกจากนี้ เนื่องจากหน่วยความจำมีจำกัด คุณจึงอาจต้องการทำงานมากด้วย #define เช่น เพื่อลบการดีบักแบบอนุกรม ในตัวอย่าง คุณจะเห็นทั้งหมดนี้รวมกัน
สำหรับการทดสอบขั้นแรกให้ตรวจสอบว่า LED กะพริบด้วยความถี่ที่ถูกต้อง 0.5Hz หรือไม่ จากนั้นเชื่อมต่อกับบัส 1wire แล้วตรวจสอบอุปกรณ์ใหม่
แนะนำ:
สัญญาณเตือนการเคลื่อนไหว เซนเซอร์: 5 ขั้นตอน
Motion Sensor Alarm: คุณคอยดูอยู่เสมอว่าใครอยู่ที่ประตูของคุณ? นี่คือรายการที่สมบูรณ์แบบสำหรับคุณ ฉันอยากรู้อยู่เสมอว่ามีคนอยู่นอกประตูของฉันโดยไม่รู้ตัวหรือไม่ ฉันได้สร้าง Motion Sensor Alarm พร้อมไฟ LED ซึ่งจะระบุ
เซ็นเซอร์ BMP280 หลายตัวใน Arduino Uno ผ่าน SPI: 6 ขั้นตอน
เซ็นเซอร์ BMP280 หลายตัวใน Arduino Uno ผ่าน SPI: ในบทช่วยสอนนี้ เราจะเชื่อมต่อ BMP280 สามตัวบน Arduino Uno ผ่าน SPI แต่คุณสามารถเชื่อมต่อ BMP280 ได้สูงสุดแปดตัวบน Uno โดยใช้พอร์ตดิจิทัล D3 ถึง D10 เป็น nSS (Slave Select) สำหรับแต่ละเซ็นเซอร์ ผลลัพธ์ ของตัวอย่างความดันบรรยากาศที่วัดโดย B
การสาธิต 4x4 ของกระดานหมากรุกอิเล็กทรอนิกส์/ ด้วย Arduino Mega + เครื่องอ่าน RFID + เซ็นเซอร์ Hall-Effect: 7 ขั้นตอน
การสาธิต 4x4 ของกระดานหมากรุกอิเล็กทรอนิกส์/ด้วย Arduino Mega + เครื่องอ่าน RFID + เซ็นเซอร์ Hall-effect: สวัสดีผู้ผลิต ฉันชื่อ Tahir Miriyev จบการศึกษาจาก Middle East Technical University ในกรุงอังการา/ ตุรกี ปี 2018 ฉันเรียนเอกคณิตศาสตร์ประยุกต์ แต่ฉันชอบทำสิ่งต่างๆ เสมอ โดยเฉพาะอย่างยิ่งเมื่อต้องอาศัยฝีมือกับอุปกรณ์อิเล็กทรอนิกส์ การออกแบบและการเขียนโปรแกรม
ESP8266/ESP-12 Arduino ขับเคลื่อนด้วย SmartThings DS18B20 อุณหภูมิ เซนเซอร์: 4 ขั้นตอน (พร้อมรูปภาพ)
ESP8266/ESP-12 Arduino ขับเคลื่อนด้วย SmartThings DS18B20 อุณหภูมิ เซนเซอร์: เราทุกคนต้องการทราบอุณหภูมิห้องปัจจุบัน และบางครั้งอุณหภูมิในห้องอื่นเป็นอย่างไร หรือแม้แต่ในบ้านพักตากอากาศของคุณที่อยู่อีกซีกโลก บางทีคุณอาจต้องการตรวจสอบอุณหภูมิในบ้านสัตว์เลี้ยงของคุณ Lizard
เซ็นเซอร์ Angular Java + Arduino: 5 ขั้นตอน
เซ็นเซอร์ Ángular Java + Arduino: เซ็นเซอร์ angular rotatorio ที่อยู่ตรงกลางระหว่าง Java และ Arduino