Բովանդակություն:

Raspberry Pi Zero W Datalogger: 8 քայլ (նկարներով)
Raspberry Pi Zero W Datalogger: 8 քայլ (նկարներով)

Video: Raspberry Pi Zero W Datalogger: 8 քայլ (նկարներով)

Video: Raspberry Pi Zero W Datalogger: 8 քայլ (նկարներով)
Video: TITANFALL 2 Ամբողջական ԽԱՂ | ՔԱՐՈԶԱՐՇԱՎ - Ընթացք / PS4 (Բոլոր օդաչուների սաղավարտները) 2024, Նոյեմբեր
Anonim
Raspberry Pi Zero W Datalogger
Raspberry Pi Zero W Datalogger

Raspberry Pi Zero W- ի միջոցով կարող եք պատրաստել էժան և հեշտ օգտագործվող տվյալների գրիչ, որը կարող է կամ միացված լինել տեղական wifi ցանցին, կամ ծառայել որպես դաշտի մուտքի կետ, որը թույլ է տալիս անլար ներբեռնել տվյալները ձեր սմարթֆոնով:

Ես ներկայացրեցի այս կարգավորումը Ամերիկյան երկրաֆիզիկական միության աշնանային հանդիպման 2017 -ին ՝ որպես ձեր սեփական տվյալների գրանցման կարգաբերման միջոց: Այդ ներկայացումը կարող եք գտնել այստեղ:

Այն, ինչ ձեզ հարկավոր կլինի.

  • A Raspberry Pi Zero W
  • Միկրո 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- ի մեջ, միացրեք էկրանը և ստեղնաշարը և միացրեք այն `միացնելով հոսանքի մալուխը: Գլխազերծ կարգավորումը նույնպես հնարավոր է, բայց կպահանջի միանալ SSH- ով:

Pi- ի մուտքը գործարկելուց հետո (կանխադրված օգտվողի անուն ՝ pi, գաղտնաբառ ՝ ազնվամորի) և փոխել գաղտնաբառը «passwd» հրամանով:

Ստեղնաշարը կարող է կազմաձևվել ՝ տերմինալում մուտքագրելով «sudo raspi-config»:

Քայլ 2: Միացեք WiFi- ին

Միացեք WiFi- ին
Միացեք WiFi- ին
Միացեք WiFi- ին
Միացեք WiFi- ին
Միացեք WiFi- ին
Միացեք WiFi- ին
Միացեք WiFi- ին
Միացեք 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" #Մուտքագրեք անցման փուլ 2 = "author = 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 reboot), ձեր wifi կապը պետք է աշխատի: Դուք կարող եք դա ստուգել ՝ վեբ կայք տեղադրելով.

ping www.google.com

Չեղարկել պինգը CTRL+C- ով

Pi- ի միջոցով SSH- ին անլար միանալու համար դուք պետք է միացնեք SSH- ն.

sudo raspi-config

Գնացեք «5 միջերեսային ընտրանքներ» և միացրեք SSH- ը: Հետո հետ գնացեք և դուրս եկեք կազմաձևից:

Փնտրեք Pi- ի IP հասցեն.

ifconfig

IP- ն կլինի wlan0 ինտերֆեյսի «inet addr:» տակ:

Այժմ կարող եք միանալ Pi- ին WiFi- ի միջոցով, եթե նույն ցանցում եք: Ներբեռնեք Putty (պատուհանների համար), մուտքագրեք IP հասցեն, որը գտել եք «Host name» բաժնում և սեղմել «Open»: Նախազգուշացումն ընդունելուց հետո այժմ պետք է կարողանաք տեսնել հրամանի տողը և մուտք գործել:

Քայլ 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- ում հետևյալ կերպ.

Բաց պիթոն;

պիթոն 3

Սերիայի ներմուծում.

ներմուծել սերիալ

Բացեք com պորտը.

ser = serial. Սերիալ (port = '/dev/ttyACM0', բաուդրատ = 9600, ժամկետ = 5)

Որտեղ Arduino- ի բաուդրատը այս դեպքում սահմանվել է 9600:

Կարող եք կարդալ և տպել տող ՝ գործելով հետևյալ ծածկագիրը.

ser.readline (). վերծանել ('utf-8')

Եթե այն աշխատում է, կարող եք փակել կապը և դուրս գալ Python- ից ՝

ser.close ()

ելք ()

Քայլ 5: Կարգավորեք WiFi մուտքի կետի հնարավորությունները

Տեղադրելով ձեր Pi Zero W- ն wifi մուտքի կետի ռեժիմում, կարող եք դրան միանալ ցանկացած wifi սարքի հետ: Սա թույլ է տալիս կարգավորել անտառահատիչը և ներբեռնել տվյալները wifi- ով, մալուխներ կամ վարորդներ չեն պահանջվում:

Դրա համար Adafruit- ն ունի լավ ձեռնարկ: Որոշ փոքր դիտողություններ.

  • /Etc/hostapd/hostapd.conf վարորդի համար մի օգտագործեք վարորդի տողը:
  • «Թարմացնել hostapd» քայլը չպետք է անհրաժեշտ լինի:

Եթե ձեռնարկի վերջում մուտքի կետը չի աշխատում, փորձեք վերագործարկել Pi- ն (sudo reboot):

Քայլ 6. Անցում Wifi մուտքի կետի և հաճախորդի ռեժիմների միջև

Երբեմն դուք կցանկանաք թարմացնել ծրագրակազմը կամ տեղադրել նոր ծրագրակազմ ձեր Raspberry Pi- ի վրա, բայց դա պահանջում է ինտերնետ կապ: Բարեբախտաբար, երկուսի միջև անցումը շատ հեշտ է:

Միացեք Pi- ին SSH- ով (մալուխի միջոցով, այլ ոչ թե wifi!): Սկսեք ՝ դադարեցնելով մուտքի կետի ծառայությունները.

sudo cystemctl stop hostapd.service

sudo cystemctl stop isc-dhcp-server.service

Այնուհետև խմբագրեք ցանցի միջերեսների ֆայլը.

sudo nano/etc/network/interfaces

Այստեղ դուք պետք է մեկնաբանեք հոստինգի պարամետրերը և չմեկնաբանեք ցանցի միացման պարամետրերը: Փոխեք այն հետևյալից.

#-Հյուրընկալման պարամետրեր.

allow-hotplug wlan0 iface wlan0 inet ստատիկ հասցե 192.168.42.1 ցանցային դիմակ 255.255.255.0 # -Nանցային (հաճախորդի) պարամետրեր ՝ #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Սրան ՝

#-Հոսթավորման պարամետրեր.

Պահեք և փակեք ֆայլը:

Հաջորդը, դուք գործարկում եք հետևյալ հրամանները.

sudo systemctl սկսել 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 կապի միջոցով ներբեռնելու համար ՝ դիտարկիչով նավարկելով դեպի Pi- ի IP հասցե (192.168.42.1): Wանկացած wifi միացված սարք կարող է ներբեռնել դրանք առանց լրացուցիչ ծրագրակազմի:

SFTP կապ

SSH- ի միջոցով կարող է կատարվել FTP կապ: Դուք կարող եք օգտագործել Filezilla- ն ՝ մեծ քանակությամբ ֆայլեր արագ և հեշտ փոխանցելու համար (տես նկարը):

Իրական ժամանակի ժամացույց

Քանի որ Pi- ի ներքին ժամացույցը զգալիորեն կշարժվի, եթե ինտերնետին միացում չկա, իրական ժամանակի ժամացույցի (RTC) մոդուլ կպահանջվի, եթե ճշգրիտ ժամանակաչափ է պահանջվում: Նման մոդուլներից մեկը RasClock- ն է, տեղադրման հրահանգներին կարող եք ծանոթանալ այստեղ: Հասանելի են նաև i2c- ով հիմնված այլ ժամացույցներ (այսինքն ՝ DS3231)

Եզրակացություն

Եթե ամեն ինչ ճիշտ է ընթանում, ապա այժմ պետք է ունենաք աշխատող Pi Zero տվյալների հավաքագրիչ: Հաջորդ քայլում ներառված է պիթոնի գրանցման սցենարի օրինակ:

Քայլ 8: Python Logging Script- ի օրինակ

ներմուծել os

ժամանակից ներմուծել սերիա ժամանակից ներմուծել ժամանակից ներմուծել ամսաթվեր ներմուծել numpy որպես np ser = սերիա: Սերիալ (port = 'COM4', baudrate = 57600, timeout = 5) directory = r '\ var / www / html / data / anemometer / WMPro1352_ 'ser.flushInput () ser.flushOutput () try: while True: day_timestring = datetime.strftime (datetime.now (),'%Y%m%d ') file_today = directory + day_timestring +'.dat ' #կարդալ տվյալները և անմիջապես ստացեք ժամանակային գիծը = ser.readline (). վերծանել ('utf-8') nowtime = datetime.strftime (datetime.now (), '%Y-%m-%d%H:%M:% S.%f ') line = line.split (', ') try: u = float (տող [1]) բացառությամբ `u = np.nan փորձել: v = float (տող [2]) բացառությամբ` v = np.nan փորձել: w = float (տող [3]) բացառությամբ `w = np.nan փորձել: c = float (տող [5]) բացառությամբ` c = np.nan Ts = 1/403*c ** 2 - 273.15 փորձել.) fileobject.write (str (u)+','+str (v)+','+str (w)+','+str (c)+','+str (Ts)+','+ փող (Ta)+'\ n') fileobject.clos e () else: with open (file_today, 'w') as fileobject: fileobject.write ('"Time", "u", "v", "w", "c", "Ts", "Ta" / n ') fileobject.write (nowtime+', ') fileobject.write (str (u)+', '+str (v)+', '+str (w)+', '+str (c)+', '+str (Ts)+', '+str (Ta)+' / n ') fileobject.close () բացառությամբ KeyboardIntruptrupt: ser.close ()

Խորհուրդ ենք տալիս: