สารบัญ:
- ขั้นตอนที่ 1: ตั้งค่า Pi Zero W
- ขั้นตอนที่ 2: เชื่อมต่อกับ WiFi
- ขั้นตอนที่ 3: อัปเดตและติดตั้งซอฟต์แวร์ที่จำเป็น
- ขั้นตอนที่ 4: เชื่อมต่อกับเซ็นเซอร์ (ในตัวอย่างนี้ Arduino)
- ขั้นตอนที่ 5: ตั้งค่าความสามารถจุดเชื่อมต่อ WiFi
- ขั้นตอนที่ 6: การสลับระหว่างจุดเชื่อมต่อ Wifi และโหมดไคลเอนต์
- ขั้นตอนที่ 7: ข้อสังเกตสุดท้าย
- ขั้นตอนที่ 8: ตัวอย่างสคริปต์การบันทึก Python
วีดีโอ: Raspberry Pi Zero W Datalogger: 8 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
เมื่อใช้ Raspberry Pi Zero W คุณสามารถสร้างเครื่องบันทึกข้อมูลราคาถูกและใช้งานง่าย ซึ่งสามารถเชื่อมต่อกับเครือข่าย wifi ในพื้นที่ หรือทำหน้าที่เป็นจุดเชื่อมต่อในภาคสนาม ซึ่งช่วยให้คุณดาวน์โหลดข้อมูลแบบไร้สายด้วยสมาร์ทโฟนของคุณได้
ฉันนำเสนอการตั้งค่านี้ที่งาน American Geophysical Union Fall Meeting 2017 เพื่อเป็นแนวทางในการตั้งค่าเครื่องบันทึกข้อมูลของคุณเอง คุณสามารถค้นหาการนำเสนอนั้นได้ที่นี่
สิ่งที่คุณต้องการ:
- ราสเบอร์รี่ Pi Zero W
- การ์ด micro SD
- สาย USB หรือแหล่งจ่ายไฟ USB
- คอมพิวเตอร์ที่มีเครื่องอ่านการ์ด USB
-
ไม่บังคับ (แต่มีประโยชน์):
- miniHDMI -> อะแดปเตอร์ HDMI (เพื่อเชื่อมต่อ Pi กับหน้าจอ)
- อะแดปเตอร์ USB OTG (เพื่อเชื่อมต่อแป้นพิมพ์กับ Pi
ขั้นตอนที่ 1: ตั้งค่า Pi Zero W
ในการเริ่มต้น ให้ใส่รูปภาพ Rasbian ลงในการ์ด microSD (ในบทช่วยสอนนี้ ฉันใช้ 2017-07-05-raspbian-jessie-lite มีให้ที่นี่) สามารถใช้เวอร์ชัน Lite ได้ (ไม่มีเดสก์ท็อป) เนื่องจากการตั้งค่าจะทำผ่านบรรทัดคำสั่ง
ใส่การ์ด SD ลงใน Pi เชื่อมต่อหน้าจอและแป้นพิมพ์ และเปิดเครื่องโดยเสียบสายไฟ สามารถติดตั้ง Headless ได้ แต่ต้องเชื่อมต่อผ่าน SSH
หลังจากที่ Pi บูทการเข้าสู่ระบบแล้ว (ชื่อผู้ใช้เริ่มต้น: pi, รหัสผ่าน: ราสเบอร์รี่) และเปลี่ยนรหัสผ่านด้วยคำสั่ง "passwd"
แป้นพิมพ์สามารถกำหนดค่าได้โดยป้อน "sudo raspi-config" ในเทอร์มินัล
ขั้นตอนที่ 2: เชื่อมต่อกับ WiFi
ในการเชื่อมต่ออินเทอร์เน็ต เราจะบอก Pi ว่าจะเชื่อมต่อเครือข่ายใด เริ่มต้นด้วยการเปิดไฟล์ต่อไปนี้
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ในที่นี้ ให้เพิ่มข้อมูลเครือข่ายที่ด้านล่าง
เครือข่าย={
ssid="ชื่อเครือข่าย" psk="รหัสผ่านเครือข่าย" }
ในกรณีของเครือข่ายองค์กร คุณสามารถใช้การตั้งค่าต่อไปนี้ (ปรับ WPA-EAP // TTLA // MSCHAPv2 เป็นการตั้งค่าที่เกี่ยวข้อง)
เครือข่าย={
ssid="ssid" #ป้อนชื่อเครือข่ายของคุณ key_mgmt=WPA-EAP eap=TTLS identity="xxxxx" #ป้อนรหัสผ่านบัญชีเข้าสู่ระบบของคุณ="xxxxx" #Enter the passwork phase2="auth=MSCHAPv2" }
บันทึกโดยกด CTRL+O และออกด้วย CTRL+X
ตอนนี้อ้างอิงไฟล์การกำหนดค่าของคุณใน /etc/network/interfaces
sudo nano /etc/network/interfaces
เปลี่ยนส่วน wlan0 เป็น:
อัตโนมัติ wlan0
iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
อีกครั้ง บันทึกไฟล์ (CTRL+O) แล้วออก (CTRL+X)
หลังจากรีบูต (รีบูต sudo) การเชื่อมต่อ wifi ของคุณควรใช้งานได้ คุณสามารถทดสอบสิ่งนี้ได้โดยการ ping เว็บไซต์
ping www.google.com
ยกเลิกการ ping ด้วย CTRL+C
ในการเชื่อมต่อกับ Pi ผ่าน SSH แบบไร้สาย คุณควรเปิดใช้งาน SSH:
sudo raspi-config
ไปที่ "5 ตัวเลือกการเชื่อมต่อ" และเปิดใช้งาน SSH จากนั้นย้อนกลับและออกจากการกำหนดค่า
ค้นหาที่อยู่ IP ของ Pi:
ifconfig
IP จะอยู่ภายใต้ "inet addr:" ของอินเทอร์เฟซ wlan0
ตอนนี้คุณสามารถเชื่อมต่อกับ Pi ผ่าน WiFi ได้ หากคุณอยู่ในเครือข่ายเดียวกัน ดาวน์โหลด Putty (สำหรับ windows) ป้อนที่อยู่ IP ที่คุณพบใน "ชื่อโฮสต์" แล้วกด "เปิด" หลังจากยอมรับคำเตือน คุณควรจะสามารถเห็นบรรทัดคำสั่งและเข้าสู่ระบบได้
ขั้นตอนที่ 3: อัปเดตและติดตั้งซอฟต์แวร์ที่จำเป็น
หลังจาก WiFi ใช้งานได้ ให้อัปเดต Pi ด้วย:
sudo apt-get update -y && sudo apt-get upgrade -y
หลังจากการอัปเดตเสร็จสิ้น (อาจใช้เวลาสักครู่) ให้ติดตั้งซอฟต์แวร์ที่เราจะใช้
sudo apt-get ติดตั้ง python3 python3-serial apache2 -y
ขั้นตอนที่ 4: เชื่อมต่อกับเซ็นเซอร์ (ในตัวอย่างนี้ Arduino)
เชื่อมต่อ Arduino กับคีย์บอร์ดโดยใช้ฮับ USB หรือเชื่อมต่อ Arduino ผ่านพอร์ต USB เดียว และทำการตั้งค่าด้วย SSH ผ่าน WiFi
เพื่อให้สามารถเข้าถึงพอร์ตอนุกรมที่ Arduino เชื่อมต่ออยู่ การให้สิทธิ์การเข้าถึงบัญชี pi เริ่มต้นนั้นมีประโยชน์ เนื่องจาก Arduino มักจะถูกกำหนดให้กับพอร์ต "/ dev/ttyACM0" ให้ใช้คำสั่งต่อไปนี้เพื่อให้ผู้ใช้ 'pi' เข้าถึงพอร์ต:
sudo chown pi: /dev/ttyACM0
สมมติว่า Arduino ได้รับการตั้งค่าให้ส่งข้อมูลผ่านพอร์ตอนุกรมแล้ว คุณสามารถดูข้อมูลใน python ได้ด้วยวิธีต่อไปนี้:
เปิดหลาม;
python3
นำเข้าซีเรียล:
นำเข้าซีเรียล
เปิดคอมพอร์ต:
ser = serial. Serial (พอร์ต = '/dev/ttyACM0', บอดเรต = 9600 หมดเวลา = 5)
โดยที่ baudrate ของ Arduino ถูกตั้งค่าเป็น 9600 ในกรณีนี้
คุณสามารถอ่านและพิมพ์บรรทัดโดยเรียกใช้รหัสต่อไปนี้:
ser.readline().decode('utf-8')
หากคุณใช้งานได้ คุณสามารถปิดการเชื่อมต่อและออกจาก Python ด้วย:
ser.close()
ทางออก()
ขั้นตอนที่ 5: ตั้งค่าความสามารถจุดเชื่อมต่อ WiFi
ด้วยการตั้งค่า Pi Zero W ของคุณในโหมดจุดเข้าใช้งาน wifi คุณสามารถเชื่อมต่อกับอุปกรณ์ wifi ใดก็ได้ ช่วยให้ตั้งค่าตัวบันทึกและดาวน์โหลดข้อมูลผ่าน wifi โดยไม่ต้องใช้สายเคเบิลหรือไดรเวอร์
สำหรับสิ่งนี้ Adafruit มีบทช่วยสอนที่ดี ข้อสังเกตเล็ก ๆ น้อย ๆ:
- สำหรับไดรเวอร์ /etc/hostapd/hostapd.conf ให้ใช้ don't use the driver line
- ไม่จำเป็นต้องมีขั้นตอน "อัปเดต hostapd"
หากจุดเชื่อมต่อไม่ทำงานเมื่อสิ้นสุดบทช่วยสอน ให้ลองรีบูต Pi (รีบูต sudo)
ขั้นตอนที่ 6: การสลับระหว่างจุดเชื่อมต่อ Wifi และโหมดไคลเอนต์
บางครั้ง คุณจะต้องการอัพเดตซอฟต์แวร์ หรือติดตั้งซอฟต์แวร์ใหม่บน Raspberry Pi ของคุณ แต่สิ่งนี้ต้องการการเชื่อมต่ออินเทอร์เน็ต โชคดีที่การสลับระหว่างทั้งสองนั้นง่ายมาก
เชื่อมต่อกับ Pi ด้วย SSH (ผ่านสายเคเบิล ไม่ใช่ wifi!) เริ่มต้นด้วยการหยุดบริการจุดเข้าใช้งาน:
sudo cystemctl หยุด hostapd.service
sudo cystemctl หยุด isc-dhcp-server.service
จากนั้นแก้ไขไฟล์อินเทอร์เฟซเครือข่าย:
sudo nano /etc/network/interfaces
ที่นี่คุณควรแสดงความคิดเห็นเกี่ยวกับพารามิเตอร์โฮสต์ และยกเลิกการแสดงความคิดเห็นเกี่ยวกับพารามิเตอร์การเชื่อมต่อเครือข่าย เปลี่ยนจากสิ่งนี้:
#-พารามิเตอร์การโฮสต์:
allow-hotplug wlan0 iface wlan0 inet ที่อยู่คงที่ 192.168.42.1 netmask 255.255.255.0 # - พารามิเตอร์เครือข่าย (ไคลเอนต์): #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
สำหรับสิ่งนี้:
#- พารามิเตอร์โฮสติ้ง:#allow-hotplug wlan0 #iface wlan0 inet คงที่ # ที่อยู่ 192.168.42.1 # netmask 255.255.255.0 # - พารามิเตอร์เครือข่าย (ไคลเอนต์): อัตโนมัติ wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
บันทึกและปิดไฟล์
ถัดไป คุณเรียกใช้คำสั่งต่อไปนี้:
sudo systemctl start wpa_supplicant.service
sudo ifdown wlan0 sudo ifup wlan0
ตอนนี้ Pi ของคุณควรเชื่อมต่อกับ wifi อีกครั้ง เพื่อให้คุณอัปเดตและติดตั้งซอฟต์แวร์ได้
หากต้องการกลับไปที่โหมดจุดเข้าใช้งาน ให้เปลี่ยนความคิดเห็นใน /etc/network/interfaces และรีบูต Pi
ขั้นตอนที่ 7: ข้อสังเกตสุดท้าย
การตั้งค่าเว็บไซต์
เซิร์ฟเวอร์ Apache อยู่ใน /var/www/ หากต้องการเปลี่ยนหน้าเริ่มต้น ให้แก้ไขไฟล์ /var/www/html/index.html
คุณสามารถทำให้ไฟล์ที่นี่พร้อมให้ดาวน์โหลดผ่านการเชื่อมต่อ wifi โดยไปที่เบราว์เซอร์ของคุณไปยังที่อยู่ IP ของ Pi (192.168.42.1) อุปกรณ์ที่เปิดใช้งาน wifi สามารถดาวน์โหลดได้โดยไม่ต้องใช้ซอฟต์แวร์เพิ่มเติม
การเชื่อมต่อ SFTP
ผ่าน SSH สามารถทำการเชื่อมต่อ FTP ได้ คุณสามารถใช้ Filezilla เพื่อถ่ายโอนไฟล์จำนวนมากได้อย่างรวดเร็วและง่ายดาย (ดูรูป)
นาฬิกาเรียลไทม์
เนื่องจากนาฬิกาภายในของ Pi จะเลื่อนออกไปอย่างมากหากไม่มีการเชื่อมต่ออินเทอร์เน็ต จึงจำเป็นต้องใช้โมดูลนาฬิกาตามเวลาจริง (RTC) หากจำเป็นต้องมีการบอกเวลาที่แม่นยำ หนึ่งในโมดูลดังกล่าวคือ RasClock สามารถดูคำแนะนำในการติดตั้งได้ที่นี่ นาฬิกาที่ใช้ i2c อื่น ๆ ก็มีให้เช่นกัน (เช่น DS3231)
บทสรุป
หากทุกอย่างถูกต้อง ตอนนี้คุณควรมีเครื่องบันทึกข้อมูล Pi Zero ที่ใช้งานได้! ตัวอย่างสคริปต์การบันทึกหลามจะรวมอยู่ในขั้นตอนต่อไป
ขั้นตอนที่ 8: ตัวอย่างสคริปต์การบันทึก Python
นำเข้าระบบปฏิบัติการ
นำเข้าซีเรียลจากเวลานำเข้าเวลาจากวันที่และเวลานำเข้าวันที่และเวลานำเข้า numpy เป็น np ser = serial. Serial (พอร์ต = 'COM4', baudrate = 57600, หมดเวลา = 5) ไดเร็กทอรี = r'\var\www\html\data\anemometer\WMPro1352_ ' ser.flushInput() ser.flushOutput() ลอง: ในขณะที่ True: day_timestring = datetime.strftime(datetime.now(), '%Y%m%d') file_today = directory + day_timestring + '.dat' #Read out data และรับไทม์ไลน์ทันที = ser.readline().decode('utf-8') nowtime = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:% S.%f') line = line.split(', ') ลอง: u = float(line[1]) ยกเว้น: u = np.nan ลอง: v = float(line[2]) ยกเว้น: v = np.nan ลอง: w = float(line[3]) ยกเว้น: w = np.nan ลอง: c = float(line[5]) ยกเว้น: c = np.nan Ts = 1/403 * c**2 - 273.15 ลอง: Ta = float(line[8]) ยกเว้น: Ta = np.nan if (os.path.isfile(file_today)): ด้วย open(file_today, 'a') เป็น fileobject: fileobject.write(nowtime+', ') fileobject.write(str(u)+', '+str(v)+', '+str(w)+', '+str(c)+', '+str(Ts)+', '+ str(Ta)+'\n') fileobject.clos e() อื่น: ด้วย open(file_today, 'w') เป็น fileobject: fileobject.write('"Time", "u", "v", "w", "c", "Ts", "Ta"\ n') fileobject.write(เวลานี้+', ') fileobject.write(str(u)+', '+str(v)+', '+str(w)+', '+str(c)+', '+str(Ts)+', '+str(Ta)+'\n') fileobject.close() ยกเว้น KeyboardInterrupt: ser.close()
แนะนำ:
จอแสดงผลเกม LED ทำจากไม้ที่ขับเคลื่อนโดย Raspberry Pi Zero: 11 ขั้นตอน (พร้อมรูปภาพ)
จอแสดงผล LED สำหรับเล่นเกมแบบไม้ที่ขับเคลื่อนโดย Raspberry Pi Zero: โปรเจ็กต์นี้ใช้จอแสดงผล LED แบบ WS2812 ขนาด 20x10 พิกเซลที่มีขนาด 78x35 ซม. ซึ่งสามารถติดตั้งได้ง่ายในห้องนั่งเล่นเพื่อเล่นเกมย้อนยุค เมทริกซ์เวอร์ชันแรกนี้สร้างขึ้นในปี 2016 และสร้างขึ้นใหม่โดยคนอื่นๆ อีกหลายคน ประสบการณ์นี้
ตัวนับสมาชิก YouTube โดยใช้ E-Paper Display และ Raspberry Pi Zero W: 5 ขั้นตอน (พร้อมรูปภาพ)
ตัวนับสมาชิก YouTube โดยใช้ E-Paper Display และ Raspberry Pi Zero W: ในคำแนะนำนี้ ฉันจะแสดงวิธีสร้าง Youtube Subscriber Counter ของคุณเองโดยใช้จอแสดงผล e-paper และ Raspberry Pi Zero W เพื่อสอบถาม YouTube API และอัปเดตการแสดงผล การแสดงกระดาษอิเล็กทรอนิกส์เหมาะอย่างยิ่งสำหรับโครงการประเภทนี้เนื่องจากมี
Waveshare Game-HAT MOD Raspberry PI Zero/Zero W [EN/ES]: 4 ขั้นตอน
Waveshare Game-HAT MOD Raspberry PI Zero/Zero W [EN/ES]: ENGLISH/ INGLÉS: ดังที่คุณทราบ การประกอบ Waveshare Game-HAT นั้นค่อนข้างง่าย หากเป็นหนึ่งในรุ่นที่เข้ากันได้กับการออกแบบอย่างสมบูรณ์ มันคือ Raspberry Pi 2/3 / 3A + / 3B / 3B + / โดยส่วนตัวแล้วฉันชอบที่คอนโซลเกมสามารถ h
Alaska Datalogger: 5 ขั้นตอน (พร้อมรูปภาพ)
อลาสก้า Datalogger: อลาสก้าอยู่บนขอบของการเปลี่ยนแปลงสภาพภูมิอากาศที่ก้าวหน้า ตำแหน่งที่เป็นเอกลักษณ์ของภูมิประเทศที่ไม่มีใครแตะต้องซึ่งเต็มไปด้วยนกคีรีบูนเหมืองถ่านหินที่หลากหลายช่วยให้มีโอกาสในการวิจัยมากมาย มอนตี้ เพื่อนของเราเป็นนักโบราณคดีที่ช่วยก
Arduino Datalogger: 8 ขั้นตอน (พร้อมรูปภาพ)
Arduino Datalogger: ในบทช่วยสอนนี้ เราจะสร้างเครื่องบันทึกข้อมูลอย่างง่ายโดยใช้ Arduino ประเด็นคือการเรียนรู้พื้นฐานการใช้ Arduino เพื่อบันทึกข้อมูลและพิมพ์ไปยังเทอร์มินัล เราสามารถใช้การตั้งค่าพื้นฐานนี้เพื่อทำงานต่างๆ ให้เสร็จสิ้น เพื่อเริ่มต้น