สารบัญ:

[Docker Pi Series] วิธีใช้โมดูล IoT Node (A) บน Raspberry Pi: 18 ขั้นตอน
[Docker Pi Series] วิธีใช้โมดูล IoT Node (A) บน Raspberry Pi: 18 ขั้นตอน

วีดีโอ: [Docker Pi Series] วิธีใช้โมดูล IoT Node (A) บน Raspberry Pi: 18 ขั้นตอน

วีดีโอ: [Docker Pi Series] วิธีใช้โมดูล IoT Node (A) บน Raspberry Pi: 18 ขั้นตอน
วีดีโอ: Raspberry Pi Travel Router - RaspAP 2024, กรกฎาคม
Anonim
[Docker Pi Series] วิธีใช้โมดูล IoT Node (A) บน Raspberry Pi
[Docker Pi Series] วิธีใช้โมดูล IoT Node (A) บน Raspberry Pi

โมดูล IoT Node (A) คืออะไร ?

IoT Node(A) เป็นหนึ่งในโมดูล Docker Pi

IOT Node(A) = GPS/BDS + GSM + Lora

I2C ควบคุมโดยตรง Lora ส่งและรับข้อมูล ควบคุมโมดูล GSM/GPS/BDS ผ่าน SC16IS752 เมนบอร์ดต้องการการสนับสนุน I2C เท่านั้น

รองรับ Raspberry Pi และผลิตภัณฑ์อื่นที่คล้ายคลึงกัน

เสบียง

1x Raspberry Pi 2B/3B/3B+/4B/3A+/ศูนย์/ศูนย์ W

1x ผลิตภัณฑ์ Docker Pi series: โมดูล IoT Node(A)

การ์ด TF คลาส 10 x 16GB 1x

แหล่งจ่ายไฟ 1x 5V/2.5A (5V@3A สำหรับ Pi 4B)

ขั้นตอนที่ 1: คุณสมบัติ

คุณสมบัติ
คุณสมบัติ
คุณสมบัติ
คุณสมบัติ
คุณสมบัติ
คุณสมบัติ
  • Docker Pi Series
  • ตั้งโปรแกรมได้
  • ควบคุมโดยตรง (โดยไม่ต้องตั้งโปรแกรม)
  • ขยายพิน GPIO
  • รองรับ GPS/BDS
  • รองรับ GSM
  • Lora Support
  • สามารถซ้อนกับกระดานสแต็คอื่น ๆ ได้
  • ไม่ขึ้นกับฮาร์ดแวร์ของเมนบอร์ด (ต้องการการสนับสนุน I2C)

ขั้นตอนที่ 2: ขั้นที่ 1: รู้เกี่ยวกับบอร์ด IoT (A)

ขั้นที่ 1: รู้เกี่ยวกับบอร์ด IoT (A)
ขั้นที่ 1: รู้เกี่ยวกับบอร์ด IoT (A)
ขั้นที่ 1: รู้เกี่ยวกับบอร์ด IoT (A)
ขั้นที่ 1: รู้เกี่ยวกับบอร์ด IoT (A)
ขั้นที่ 1: รู้เกี่ยวกับบอร์ด IoT (A)
ขั้นที่ 1: รู้เกี่ยวกับบอร์ด IoT (A)

IoT Node(A) เป็นหนึ่งในโมดูล Docker Pi

IOT Node(A) = GPS/BDS + GSM + Lora

I2C ควบคุมโดยตรง Lora ส่งและรับข้อมูล ควบคุมโมดูล GSM/GPS/BDS ผ่าน SC16IS752 เมนบอร์ดต้องการการสนับสนุน I2C เท่านั้น สนับสนุน Raspberry Pi และผลิตภัณฑ์อื่นๆ ที่คล้ายคลึงกัน

ดังนั้นคุณสามารถสร้างอุปกรณ์สื่อสารระดับกลางได้โดยใช้สองตัว

และคุณยังสามารถระบุตำแหน่งของอุปกรณ์ของคุณได้โดยใช้โมดูล GPS บนเครื่องบิน

ใส่ซิมการ์ดก็จะกลายเป็นสถานีส่งสัญญาณผ่านข้อความ SMS

ขั้นตอนที่ 3: ขั้นที่ 2: วิธีการประกอบมัน

Step2: วิธีการประกอบ
Step2: วิธีการประกอบ
Step2: วิธีการประกอบ
Step2: วิธีการประกอบ

ประกอบได้ง่ายมากเนื่องจากเป็นการออกแบบ "HAT" คุณเพียงแค่ใส่มันลงบน Raspberry Pi และเชื่อมต่อผ่านหมุด GPIO เหมือนกับ "หมวก" บน Raspberry Pi เพื่อที่คุณจะได้ไม่ต้องเพิ่มมวล ลวด.

ขั้นตอนที่ 4: ขั้นตอนที่ 3: ต่อเสาอากาศ

ขั้นตอนที่ 3: ต่อเสาอากาศ
ขั้นตอนที่ 3: ต่อเสาอากาศ
ขั้นตอนที่ 3: ต่อเสาอากาศ
ขั้นตอนที่ 3: ต่อเสาอากาศ
ขั้นตอนที่ 3: ต่อเสาอากาศ
ขั้นตอนที่ 3: ต่อเสาอากาศ

มีเสาอากาศ 3 ชิ้นสำหรับโมดูล IoT (A) นี้ หนึ่งในนั้นสำหรับโมดูล loar เป็นเสาอากาศประเภท SMA และหนึ่งในนั้นดีสำหรับคุณ GPS เป็นเสาอากาศแบบกล่องสี่เหลี่ยมที่มีพอร์ต IPX และอันสุดท้ายสำหรับโมดูล SIM (A9G) เป็นเสาอากาศขนาดเล็กที่มีพอร์ต IPX เชื่อมต่อเสาอากาศและติดตั้งหมวกกับราสเบอร์รี่ pi ของคุณ

วิธีการประกอบติดตั้งบอร์ด Iot Node(A) เข้ากับ Raspberry Pi

เชื่อมต่อ GPS antana และ Lora antana กับพอร์ต IPX

  • E1:GPS-ANTANA-IPX
  • E3:LoRa-ANTANA-IPX

ขันสกรูเสาอากาศ GPRS บนพอร์ต SMA

ขั้นตอนที่ 5: ขั้นตอนที่ 4: สภาพแวดล้อมระบบปฏิบัติการและการกำหนดค่าซอฟต์แวร์

ในขั้นตอนนี้ คุณต้องทำสิ่งเหล่านั้น:

1. ดาวน์โหลดไฟล์ภาพล่าสุดจาก: www.raspberrypi.org/downloads

2. เปิดเครื่องรูดมัน

3. แฟลชการ์ด TF ของคุณด้วยภาพล่าสุดผ่านเครื่องมือแกะสลัก

4.แก้ไขไฟล์ /boot/config.txt และเพิ่มย่อหน้านี้

dtoverlay=sc16is752-i2c

5. แทนที่ไฟล์ /boot/overlay/sc16is752-i2c.dtbo ด้วยไฟล์นี้:

wiki.52pi.com/index.php/File:Sc16is752-i2c…

PS: อย่าลืมแตกไฟล์แล้วนำไปใส่ในโฟลเดอร์ /boot/overlay/ ของคุณและแทนที่อันเก่า

6. รีบูต Raspberry Pi ของคุณ

ขั้นตอนที่ 6: ขั้นตอนที่ 5: การกำหนดค่า I2C (Raspberry Pi)

ขั้นตอนที่ 5: การกำหนดค่า I2C (Raspberry Pi)
ขั้นตอนที่ 5: การกำหนดค่า I2C (Raspberry Pi)
ขั้นตอนที่ 5: การกำหนดค่า I2C (Raspberry Pi)
ขั้นตอนที่ 5: การกำหนดค่า I2C (Raspberry Pi)
ขั้นตอนที่ 5: การกำหนดค่า I2C (Raspberry Pi)
ขั้นตอนที่ 5: การกำหนดค่า I2C (Raspberry Pi)
ขั้นตอนที่ 5: การกำหนดค่า I2C (Raspberry Pi)
ขั้นตอนที่ 5: การกำหนดค่า I2C (Raspberry Pi)

เรียกใช้ sudo raspi-config และปฏิบัติตามคำแนะนำเพื่อติดตั้งการสนับสนุน i2c สำหรับแกน ARM และเคอร์เนล linux ไปที่ตัวเลือกการเชื่อมต่อ

ขั้นตอนที่ 7: ขั้นตอนที่ 6: รู้เกี่ยวกับข้อมูลการลงทะเบียน

ส่วน GPRS

ใช้พลังงานต่ำ, กระแสไฟสแตนด์บาย <1mA2.

รองรับ GSM/GPRS สี่ย่านความถี่ ได้แก่ 850, 900, 1800, 1900MHZ

GPRS คลาส 10

รองรับบริการข้อมูล GPRS อัตราข้อมูลสูงสุด ดาวน์โหลด 85.6Kbps อัปโหลด 42.8Kbps

รองรับคำสั่งมาตรฐาน GSM07.07, 07.05 AT และเข้าถึงพอร์ตอนุกรมผ่านการแปลงอินเทอร์เฟซ I2C

คำสั่ง AT รองรับพอร์ตคำสั่ง AT และ TCP/IP มาตรฐาน

ส่วน GPS รองรับการวางตำแหน่งข้อต่อ BDS/GPS

รองรับ A-GPS, A-BDS

รองรับซิมการ์ดมาตรฐาน

ส่วน LORA ระยะการส่ง: 500 เมตร (พารามิเตอร์ RF: 0x50 @ เมืองจีน)

รองรับวิธีการมอดูเลต FSK, GFSK, MSK, GMSK, LoRaTM และ OOK

ความไวของตัวรับสัญญาณสูงพิเศษต่ำถึง -141 dBm

รองรับการตรวจจับคำนำ

เอ็นจิ้นแพ็คเก็ตพร้อม CRC สูงสุด 256 ไบต์

ตัวบ่งชี้ตัวรับส่งสัญญาณ LORA

Easy TX/RX โดย Docker Pi

ขั้นตอนที่ 8:

โมดูล A9G

โมดูล A9G มีพอร์ตอนุกรมสองพอร์ต

ใช้บริดจ์ I2C UART เพื่อการสื่อสาร

ชื่อโมดูลพอร์ตอนุกรม

  • /dev/ttySC0 GSM
  • /dev/ttySC1 GPS/BDS

ลงทะเบียนแผนที่

  • ลงทะเบียนที่อยู่ฟังก์ชันค่า
  • 0x01 LORA_TX1 Lora TX Buffer 1 - ข้อมูลผู้ใช้
  • 0x02 LORA_TX2 Lora TX Buffer 2 - ข้อมูลผู้ใช้
  • 0x03 LORA_TX3 Lora TX Buffer 3 - ข้อมูลผู้ใช้
  • 0x04 LORA_TX4 Lora TX Buffer 4 - ข้อมูลผู้ใช้
  • 0x05 LORA_TX5 Lora TX Buffer 5 - ข้อมูลผู้ใช้
  • 0x06 LORA_TX6 Lora TX Buffer 6 - ข้อมูลผู้ใช้
  • 0x07 LORA_TX7 Lora TX Buffer 7 - ข้อมูลผู้ใช้
  • 0x08 LORA_TX8 Lora TX Buffer 8 - ข้อมูลผู้ใช้
  • 0x09 LORA_TX9 Lora TX Buffer 9 - ข้อมูลผู้ใช้
  • 0x0a LORA_TX10 Lora TX Buffer 10 - ข้อมูลผู้ใช้
  • 0x0b LORA_TX11 Lora TX Buffer 11 - ข้อมูลผู้ใช้
  • 0x0c LORA_TX12 Lora TX Buffer 12 - ข้อมูลผู้ใช้
  • 0x0d LORA_TX13 Lora TX Buffer 13 - ข้อมูลผู้ใช้
  • 0x0e LORA_TX14 Lora TX Buffer 14 - ข้อมูลผู้ใช้
  • 0x0f LORA_TX15 Lora TX Buffer 15 - ข้อมูลผู้ใช้
  • 0x10 LORA_TX16 Lora TX Buffer 16 - ข้อมูลผู้ใช้
  • 0x11 LORA_RX1 Lora RX Buffer 1 - ข้อมูลผู้ใช้
  • 0x12 LORA_RX2 Lora RX Buffer 2 - ข้อมูลผู้ใช้
  • 0x13 LORA_RX3 Lora RX Buffer 3 - ข้อมูลผู้ใช้
  • 0x14 LORA_RX4 Lora RX Buffer 4 - ข้อมูลผู้ใช้
  • 0x15 LORA_RX5 Lora RX Buffer 5 - ข้อมูลผู้ใช้
  • 0x16 LORA_RX6 Lora RX Buffer 6 - ข้อมูลผู้ใช้
  • 0x17 LORA_RX7 Lora RX Buffer 7 - ข้อมูลผู้ใช้
  • 0x18 LORA_RX8 Lora RX Buffer 8 - ข้อมูลผู้ใช้
  • 0x19 LORA_RX9 Lora RX Buffer 9 - ข้อมูลผู้ใช้
  • 0x1a LORA_RX10 Lora RX Buffer 10 - ข้อมูลผู้ใช้
  • 0x1b LORA_RX11 Lora RX Buffer 11 - ข้อมูลผู้ใช้
  • 0x1c LORA_RX12 Lora RX Buffer 12 - ข้อมูลผู้ใช้
  • 0x1d LORA_RX13 Lora RX Buffer 13 - ข้อมูลผู้ใช้
  • 0x1e LORA_RX14 Lora RX Buffer 14 - ข้อมูลผู้ใช้
  • 0x1f LORA_RX15 Lora RX Buffer 15 - ข้อมูลผู้ใช้
  • 0x20 LORA_RX16 Lora RX Buffer 16 - ข้อมูลผู้ใช้
  • 0x01 - 0x10 เขียนเท่านั้น
  • 0x11 - 0x20 อ่านอย่างเดียว

ขั้นตอนที่ 9: คำแนะนำ:

คำแนะนำ
คำแนะนำ

L_SET(เขียนเท่านั้น)

  • เขียน 1 เพื่อตั้งค่าพารามิเตอร์จาก 0x22 เป็นโมดูล LORA
  • เขียน 0 ไม่มีผล

G_RESET (เขียนเท่านั้น)

  • เขียน 1 เพื่อรีเซ็ตโมดูล A9G
  • เขียน 0 ไม่มีผล

L_RXNE(อ่านและเขียน)

  • เขียน 1 ทำให้เกิดข้อผิดพลาด
  • เขียน 0 เพื่อล้าง
  • อ่าน 1 หมายถึงได้รับข้อมูลแล้ว โปรดรับข้อมูลจากเครื่องบันทึก 0x11 - 0x20
  • อ่าน 0 หมายความว่าไม่มีข้อมูลในขณะนี้

L_SET(เขียนเท่านั้น)

  • เขียน 1 เพื่อส่งข้อมูล กรุณากรอกข้อมูลใน register 0x01 - 0x10 ก่อนส่ง
  • เขียน 0 ไม่มีผล

ขั้นตอนที่ 10: วิธีใช้โมดูล GPS ด้วย Gpsd (Raspberry Pi)

