Atraskite Python galią įterptosiose sistemose su MicroPython. Išsamus vadovas apima diegimą, pritaikymą ir geriausią praktiką pasaulio kūrėjams.
Python įterptosioms sistemoms: išsamus žvilgsnis į MicroPython diegimą
Įterptųjų sistemų pasaulis išgyvena revoliuciją. Tradicinės, žemo lygio programavimo kalbos, tokios kaip C ir C++, vis dar dominuoja, tačiau atsirado naujas žaidėjas: Python, ypač per MicroPython diegimą. Šis straipsnis giliai nagrinėja MicroPython, tyrinėja jo galimybes, pritaikymą ir kaip jį galite panaudoti kurdami novatoriškus įterptuosius sprendimus visame pasaulyje.
Kas yra įterptosios sistemos?
Įterptosios sistemos yra specializuotos kompiuterinės sistemos, skirtos atlikti konkrečią užduotį arba užduočių rinkinį didesniame įrenginyje ar sistemoje. Šios sistemos yra visur, nuo jūsų skalbimo mašinos ir automobilio variklio valdymo bloko iki pramoninės automatikos įrangos ir medicinos prietaisų. Joms būdingi išteklių apribojimai (ribota atmintis, apdorojimo galia ir energijos tiekimas) ir reikalavimai realiuoju laiku (reikia greitai ir nuspėjamai reaguoti į įvykius).
MicroPython iškilimas
MicroPython yra ekonomiška ir efektyvi Python 3 implementacija, specialiai sukurta veikti mikrovaldikliuose ir įterptosiose sistemose. Ji atneša Python galią ir skaitomumą į aplinkas, turinčias ribotus išteklius, leidžiančias kūrėjams rašyti kodą aukšto lygio kalba, neaukodami našumo. Tai yra didelis privalumas, nes įterptasis programavimas tampa prieinamesnis, greitesnis ir mažiau linkęs į klaidas. Įsivaizduokite, kad prototipuojate DI projektą naudodami plačias Python bibliotekas, o tada sklandžiai diegiate kodą į mažą mikrovaldiklį, nereikės perrašyti visos programos C kalba!
Pagrindinės MicroPython savybės
- Python 3 suderinamumas: MicroPython didžiąja dalimi suderinamas su Python 3, todėl Python kūrėjams yra pažįstamas.
- Išteklių efektyvumas: Sukurtas veikti mikrovaldikliuose su ribota RAM ir „flash“ atmintimi.
- Aparatinės įrangos abstrakcija: Suteikia abstrakcijos sluoksnį, kuris supaprastina sąveiką su aparatinės įrangos komponentais, tokiais kaip GPIO išvadai, UART, I2C ir SPI sąsajos.
- Interaktyvus REPL: Apima „Read-Eval-Print Loop“ (REPL) interaktyviam kodavimui ir derinimo procesui. Prisijunkite prie mikrovaldiklio ir vykdyti Python kodą tiesiogiai.
- Plati bibliotekų palaikymas: Nors ir nėra toks platus kaip visa Python standartinė biblioteka, MicroPython teikia pagrindinį bibliotekų rinkinį bendroms užduotims, kartu su moduliais, pritaikytais sąveikai su aparatine įranga.
- Daugiaplatformis palaikymas: MicroPython palaiko platų mikrovaldiklių asortimentą, įskaitant ESP32, ESP8266, STM32 seriją, Raspberry Pi Pico ir dar daugiau.
Darbo pradžia su MicroPython
MicroPython naudojimo procesas paprastai apima šiuos veiksmus:
- Pasirinkite mikrovaldiklį: Pasirinkite mikrovaldiklį, kuris palaiko MicroPython. Populiarūs pasirinkimai apima ESP32, ESP8266, STM32 ir Raspberry Pi Pico. Apsvarstykite savo projekto reikalavimus, tokius kaip I/O išvadų skaičius, atminties talpa ir ryšio galimybės (Wi-Fi, Bluetooth).
- Įdiekite MicroPython programinę įrangą: Atsisiųskite MicroPython programinę įrangą savo pasirinktam mikrovaldikliui iš oficialios MicroPython svetainės arba projekto „GitHub“ saugyklos. Tada įrašykite programinę įrangą į mikrovaldiklio „flash“ atmintį naudodami tinkamą programavimo įrankį ar programą. Konkretus įrašymo metodas skiriasi priklausomai nuo mikrovaldiklio. Dažnai naudojami įrankiai, tokie kaip esptool.py (skirta ESP32/ESP8266), STM32CubeProgrammer (skirta STM32) arba Raspberry Pi Pico įkrovos programa.
- Prijunkite prie mikrovaldiklio: Prijunkite mikrovaldiklį prie savo kompiuterio per USB. Jei reikia, įdiekite reikiamas USB tvarkykles savo mikrovaldikliui.
- Pasiekite REPL: Naudokite serijinio terminalo programą (pvz., PuTTY, screen, minicom arba serijinį monitorių Arduino IDE) prisijungti prie mikrovaldiklio serijinio prievado. Tai leidžia jums sąveikauti su MicroPython REPL. Dažni perdavimo spartos nustatymai apima 115200.
- Rašykite ir įkelkite kodą: Galite rašyti Python kodą REPL arba teksto rengyklėje, o tada įkelti jį į mikrovaldiklį. Kodas paprastai išsaugomas kaip failas, pvz., `main.py`, kuris automatiškai vykdomas, kai mikrovaldiklis paleidžiamas. Galite naudoti įrankius, tokius kaip Thonny IDE (populiarus pasirinkimas, ypač pradedantiesiems) arba kitus kodų redaktorius, kurie palaiko MicroPython.
Praktiniai pavyzdžiai: MicroPython veiksme
1. LED mirksėjimas („Hello, World!“ įterptosioms sistemoms)
Ši paprasta programa demonstruoja pagrindinę sąveiką su GPIO išvadu. Tai yra tarptautinis standartinis pavyzdys.
import machine
import time
led = machine.Pin(2, machine.Pin.OUT) # Replace 2 with your LED pin number
while True:
led.value(1) # Turn the LED on
time.sleep(0.5) # Wait for 0.5 seconds
led.value(0) # Turn the LED off
time.sleep(0.5) # Wait for 0.5 seconds
Šis kodo fragmentas inicijuoja GPIO išvadą (šiuo pavyzdžiu 2 išvadą), nustato jį kaip išvestį ir tada perjungia išvado būseną (įjungta arba išjungta) su delsa. Šis paprastas pavyzdys gali būti pritaikytas naudoti bet kurioje palaikomoje plokštėje. Pagrindinis pritaikymas paprastai yra išvado pavadinimas.
2. Jutiklio duomenų nuskaitymas (Temperatūros jutiklio pavyzdys)
Šis pavyzdys rodo, kaip nuskaityti duomenis iš skaitmeninio temperatūros jutiklio (pvz., DHT11, DHT22). Tai yra dažna užduotis daugelyje DI programų.
import machine
import dht
import time
dht_sensor = dht.DHT11(machine.Pin(14)) # Replace 14 with your sensor data pin
while True:
try:
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
print(f'Temperature: {temperature} C, Humidity: {humidity} %')
except OSError as e:
print(f'Failed to read sensor: {e}')
time.sleep(2)
Ši programa naudoja `dht` modulį temperatūrai ir drėgmei nuskaityti iš DHT11 jutiklio. Ji rodo, kaip inicijuoti jutiklį, nuskaityti duomenis ir atspausdinti rezultatus. Įsitikinkite, kad įdiegėte reikiamas jutiklių bibliotekas konkrečiam jutikliui, kurį naudojate.
3. Prisijungimas prie Wi-Fi ir duomenų siuntimas (DI programa)
Šis pavyzdys demonstruoja, kaip prisijungti prie „Wi-Fi“ tinklo ir siųsti duomenis į nuotolinį serverį. Tai yra daugelio DI projektų esmė.
import network
import urequests
import time
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('your_wifi_ssid', 'your_wifi_password') # Replace with your credentials
while not wlan.isconnected():
print('Waiting for Wi-Fi connection...')
time.sleep(1)
print('Connected to Wi-Fi!')
def send_data(temperature, humidity):
url = 'https://your_server_endpoint'
data = {
'temperature': temperature,
'humidity': humidity
}
try:
response = urequests.post(url, json=data)
print(response.text)
response.close()
except Exception as e:
print(f'Error sending data: {e}')
while True:
# Assuming temperature and humidity are read from a sensor as in example 2
# Replace this part with your actual sensor readings
temperature = 25
humidity = 60
send_data(temperature, humidity)
time.sleep(10) # Send data every 10 seconds
Šis kodas prisijungia prie „Wi-Fi“ tinklo, apibrėžia funkciją duomenims siųsti į nuotolinį serverį naudojant HTTP POST užklausas, o tada siunčia temperatūros ir drėgmės duomenis. Nepamirškite pakeisti vietų rezervų savo tikraisiais „Wi-Fi“ prisijungimo duomenimis ir serverio galiniu tašku. Tai yra pagrindinis pavyzdys; realioje programoje galite pridėti klaidų apdorojimą, duomenų patvirtinimą ir saugumo priemones.
Tinkamo mikrovaldiklio pasirinkimas
Tinkamo mikrovaldiklio pasirinkimas yra labai svarbus jūsų MicroPython projekto sėkmei. Apsvarstykite šiuos veiksnius:
- Apdorojimo galia: Nustatykite savo programos skaičiavimo reikalavimus. Kai kuriems projektams, pvz., susijusiems su sudėtingu jutiklių duomenų apdorojimu ar mašininiu mokymusi, gali prireikti galingesnių mikrovaldiklių.
- Atmintis (RAM ir „Flash“): RAM dydis lemia jūsų kodo dydį ir duomenų kiekį, kurį galite apdoroti. „Flash“ atmintis saugo MicroPython programinę įrangą ir jūsų programos kodą. Patikrinkite šias specifikacijas.
- I/O išvadų skaičius: Turimų GPIO išvadų skaičius yra labai svarbus jungiantis prie jutiklių, aktuatorių ir kitų išorinių įrenginių.
- Ryšys: Ar jums reikalingas „Wi-Fi“, „Bluetooth“ ar kitos ryšio sąsajos? Daugelis mikrovaldiklių turi integruotus „Wi-Fi“ ir (arba) „Bluetooth“ modulius.
- Energijos suvartojimas: Akumuliatoriais maitinamiems įrenginiams atsižvelkite į mikrovaldiklio energijos suvartojimo charakteristikas.
- Bendruomenė ir palaikymas: Bendruomenės palaikymo, mokymo programų ir bibliotekų prieinamumas gali labai paveikti jūsų kūrimo patirtį. ESP32 ir Raspberry Pi Pico turi dideles ir aktyvias bendruomenes.
- Kaina: Mikrovaldiklių kainos skiriasi. Subalansuokite reikiamas funkcijas su savo biudžetu.
MicroPython kūrimo įrankiai ir aplinkos
- Thonny IDE: Patogi, daugiaplatformė IDE, specialiai sukurta MicroPython ir Python pradedantiesiems. Ji supaprastina kodo įkėlimą, prieigą prie REPL ir derinimą. Plačiai naudojama visame pasaulyje.
- Mu Editor: Dar viena populiari, paprasta IDE, skirta MicroPython kūrimui, ypač tinkanti pradedantiesiems.
- Visual Studio Code su Pymakr plėtiniu: Visual Studio Code (VS Code) yra universalus kodo redaktorius, o Pymakr plėtinys suteikia funkcijų kodo įkėlimui, prieigai prie REPL ir MicroPython projektų derinimui.
- Arduino IDE: Arduino IDE gali būti naudojama MicroPython kūrimui kai kuriose plokštėse, nors jos pagrindinis dėmesys skiriamas Arduino eskizams (C/C++).
- Komandinės eilutės įrankiai: Naudokite tokius įrankius kaip `ampy` (MicroPython įrankis failų įkėlimui) ir `rshell` (nuotolinis apvalkalas sąveikai su REPL).
Geriausia MicroPython kūrimo praktika
- Optimizuokite kodą išteklių apribojimams: Atkreipkite dėmesį į atminties naudojimą ir apdorojimo galią. Venkite naudoti pernelyg didelių duomenų struktūrų ar sudėtingų skaičiavimų, jei įmanoma.
- Protingai naudokite bibliotekas: Pasinaudokite esamomis MicroPython bibliotekomis, kad išvengtumėte „išradimo iš naujo“. Patikrinkite, ar biblioteka teikia reikalingas funkcijas.
- Klaidų tvarkymas: Įdiekite patikimą klaidų tvarkymą, kad sugautumėte išimtis ir išvengtumėte kodo gedimų. Naudokite `try...except` blokus.
- Moduliuokite savo kodą: Suskaidykite savo kodą į mažesnius, pakartotinai naudojamus modulius, kad pagerintumėte skaitomumą ir priežiūrą.
- Komentarai ir dokumentacija: Dokumentuokite savo kodą komentarais, kad paaiškintumėte jo funkcionalumą ir palengvintumėte supratimą kitiems (ir sau ateityje).
- Testavimas ir derinimas: Kruopščiai išbandykite savo kodą, naudodami REPL interaktyviam derinimui ir diagnostinių pranešimų spausdinimui.
- Energijos valdymas: Baterijomis maitinamiems įrenginiams optimizuokite mažą energijos suvartojimą, perjungdami mikrovaldiklį į miego režimus, kai jis nenaudojamas.
- Failų sistemos organizavimas: Logiškai sutvarkykite savo projekto failus mikrovaldiklio failų sistemoje. Sukurkite aplankus skirtingiems moduliams ir duomenims.
- Apsvarstykite programinės įrangos atnaujinimus belaidžiu ryšiu (OTA): Įrenginiams, kurie jau įdiegti, įdiekite OTA atnaujinimus, kad būtų galima lengvai atnaujinti programinę įrangą be fizinės prieigos prie aparatinės įrangos.
MicroPython programos visame pasaulyje
MicroPython universalumas daro jį tinkamu plačiam programų spektrui įvairiuose regionuose ir kultūrose:
- Daiktų internetas (DI): Išmaniųjų namų įrenginių (pvz., automatizuotos apšvietimo sistemos namuose Indijoje), aplinkos monitoringo sistemų (pvz., oro kokybės jutikliai, dislokuoti didžiuosiuose Kinijos miestuose) ir žemės ūkio automatizavimo sistemų (pvz., išmanusis drėkinimas ūkiuose visoje Europoje) kūrimas.
- Robotika: Robotų valdymas edukaciniais tikslais mokyklose ir universitetuose visame pasaulyje, bei autonominių robotų kūrimas įvairioms užduotims.
- Duomenų registravimas: Duomenų rinkimas iš jutiklių ir jų saugojimas analizei, pvz., temperatūros, drėgmės ir slėgio rodmenys. Plačiai naudojamas mėgėjų orų entuziastų visame pasaulyje.
- Nešiojamieji įrenginiai: Išmaniųjų laikrodžių, sporto stebėjimo įrenginių ir kitų nešiojamųjų įrenginių kūrimas, kurie tampa vis labiau paplitę Amerikos, Europos ir Azijos šalyse.
- Pramonės automatizavimas: Valdymo sistemų diegimas gamybos įmonėse, naudojant jutiklių duomenis varikliams ir kitai įrangai valdyti, siekiant pagerinti efektyvumą.
- Edukaciniai projektai: Programavimo ir elektronikos mokymas studentams, suteikiant patogią ir prieinamą mokymosi platformą. Plačiai naudojamas mokyklose ir programavimo stovyklose visame pasaulyje.
- Prototipų kūrimas ir spartus vystymas: Greitas įterptųjų sistemų projektų prototipų kūrimas ir testavimas, leidžiantis kūrėjams greitai iteruoti ir greičiau pristatyti produktus rinkai.
MicroPython vs. Arduino IDE (C/C++)
MicroPython ir Arduino IDE (naudojant C/C++) yra populiarūs pasirinkimai įterptųjų sistemų kūrimui, tačiau jie turi skirtingas stiprybes ir trūkumus:
| Savybė | MicroPython | Arduino IDE (C/C++) |
|---|---|---|
| Programavimo kalba | Python | C/C++ |
| Mokymosi kreivė | Paprastai lengviau pradedantiesiems dėl Python skaitomumo ir paprastumo. | Sudėtingesnė mokymosi kreivė, reikalaujanti susipažinimo su C/C++ sintakse ir atminties valdymu. |
| Kūrimo greitis | Greitesnis kūrimas dėl Python glaustos sintaksės ir plačių bibliotekų. | Gali būti lėtesnis dėl rankinio atminties valdymo poreikio ir išsamesnio kodo. |
| Išteklių naudojimas | Gali būti daugiau atminties reikalaujantis nei C/C++, tačiau nuolat tobulėja. | Paprastai efektyvesnis atminties naudojimo ir apdorojimo galios atžvilgiu. |
| Aparatinės įrangos prieiga | Suteikia aukšto lygio abstrakciją aparatinės įrangos sąveikai, todėl ją lengviau naudoti. | Reikalauja tiesioginio aparatinės įrangos valdymo, leidžiančio detalesnį valdymą. |
| Bendruomenės palaikymas | Auganti bendruomenė su didėjančiu palaikymu ir bibliotekomis. | Didelė ir brandi bendruomenė su išsamia dokumentacija, bibliotekomis ir pavyzdžiais. |
| Idealiai tinka | Greitam prototipų kūrimui, DI projektams, edukaciniams projektams, projektams, kur kūrimo greitis yra kritinis. | Našumui kritiškoms programoms, projektams, kuriems reikalingas smulkus aparatinės įrangos valdymas, programoms, kurioms reikalinga optimizacija. |
Pasirinkimas tarp MicroPython ir Arduino IDE priklauso nuo jūsų projekto specifinių reikalavimų. Jei prioritetas yra paprastas naudojimas, spartus kūrimas ir jums patogu dirbti su Python, MicroPython yra puikus pasirinkimas. Jei jums reikia maksimalaus našumo arba labai žemo lygio aparatinės įrangos valdymo, C/C++ gali būti tinkamesnis.
MicroPython ir įterptųjų sistemų ateitis
MicroPython yra pasirengęs atlikti vis svarbesnį vaidmenį įterptųjų sistemų ateityje. Jo paprastas naudojimas ir spartaus vystymo galimybės daro jį patraukliu pasirinkimu tiek patyrusiems kūrėjams, tiek pradedantiesiems. Kadangi DI įrenginių ir įterptųjų sistemų paklausa visame pasaulyje toliau auga, MicroPython toliau tobulės ir bręs, teikdamas galingą ir prieinamą platformą inovacijoms. Aktyvi kūrėjų bendruomenė nuolat tobulina kalbą, prideda funkcijų ir plečia aparatinės įrangos palaikymą.
Didėjantis galingų ir prieinamų mikrovaldiklių prieinamumas, kartu su MicroPython paprastumu, atveria naujas galimybes įterptųjų sistemų kūrimui įvairiose pramonės šakose ir regionuose. Nuo išmaniųjų miestų iki išmaniojo žemės ūkio, nuo robotikos iki nešiojamųjų technologijų, MicroPython suteikia kūrėjams galimybę kurti novatoriškus ir veiksmingus sprendimus, sprendžiančius realaus pasaulio iššūkius. Apsvarstykite galimybę jį diegti projektuose ir sekite naujausias funkcijas bei atnaujinimus.
Išvada
MicroPython suteikia fantastišką įžangą į įterptųjų sistemų pasaulį, užpildant spragą tarp aukšto lygio programavimo ir aparatinės įrangos valdymo. Jo paprastas naudojimas, universalumas ir platus aparatinės įrangos palaikymas daro jį puikiu pasirinkimu įvairiems projektams. Priimdami MicroPython, kūrėjai gali greitai kurti prototipus, statyti ir diegti įterptuosius sprendimus, prisidėdami prie vykstančios technologinės revoliucijos. Toliau mokydamiesi ir tyrinėdami MicroPython galimybes, pastebėsite, kad tai yra tikrai vertingas įrankis kuriant įterptųjų sistemų ateitį.