อินเทอร์เน็ต. คอมพิวเตอร์. ช่วย. คำแนะนำ. ซ่อมแซม

เซ็นเซอร์แบบโฮมเมดสำหรับ Arduino บ้านอัจฉริยะที่ใช้ Arduino: คำแนะนำการประกอบทีละขั้นตอน คุณสมบัติของฮาร์ดแวร์ Arduino บางตัว

โปรดจำไว้ว่าพื้นฐานของโครงการนี้คือ Arduino มันทำหน้าที่สำคัญหลายประการ: อ่านข้อมูลจากเซ็นเซอร์ IR, ประมวลผลสัญญาณ, ตอบสนองต่อการเคลื่อนไหว และ USB แจ้งเตือนคอมพิวเตอร์เกี่ยวกับความจำเป็นในการส่งข้อความ ในบทความนี้เราจะพิจารณาสองคำถาม:

  1. การเชื่อมต่อเซ็นเซอร์ PIR กับ Arduino;
  2. วิธีกำหนดค่าความสัมพันธ์ระหว่างเซ็นเซอร์กับการส่งอีเมลอัตโนมัติ .
จำเป็นสำหรับโครงการ:
  • Arduino UNO (คุณสามารถเลือกได้จาก Aliexpress)
  • เซ็นเซอร์พีไออาร์
  • แบรดบอร์ด.
  • สายไฟเป็นพวง

องค์ประกอบทั้งหมดที่ระบุไว้สำหรับการประกอบสามารถดูได้ในรูปถ่าย:

ก่อนอื่น คุณต้องมีพีซีที่เชื่อมต่ออินเทอร์เน็ตได้ เราใช้ราสเบอร์รี่ Pi

เชื่อมต่อเซ็นเซอร์ PIR เข้ากับชุด Arduino:

ในการดำเนินการขั้นตอนนี้ คุณจะต้องนำสายไฟที่มาจากเซ็นเซอร์มาติดเข้ากับแท่น ต่อไปคุณจะได้รับรูปถ่ายพร้อมแผนภาพ:

การทำงานกับภาพร่าง

เมื่อมีการเคลื่อนไหวเกิดขึ้น Arduino ผ่าน USB Serial ควรส่งอีเมล แน่นอนว่าหากคุณส่งอีเมลทุกครั้งที่มีการเคลื่อนไหว ตู้จดหมายของคุณจะเต็ม ดังนั้นเราจึงแก้ไขมันเพื่อที่ว่าหากมีช่วงเวลาสั้น ๆ ระหว่างสองสัญญาณ อีเมลจะถูกส่งไปพร้อมกับข้อความต่อไปนี้:

Int pirPin = 7; int minSecsBetweenEmails = 60; // 1 นาทียาว LastSend = -minSecsBetweenEmails * 1,000; การตั้งค่าเป็นโมฆะ() ( pinMode(pirPin, INPUT); Serial.begin(9600); ) void loop() ( ยาวตอนนี้ = มิลลิวินาที(); if (digitalRead(pirPin) == HIGH) ( if (ตอนนี้ > (lastSend + minSecsBetweenEmails * 1,000)) ( Serial.println("MOVEMENT"); LastSend = now; ) else ( Serial.println("Too soon"); ) ) ล่าช้า (500);

« inSecsBetweenอีเมล" – ตัวแปรนี้สามารถสลับเป็นค่าอื่น ๆ ที่จะสะดวกสำหรับผู้ใช้ ตัวอย่างเช่น คุณสามารถกำหนดช่วงเวลาเท่ากับหนึ่งนาทีได้ ซึ่งหมายความว่าอีเมลถัดไปจะถูกส่งหลังจากผ่านไป 60 วินาทีเท่านั้น

"ส่งครั้งสุดท้าย" จะช่วยคุณติดตามเวลาที่ข้อความสุดท้ายถูกส่งไป ตัวแปรนี้เริ่มต้นด้วยตัวเลขลบ ซึ่งเท่ากับมิลลิวินาทีที่ระบุ "MinSecs ระหว่างอีเมล" - เป็นผลให้เราได้รับการรับประกันว่าหลังจากรันแบบร่างใน Arduino เซ็นเซอร์ PIR จะเริ่มทำงานทันที

เราจะคำนวณมิลลิวินาทีและเปรียบเทียบตัวเลขกับเวลาที่เซ็นเซอร์ทำงานครั้งล่าสุดได้อย่างไร ต้องขอบคุณฟีเจอร์ในตัวที่เรียกว่า Millis ในกรณีที่ตรวจพบการเคลื่อนไหวแต่เวลาผ่านไปน้อยนับตั้งแต่การเปิดใช้งานเซ็นเซอร์ครั้งล่าสุดจะมีการส่งตัวอักษรพร้อมข้อความ "เร็วเกินไป".

จำเป็นต้องทดสอบฟังก์ชันนี้ก่อน สำหรับสิ่งนี้มันเปิดขึ้น การตรวจสอบแบบอนุกรม- ต่อไปเรามาดูกันว่ามีลักษณะอย่างไร:

เมื่อคุณแน่ใจว่ามันทำงานอย่างถูกต้องแล้ว คุณก็สามารถเขียนโปรแกรมใน Python ได้ โดยจะใช้เพื่อประมวลผลสัญญาณจากแพลตฟอร์ม

วิธีติดตั้ง PySerial และ Python:

ระบบปฏิบัติการ Linux มีการติดตั้ง Python โดยอัตโนมัติ ระบบ Windows ไม่มีคุณสมบัตินี้ ดังนั้นคุณต้องติดตั้งโปรแกรมด้วยตนเอง PySerial ทำหน้าที่เป็นห้องสมุด ซึ่งจะช่วยสื่อสารกับ Arduino

การติดตั้งไพธอน:

Python 3 มักจะทำให้เกิดปัญหาเมื่อทำงานกับ PySerial โดยเฉพาะหากคุณใช้ Windows เพื่อหลีกเลี่ยงปัญหานี้ คุณสามารถดาวน์โหลดแทนเวอร์ชันที่สามได้ หลาม 2 .

หลังจากติดตั้งโปรแกรมเสร็จแล้ว คุณจะพบกลุ่มพิเศษในเมนูเริ่ม เมื่อเราก้าวไปสู่กระบวนการติดตั้งไลบรารี่ เราจะต้องทำงานร่วมกับ Python โดยใช้บรรทัดคำสั่ง ดังนั้นจึงเป็นการดีกว่าที่จะเพิ่มไดเร็กทอรีที่ต้องการลงใน PATH ทันที ด้านล่างคุณสามารถดูรูปถ่ายสนับสนุน:

ในการเพิ่มแคตตาล็อกที่เราต้องการ: เปิดแผงควบคุมค้นหาส่วน "คุณสมบัติของระบบ" ในนั้น จากนั้นเรากดปุ่มที่เรียกว่า "Environment Variabes" หน้าต่างจะปรากฏขึ้นต่อหน้าเรา ที่ด้านล่างของมันควรมี "เส้นทาง" ที่คุณต้องเลือก ตอนนี้คลิกที่ "แก้ไข" - เปลี่ยนแปลงและดำเนินการให้เสร็จสิ้นโดยคลิก "ค่าตัวแปร" คุณไม่สามารถลบข้อความที่คุณได้รับ คุณควรเพิ่มคำจารึกต่อไปนี้: “;C:\Python27” อย่าลืมใส่ “;” หลังแต่ละโฟลเดอร์ที่ระบุในข้อความ ตอนนี้เราตรวจสอบว่าป้อนรายการ "เส้นทาง" อย่างถูกต้องหรือไม่ ในการดำเนินการนี้ ให้ป้อนคำว่า "python" ลงในบรรทัดคำสั่ง หากไม่มีข้อผิดพลาดเกิดขึ้น รูปภาพต่อไปนี้จะปรากฏขึ้นบนหน้าจอ:

ติดตั้ง PySerial:

ไม่ว่าคุณจะใช้ระบบปฏิบัติการใดก็ตาม ให้ดาวน์โหลดแพ็คเกจการติดตั้ง .tar.gz สำหรับ PySerial 2.6 ไซต์นี้สามารถช่วยคุณทำเช่นนั้นได้ - //pypi.python.org/pypi/pyserial - เราได้รับไฟล์ชื่อ pyserial-2.6.tar.gz หากคุณใช้ Windows คุณจะต้องแตกไฟล์ลงในโฟลเดอร์ที่เลือก นี่ไม่ใช่ไฟล์ ZIP มาตรฐาน คุณจะต้องทำตามขั้นตอนเพิ่มเติม - ดาวน์โหลด 7-zip (คุณสามารถทำได้ที่นี่ - //www.7-zip.org/ - สำหรับระบบ Linux คุณต้องใช้เซสชันเทอร์มินัล ใส่คำสั่ง “CD” ในนั้น และระบุชื่อโฟลเดอร์ที่คุณดาวน์โหลด pyserial-2.6.tar.gz หากต้องการแกะกล่อง คุณต้องป้อน:

$ tar -xzf pyserial-2.6.tar.gz

หลังจากนี้คุณจะต้องรันคำสั่ง:

ติดตั้ง Sudo python setup.py

หลาม

คุณจะต้องสร้างโปรแกรมแยกต่างหากเพื่อทำงานกับ Python คุณต้องคัดลอกโค้ดลงในไฟล์ที่มีชื่อเดียวกัน – “movement.py” บน Linux คุณสามารถใช้โปรแกรมแก้ไข "nano" ได้ แต่ในระบบ Windows คุณต้องสร้างไฟล์โดยใช้โปรแกรมแก้ไข "IDLE" ของ Python มันมีอยู่ในเมนูเริ่ม

เวลานำเข้า นำเข้าอนุกรม นำเข้า smtplib TO = " [ป้องกันอีเมล]"GMAIL_USER=" [ป้องกันอีเมล]" GMAIL_PASS = "ใส่รหัสผ่านของคุณที่นี่" SUBJECT = "การบุกรุก!!" TEXT = "เซ็นเซอร์ PIR ของคุณตรวจพบการเคลื่อนไหว" ser = serial.Serial("COM4", 9600) def send_email(): print("การส่งอีเมล") smtpserver = smtplib SMTP("smtp.gmail.com",587) smtpserver.ehlo() smtpserver.starttls() smtpserver.ehlo smtpserver.login(GMAIL_USER, GMAIL_PASS) ส่วนหัว = "ถึง:" + TO + "\n" + "จาก: " + GMAIL_USER header = header + "\n" + "Subject:" + SUBJECT + "\n" print header msg = header + "\n" + TEXT + " \n\n" smtpserver.sendmail(GMAIL_USER, TO, msg) smtpserver.close() ในขณะที่ True: message = ser.readline() print(message) if message == "M" : send_email() time.sleep(0.5)

นี่แสดงไว้ในภาพต่อไปนี้:

หลังจากการเปลี่ยนแปลง สามารถเปิดโปรแกรมได้โดยใช้บรรทัดคำสั่ง:

Python movement.py

ดังนั้นการติดตั้งจึงเสร็จสมบูรณ์

ความเป็นไปได้ไม่ได้สิ้นสุดเพียงแค่นั้น มีส่วนขยายที่ให้คุณรับข้อความพร้อมรายงานอุณหภูมิหรือข้อมูลอื่น ๆ

ไฟล์ที่แนบมา :

เซ็นเซอร์อุณหภูมิและความชื้นแบบโฮมเมด DHT11 และ DHT22 - เชื่อมต่อกับ Arduino ล็อคไบโอเมตริกซ์ - การประกอบบอร์ดควบคุมและการเขียนโปรแกรมไมโครคอนโทรลเลอร์

ฉันอยากให้กระบวนการทำให้ห้องน้ำแห้งหลังอาบน้ำเป็นไปโดยอัตโนมัติมานานแล้ว ฉันมีรีวิวมากมายเกี่ยวกับเรื่องความชื้น ฉันตัดสินใจที่จะแนะนำวิธีหนึ่งในการต่อสู้กับชีวิต (เพื่อที่จะพูด) อย่างไรก็ตาม ในฤดูหนาวเราจะตากเสื้อผ้าในห้องน้ำ เปิดพัดลมดูดอากาศก็เพียงพอแล้ว แต่การตรวจสอบพัดลมนั้นไม่สะดวกเสมอไป ดังนั้นฉันจึงตัดสินใจติดตั้งระบบอัตโนมัติในเรื่องนี้ ประสบการณ์การใช้งานครั้งแรกไม่ประสบผลสำเร็จ ก็มีรีวิว.. แต่ฉันก็ไม่ยอมแพ้...

เมื่อฉันย้ายเข้าอพาร์ทเมนต์ใหม่ ฉันติดตั้งพัดลมที่มีเช็ควาล์วบนฝากระโปรงแทบจะในทันที จำเป็นต้องใช้พัดลมเพื่อทำให้ห้องน้ำแห้งหลังอาบน้ำ จำเป็นต้องมีเช็ควาล์วเพื่อป้องกันไม่ให้กลิ่นแปลกปลอมจากเพื่อนบ้านเข้ามาในอพาร์ตเมนต์ (เมื่อพัดลมเงียบ) มันเกิดขึ้น. ท่อระบายอากาศทั้งหมดเป็นแบบแยกส่วน แต่เห็นได้ชัดว่าช่วยประหยัดซีเมนต์เมื่อวาง กลิ่นน่าจะลอดผ่านรอยแตกร้าวได้
ฉันมีตัวเลือกที่แตกต่างกันสำหรับแฟน ๆ มีแบบง่ายๆ บ้างมีตัวจับเวลา (ปรับช่วงเวลา) ดังในภาพ


นั่นคือสิ่งที่ฉันใช้มาจนถึงทุกวันนี้
ในกรณีนี้ (ที่ไม่มีพัดลมพร้อมตัวจับเวลา) ทุกอย่างสามารถทำได้ในระดับซอฟต์แวร์
เนื่องจากฉันอาศัยอยู่ในอพาร์ตเมนต์ "จอมปลวก" ที่เดียวสำหรับตากผ้าคือระเบียง อาจจะมืดในห้องน้ำ การอบแห้งต้องใช้ความชื้นต่ำหรือการไหลเวียนของอากาศ การปฏิบัติตามเงื่อนไขทั้งสองคือตัวเลือกที่ดีที่สุด แฟนควรจะแก้ไขปัญหานี้ได้แล้ว ตอนแรกฉันก็ทำแบบนั้น สิ่งสำคัญคืออย่าลืมปิดเครื่อง ในขณะที่พัดลมทำงานต้องเปิดหน้าต่างเล็กน้อย คุณไม่จำเป็นต้องเตือนฉันเกี่ยวกับปัญหาของโรงเรียนเรื่องสระว่ายน้ำและท่อสองท่อเหรอ? เพื่อให้อากาศหนีเข้าไปในเครื่องดูดควันได้จะต้องเข้าไปในอพาร์ทเมนต์จากที่ไหนสักแห่ง ผู้ที่มีหน้าต่างไม้และไม่ใช่พลาสติกจะไม่มีปัญหา รอยแตกก็พอแล้ว แต่ด้วยพลาสติก อพาร์ทเมนท์จึงกลายเป็นสวนขวด
นั่นคือตอนที่ฉันเริ่มคิดถึงการทำให้กระบวนการเป็นแบบอัตโนมัติ นี่คือเหตุผลที่ฉันสั่งเซ็นเซอร์
ฉันได้แบ่งปันประสบการณ์ที่น่าเศร้าในการนำแนวคิดของฉันไปปฏิบัติแล้ว นี่คือโมดูล มันไม่สามารถทำงานได้ตามหลักการ แต่มันจะไม่อยู่เฉยๆ และก็จะมีการใช้มัน


(แรงดันไฟฟ้า: 5V. โหลดสูงสุด: 10A 250V AC และ 10A 30V DC) ฉันใช้มันเป็นบล็อกรีเลย์ แค่นี้ก็เพียงพอแล้วสำหรับแฟนตัวยง
ฉันยังวาดไดอะแกรมของโมดูลด้วย จะไม่มีปัญหาการเชื่อมต่อ


ไฟ LED สีแดงแสดงว่ามีแรงดันไฟฟ้าอยู่ สีเขียว - การเปิดใช้งานรีเลย์ ฉันเปลี่ยนเซ็นเซอร์ที่ไม่มีประโยชน์ (เซ็นเซอร์ความชื้น ไม่มีอยู่แล้ว) ด้วยความต้านทาน 10 kOhm และยังเพิ่มความต้านทานอีกด้วย มันจะไปที่บล็อก "อัจฉริยะ" ทั้งสองถูกเน้นด้วยสีแดง ทั้งหมดนี้ควรขจัดความเข้าใจผิดที่อาจเกิดขึ้นได้ ท้ายที่สุดแล้วยูนิตรีเลย์นั้นใช้พลังงานจากแรงดันไฟฟ้า 5V และยูนิต "อัจฉริยะ" อยู่ที่ 3.3V บล็อกรีเลย์ถูกควบคุมโดยระดับต่ำ ระดับสูงจะปิดรีเลย์ (พัดลม) เฟิร์มแวร์คำนึงถึงสิ่งนี้ด้วย
วงจรนี้ใช้ตัวเปรียบเทียบที่ใช้ LM393 เดิมทีตัวต้านทานแบบทริมเมอร์มีจุดประสงค์เพื่อปรับเกณฑ์การทำงานของรีเลย์ความชื้น คุณอาจต้องบิดเล็กน้อย
สามารถใช้บล็อครีเลย์ธรรมดาได้ พวกเขามีไว้สำหรับขาย ฉันจะใช้สิ่งที่เหลืออยู่หลังจากความพยายามครั้งสุดท้ายที่ไม่สำเร็จ
ถึงเวลาดูว่าเซ็นเซอร์ AM2302 (DHT22) เข้ามาในรูปแบบใด ฉันสั่งสามอย่างพร้อมกัน ฉันคิดว่ามันไม่ได้จำกัดแค่ห้องน้ำเท่านั้น มีความคิดมากมายในหัวของฉัน ฉันจะหาเวลาและความปรารถนาที่จะนำไปใช้ได้ที่ไหน?


เซ็นเซอร์ถูกปิดผนึกไว้ในถุงป้องกันไฟฟ้าสถิต ทุกอย่างอยู่ในใจของฉัน การบัดกรีเรียบร้อย ฉันไม่มีข้อตำหนิเกี่ยวกับรูปลักษณ์ภายนอก แม้แต่กระดานก็ยังถูกล้าง


นี่คือสิ่งที่กล่าวไว้ในหน้าร้าน:

AM2302 โมดูลอุณหภูมิและความชื้นดิจิตอล Humicap เป็นสัญญาณเอาต์พุตดิจิตอลที่มีเซ็นเซอร์รวมอุณหภูมิและความชื้นที่ปรับเทียบแล้ว ใช้เทคโนโลยีการจับโมดูลดิจิตอลโดยเฉพาะและเทคโนโลยีเซ็นเซอร์อุณหภูมิและความชื้นเพื่อให้แน่ใจว่าผลิตภัณฑ์มีความน่าเชื่อถือสูงและมีเสถียรภาพในระยะยาวที่ยอดเยี่ยม เซ็นเซอร์ประกอบด้วยองค์ประกอบการตรวจจับความชื้นแบบคาปาซิทีฟและอุปกรณ์วัดอุณหภูมิที่มีความแม่นยำสูง และเชื่อมต่อกับไมโครคอนโทรลเลอร์ 8 บิตประสิทธิภาพสูง ดังนั้นผลิตภัณฑ์จึงมีคุณภาพดีเยี่ยม การตอบสนองที่รวดเร็ว ความสามารถในการป้องกันการรบกวน ต้นทุนสูง และข้อดีอื่นๆ ขนาดเล็กพิเศษ ใช้พลังงานต่ำ ระยะการส่งสัญญาณสูงสุด 20 เมตร ทำให้เป็นตัวเลือกที่ดีที่สุดสำหรับการใช้งานทุกประเภทและแม้แต่การใช้งานที่มีความต้องการมากที่สุด
ข้อมูลจำเพาะ:
ขนาด: 40x23มม
น้ำหนัก: 4กรัม
แรงดันไฟฟ้า: 5V
พอร์ต: บัสเดี่ยวสองทางดิจิทัล
ช่วงอุณหภูมิ: -40-80 °C ± 0.5 °C
ความชื้น: 20-90% RH ± 2% RH
แพลตฟอร์ม: Arduino, SCM
ในรายการรวมด้วย:
3 x เซนเซอร์ โมดูล
บนกระดานมีส่วนน้อยที่สุด เซนเซอร์แยกจากกันไม่ได้ ดังนั้นฉันจึงไม่ทำให้พวกมันพัง
ถึงเวลาลงธุรกิจแล้ว ฉันได้แสดงสิ่งที่ฉันจะใช้บางส่วนแล้ว ฉันจำเป็นต้องมีแหล่งจ่ายไฟ 5V ด้วย ฉันจะทำมันจากที่ชาร์จโทรศัพท์เก่า (ไม่จำเป็นอีกต่อไป)

ที่ชาร์จนี้ไม่มีขั้วต่อ USB มันเก่ามากแล้ว (ฉันแนะนำให้ใช้อันที่ใหม่กว่าพวกเขามีเอาต์พุต 5V) ดังนั้นเอาต์พุตจึงเป็น 7V ฉันต้องประสาน MC ของโคลง KREN5 ไม่มีอะไรซับซ้อนเกี่ยวกับเรื่องนี้ ใครก็ตามที่คุ้นเคยกับหัวแร้งจะรู้ดี และใครก็ตามที่ไม่ใช่เพื่อนก็อ่านหัวข้อนี้ไปโดยเปล่าประโยชน์


อย่ากลัวเกินไป ฉันทำชั่วคราวแล้ว หลังจากแก้ไขกลไกทุกอย่างจะดูดี บางทีฉันอาจจะเปลี่ยนที่ชาร์จด้วย ทุกอย่างขึ้นอยู่กับผลลัพธ์ที่ฉันไปถึงเส้นชัย ฉันจะติดตั้งในเครื่อง (ถาวร) หลังจาก “การทดสอบที่ครอบคลุม” คุณอาจต้องใช้ซอฟต์แวร์เวอร์ชันฤดูหนาว/ฤดูร้อน ลักษณะอุณหภูมิและความชื้นของอากาศในฤดูหนาว/ฤดูร้อนจะแตกต่างกัน
ฉันยังต้องการโมดูล WIFI จากรีวิวครั้งก่อนด้วย


สายแปลง (USB เป็น RS232 TTL UART) จะเป็นประโยชน์สำหรับการเขียนโปรแกรมโมดูล WIFI


บล็อกไดอะแกรมของความคิดของฉันดูเรียบง่าย


แต่แน่นอนว่ามีความแตกต่าง
สิ่งที่เหลืออยู่คือการสร้างโปรแกรมควบคุมพัดลม
มีเงื่อนไขหลายประการ:
1. พัดลมจะเปิดเมื่อมีความชื้นมากกว่า 68%
2. ระยะเวลาการทำงาน (ตั้งเวลา) 5 นาที
3. ถ่ายโอนข้อมูลอุณหภูมิและความชื้นผ่าน WIFI (เฉพาะกรณี)
4. บ่งชี้โหมด WIFI
หากเรามุ่งเน้นไปที่เงื่อนไขที่ 1 Arduino ที่ง่ายที่สุดก็เพียงพอแล้ว แต่ฉันมีบอร์ด Arduino เพียงอันเดียวและมีโมดูล WIFI สามตัว :)
สำหรับฉันโดยส่วนตัวแล้ว จุดที่ยากที่สุดคือการจัดทำโปรแกรม ซึ่งไม่ใช่หัวข้อของฉันเล็กน้อย (พูดง่ายๆ นะ) แต่ชีวิตดำเนินไปและบรรทุกผู้คนจำนวนมากขึ้นเรื่อย ๆ ฉันจะสำรวจพื้นที่อันกว้างใหญ่ของ Arduino โดยใช้ตัวอย่างของเซ็นเซอร์ความชื้น DHT22 และโมดูล WIFI แต่ถ้าฉันทำสำเร็จคุณก็ทำได้เช่นกัน
ก่อนอื่น ข้อมูลบางอย่างสำหรับหุ่นจำลองอย่างฉัน
โปรแกรม Arduino IDE มีการตั้งค่าไม่เพียงพอสำหรับบอร์ดที่ฉันจะใช้ เช่น ต้องเพิ่ม ESP8266

การเพิ่มส่วนประกอบโดยใช้ ESP8266 เป็นตัวอย่าง

ก่อนอื่น ฉันดาวน์โหลดและติดตั้ง Arduino IDE บนคอมพิวเตอร์ของฉัน จากนั้นฉันก็เปิดโปรแกรม
ไฟล์ → การตั้งค่า → ใส่ลิงค์ในการเพิ่ม ลิงค์→คลิกตกลง ลิงค์:



จำเป็นต้องมีการเชื่อมต่ออินเทอร์เน็ต อย่างจำเป็น!
จากนั้นฉันก็ไปหาผู้จัดการบอร์ด
เครื่องมือ→บอร์ด:…→ผู้จัดการบอร์ด


ฉันพบโมดูลของฉัน ฉันเลือกเวอร์ชันล่าสุด ฉันคลิกติดตั้ง


โปรแกรม Arduino IDE ที่ดาวน์โหลดมายังขาดไลบรารีเซ็นเซอร์ ตัวอย่างเช่น จะต้องเพิ่มไลบรารี DHT22 ด้วย

การเชื่อมต่อไลบรารีโดยใช้ตัวอย่างเซ็นเซอร์ DHT22

ก่อนอื่น ฉันดาวน์โหลดไฟล์เก็บถาวรเช่น DHT.zip จากอินเทอร์เน็ต การค้นหาก็ไม่ใช่ปัญหา
จากนั้นฉันก็เปิดโปรแกรม Arduino IDE
Sketch → รวมไลบรารี → เพิ่มไลบรารี zip


แท็บลักษณะนี้จะปรากฏขึ้น


ฉันระบุสถานที่จัดเก็บ…เปิด
เชื่อมต่อห้องสมุดแล้ว


เหลือเวลาให้ทำอีกนิดหน่อย :)
แผนภาพการเชื่อมต่อสำหรับเซ็นเซอร์ความชื้นอาจแตกต่างกันไป ของฉันมาเป็นโมดูลที่มีพินสามตัวและตัวต้านทานติดตั้งอยู่บนบอร์ดแล้ว

และสุดท้ายก็เติมแบบร่าง

เติมร่าง

ฉันเปิดภาพร่างที่เสร็จแล้ว ในกรณีของฉัน “WiFi-DHT22_AleksPoroshin68.ino.


Arduino IDE เริ่มทำงานโดยอัตโนมัติ
จากนั้นฉันก็เชื่อมต่อโปรแกรมเมอร์ไปที่เครื่องมือและเชื่อมต่อพอร์ต Com สิ่งที่คุณเชื่อมต่อจะถูกไฮไลต์ ฉันจะเปิดใช้งานมัน เน็ตบุ๊กของฉันมีสามอัน: com6, com8 และ com10


ฉันกำลังศึกษาเฟิร์มแวร์ คุณสามารถเปลี่ยนชื่อการเข้าถึงและรหัสผ่านได้

ฉันกดปุ่มเพื่อดาวน์โหลด


ร่างจะถูกรวบรวม นานพอแล้ว.


ในเวลานี้ คุณต้องกดรีเซ็ตบนวงจรโมดูลที่ประกอบไว้

ในกรณีนี้ GPIO 00 จะเป็นศูนย์
นี่คือภาพร่าง:
#รวม #รวม #รวม #รวม #รวม "DHT.h" #กำหนด DHTPIN 4 #กำหนด DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); ลอย dhtTemp = น่าน; ลอย dhtHumidity = NAN; int ledPin = 12; //GPIO 12 /* ตั้งค่าเหล่านี้เป็นข้อมูลประจำตัวที่คุณต้องการ */ const char *ssid = "AleksPoroshin"; const char *รหัสผ่าน = "12345678"; เซิร์ฟเวอร์ ESP8266WebServer (80); /* เป็นเพียงข้อความทดสอบเล็กน้อย ไปที่ http://192.168.4.1 ในเว็บเบราว์เซอร์ * เชื่อมต่อกับจุดเข้าใช้งานนี้เพื่อดู */ ถือเป็นโมฆะ handleRoot() ( String s = "\ร\n อีเอสพี201";s += " ";s += " "; //s += "สถานะ - การดำเนินการ - การกำหนดค่า"; s += "

โมดูล ESP201

"; s += " "; if (isnan(dhtTemp)) s += " Temperature: Reading error"; else ( s += " Temperature: "; s += dhtTemp; s += " C"; ) if ( isnan (dhtHumidity)) s += "ความชื้น: ข้อผิดพลาดในการอ่าน"; else ( s += "ความชื้น: "; s += dhtHumidity; s += " %"; ) if(digitalRead(ledPin) == HIGH) s + = "ฮูด: ปิด"; else s += "ฮูด: เปิด";"; server.send(200, "text/html", s); ) การตั้งค่าเป็นโมฆะ() ( ล่าช้า (1,000); Serial.begin(115200); Serial.println(); Serial.print("การกำหนดค่าจุดเชื่อมต่อ .."); /* คุณสามารถลบพารามิเตอร์รหัสผ่านได้หากคุณต้องการให้ AP เปิด */ WiFi.softAP(ssid, รหัสผ่าน); IPAddress myIP = WiFi.softAPIP(); Serial.print("ที่อยู่ IP ของ AP : "); Serial.println(myIP); server.on("/", handleRoot); server.begin(); Serial.println("เซิร์ฟเวอร์ HTTP เริ่มต้นแล้ว"); dht.begin(); Serial.println(" DHT22 เริ่มต้นสำเร็จ"); pinMode(ledPin, OUTPUT); ) void loop() ( getDHT(); server.handleClient(); ) void getDHT() ( dhtTemp = dht.readTemperature(); dhtHumidity = dht.readHumidity() +5; ถ้า(dhtHumidity< 68) { digitalWrite(ledPin, HIGH); Serial.println("ledPin HIGH"); } else { digitalWrite(ledPin, LOW); Serial.println("ledPin LOW"); } }
อย่าดุมากเกินไป ฉันแค่กำลังเรียนรู้
หลังจากอัพโหลดภาพร่างแล้ว ฉันเชื่อมต่อ GPIO กับ +3.3V เพื่อยืนยันการเขียนโปรแกรม จากนั้นฉันก็ปิดมัน เฟิร์มแวร์ถูกอัพโหลดแล้ว


ฉันกำลังประกอบวงจรบนเขียงหั่นขนม ฉันกำลังตรวจสอบทุกอย่าง ได้ผล แต่ไม่ใช่ทุกอย่างจะดีเท่าที่เราต้องการ ในช่วงที่ฉันต้องการ เซ็นเซอร์ของจีนประเมินค่าการอ่านต่ำไป 5-6%


ฉันมีความมั่นใจในตัวคนตัดไม้ชาวเยอรมันมากขึ้น และราคาก็สูงกว่าหลายสิบเท่า และที่สำคัญเขาผ่านการตรวจสอบแล้ว
ฉันได้แก้ไขโปรแกรม (เพิ่ม 5 หน่วย) ฉันยอมรับว่าสิ่งนี้เป็นสิ่งที่ผิด แต่ในช่วง 40-70% จะแสดงได้อย่างแม่นยำ มันจะถูกต้องกว่าถ้าลบคุณสมบัติและแก้ไขไลบรารี ฉันไม่พร้อมสำหรับสิ่งนี้ :) เซ็นเซอร์อื่นๆ ก็โกหกเช่นกัน แม้ว่าทุกคนจะแสดงให้เห็นประมาณเดียวกัน

นี่คือลักษณะของหน้าอินเทอร์เน็ตหากคุณเชื่อมต่อกับโมดูล WIFI ของฉัน:


รหัสผ่านและลักษณะที่ปรากฏจะถูกระบุไว้ในแบบร่าง
การสลับเกิดขึ้นที่ความชื้น 68% ทุกอย่างชัดเจน.


แต่มีข้อแม้ประการหนึ่ง และก็ไม่สามารถละเลยได้ ที่ขอบความชื้น 68% พัดลมสามารถหมุนเวียนเปิดและปิดได้ เพื่อแก้ปัญหานี้คุณต้องมีตัวจับเวลา ฉันมีพัดลมพร้อมตัวจับเวลา เหล่านั้น. ไม่มีปัญหา. ผู้ที่มีแฟนตัวยงจะต้องแก้ไขปัญหานี้ในระดับซอฟต์แวร์
งานต่อไปของฉันคือประกอบทั้งหมดนี้ตามแผนภาพ แต่ไม่ใช่บนเขียงหั่นขนม และทดสอบภายในหนึ่งเดือน การเปลี่ยนแปลงทั้งหมดสามารถทำได้ระหว่างการดำเนินการ จะทำอย่างไรและจะแทรกได้ที่ไหนฉันเขียนทุกอย่าง
คำไม่กี่คำเกี่ยวกับการติดตั้งเซ็นเซอร์ ฉันไม่แนะนำให้ติดเข้าไปในท่อระบายอากาศ เหตุผลง่ายๆ แม้แต่ในอพาร์ทเมนต์ที่สะอาดที่สุดและได้รับการดูแลอย่างดีที่สุดก็ยังมีฝุ่นซึ่งเมื่อเปิดพัดลมก็จะรีบไปที่นั่น (ไปที่ท่อระบายน้ำของสัตวแพทย์) แต่เมื่อปีที่แล้วฉันเอาพัดลมออกมาทำความสะอาดอย่างทั่วถึง


เพื่อไม่ให้เปลี่ยนเซ็นเซอร์บ่อยครั้งเนื่องจากความเสียหาย ฉันแนะนำให้หาสถานที่ที่เหมาะสมกว่าสำหรับเซ็นเซอร์ในบริเวณใกล้เคียง นอกจากนี้คุณยังสามารถห่อด้วยผ้าไม่ทอหรืออะไรที่คล้ายกันเพื่อป้องกันฝุ่น และคุณจะมีความสุข
ฉันลืมบอกไปเลยว่าถ้าคุณต้องการตั้งค่า "ค่าสัมประสิทธิ์" การควบคุมความชื้นด้วยตัวเอง อย่างน้อยก็ต้องมีความรู้เล็กน้อย หากคุณไม่มีอุปกรณ์เช่นนี้ที่บ้าน...


หากไม่มีพวกเขาจะเป็นเรื่องยากมากสำหรับคุณที่จะทำอะไรในหัวข้อนี้
นั่นคือทั้งหมดที่
ทุกคนตัดสินใจด้วยตนเองว่าจะใช้ข้อมูลอย่างเหมาะสมจากบทวิจารณ์ของฉันได้อย่างไร หากมีอะไรไม่ชัดเจนให้ถามคำถาม ฉันหวังว่ามันจะช่วยใครสักคนได้อย่างน้อย บางทีอาจมีคนต้องการช่วยฉัน ฉันจะขอบคุณมาก
โชคดีนะทุกคน!
การตรวจสอบการทำงาน:


ยังมีต่อ…

สินค้าจัดทำไว้เพื่อเขียนรีวิวจากทางร้าน บทวิจารณ์นี้เผยแพร่ตามข้อ 18 ของกฎของไซต์

ฉันกำลังวางแผนที่จะซื้อ +51 เพิ่มในรายการโปรด ฉันชอบรีวิว +26 +65

ระบบการจัดการสาธารณูปโภคภายในบ้านแบบครบวงจรหรือที่เรียกว่า "บ้านอัจฉริยะ" กำลังได้รับความนิยมเพิ่มมากขึ้น การใช้งานระบบเหล่านี้อย่างแพร่หลายถูกขัดขวางโดยความเพียงพอ ส่วนประกอบราคาสูงองค์ประกอบและงานติดตั้ง บ้านอัจฉริยะที่ใช้ Arduino เป็นโซลูชันที่ทุกคนที่มีความรู้ด้านอิเล็กทรอนิกส์อย่างน้อยก็สามารถเข้าถึงได้

Arduino คืออะไร

Arduino เป็นแบรนด์ที่พวกเขาผลิต ฮาร์ดแวร์และซอฟต์แวร์สำหรับการสร้างระบบอัตโนมัติและระบบควบคุมระยะไกลที่เป็นอิสระ

โดยพื้นฐานแล้ว นี่คือตัวสร้างแบบโมดูลาร์ที่มีความสามารถมากมาย ฮาร์ดแวร์ Arduino ประกอบด้วยแผงวงจรพิมพ์หลายประเภทซึ่งมีเซ็นเซอร์ แอคชูเอเตอร์ และการ์ดเอ็กซ์แพนชันต่างๆ จัดเรียงไว้ แกนหลักของระบบคือ บอร์ดที่มีไมโครคอนโทรลเลอร์แบบตั้งโปรแกรมได้ของระดับความซับซ้อนที่แตกต่างกันตั้งแต่ Arduino Pro Mini ไปจนถึง Arduino Mega การ์ดเอ็กซ์แพนชันช่วยให้คุณใช้อุปกรณ์ภายนอกจำนวนมากได้

แผงวงจรพิมพ์ขนาดเล็กประกอบด้วยไมโครคอนโทรลเลอร์, องค์ประกอบแยกบางส่วน, ควอตซ์และตัวเชื่อมต่อประเภทต่าง ๆ รวมถึงพินแนวตั้งด้วยความช่วยเหลือซึ่งประกอบโครงสร้างชั้นวางด้วยการเพิ่มการ์ดเอ็กซ์แพนชัน ชิปตระกูล Atmega ใช้เป็นไมโครคอนโทรลเลอร์ ประเภทของคอนโทรลเลอร์จะกำหนดการทำงานของบอร์ด ขึ้นอยู่กับจำนวนอินพุตและเอาต์พุต

โมดูลที่แพร่หลายเช่นนี้อาร์ดูโน่ อูโน่ด้วยไมโครคอนโทรลเลอร์แอตเมก้า328 มีลักษณะดังต่อไปนี้:

  • อินพุต/เอาต์พุตดิจิตอล – 14
  • ในจำนวนนี้มี 6 ตัวเป็น PWM
  • อินพุตแบบอะนาล็อก – 6
  • หน่วยความจำ – 32 กิโลไบต์
  • แหล่งจ่ายไฟ – 7-12 โวลต์
  • ราคา – 950 รูเบิล

ผู้ติดต่อแบบดิจิทัลสามารถตั้งโปรแกรมให้ทำหน้าที่เฉพาะได้ อาจเป็นอินพุตหรือเอาต์พุตก็ได้ อินพุต/เอาท์พุตเหล่านี้สามารถทำงานร่วมกับอุปกรณ์ที่ต้องการการทำงานเพียงสองระดับ นี่คือระดับตรรกะหรือระดับที่ใกล้กับแรงดันไฟฟ้าและระดับต่ำแบบลอจิคัลซึ่งสอดคล้องกับศูนย์ เซ็นเซอร์สองระดับสามารถเชื่อมต่อกับอินพุตดิจิตอลได้ ซึ่งรวมถึงคู่สวิตช์แม่เหล็ก-กก เซ็นเซอร์นี้ตอบสนองต่อการเปิดประตูและหน้าต่าง เซ็นเซอร์รักษาความปลอดภัยและสัญญาณเตือนไฟไหม้หลายตัวทำงานบนหลักการนี้

เอาต์พุตดิจิตอลสามารถควบคุมการทำงานของรีเลย์แม่เหล็กไฟฟ้าซึ่งจะเปิดและปิดปลั๊กไฟที่เชื่อมต่อกับเครื่องใช้ในครัวเรือนต่างๆ อันชาญฉลาดจาก Arduino จะมีราคาถูกกว่าชุดอุตสาหกรรมสำเร็จรูปมาก

อินพุตแบบอะนาล็อกผ่านตัวแปลงแอนะล็อกเป็นดิจิทัลจะส่งข้อมูลเกี่ยวกับสถานะของเซ็นเซอร์อุณหภูมิ เซ็นเซอร์แสง และอุปกรณ์อื่นๆ ไปยังตัวควบคุม ด้วยการเปรียบเทียบการอ่านเซ็นเซอร์กับคำสั่งที่เก็บไว้ในหน่วยความจำ หน่วยกลางของระบบจะสามารถควบคุมอุปกรณ์ที่ต้องการการเปลี่ยนแปลงพลังงานได้อย่างราบรื่น เอาต์พุต 6 ช่องเชื่อมต่อกับโมดูเลเตอร์ความกว้างพัลส์ช่วยให้ควบคุมกำลังโหลดได้อย่างราบรื่น เช่น ปรับความสว่างของหลอดไฟ ปรับอุณหภูมิฮีตเตอร์ หรือควบคุมความเร็วของมอเตอร์ไฟฟ้า

ที่สุด บอร์ดทรงพลังและมัลติฟังก์ชั่นของสายนี้คือ Arduino Mega ติดตั้งบนแผงวงจรพิมพ์ ตัวควบคุมที่ เมกะ 2560 , องค์ประกอบแยก, พอร์ต USB สำหรับเชื่อมต่อพลังงาน บอร์ดนี้มีพินสากล 54 พินที่สามารถตั้งโปรแกรมให้ทำหน้าที่ I/O ได้ 14 รายการสามารถควบคุมอุปกรณ์อะนาล็อกโดยใช้การปรับความกว้างพัลส์ อินพุตแบบอะนาล็อก 16 ช่องได้รับการออกแบบเพื่อเชื่อมต่ออุปกรณ์อะนาล็อกใด ๆ

คณะกรรมการควบคุม อาร์ดูโน่ เมก้าราคาประมาณ 1,500 รูเบิล วิธีที่ง่ายที่สุดในการเขียนโปรแกรมคือการใช้คอมพิวเตอร์ส่วนบุคคลผ่านพอร์ต USB

โมดูลอุปกรณ์ต่อพ่วงสำหรับ Arduino

บอร์ดควบคุมเป็นแกนหลักของระบบ แต่คุณไม่สามารถเชื่อมต่ออุปกรณ์ใดๆ เข้ากับบอร์ดได้ เอาต์พุตมีความจุโหลดน้อยและมีกระแสไฟฟ้าจำกัด ในการจัดระบบควบคุมเครื่องใช้ในครัวเรือน คุณจะต้องมีโมดูลพลังงานภายนอก อุปกรณ์สื่อสาร และอุปกรณ์อื่น ๆ นี่ไม่ใช่ปัญหาเนื่องจากมีโมดูลต่อพ่วงจำนวนมากที่ออกแบบมาสำหรับคอนโทรลเลอร์ Arduino

นี่เป็นเพียงบางส่วนเท่านั้น:

  • เครื่องวิเคราะห์ก๊าซ – MQ-2
  • เซนเซอร์ตรวจจับแสง – 2CH-Light-2
  • เซ็นเซอร์อุณหภูมิภายนอก – DS18B20-PL
  • เซ็นเซอร์อุณหภูมิและความชื้นห้อง – DHT-11
  • ตัวขับมอเตอร์ – L298N, L9110
  • โมดูลรีเลย์ – 1ch5V, 4ch5V
  • โมดูลควบคุมระยะไกล IC2262/2272

เซ็นเซอร์ที่ตรวจจับการรั่วไหลของก๊าซในห้องจะตอบสนองต่อโพรเพนและบิวเทนซึ่งเป็นส่วนประกอบของก๊าซในครัวเรือน โมดูลนี้มีการปรับความไวและเอาต์พุตอนาล็อก/ดิจิตอล เซ็นเซอร์วัดแสงสามารถเป็นส่วนหนึ่งของระบบควบคุมแสงอัตโนมัติได้ ประกอบด้วยสองช่องสัญญาณอิสระพร้อมการปรับความไวของแต่ละบุคคล เซ็นเซอร์อุณหภูมิภายนอกได้รับการออกแบบให้ทำงานที่อุณหภูมิตั้งแต่ -55 ถึง +125 องศา เซ็นเซอร์อุณหภูมิและความชื้นห้องได้รับการออกแบบ ช่วงอุณหภูมิตั้งแต่ 0 ถึง +55 0 C และความชื้นตั้งแต่ 20 ถึง 90%

เนื่องจากแรงดันไฟฟ้าของโมดูล Arduino อยู่ระหว่าง 7 ถึง 12 โวลต์ เซ็นเซอร์มาตรฐานใดๆ ที่มีระดับการทำงานเดียวกันจึงสามารถใช้เพื่อจัดระเบียบระบบรักษาความปลอดภัยหรือสัญญาณเตือนไฟไหม้ได้

ไดรเวอร์มอเตอร์ช่วยให้คุณสามารถควบคุมมอเตอร์เฟสเดียว สองเฟส สี่เฟส และสเต็ปเปอร์ได้ ด้วยความช่วยเหลือของอุปกรณ์ดังกล่าวคุณสามารถเปิดและปิดมู่ลี่หรือผ้าม่านได้ เซอร์โวไดรฟ์ที่เชื่อมต่อกับไดรเวอร์ช่วยให้คุณสามารถควบคุมการไหลของสารหล่อเย็นในหม้อน้ำทำความร้อนได้ กุญแจรีเลย์เป็นสิ่งที่ขาดไม่ได้ในระบบสมาร์ทโฮม ควบคุมโดยหน่วยลอจิคัลศักย์ +5 โวลต์ รีเลย์อนุญาตให้สลับโหลดในวงจร AC สูงถึง 10 แอมแปร์ที่แรงดันไฟฟ้าสูงถึง 250 โวลต์

สามารถใช้เพื่อเปิดและปิดเต้ารับไฟฟ้า ปั๊มไฟฟ้า และระบบอื่นๆ

โมดูลรีโมทคอนโทรลประกอบด้วยรีโมทคอนโทรลและอุปกรณ์รับสัญญาณ รีโมทคอนโทรลมีปุ่มสี่ปุ่มและส่งคำสั่งไปยังชุดรับสัญญาณในระยะไกลสูงสุด 100 เมตร โมดูลต่อพ่วงทั้งหมดมีแรงดันไฟฟ้าเท่ากัน และเข้ากันได้กับไมโครคอนโทรลเลอร์ Arduino ทุกรุ่น

การจัดระบบระบบสมาร์ทโฮม

หากไม่มีทักษะความรู้เกี่ยวกับไดอะแกรมวงจรและพื้นฐานทางอิเล็กทรอนิกส์บางอย่าง จะเป็นการดีกว่าที่จะไม่ใช้งานระบบ "สมาร์ทโฮม" อย่างเต็มรูปแบบ

การเขียนโปรแกรม ไมโครคอนโทรลเลอร์ของสาย Arduinoดำเนินการในภาษา C/C++

ขั้นแรกคุณสามารถเขียนโปรแกรมง่ายๆ ที่สามารถเปิดและปิด LED หรือควบคุมการทำงานของมอเตอร์ไมโครไฟฟ้าได้ มีตัวอย่างมากมายของโปรแกรมดังกล่าว พวกเขาใช้ตัวดำเนินการง่ายๆ เช่น if, while, then และอื่นๆ พวกเขาอนุญาตให้แม้แต่เด็กนักเรียนเขียนโปรแกรมได้ เมื่อโปรแกรมแรกทำงานอย่างถูกต้อง คุณสามารถลองประกอบอุปกรณ์ที่ซับซ้อนมากขึ้นซึ่งจะใช้เอาต์พุต PWM เพื่อการควบคุมแสงที่ราบรื่น

ในการสร้าง "บ้านอัจฉริยะ" โดยใช้ Arduino ด้วยมือของคุณเอง คุณต้องจัดทำโครงการทางเทคนิคซึ่งจะระบุจำนวนเซ็นเซอร์และแอคชูเอเตอร์สำหรับแต่ละห้อง คุณสามารถเริ่มต้นด้วยห้องหนึ่งที่จะใช้งานฟังก์ชันง่ายๆ บางอย่าง บางส่วนจะดำเนินการตามสัญญาณจากเซ็นเซอร์ภายนอก และบางส่วนจะขึ้นอยู่กับสัญญาณจับเวลา เมื่อมีคนลุกขึ้นไปทำงานในตอนเช้า ตัวควบคุม Arduino จะเปิดกาต้มน้ำไฟฟ้าหรือเครื่องชงกาแฟตามสัญญาณจับเวลา หากภายนอกมืดซึ่งเซ็นเซอร์ภายนอกตรวจพบ โคมไฟในห้องจะค่อยๆ สว่างขึ้น สามารถตั้งอุณหภูมิห้องที่สะดวกสบายสำหรับทั้งการนอนหลับและตื่นนอนได้

สำหรับฟังก์ชันจำนวนเล็กน้อย ไมโครคอนโทรลเลอร์ Arduino Uno และชุดโมดูลต่อพ่วงจะเหมาะสม

ในการควบคุมเครื่องใช้ในครัวเรือน คุณจะต้องมีกุญแจรีเลย์สำหรับเปิดและปิดเต้ารับไฟฟ้า ในการควบคุมแสงคุณจะต้องมีเครื่องตรวจจับความเคลื่อนไหว หากมีการติดตั้งระบบอัจฉริยะในห้องครัว จำเป็นต้องเปิดใช้งานเครื่องดูดควัน เซ็นเซอร์ตรวจจับก๊าซรั่วในครัวเรือน และเซ็นเซอร์ตรวจจับน้ำรั่วโดยอัตโนมัติ เนื่องจากองค์ประกอบสัญญาณแจ้งเตือนเหตุเพลิงไหม้จึงต้องติดตั้งเครื่องตรวจจับควันไว้ในห้อง

บทสรุป

คอนโทรลเลอร์ Arduino จะช่วยให้คุณทำโปรเจ็กต์บ้านอัจฉริยะให้เสร็จสิ้นได้ในจำนวนที่ค่อนข้างน้อย หากคุณคำนวณต้นทุนทั้งหมดในการเตรียมอพาร์ทเมนต์สามห้องจำนวนเงินไม่น่าจะเกิน 30-40,000 รูเบิล หากคุณลดจำนวนฟังก์ชันลง งบประมาณก็จะยิ่งน้อยลงไปอีก

สวัสดีตอนบ่าย วันนี้ฉันจะแบ่งปันคำแนะนำในการทำนาฬิกาด้วยเทอร์โมมิเตอร์ในห้อง( นาฬิกา Arduino DIY- นาฬิกาทำงานบน Arduino UNO หน้าจอกราฟิก WG12864B ใช้เพื่อแสดงเวลาและอุณหภูมิ เป็นเซ็นเซอร์อุณหภูมิ - ds18b20 ต่างจากนาฬิกาอื่น ๆ ส่วนใหญ่ฉันจะไม่ใช้ RTS (นาฬิกาเรียลไทม์) แต่จะพยายามทำโดยไม่มีโมดูลเพิ่มเติมนี้

วงจร Arduino มีความโดดเด่นด้วยความเรียบง่าย และใครๆ ก็สามารถเริ่มเรียนรู้ Arduino ได้ คุณสามารถอ่านเกี่ยวกับวิธีเชื่อมต่อไลบรารีและแฟลช Arduino ได้ในบทความของเรา

มาเริ่มกันเลย.

เพื่อสร้างนาฬิกานี้เราจะต้อง:

Arduino UNO (หรือบอร์ดที่รองรับ Arduino อื่น ๆ )
- หน้าจอกราฟิก WG12864B
- เซ็นเซอร์อุณหภูมิ ds18b20
- ตัวต้านทาน 4.7 คอม 0.25 W
- ตัวต้านทาน 100 โอห์ม 0.25 W
- ช่องใส่แบตเตอรี่สำหรับแบตเตอรี่ AA จำนวน 4 ก้อน
- กล่องจับคู่
- ไฟล์ละเอียด
- ยาทาเล็บ (สีดำหรือสีทาตัว)
- พลาสติกหรือกระดาษแข็งบางๆ
- เทปพันสายไฟ
- การต่อสายไฟ
- แผงวงจร
- ปุ่ม
- หัวแร้ง
- บัดกรีขัดสน
- เทปสองหน้า

การเตรียมหน้าจอกราฟิก
เมื่อมองแวบแรก การเชื่อมต่อหน้าจอทำให้เกิดปัญหาและความยากลำบากมากมาย แต่ถ้าคุณเข้าใจประเภทของพวกเขาก่อน มันจะง่ายขึ้นและชัดเจนขึ้นมาก มีหน้าจอหลายประเภทและหลายประเภทบนคอนโทรลเลอร์ ks0107/ks0108 โดยทั่วไปหน้าจอทั้งหมดจะแบ่งออกเป็น 4 ประเภท:
ตัวเลือก A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
ตัวเลือก B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ แสดง AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG12864J4, 4F, 2, 12864J-1
ตัวเลือก C: เซินเจิ้น Jinghua Displays Co Ltd. JM12864
ตัวเลือก D: Wintek-Cascades WD-G1906G, Wintek - GEN/WD-G1906G/KS0108B, Wintek/WD-G1906G/S6B0108A, TECDIS/Y19061/HD61202, Varitronix/MGLS19264/HD61202

รายการยังไม่ครบนะครับ มีเยอะมาก สิ่งที่พบได้บ่อยที่สุดและในความคิดของฉันสะดวกคือ WG12864B3 V2.0 จอแสดงผลสามารถเชื่อมต่อกับ Arduino ผ่านทางพอร์ตอนุกรมหรือพอร์ตขนาน เมื่อใช้กับ Arduino UNO จะเป็นการดีกว่าถ้าเลือกการเชื่อมต่อผ่านพอร์ตอนุกรม - จากนั้นเราจะต้องใช้ไมโครคอนโทรลเลอร์เพียง 3 เอาต์พุตแทนที่จะเป็นอย่างน้อย 13 บรรทัดเมื่อเชื่อมต่อผ่านพอร์ตขนาน ทุกอย่างเชื่อมโยงกันค่อนข้างง่าย มีความแตกต่างอีกอย่างหนึ่ง: คุณจะพบตัวเลือกการแสดงผลสองตัวเลือกลดราคาโดยมีโพเทนชิออมิเตอร์ในตัว (เพื่อปรับคอนทราสต์) และไม่มี ฉันเลือกแล้วและฉันแนะนำให้คุณทำเช่นเดียวกันกับอันที่มีอยู่แล้วภายใน


ซึ่งจะช่วยลดจำนวนชิ้นส่วนและเวลาในการบัดกรี นอกจากนี้ยังควรติดตั้งตัวต้านทานจำกัดกระแส 100 โอห์มสำหรับไฟแบ็คไลท์ การต่อไฟ 5 โวลต์โดยตรงอาจมีความเสี่ยงที่ไฟแบ็คไลท์จะไหม้ได้
WG12864B – Arduino UNO
1 (GND) - GND
2 (วีซีซี) - +5V
4 (อาร์เอส) – 10
5 (ขวา/ซ้าย) – 11
6 (จ) – 13
15 (PSB) – GND
19 (BLA) – ผ่านตัวต้านทาน - +5V
20 (BLK) – GND

วิธีที่สะดวกที่สุดคือการประกอบทุกอย่างด้านหลังหน้าจอแล้วดึงสายไฟ 5 เส้นออกมาเชื่อมต่อกับ Arduino UNO ผลลัพธ์ที่ได้ควรมีลักษณะดังนี้:


สำหรับผู้ที่ยังเลือกการเชื่อมต่อแบบขนานผมจะจัดเตรียมตารางการเชื่อมต่อไว้ให้

และแผนภาพสำหรับหน้าจอตัวเลือก B:



สามารถเชื่อมต่อเซ็นเซอร์หลายตัวเข้ากับสายสื่อสารเส้นเดียวได้ หนึ่งอันก็เพียงพอแล้วสำหรับนาฬิกาของเรา เราเชื่อมต่อสายไฟจากพิน "DQ" ของ ds18b20 กับ "pin 5" ของ Arduino UNO

เตรียมบอร์ดด้วยปุ่มต่างๆ
ในการตั้งเวลาและวันที่บนนาฬิกา เราจะใช้ปุ่มสามปุ่ม เพื่อความสะดวกเราประสานปุ่มสามปุ่มบนแผงวงจรและถอดสายไฟออก


เราเชื่อมต่อดังนี้: เราเชื่อมต่อสายไฟทั่วไปกับปุ่มทั้งสามปุ่มเข้ากับ "GND" ของ Arduino ปุ่มแรกซึ่งใช้เข้าสู่โหมดการตั้งค่าเวลาและสลับตามเวลาและวันที่เชื่อมต่อกับ "พิน 2" ปุ่มที่สองสำหรับเพิ่มค่าคือไปที่ "พิน 3" และปุ่มที่สามคือปุ่มสำหรับลดค่าคือ "พิน 4"

วางมันทั้งหมดเข้าด้วยกัน.
เพื่อหลีกเลี่ยงการลัดวงจร ควรหุ้มฉนวนหน้าจอ เราพันมันเป็นวงกลมด้วยเทปไฟฟ้าและที่ด้านหลังเราติดแถบวัสดุฉนวนด้วยเทปสองหน้าตัดตามขนาด กระดาษแข็งหนาหรือพลาสติกบางก็ใช้ได้ ฉันใช้พลาสติกจากแท็บเล็ตสำหรับกระดาษ ผลลัพธ์จะเป็นดังนี้:


ด้านหน้าของหน้าจอตามขอบเราติดเทปโฟมสองหน้าโดยควรเป็นสีดำ


เชื่อมต่อหน้าจอกับ Arduino:


เราเชื่อมต่อเครื่องหมายบวกจากช่องใส่แบตเตอรี่เข้ากับ "VIN" ของ Arduino เครื่องหมายลบกับ "GND" เราวางไว้ด้านหลัง Arduino ก่อนติดตั้งในกล่องอย่าลืมเชื่อมต่อเซ็นเซอร์อุณหภูมิและบอร์ดด้วยปุ่มต่างๆ


การเตรียมและการกรอกแบบร่าง
เซ็นเซอร์อุณหภูมิต้องใช้ไลบรารี OneWire

เอาต์พุตไปที่หน้าจอดำเนินการผ่านไลบรารี U8glib:

หากต้องการแก้ไขและเติมภาพสเก็ตช์ คุณต้องติดตั้งไลบรารีทั้งสองนี้ มีสองวิธีในการทำเช่นนี้ เพียงแตกไฟล์เก็บถาวรเหล่านี้และวางไฟล์ที่คลายซิปไว้ในโฟลเดอร์ "ไลบรารี" ที่อยู่ในโฟลเดอร์การติดตั้ง Arduino IDE หรือตัวเลือกที่สองคือการติดตั้งไลบรารีโดยตรงในสภาพแวดล้อมการเขียนโปรแกรม โดยไม่ต้องแตกไฟล์เก็บถาวรที่ดาวน์โหลดมาใน Arduino IDE ให้เลือกเมนู Sketch - เชื่อมต่อไลบรารี ที่ด้านบนสุดของรายการแบบเลื่อนลง ให้เลือก “ไลบรารี Add.Zip” ในกล่องโต้ตอบที่ปรากฏขึ้น ให้เลือกไลบรารีที่คุณต้องการเพิ่ม เปิดเมนู Sketch อีกครั้ง - เชื่อมต่อไลบรารี ที่ด้านล่างสุดของรายการแบบเลื่อนลง คุณจะเห็นไลบรารีใหม่ ตอนนี้ไลบรารี่สามารถนำไปใช้ในโปรแกรมได้แล้ว อย่าลืมรีสตาร์ท Arduino IDE หลังจากทั้งหมดนี้

เซ็นเซอร์วัดอุณหภูมิทำงานโดยใช้โปรโตคอล One Wire และมีที่อยู่เฉพาะสำหรับแต่ละอุปกรณ์ - รหัส 64 บิต การค้นหารหัสนี้ทุกครั้งไม่เป็นประโยชน์ ดังนั้นก่อนอื่นคุณต้องเชื่อมต่อเซ็นเซอร์เข้ากับ Arduino จากนั้นอัปโหลดภาพร่างที่พบในเมนู ไฟล์ – ตัวอย่าง – อุณหภูมิดัลลัส – OneWireSearch จากนั้นเปิดเครื่องมือ - Port Monitor Arduino จะต้องค้นหาเซ็นเซอร์ของเรา เขียนที่อยู่และการอ่านอุณหภูมิปัจจุบัน เราคัดลอกหรือเพียงจดที่อยู่ของเซ็นเซอร์ของเรา เปิดภาพร่าง Arduino_WG12864B_Term มองหาบรรทัด:

Byte addr=(0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97); // ที่อยู่ของเซ็นเซอร์ของฉัน

เราเขียนที่อยู่ของเซ็นเซอร์ของคุณไว้ระหว่างเครื่องหมายปีกกา เพื่อแทนที่ที่อยู่ของเซ็นเซอร์ของฉัน

คลังสินค้า:

//u8g.setPrintPos(44, 64); u8g.print(วินาที); // ส่งออกวินาทีเพื่อควบคุมความถูกต้องของการเคลื่อนไหว

ทำหน้าที่แสดงวินาทีถัดจากคำจารึก "ข้อมูล" นี่เป็นสิ่งจำเป็นเพื่อกำหนดเวลาที่ผ่านไปอย่างแม่นยำ
หากนาฬิกาเดินเร็วหรือช้ากว่า คุณควรเปลี่ยนค่าในบรรทัด:

ถ้า (micros() - prevmicros >494000) ( // เปลี่ยนเป็นอย่างอื่นเพื่อแก้ไขให้ถูกต้องคือ 500000

ฉันพิจารณาตัวเลขที่นาฬิกาเดินค่อนข้างแม่นยำโดยเชิงประจักษ์ หากนาฬิกาของคุณเร็ว คุณควรเพิ่มตัวเลขนี้ หากช้ากว่านั้นให้ลดลง เพื่อกำหนดความแม่นยำของการเคลื่อนที่ คุณต้องแสดงวินาที หลังจากปรับเทียบตัวเลขอย่างแม่นยำแล้ว วินาทีก็สามารถใส่เครื่องหมายวินาทีและลบออกจากหน้าจอได้

คุณชอบบทความนี้หรือไม่? แบ่งปันกับเพื่อนของคุณ!
บทความนี้เป็นประโยชน์หรือไม่?
ใช่
เลขที่
ขอบคุณสำหรับคำติชมของคุณ!
มีข้อผิดพลาดเกิดขึ้นและระบบไม่นับคะแนนของคุณ
ขอบคุณ ข้อความของคุณถูกส่งแล้ว
พบข้อผิดพลาดในข้อความ?
เลือกคลิก Ctrl + เข้าสู่และเราจะแก้ไขทุกอย่าง!