สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
คุณเบื่อที่จะตรวจสอบทุกครั้งที่กล่องจดหมายของคุณในขณะที่ไม่มีอะไรอยู่ข้างใน คุณต้องการทราบว่าคุณได้รับจดหมายหรือพัสดุระหว่างการเดินทางหรือไม่ ดังนั้นกล่องจดหมายที่เชื่อมต่อจึงเหมาะสำหรับคุณ มันจะแจ้งให้คุณทราบหากบุรุษไปรษณีย์ได้ฝากจดหมายหรือพัสดุโดยตรงบนสมาร์ทโฟนของคุณผ่านอีเมล ด้วยเทคโนโลยีล่าสุด LORAWAN ที่ผลิตในฝรั่งเศส เรากำลังดำเนินการทีละขั้นตอนในการออกแบบต้นแบบตลอดคำแนะนำนี้
ขั้นตอนที่ 1: อุปกรณ์
ภาษาที่ใช้: C/C++
ความรู้พื้นฐานด้านดิจิตอลอิเล็คทรอนิคส์
ข้อกำหนดด้านฮาร์ดแวร์:
Grove - 3-Axis Digital Gyro:
ชุดโมดูล sigfox พร้อมเสาอากาศ:
ปุ่มสุ่ม (เลือกสิ่งที่คุณต้องการ)
Nucleo F030R8:
ข้อกำหนดของซอฟต์แวร์:
คอมพิวเตอร์ที่มีเบราว์เซอร์ที่ดีเพื่อทำงานร่วมกับคอมไพเลอร์ Mbed
ขั้นตอนที่ 2: เตรียมอุปกรณ์ของคุณ
ขั้นแรก เราต้องเชื่อมต่อโมดูลทั้งหมดเข้ากับชิป
จ่ายไฟให้กับโมดูล Sigfox และไจโรสโคปด้วยแรงดัน 3.3 โวลต์!จากนั้นเชื่อมต่อสาย UART กับโมดูล Sigfox (PA_9, PA_10) และสายไฟ I2C เข้ากับไจโรสโคป (PB_10; PB_11) เชื่อมต่อปุ่มด้วยหมุด PB_3 เมื่อเสร็จแล้ว คอมไพล์โค้ดด้านล่าง
คุณสามารถทดสอบต้นแบบโดยวางไจโรบนกล่องจดหมายและรับค่าบางอย่างที่เกี่ยวข้องกับการเคลื่อนไหวและตรวจสอบว่าเป็นพัสดุที่ฝากไว้หรือจดหมาย
#รวม "mbed.h" #รวม "ITG3200.h" //--------------------------------- -- // การกำหนดค่า Hyperterminal // 9600 บอด, ข้อมูล 8 บิต, ไม่มีความเท่าเทียมกัน //------------------------------------ ------ ซีเรียลพีซี (SERIAL_TX, SERIAL_RX); อนุกรม sigfox (PA_9, PA_10, NULL, 9600); InterruptIn bouton(PB_3); ไจโร ITG3200 (PB_11, PB_10); แอพ int ผันผวน; ข้อมูลจริง=0; จับเวลา t; แบตเตอรี่ AnalogIn (A3); AnalogIn ref_batt (ADC_VREF); เป็นโมฆะ lol() { pc.printf("appui\r\n"); แอพ=1; } /* void batt() { pc.printf("batterie faible !\r\n"); }*/ int main() { int x, y, z; //กำหนดแบนด์วิดธ์สูงสุด gyro.setLpBandwidth (LPFBW_42HZ); ถ่านบัฟเฟอร์[20]; bouton.fall(&lol); bouton.mode (ดึงลง); //batterie_faible.rise(&batt); //batterie_faible.mode(ดึงลง); pc.printf("เริ่มต้น\r\n"); ในขณะที่ (1) { แอป = 0; x = gyro.getGyroX(); y = gyro.getGyroY(); z = gyro.getGyroZ(); if(x > 5000) { t.start(); pc.printf("นาทีเปิดตัว\r\n"); ในขณะที่(t.read() <10); pc.printf("อุณหภูมิครีบ\r\n"); //pc.printf("app= %d\r\n", แอป); if(app == 0) { sigfox.printf("AT$SF=636f757272696572\r\n"); // colis: 636f6c69732e202020 sigfox.scanf("%s", บัฟเฟอร์); pc.printf("%s\r\n", บัฟเฟอร์); } pc.printf("fin if\r\n"); t.stop(); t.รีเซ็ต(); } /* if(batterie.read() <= (2.8*ref_batt.read()/1.23)) pc.printf("batterie faible\r\n"); sigfox.printf("AT$SF=636f757272696572\r\n"); // colis: 636f6c69732e202020 รอ (10); sigfox.printf("AT$P=1"); รอ(10); sigfox.printf("AT$P=0\r\n");*/ } }
ขั้นตอนที่ 3: การประกอบ PCB
ต้นแบบก่อนหน้านี้มีขนาดใหญ่เกินไปที่จะวางไว้บนกล่องจดหมาย นี่คือไฟล์ Gerber เพื่อพิมพ์วงจรและประกอบส่วนประกอบของคุณ
ขั้นตอนที่ 4: เว็บไซต์ส่วนหลัง
เราได้ใช้สถาปัตยกรรมแบ็กเอนด์ของเราบน IBM Cloud (IBM IoT Watson Platform และ NodeRED) และตามคำขอ API REST IBM Cloud ถูกใช้เพื่อจัดการการสื่อสารระหว่างส่วนต่างๆ ของระบบของเรา ดังที่คุณเห็นในโฟลว์ NodeRED ของเรา เราควบคุมคำขอทั้งหมดที่ได้รับจาก Sigfox API (ที่ส่งข้อความจากอุปกรณ์ของเรา) และจากเว็บไซต์ Wix ของเรา (สำหรับการลงทะเบียนอุปกรณ์ใหม่) นอกจากนี้ ระบบคลาวด์ยังมีหน้าที่ส่งอีเมลแจ้งเตือนไปยังไคลเอนต์และลงทะเบียนลูกค้าใหม่ซึ่งข้อมูลจะถูกเก็บไว้ในฐานข้อมูลบนคลาวด์ของเรา (MongoDB) ดังนั้นโดยทั่วไป NodeRED จะจัดการคำขอ API REST และการสืบค้นฐานข้อมูล (INSERT และ SELECT) เพื่อให้มั่นใจว่าการแจ้งเตือนที่ถูกต้องจะถูกส่งไปยังไคลเอนต์ที่ถูกต้องตรงเวลา