ฉันสามารถส่งและรับคำสั่งจากบรรทัดคำสั่งของโฮสต์ XBee แบบโลคัล (แม้ว่าจะรีโมต) ไปยังโฮสต์ Xbee ระยะไกล (รอง นอกเน็ต) ฉันพบคำตอบเมื่อฉันเริ่มดูว่าอุปกรณ์ซีเรียลสามารถเปิดเทอร์มินัลการเข้าสู่ระบบได้อย่างไร และมาถึงเครื่องมือ getty นี่คือคำแนะนำในการตั้งค่าของฉันสำหรับการใช้งานโหมดโปร่งใส ฉันยังคงพยายามให้ python-xbee และเครื่องมืออื่น ๆ ทำงานเพื่อให้ใช้แนวคิดเดียวกัน แต่ผ่านโหมด API โปรดทราบว่าคำแนะนำด้านล่างนี้เป็นวิธีการแก้ปัญหา 95% แต่ควรให้ผู้ใช้ทั่วไปก้าวไปข้างหน้าอย่างมั่นคง ฉันไม่ใช่ผู้เขียนต้นฉบับของขั้นตอนด้านล่างในรูปแบบ แต่พบแต่ละขั้นตอนและรวมขั้นตอนเหล่านี้ผ่านฟอรัมถามตอบอื่นๆ เพื่อหาวิธีแก้ปัญหา:
ขั้นแรก ให้ซื้อซอฟต์แวร์ Digi Xbee X-CTU (ไม่ได้ติดตั้งบนอุปกรณ์ ARM เช่น Raspberry หรือ Odroid): XCTU: ติดตั้งจากลิงก์ Digi.com ต่อไปนี้ แต่นำทางไปยังลิงก์ FTP ของซอฟต์แวร์ที่เกี่ยวข้อง:
https://www.digi.com/support/productdetail?pid=3352&type=drivers
Linux 64 บิต: ftp://ftp1.digi.com/support/utilities/40002881_R วิ่ง
Linux 32 บิต: ftp://ftp1.digi.com/support/utilities/40002880_R วิ่ง
วินโดวส์: ftp://ftp1.digi.com/support/utilities/40003026_T.exe< /ก>
Mac: ftp://ftp1.digi.com/support/utilities/40003026_T.exe< /ก>
ติดตั้ง X-CTU ผ่าน:
sudo wget ftp://ftp1.digi.com/support/utilities/40002880_R.run
sudo mv 40002881_R.run xctu_64bit.run
sudo chmod +x xctu_64bit.run
sudo ./xctu_64bit.run
ค้นหาอุปกรณ์ X-Bee:
ตรวจสอบให้แน่ใจว่าไม่ได้เสียบ Xbee เข้ากับฮับ พลังงานจะน้อยเกินไป สามารถรับรู้ได้ผ่านข้อผิดพลาดด้านล่าง YMMV:
dmesg | grep ttyUSB0
และส่งคืนข้อผิดพลาด: [ 228.800021] ftdi_sio ttyUSB0: ไม่สามารถรับสถานะโมเด็ม: -32
lsusb -v -d 0403:6001
sudo nano /boot/cmdline.txt
เปลี่ยนอุปกรณ์คอนโซล tty จาก AMA เป็น USB จากนั้นสำหรับ kgdbok ซึ่งอนุญาตให้ปลายระยะไกลเพื่อดูกระบวนการบูต ให้เพิ่ม/ทำให้การจับคู่ตามความเหมาะสม
console=ttyUSB0,115200 kgdboc=ttyUSB0,115200
sudo nano /etc/inittab
ตรวจสอบให้แน่ใจว่าไม่ได้ใส่เครื่องหมายข้อคิดเห็น (ลบ #) ถ้ามี เปลี่ยน tty จาก AMA เป็น USB
T0:23:respawn:/sbin/agetty -L ttyUSB0 115200 vt100
บนระบบ Ubuntu x86 ให้ใช้ X-CTU ผ่าน
sudo ./XCTU.desktop
อัปเดตเฟิร์มแวร์เป็นเวอร์ชันล่าสุดปัจจุบัน 8075 สำหรับ Pro S3B จากนั้นตั้งค่าอัตรารับส่งข้อมูลเป็น 115200 บนอุปกรณ์แต่ละเครื่อง xbees อื่น ๆ ในบริเวณใกล้เคียงสามารถอัปเดตได้โดยใช้ xbee ท้องถิ่นผ่าน X-CTU จากนั้นตั้งค่าโหมด api เป็น "โหมด api ด้วยการหลบหนี” โปรดทราบว่าควรใช้โหมดโปร่งใส เว้นแต่คุณจะมีความรู้เชิงลึกเพื่อทำให้โหมด API ทำงานได้ ฉันเริ่มต้นด้วยโหมดโปร่งใสเพื่อสาธิตการทำงานด้านล่าง แต่ตั้งแต่นั้นมาได้ย้ายไปยังโหมด API เพื่อเพิ่มความสามารถในการควบคุมการส่ง-รับที่ได้รับการปรับปรุง (รอดำเนินการเวอร์ชันที่ใช้งานได้ในขณะที่เขียนบทความนี้)
ทำตามขั้นตอนเดียวกันสำหรับอุปกรณ์ทั้งหมดที่ จะถูกใช้งานบนเครือข่าย เมื่ออุปกรณ์ภายในเครื่องเสร็จสมบูรณ์แล้ว จะสามารถอัปเดตอุปกรณ์ระยะไกลอื่นๆ ได้หากมองเห็นได้ (ใกล้พอ)
ปิด X-CTU และเพิ่มผู้ใช้ปัจจุบันในกลุ่มการโทรผ่าน:
sudo usermod -a -G dialout root
รีบูตแล้ว:
ตั้งค่ามินิคอมผ่าน:
sudo aptitude install minicom
minicom -s
serial port setup
a, set to /dev/ttyUSB0, then hit enter
e, set baud rate to 115200, then hit enter
hit enter again to close the window and arrive at the configuration page of minicom
select to save as dfl, followed by enter
then move to exit, and hit return
test connection to a locally connected device via
three plus symbols without hitting return
if it replies “ok” in a few seconds or less, all is well
หรือหน้าจอ:
screen /dev/ttyUSB0
อีกครั้ง หากคุณเห็นข้อความแจ้งให้เข้าสู่ระบบ แสดงว่าคุณเชื่อมต่อแล้ว โปรดทราบว่าหน้าจออาจเป็นตัวเลือกที่ดีที่สุดสำหรับผู้ใช้ส่วนใหญ่ มันมีคุณภาพโดยธรรมชาติของความสะดวกในการใช้งาน (เมื่อเปรียบเทียบกับ Minicom) จัดการการเชื่อมต่อแบนด์วิธต่ำได้อย่างง่ายดาย และยังคงอยู่แม้จะตัดการเชื่อมต่อจากโฮสต์ระยะไกลก็ตาม Ctl+a จากนั้น k จะตัดการเชื่อมต่อ
ติดตั้ง Coreutils เพื่อเพิ่มตัวเลือกมากกว่า Minicom (แนะนำให้ใช้หน้าจอด้วย):
sudo aptitude install coreutils && screen
stty -F /dev/ttyUSB0 -a
สิ่งนี้จะตรวจสอบความสามารถและการตั้งค่าพอร์ตอนุกรม
สื่อสารกับอุปกรณ์ของคุณ:
โปรดทราบว่าคุณโต้ตอบกับเครือข่ายของคุณบนเครื่องท้องถิ่นโดยเสียบ X-Bee หรือบนอุปกรณ์ระยะไกลที่คุณ SSH ผ่านทางอินเทอร์เน็ตตราบใดที่มี X-Bee ต่ออยู่ นอกจากนี้ โปรดทราบว่าการตั้งค่าด้านล่างเป็น rc.local ไม่ได้เก็บการตั้งค่าของฉันไว้หลังจากรีบูตเครื่อง นี่เป็นงานที่กำลังดำเนินการอยู่ ฉันตั้งค่าด้วยตนเองจนกระทั่งระบบอัตโนมัติทำงานสำเร็จ นอกจากนี้ ฉันได้เพิ่ม rc.local ลงใน RPI ด้วยตนเอง วิธีการดังกล่าวมีอยู่ที่ใดที่หนึ่ง:
sudo systemctl stop [email protected]
sudo systemctl disable [email protected]
sudo systemctl enable [email protected]
sudo nano /etc/rc.local
add the below before exit 0
บรรทัด stty มีค่าเป็นสองเท่าเนื่องจากมีการบันทึกไว้ว่าอินสแตนซ์แรกเปลี่ยนอัตรารับส่งข้อมูลที่รายงานเป็น 9600 และวินาทีเป็น 115200 หากคุณกำลังดำเนินการนี้ด้วยตนเอง ให้ทำการ "หยุด" จากนั้นให้ทำคำสั่ง start อีกครั้งเพื่อรับพร้อมท์ . สิ่งนี้อาจเป็นแบบอัตโนมัติ ฉันจะอัปเดตโพสต์นี้ด้วยการตรวจสอบกระบวนการ
stty -F /dev/ttyUSB0 speed 115200 cs8 -cstopb -parenb raw
stty -F /dev/ttyUSB0 speed 115200 cs8 -cstopb -parenb raw
sudo systemctl start [email protected]
จากนั้นใช้มินิคอม หน้าจอ หรือ "แมว" และ "นาฬิกา" เพื่อดูข้อความที่ส่ง เมื่อใช้ Minicom คุณจะได้รับข้อความแจ้งการเข้าสู่ระบบตามคำแนะนำข้างต้น ตามที่ระบุไว้ก่อนหน้านี้ ฉันยังคงพยายามทำให้สิ่งนี้ทำงานได้อย่างราบรื่นสำหรับโหมด API แต่อย่างน้อยฉันก็รู้ว่าฉันมีการเชื่อมต่อและสามารถทำคำสั่งและควบคุมพื้นฐานผ่านบรรทัดคำสั่งจากระยะไกลด้วยโหมดโปร่งใส รวมถึงการรันโปรแกรมและคำสั่งบรรทัดคำสั่ง โหมดโปร่งใสไม่มีเทคนิคการแก้ไขการแพร่กระจาย RF ที่ได้รับการปรับปรุงใดๆ ดังนั้น ฉันต้องการให้โหมด API ทำงาน ค่า RSSI และการแก้ไขข้อผิดพลาดน่าจะดี
person
james
schedule
16.07.2018