วิธีใช้โมดูล GPS กับ Gpsd (Raspberry Pi)
วิธีใช้โมดูล GPS กับ Gpsd (Raspberry Pi)
วิธีใช้โมดูล GPS กับ Gpsd (Raspberry Pi)
วิธีใช้โมดูล GPS กับ Gpsd (Raspberry Pi)
วิธีใช้โมดูล GPS กับ Gpsd (Raspberry Pi)
วิธีใช้โมดูล GPS กับ Gpsd (Raspberry Pi)

วิธีใช้โมดูล GPS กับ gpsd (Raspberry Pi)

ขั้นแรก ให้เปลี่ยน /boot/overlays/sc16is752-i2c.dtbo และตรวจดูให้แน่ใจว่า I2C ทำงานอย่างถูกต้อง

  • แทนที่ sc16is752-i2c.dtbo
  • การกำหนดค่า I2C
  • ติดตั้งเครื่องมือ gpsd

เปิดเทอร์มินัลแล้วพิมพ์คำสั่งนี้:

sudo apt ติดตั้ง gpsd gpsd-clients

แก้ไขไฟล์ /etc/default/gpsd และเพิ่มพารามิเตอร์ต่อไปนี้:

  • DEVICES="/dev/ttySC1"
  • GPSD_OPTIONS="-F /var/run/gpsd.sock"

ป้อนคำสั่ง i2cset -y 1 0x16 0x23 0x40 เพื่อรีเซ็ตโมดูล GPRS

สคริปต์ Python สำหรับ Open GPS:

นำเข้าเวลานำเข้า serialimport os # เริ่มบริการ gpsd ใหม่ os.system ("sudo systemctl รีสตาร์ท gpsd.socket") # เปิดพอร์ตอนุกรม ser = serial. Serial('/dev/ttySC0', 115200) i = 0 ถ้า ser.isOpen == False: ser.open() ลอง: print("Turn on GPS…") ในขณะที่ True: ser.write(str.encode("AT+GPS=1\r")) size = ser.inWaiting() if size != 0: ticks = time.time() การตอบสนอง = ser.read(ขนาด) gps = str(response, encoding="utf-8") if(gps.find("OK") != -1): os.system("sudo cgps -s") exit() else: i = i + 1 print("กำลังรอเปิดใช้งาน GPS หากเวลานานเกินไป โปรดทดสอบกลางแจ้ง:" + str(i)) ser.flushInput() time.sleep(1) ยกเว้น KeyboardInterrupt: ser.flushInput() ser.close()

บันทึกและดำเนินการ:

python3 GPS.py

ขั้นตอนที่ 11: วิธีใช้โมดูล GPS ด้วย C (Raspberry Pi)

ติดตั้งเครื่องมือ gpsd

sudo apt-get ติดตั้ง libgps-dev

สร้างซอร์สโค้ดและตั้งชื่อเป็น "gps.c"

#รวม #รวม #รวม

#รวม

#รวม

int หลัก ()

{ int rc; โครงสร้างทีวี timeval; โครงสร้าง gps_data_t gps_data; if ((rc = gps_open("localhost", "2947", &gps_data)) == -1) { printf("code: %d, เหตุผล: %s\n", rc, gps_errstr(rc)); ส่งคืน EXIT_FAILURE; } gps_stream(&gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

ในขณะที่ (1)

{ /* รอ 2 วินาทีเพื่อรับข้อมูล */ if (gps_waiting(&gps_data, 2000000)) { /* read data */ if ((rc = gps_read(&gps_data)) == -1) { printf("เกิดข้อผิดพลาดในการอ่าน ข้อมูล gps รหัส: %d เหตุผล: %s\n", rc, gps_errstr(rc)); } อื่น { /* แสดงข้อมูลจากเครื่องรับ GPS */ if ((gps_data.status == STATUS_FIX) && (gps_data.fix.mode == MODE_2D || gps_data.fix.mode == MODE_3D) && !isnan (gps_data.fix.latitude) && !isnan (gps_data.fix.ลองจิจูด)) { /* gettimeofday(&tv, NULL); แก้ไข: tv.tv_sec ไม่ใช่การประทับเวลาจริงๆ! */

printf("ละติจูด: %f ลองจิจูด: %f ความเร็ว: %f การประทับเวลา: %lf\n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// แก้ไข: แทนที่ tv.tv_sec ด้วย gps_data.fix.time } อื่น ๆ { printf ("ไม่มีข้อมูล GPS \n"); } } } นอนหลับ(3); } /* เมื่อคุณทำเสร็จแล้ว… */ gps_stream(&gps_data, WATCH_DISABLE, NULL); gps_close(&gps_data); ส่งคืน EXIT_SUCCESS; }

ขั้นตอนที่ 12: รวบรวมมัน

รวบรวมมัน
รวบรวมมัน

รวบรวม!

gcc gps.c -lm -lgps -o gps

เอ็กเซ็ค อิท!

./จีพีเอส

ขั้นตอนที่ 13: วิธีใช้โมดูล GPS ด้วย Python (Raspberry Pi)

วิธีใช้โมดูล GPS ด้วย Python (Raspberry Pi)
วิธีใช้โมดูล GPS ด้วย Python (Raspberry Pi)

แนะนำให้ใช้โค้ดต่อไปนี้โดยใช้ Python 3 และติดตั้งไลบรารี gpsd-py3 และ GPS 2D/3D Fix:

นำเข้า gpsd

# เชื่อมต่อกับ gpsd. ในพื้นที่

gpsd.connect()

# รับตำแหน่ง gps

แพ็กเก็ต = gpsd.get_current()

# ดูเอกสารอินไลน์สำหรับ GpsResponse สำหรับข้อมูลที่มี

พิมพ์(แพ็คเก็ต.ตำแหน่ง())

ขั้นตอนที่ 14: วิธีใช้โมดูล GSM ด้วย PPPd (Raspberry Pi)

วิธีใช้โมดูล GSM กับ PPPd (Raspberry Pi)
วิธีใช้โมดูล GSM กับ PPPd (Raspberry Pi)
วิธีใช้โมดูล GSM กับ PPPd (Raspberry Pi)
วิธีใช้โมดูล GSM กับ PPPd (Raspberry Pi)
วิธีใช้โมดูล GSM กับ PPPd (Raspberry Pi)
วิธีใช้โมดูล GSM กับ PPPd (Raspberry Pi)

A) ก่อนอื่น ให้เปลี่ยน /boot/overlays/sc16is752-i2c.dtbo และตรวจสอบให้แน่ใจว่า I2C ทำงานอย่างถูกต้อง

  • แทนที่ sc16is752-i2c.dtbo
  • การกำหนดค่า I2C

B) ป้อนคำสั่ง i2cset -y 1 0x16 0x23 0x40 เพื่อรีเซ็ตโมดูล GPRS

หลังจากรันคำสั่งแล้ว คุณต้องรอสักครู่ ประมาณ 10 วินาที

คุณยังสามารถใช้วิธีต่อไปนี้เพื่อรีเซ็ต

ค) ป้อนคำสั่ง

sudo apt ติดตั้ง ppp

เพื่อติดตั้งเครื่องมือ ppp

D) คัดลอก /etc/ppp/peers/provider ไปยัง /etc/ppp/peers/gprs

E) แก้ไข /etc/ppp/peers/gprs

  • บรรทัดที่ 10: โปรดปรึกษาผู้ให้บริการของคุณสำหรับผู้ใช้ (ตัวอย่าง:cmnet)
  • บรรทัดที่ 15: โปรดปรึกษาผู้ให้บริการของคุณสำหรับ apn (ตัวอย่าง:cmnet)
  • สาย 18 - สาย 24:การตั้งค่าที่แนะนำ

F) แก้ไข /etc/chatscripts/gprs (เปลี่ยนบรรทัดที่ 34 เป็นบรรทัดที่ 35 หมายเลขโทรศัพท์อาจไม่ใช่ *99#)

G) ป้อนคำสั่ง sudo pppd โทร gprs เพื่อโทรออก

H) ตรวจสอบการกำหนดค่า ppp จาก ISP ของคุณ

I) ป้อนคำสั่ง ping -I ppp0 8.8.8.8 ทดสอบเครือข่ายของคุณ (หากอินเทอร์เน็ตพร้อมใช้งานและตารางเส้นทางถูกต้อง)

J) โปรดรักษาสัญญาณ GSM ให้ดีมิฉะนั้นจะเกิดสิ่งต่อไปนี้

ขั้นตอนที่ 15: วิธีวินิจฉัยโมดูล GSM ของฉัน (Raspberry Pi)

วิธีการวินิจฉัยโมดูล GSM ของฉัน (Raspberry Pi)
วิธีการวินิจฉัยโมดูล GSM ของฉัน (Raspberry Pi)
วิธีการวินิจฉัยโมดูล GSM ของฉัน (Raspberry Pi)
วิธีการวินิจฉัยโมดูล GSM ของฉัน (Raspberry Pi)
วิธีการวินิจฉัยโมดูล GSM ของฉัน (Raspberry Pi)
วิธีการวินิจฉัยโมดูล GSM ของฉัน (Raspberry Pi)
วิธีการวินิจฉัยโมดูล GSM ของฉัน (Raspberry Pi)
วิธีการวินิจฉัยโมดูล GSM ของฉัน (Raspberry Pi)

แนะนำให้ใช้โค้ดต่อไปนี้โดยใช้ Python 3 และติดตั้งไลบรารี smbus:

นำเข้า เวลานำเข้าอนุกรม นำเข้า ตัวดำเนินการนำเข้า นำเข้า os

print("กำลังรอการเริ่มต้น…")

รถบัส = smbus. SMBus(1)

bus.write_byte_data(0x16, 0x23, 0x40)

ser = serial. Serial('/dev/ttySC0', 115200)

ถ้า ser.isOpen == เท็จ:

ser.open() ลอง: print('-'*60) print("กำลังเริ่มต้นโมดูล A9G GPRS") print("การเชื่อมต่อ GSM…") time.sleep(3) i = 0 ในขณะที่ True: ser.write(str.encode("AT+CCID\r")) size = ser.inWaiting() if size != 0: ticks = time.time() response = ser.read(size) ccid = str(response, encoding="utf) -8") พิมพ์ (ccid) อื่น: i = i + 1 ser.flushInput() time.sleep(1) ยกเว้น KeyboardInterrupt: ser.close()

เรียกใช้สคริปต์ทดสอบตามผลลัพธ์ของการใช้งาน เราสามารถวินิจฉัยโมดูล GSM ได้ ตัวอย่างเช่น การส่งคืนต่อไปนี้ ข้อผิดพลาด CME ERROR 53 บอกเราว่าพลังงานไม่ดี รหัส CME = ข้อผิดพลาดเกี่ยวกับอุปกรณ์ GSM

แน่นอน สคริปต์ยังมีฟังก์ชันรีเซ็ต หากคุณสามารถแสดง CCID ได้อย่างถูกต้อง การรีเซ็ตจะเสร็จสมบูรณ์

ขั้นตอนที่ 16: วิธีใช้ Lora TX & RX กับ C (Raspberry Pi)

แนะนำให้ใช้โค้ดต่อไปนี้โดยใช้ Python 3 และติดตั้งไลบรารี smbus

จะต้องถ่ายโอนระหว่างสองโหนด IOT (A) เนื้อหาที่ส่งด้วยตัวเองไม่สามารถรับได้ด้วยตัวเอง โปรดบันทึกเป็นสคริปต์ py เพื่อดำเนินการ

วิธีการส่ง:หลังจากกรอกข้อมูลลงในรีจิสเตอร์ 0x01 - 0x10 แล้ว ให้ตั้งค่าบิต L_TX เพื่อเริ่มส่งข้อมูล

นำเข้า timeimport smbus นำเข้าระบบปฏิบัติการ นำเข้าระบบ sys

รถบัส = smbus. SMBus(1)

ลอง:

data_list = [170, 85, 165, 90] # เขียนข้อมูลเพื่อลงทะเบียนแล้วข้อมูลจะถูกส่งออกไป สำหรับดัชนีในช่วง (1, len(data_list) + 1): bus.write_byte_data(0x16, index, data_list[index - 1]) print("LORA ส่งข้อมูลไปยัง %d register %d data" %(index, data_list[ดัชนี - 1])) bus.write_byte_data(0x16, 0x23, 0x01) ยกเว้น KeyboardInterrupt: sys.exit()

วิธีการส่งรับ:ตรวจสอบบิต L_RXNE หากตั้งค่าไว้ ข้อมูลใหม่มาถึง แฟล็กนี้ต้องล้างด้วยตนเอง

นำเข้า timeimport smbus นำเข้า os นำเข้าระบบ sys

รถบัส = smbus. SMBus(1)

recv_data =

ลอง:

ถ้า bus.read_byte_data(0x16, 0x23) & 0x02: # ด้วยตนเองล้าง L_RXNE bus.write_byte_data(0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # อ่านข้อมูลสำหรับดัชนีในช่วง (0x11, len (register_list) + 0x11): recv_data.append(bus.read_byte_data(0x16, register_list[ดัชนี - 0x11]))

print("ข้อมูลที่ได้รับ:")

print(recv_data) else: print("ยังไม่มีข้อมูลที่ได้รับ~") ยกเว้น KeyboardInterrupt: sys.exit()

ขั้นตอนที่ 17: คำอธิบายพิเศษของ I2C Bandwidth

ขีดจำกัดของความเร็ว I2C คือ 400kHz เนื่องจากโปรโตคอล I2C ดังนั้นแบนด์วิดท์ที่มีประสิทธิภาพของอุปกรณ์เครื่องเดียวจึงต่ำกว่า 320kbps แบนด์วิดท์ที่มีประสิทธิภาพของอุปกรณ์หลายเครื่องจะต่ำกว่า 160kbps ขีดจำกัดความเร็วของ I2C UART Bridge คือ 115200bps เมื่อ GPS และ GSM ทำงานพร้อมกัน แบนด์วิดท์ I2C ไม่เพียงพอ เพราะ 115.2kbps * 2 = 230.4kbps ดังนั้นข้อมูลบางส่วนจะล้น การลดอัตราบอดของการสื่อสารด้วย GPS และ GSM สามารถปรับปรุงปัญหาการขาดแคลนแบนด์วิดท์การสื่อสาร การซ้อนโมดูล DockerPi อื่นอาจใช้เวลานาน แบนด์วิดท์ I2C พิเศษ โดยปกติความเร็วของข้อมูลเครือข่ายจะช้า ดังนั้นแบนด์วิดท์ GSM จึงไม่เต็ม จึงไม่มีปัญหาเรื่องโอเวอร์โฟลว์

ขั้นตอนที่ 18: เสร็จสิ้น

หวังว่าพวกคุณจะชอบมันและทำมัน

คุณสามารถหาได้ที่นี่:

อเมซอน

Nightlight:https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S บอร์ดรีเลย์ 4 ช่อง: https://www.amazon.co.uk/dp/B07MV1TJGR?ref=myi_title_dp Power Board :https://www.amazon.co.uk/dp/B07TD595VS?ref=myi_title_dp IoT Node(A):https://www.amazon.co.uk/dp/B07TY15M1C Sensor HUB: https://www. amazon.co.uk/dp/B07TZD8B61 หอน้ำแข็ง:

แนะนำ: