പൈത്തൺ ഉപയോഗിച്ച് എംബെഡഡ് സിസ്റ്റങ്ങളുടെ ലോകം പര്യവേക്ഷണം ചെയ്യുക. ഈ സമഗ്രമായ ഗൈഡ് MicroPython, CircuitPython, ഹാർഡ്വെയർ സംയോജനം, കൂടാതെ ലോകമെമ്പാടുമുള്ളവർക്കായി യഥാർത്ഥ ലോക പ്രോജക്റ്റുകളും ഉൾക്കൊള്ളുന്നു.
മെറ്റലിലെ പൈത്തൺ: എംബെഡഡ് പ്രോഗ്രാമിംഗിലേക്കും മൈക്രോകൺട്രോളർ സംയോജനത്തിലേക്കും ഒരു ആഴത്തിലുള്ള യാത്ര
ദശകങ്ങളായി, സ്മാർട്ട് വാച്ചുകൾ മുതൽ ഇൻഡസ്ട്രിയൽ മെഷിനറികൾ വരെ പ്രവർത്തിപ്പിക്കുന്ന ചെറിയ കമ്പ്യൂട്ടറുകളായ എംബെഡഡ് സിസ്റ്റങ്ങളുടെ ലോകം C, C++, അസംബ്ലി പോലുള്ള താഴ്ന്ന തലത്തിലുള്ള ഭാഷകളുടെ പ്രത്യേക മേഖലയായിരുന്നു. ഈ ഭാഷകൾ സമാനതകളില്ലാത്ത നിയന്ത്രണവും പ്രകടനവും വാഗ്ദാനം ചെയ്യുന്നു, എന്നാൽ അവ വളരെ വലിയ പഠന വക്രതയും, കൂടുതൽ സമയമെടുക്കുന്ന വികസന ചക്രങ്ങളുമുള്ളവയാണ്. ലാളിത്യത്തിനും, വായനാക്ഷമതയ്ക്കും, വലിയൊരു ഇക്കോസിസ്റ്റത്തിനും പേരുകേട്ട പൈത്തൺ രംഗപ്രവേശം ചെയ്യുന്നു. വെബ് സെർവറുകളിലും ഡാറ്റാ സയൻസിലും ഒതുങ്ങിയിരുന്ന പൈത്തൺ ഇപ്പോൾ ഹാർഡ്വെയറിന്റെ ഹൃദയത്തിലേക്ക് ശക്തമായ ഒരു മുന്നേറ്റം നടത്തുകയാണ്, ലോകമെമ്പാടുമുള്ള പുതിയ തലമുറയിലെ ഡെവലപ്പർമാർക്കും, ഹോബീസ്റ്റുകൾക്കും, പുതിയ കണ്ടുപിടുത്തക്കാർക്കും ഇലക്ട്രോണിക്സ് കൂടുതൽ എളുപ്പമാക്കുന്നു.
പൈത്തൺ എംബെഡഡ് പ്രോഗ്രാമിംഗിന്റെ ആവേശകരമായ ലോകത്തിലേക്കുള്ള നിങ്ങളുടെ സമഗ്രമായ ആമുഖമാണ് ഈ ഗൈഡ്. പൈത്തൺ പോലുള്ള ഉയർന്ന തലത്തിലുള്ള ഒരു ഭാഷയ്ക്ക് എങ്ങനെ ഹാർഡ്വെയറിനെ നേരിട്ട് നിയന്ത്രിക്കാൻ കഴിയുമെന്നും, ഇത് സാധ്യമാക്കുന്ന പ്രധാന പ്ലാറ്റ്ഫോമുകൾ ഏതൊക്കെയാണെന്നും, സോഫ്റ്റ്വെയറിൽ നിന്ന് സിലിക്കണിലേക്കുള്ള നിങ്ങളുടെ യാത്ര ആരംഭിക്കാൻ സഹായിക്കുന്ന പ്രായോഗിക ഉദാഹരണങ്ങൾ എന്നിവയും നമ്മുക്ക് പരിശോധിക്കാം.
പൈത്തൺ എംബെഡഡ് ഇക്കോസിസ്റ്റം: CPython-നേക്കാൾ കൂടുതൽ
നിങ്ങളുടെ ലാപ്ടോപ്പിൽ ഉപയോഗിക്കുന്ന സാധാരണ പൈത്തൺ (CPython എന്ന് അറിയപ്പെടുന്നു) ഒരു സാധാരണ മൈക്രോകൺട്രോളറിൽ ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയില്ല. ഈ ഉപകരണങ്ങൾക്ക് വളരെ പരിമിതമായ വിഭവങ്ങളാണുള്ളത്—കിലോബൈറ്റുകളിൽ RAM-ഉം മെഗാഹെർട്സിൽ പ്രോസസ്സിംഗ് ശേഷിയുമുള്ളവ. ആധുനിക കമ്പ്യൂട്ടറുകളിൽ ഇത് ഗിഗാബൈറ്റുകളിലും, GHz-ലും ആണ്. ഈ വി Gap നികത്തുന്നതിനായി, പൈത്തണിന്റെ പ്രത്യേകവും ലളിതവുമായ നടപ്പിലാക്കലുകൾ സൃഷ്ടിക്കപ്പെട്ടു.
MicroPython: മൈക്രോകൺട്രോളറുകൾക്കായുള്ള പൈത്തൺ
പരിമിതമായ ഹാർഡ്വെയറിൽ പ്രവർത്തിക്കുന്നതിനായി ഒപ്റ്റിമൈസ് ചെയ്ത പൈത്തൺ 3 പ്രോഗ്രാമിംഗ് ഭാഷയുടെ പൂർണ്ണമായ ഒരു പുനർരചനയാണ് MicroPython. Damien George ആണ് ഇത് സൃഷ്ടിച്ചത്, ഇത് നേരിട്ടുള്ള, താഴ്ന്ന തലത്തിലുള്ള ഹാർഡ്വെയർ ആക്സസ് നൽകുന്നതിലൂടെ, സ്റ്റാൻഡേർഡ് പൈത്തണിന് കഴിയുന്നത്ര അനുയോജ്യമാക്കാൻ ലക്ഷ്യമിടുന്നു.
- പ്രധാന ഫീച്ചറുകൾ: ഇത് ഒരു സംവേദനാത്മക Read-Eval-Print Loop (REPL) ഉൾക്കൊള്ളുന്നു, ഇത് ഒരു ബോർഡിലേക്ക് കണക്ട് ചെയ്യാനും, കംപൈലേഷൻ ആവശ്യമില്ലാതെ ലൈൻ-ബൈ-ലൈനായി കോഡ് എക്സിക്യൂട്ട് ചെയ്യാനും നിങ്ങളെ അനുവദിക്കുന്നു. ഇത് വളരെ കാര്യക്ഷമമാണ്, വളരെ കുറഞ്ഞ മെമ്മറി മാത്രമേ ഉപയോഗിക്കുകയുള്ളു, കൂടാതെ നേരിട്ടുള്ള ഹാർഡ്വെയർ നിയന്ത്രണത്തിനായി
machineപോലുള്ള ശക്തമായ മൊഡ്യൂളുകൾ നൽകുന്നു (GPIO, I2C, SPI, തുടങ്ങിയവ). - ഏറ്റവും മികച്ചത്: പരമാവധി പ്രകടനം, ഹാർഡ്വെയറിൻ്റെ മികച്ച നിയന്ത്രണം, കൂടാതെ നിരവധി മൈക്രോകൺട്രോളറുകളിലെ അനുയോജ്യത എന്നിവ ആവശ്യമുള്ള ഡെവലപ്പർമാർക്ക് ഇത് വളരെ ഉപകാരപ്രദമാണ്. ഇത് "മെറ്റലിനോട്" വളരെ അടുത്താണ്, കൂടാതെ പ്രകടനം നിർണായകമാകുന്ന ആപ്ലിക്കേഷനുകൾക്കായി ഇത് തിരഞ്ഞെടുക്കപ്പെടുന്നു.
CircuitPython: തുടക്കക്കാർക്ക് ഉപയോഗിക്കാൻ എളുപ്പമുള്ള ഒരു ശക്തികേന്ദ്രം
DIY (Do-It-Yourself) ഇലക്ട്രോണിക്സ് രംഗത്തെ ഒരു പ്രധാന കമ്പനിയായ Adafruit-ആണ് MicroPython-ന്റെ ഒരു ഫോർക്ക് CircuitPython ഉണ്ടാക്കുകയും പരിപാലിക്കുകയും ചെയ്യുന്നത്. ഇത് MicroPython-മായി ഒരു കോർ പങ്കിടുന്നുണ്ടെങ്കിലും, ഇതിന്റെ തത്വം ഉപയോഗിക്കാനുള്ള എളുപ്പത്തിലും, വിദ്യാഭ്യാസത്തിലും ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നു.
- പ്രധാന ഫീച്ചറുകൾ: നിങ്ങളുടെ കമ്പ്യൂട്ടറിലേക്ക് മൈക്രോകൺട്രോളറിനെ അവതരിപ്പിക്കുന്ന രീതിയാണ് ഇതിന്റെ ഏറ്റവും പ്രധാനപ്പെട്ട ഫീച്ചർ. നിങ്ങൾ ഒരു CircuitPython ബോർഡ് പ്ലഗ് ഇൻ ചെയ്യുമ്പോൾ, അതൊരു ചെറിയ USB ഡ്രൈവായി ദൃശ്യമാകും. ഈ ഡ്രൈവിലെ നിങ്ങളുടെ
code.pyഫയൽ എഡിറ്റ് ചെയ്യുക, സേവ് ചെയ്യുക. ബോർഡ് റീലോഡ് ചെയ്യുകയും നിങ്ങളുടെ പുതിയ കോഡ് സ്വയമേവ പ്രവർത്തിപ്പിക്കുകയും ചെയ്യും. എല്ലാ പിന്തുണയ്ക്കുന്ന ബോർഡുകളിലും ഒരു ഏകീകൃത API-യും ഇതിനുണ്ട്, അതായത് ഒരു ബോർഡിലെ സെൻസർ വായിക്കുന്ന കോഡ്, ചെറിയ മാറ്റങ്ങൾ വരുത്തുന്നതിലൂടെ മറ്റൊരു ബോർഡിൽ പ്രവർത്തിക്കും. - ഏറ്റവും മികച്ചത്: തുടക്കക്കാർ, അധ്യാപകർ, വേഗത്തിൽ പ്രോട്ടോടൈപ്പ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നവർ എന്നിവർക്ക് ഇത് വളരെ നല്ലതാണ്. പഠിക്കാൻ എളുപ്പമാണ്, കൂടാതെ Adafruit നൽകുന്ന വിപുലമായ ലൈബ്രറി ഇക്കോസിസ്റ്റം സെൻസറുകളും, ഡിസ്പ്ലേകളും, മറ്റ് ഘടകങ്ങളും സംയോജിപ്പിക്കുന്നത് വളരെ ലളിതമാക്കുന്നു.
MicroPython vs. CircuitPython: ഒരു ലഘു താരതമ്യം
ഇവയിലൊന്ന് തിരഞ്ഞെടുക്കുന്നത് നിങ്ങളുടെ പ്രോജക്റ്റിന്റെ ലക്ഷ്യങ്ങളെയും, അനുഭവപരിചയത്തെയും ആശ്രയിച്ചിരിക്കുന്നു.
- തത്വം: MicroPython ഹാർഡ്വെയർ-നിർദ്ദിഷ്ട ഫീച്ചറുകൾക്കും, പ്രകടനത്തിനും മുൻഗണന നൽകുന്നു. CircuitPython ലാളിത്യം, സ്ഥിരത, പഠിക്കാനുള്ള എളുപ്പം എന്നിവയ്ക്ക് മുൻഗണന നൽകുന്നു.
- പ്രവർത്തനരീതി: MicroPython ഉപയോഗിച്ച്, നിങ്ങൾ സാധാരണയായി Thonny പോലുള്ള ഒരു ഉപകരണം ഉപയോഗിച്ച് ഉപകരണത്തിന്റെ REPL-ലേക്ക് കണക്ട് ചെയ്യുകയും, ഫയലുകൾ അപ്ലോഡ് ചെയ്യുകയും ചെയ്യുന്നു. CircuitPython ഉപയോഗിച്ച്, നിങ്ങൾ ഒരു
code.pyഫയൽ USB ഡ്രൈവിലേക്ക് Drag and drop ചെയ്യുന്നു. - ഹാർഡ്വെയർ പിന്തുണ: MicroPython നിരവധി നിർമ്മാതാക്കളുടെ വലിയ ബോർഡുകളെ പിന്തുണയ്ക്കുന്നു. CircuitPython പ്രധാനമായും Adafruit-ൽ നിന്നുള്ള ബോർഡുകളെയും, തിരഞ്ഞെടുത്ത മൂന്നാം കക്ഷി പങ്കാളികളെയും പിന്തുണയ്ക്കുന്നു, എന്നാൽ ഇതിന്റെ പിന്തുണ വളരെ ആഴത്തിലുള്ളതും നന്നായി രേഖപ്പെടുത്തിയിട്ടുള്ളതുമാണ്.
- ലൈബ്രറികൾ: CircuitPython-ന് ഇൻസ്റ്റാൾ ചെയ്യാൻ എളുപ്പമുള്ള, വലിയ ലൈബ്രറികളുണ്ട്. MicroPython ലൈബ്രറികളും ലഭ്യമാണ്, പക്ഷേ കൂടുതൽ വിഭജിക്കപ്പെട്ടിരിക്കാം.
ഈ ഗൈഡിനായി, ആശയങ്ങളും, നിരവധി കോഡ് ഉദാഹരണങ്ങളും ഇരുവർക്കും ബാധകമാകും, ചെറിയ മാറ്റങ്ങൾ വരുത്തേണ്ടി വരും. വ്യത്യാസങ്ങൾ പ്രധാനമാണെങ്കിൽ ഞങ്ങൾ അത് ചൂണ്ടിക്കാണിക്കാം.
നിങ്ങളുടെ ഹാർഡ്വെയർ തിരഞ്ഞെടുക്കുന്നു: മൈക്രോകൺട്രോളർ യുദ്ധക്കളം
പൈത്തൺ പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന മൈക്രോകൺട്രോളറുകളുടെ (MCUs) എണ്ണം സമീപ വർഷങ്ങളിൽ വർധിച്ചു. ലോകമെമ്പാടുമുള്ളവർക്കായി ഏറ്റവും പ്രചാരമുള്ളതും, എളുപ്പത്തിൽ കിട്ടുന്നതുമായ ചില ഓപ്ഷനുകൾ ഇതാ.
Raspberry Pi Pico & RP2040
പൂർണ്ണമായ Raspberry Pi കമ്പ്യൂട്ടറുമായി ആശയക്കുഴപ്പത്തിലാകരുത്, Pico എന്നത് ഇഷ്ടമുള്ള RP2040 ചിപ്പ് ഉപയോഗിച്ച് നിർമ്മിച്ച കുറഞ്ഞ ചിലവിൽ, ഉയർന്ന പ്രകടനം നൽകുന്ന ഒരു മൈക്രോകൺട്രോളർ ബോർഡാണ്. ഇത് ഹാർഡ്വെയറിലെ പൈത്തണിന് ഒരു ആഗോള പ്രിയങ്കരമായി മാറിയിരിക്കുന്നു.
- പ്രധാന ഫീച്ചറുകൾ: ശക്തമായ ഡ്യുവൽ-കോർ ARM Cortex-M0+ പ്രൊസസ്സർ, 264KB RAM, പ്രോഗ്രാമബിൾ I/O (PIO) എന്ന് പേരുള്ള ഒരു പ്രത്യേക ഫീച്ചർ, ഇത് ഇഷ്ടമുള്ള ഹാർഡ്വെയർ ഇന്റർഫേസുകൾ ഉണ്ടാക്കാൻ സഹായിക്കുന്നു. പുതിയ Pico W മോഡൽ ഓൺ-ബോർഡ് Wi-Fi-യും നൽകുന്നു.
- പൈത്തണിന് ഇത് എന്തുകൊണ്ട് മികച്ചതാണ്: MicroPython-ന് ഇതിന് ഔദ്യോഗിക പിന്തുണയുണ്ട്, CircuitPython-നും ഇത് നന്നായി സപ്പോർട്ട് ചെയ്യുന്നു. കുറഞ്ഞ വില (പലപ്പോഴും $10 USD-ൽ താഴെ) നല്ല പ്രകടനം കാഴ്ചവെക്കുന്ന ഒന്ന് എന്ന നിലയിൽ ഇത് വളരെ മികച്ചതാണ്.
Espressif ESP32 & ESP8266
ഷാങ്ഹായി ആസ്ഥാനമായുള്ള Espressif Systems എന്ന കമ്പനി നിർമ്മിച്ചത്, IoT-യുടെ എതിരില്ലാത്ത ചാമ്പ്യൻമാരാണ് ESP കുടുംബത്തിലെ ചിപ്പുകൾ. കണക്റ്റുചെയ്ത പ്രോജക്റ്റുകൾക്കായി തിരഞ്ഞെടുക്കുന്ന ഒന്നാണ് ഇതിലെ സംയോജിത Wi-Fi, ബ്ലൂടൂത്ത് കഴിവുകൾ.
- പ്രധാന ഫീച്ചറുകൾ: ശക്തമായ സിംഗിൾ അല്ലെങ്കിൽ ഡ്യുവൽ-കോർ പ്രൊസസ്സറുകൾ, ബിൽറ്റ്-ഇൻ Wi-Fi, (ESP32-ൽ) ബ്ലൂടൂത്ത്. ലോകമെമ്പാടുമുള്ള നിർമ്മാതാക്കൾ വിവിധതരം ഡെവലപ്മെന്റ് ബോർഡുകളിൽ ഇത് ലഭ്യമാണ്.
- പൈത്തണിന് ഇത് എന്തുകൊണ്ട് മികച്ചതാണ്: മികച്ച MicroPython പിന്തുണ, കുറച്ച് വരി പൈത്തൺ കോഡ് ഉപയോഗിച്ച് കണക്റ്റുചെയ്ത ഉപകരണങ്ങൾ നിർമ്മിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. വെബ് സെർവറുകൾ പ്രവർത്തിപ്പിക്കുകയോ, ഒന്നിലധികം സെൻസറുകളിൽ നിന്നുള്ള ഡാറ്റ കൈകാര്യം ചെയ്യുകയോ പോലുള്ള സങ്കീർണ്ണമായ ടാസ്ക്കുകൾ ചെയ്യുന്നതിന് ആവശ്യമായ പ്രോസസ്സിംഗ് ശേഷി ഇതിനുണ്ട്.
Adafruit Feather, ItsyBitsy, and Trinket Ecosystems
Adafruit, സ്റ്റാൻഡേർഡ് ഫോം ഫാക്ടറുകളിൽ വൈവിധ്യമാർന്ന ബോർഡുകൾ വാഗ്ദാനം ചെയ്യുന്നു. നിർദ്ദിഷ്ട ചിപ്പുകളല്ല, CircuitPython ഇക്കോസിസ്റ്റത്തിൽ തടസ്സമില്ലാതെ പ്രവർത്തിക്കാൻ രൂപകൽപ്പന ചെയ്ത ഉൽപ്പന്ന കുടുംബങ്ങളാണിവ.
- പ്രധാന ഫീച്ചറുകൾ: Feather കുടുംബത്തിലെ ബോർഡുകൾ ഒരു പൊതുവായ പിന്നൗട്ട് പങ്കിടുന്നു, ഇത് അവ പരസ്പരം മാറ്റാൻ സഹായിക്കുന്നു. പലതിലും ബാറ്ററി ചാർജിംഗ് സർക്യൂട്ടുകളും കണക്ടറുകളും ഉൾപ്പെടുന്നു. RP2040, ESP32 എന്നിവയുൾപ്പെടെ വിവിധ മൈക്രോകൺട്രോളറുകൾ ഇതിൽ ലഭ്യമാണ്.
- പൈത്തണിന് ഇത് എന്തുകൊണ്ട് മികച്ചതാണ്: CircuitPython-നു വേണ്ടി ഇത് അടിമുടി രൂപകൽപ്പന ചെയ്തിട്ടുള്ളതാണ്. ഈ ശക്തമായ സംയോജനം, നിരവധി ലൈബ്രറികളിലേക്കും ട്യൂട്ടോറിയലുകളിലേക്കും എളുപ്പത്തിൽ പ്രവേശിക്കാൻ സാധിക്കുന്നു.
ആരംഭിക്കുന്നു: ഹാർഡ്വെയറിലെ നിങ്ങളുടെ ആദ്യത്തെ "Hello, World"
സിദ്ധാന്തത്തിൽ നിന്ന് പ്രായോഗികതയിലേക്ക് കടക്കാം. എംബെഡഡ് പ്രോഗ്രാമിംഗിന്റെ പരമ്പരാഗതമായ "Hello, World" ഒരു LED-യെ പ്രകാശിക്കുക എന്നതാണ്. നിങ്ങളുടെ കോഡ് എഡിറ്റർ മുതൽ ബോർഡിലെ ഫേംവെയർ വരെയുള്ള നിങ്ങളുടെ മുഴുവൻ ടൂൾചെയിനും ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഈ ലളിതമായ പ്രവർത്തി സ്ഥിരീകരിക്കുന്നു.
ആവശ്യമുള്ളവ
- ഒരു പിന്തുണയുള്ള മൈക്രോകൺട്രോളർ ബോർഡ് (ഉദാഹരണത്തിന്, Raspberry Pi Pico, ESP32, അല്ലെങ്കിൽ ഒരു Adafruit ബോർഡ്).
- ഡാറ്റാ ട്രാൻസ്ഫർ (ചാർജിംഗിന് വേണ്ടി മാത്രമല്ല) പിന്തുണയ്ക്കുന്ന ഒരു USB കേബിൾ.
- ഒരു കമ്പ്യൂട്ടർ (Windows, macOS, അല്ലെങ്കിൽ Linux).
ഘട്ടം 1: ഫേംവെയർ ഇൻസ്റ്റാൾ ചെയ്യുക
നിങ്ങളുടെ ബോർഡിൽ MicroPython അല്ലെങ്കിൽ CircuitPython ഇന്റർപ്രെറ്റർ ഇൻസ്റ്റാൾ ചെയ്യണം. ഇതിനെ "ഫേംവെയർ ഫ്ലാഷിംഗ്" എന്ന് വിളിക്കുന്നു.
- CircuitPython-നു വേണ്ടി: circuitpython.org സന്ദർശിക്കുക, നിങ്ങളുടെ ബോർഡ് കണ്ടെത്തുക,
.uf2ഫയൽ ഡൗൺലോഡ് ചെയ്യുക. നിങ്ങളുടെ ബോർഡിനെ ബൂട്ട്ലോഡർ മോഡിൽ വെക്കുക (ഇതിനായി സാധാരണയായി ഒരു "BOOT" അല്ലെങ്കിൽ "RESET" ബട്ടൺ അമർത്തിപ്പിടിച്ച് പ്ലഗ് ഇൻ ചെയ്യുക). ഇതൊരു USB ഡ്രൈവായി ദൃശ്യമാകും. ഡൗൺലോഡ് ചെയ്ത.uf2ഫയൽ അതിലേക്ക് Drag ചെയ്യുക. ഡ്രൈവ് പുറത്തേക്ക് വരും, ഇപ്പോൾ CIRCUITPY എന്ന് പേരുനൽകും. - MicroPython-നു വേണ്ടി: micropython.org സന്ദർശിക്കുക, നിങ്ങളുടെ ബോർഡ് കണ്ടെത്തുക, ഫേംവെയർ ഫയൽ (സാധാരണയായി
.uf2അല്ലെങ്കിൽ.binഫയൽ) ഡൗൺലോഡ് ചെയ്യുക. പ്രക്രിയ ഏതാണ്ട് സമാനമാണ്: ബോർഡിനെ ബൂട്ട്ലോഡർ മോഡിൽ വെക്കുക, ഫയൽ പകർത്തുക.
ഘട്ടം 2: നിങ്ങളുടെ എഡിറ്റർ സജ്ജീകരിക്കുക
ഏത് ടെക്സ്റ്റ് എഡിറ്റർ ഉപയോഗിക്കാമെങ്കിലും, ഒരു സമർപ്പിത IDE വികസനം വളരെ എളുപ്പമാക്കുന്നു. തുടക്കക്കാർക്കായി Thonny IDE വളരെ ശുപാർശ ചെയ്യുന്നു. ഇത് സൗജന്യവും, ക്രോസ്-പ്ലാറ്റ്ഫോമാണ്, കൂടാതെ MicroPython, CircuitPython എന്നിവയ്ക്കുള്ള പിന്തുണ ഇതിൽ ഉണ്ടാകും. ഇത് നിങ്ങളുടെ ബോർഡ് സ്വയമേവ കണ്ടെത്തുന്നു, ഉപകരണത്തിന്റെ REPL-ലേക്ക് പ്രവേശനം നൽകുന്നു, കൂടാതെ ഫയലുകൾ അപ്ലോഡ് ചെയ്യുന്നത് എളുപ്പമാക്കുന്നു.
ഘട്ടം 3: LED മിന്നുന്ന കോഡ്
ഇനി കോഡിന്റെ കാര്യം. MicroPython-നായി main.py എന്നൊരു പുതിയ ഫയൽ ഉണ്ടാക്കുക അല്ലെങ്കിൽ CircuitPython-നായി നിലവിലുള്ള code.py എഡിറ്റ് ചെയ്യുക.
Raspberry Pi Pico W-യിലെ MicroPython-നുള്ള ഉദാഹരണം:
import machine
import utime
# The onboard LED on a Pico W is accessed via a special name
led = machine.Pin("LED", machine.Pin.OUT)
while True:
led.toggle()
print("LED toggled!")
utime.sleep(0.5) # Wait for half a second
മിക്ക Adafruit ബോർഡുകളിലെയും CircuitPython-നുള്ള ഉദാഹരണം:
import board
import digitalio
import time
# The onboard LED is usually connected to a pin named 'LED'
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = not led.value
print("LED toggled!")
time.sleep(0.5)
കോഡ് വിശകലനം:
import: ഹാർഡ്വെയർ നിയന്ത്രിക്കാൻ ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുന്നു (machine,digitalio,board) കൂടാതെ സമയം കൈകാര്യം ചെയ്യുക (utime,time).- പിൻ സജ്ജീകരണം: ഏത് ഫിസിക്കൽ പിന്നാണ് നിയന്ത്രിക്കേണ്ടതെന്ന് (ഓൺബോർഡ് LED) നിർവചിച്ച്, അതിനെ ഔട്ട്പുട്ടായി കോൺഫിഗർ ചെയ്യുക.
- The Loop:
while True:എന്ന ലൂപ്പ് എന്നെന്നും പ്രവർത്തിക്കും. ലൂപ്പിനുള്ളിൽ, LED-യുടെ അവസ്ഥ മാറ്റുന്നു (ഓൺ അല്ലെങ്കിൽ ഓഫ്), സീരിയൽ കൺസോളിലേക്ക് ഒരു സന്ദേശം പ്രിന്റ് ചെയ്യുന്നു (Thonny-യിൽ ദൃശ്യമാകും), തുടർന്ന് അര സെക്കൻഡ് ഇടവേള നൽകുന്നു.
ഈ ഫയൽ നിങ്ങളുടെ ഉപകരണത്തിൽ സേവ് ചെയ്യുക. ഓൺബോർഡ് LED ഉടനടി മിന്നിത്തുടങ്ങും. അഭിനന്ദനങ്ങൾ, നിങ്ങൾ ഇപ്പോൾ ഒരു മൈക്രോകൺട്രോളറിൽ പൈത്തൺ നേരിട്ട് പ്രവർത്തിപ്പിച്ചു!
ആഴത്തിലേക്ക് ഇറങ്ങുക: മൈക്രോകൺട്രോളറുകളിലെ പൈത്തണിന്റെ പ്രധാന ആശയങ്ങൾ
ഒരു LED-യെ പ്രകാശിപ്പിക്കുന്നത് ഒരു തുടക്കം മാത്രമാണ്. കൂടുതൽ സങ്കീർണ്ണമായ പ്രോജക്റ്റുകൾ നിർമ്മിക്കാൻ നിങ്ങൾ ഉപയോഗിക്കുന്ന അടിസ്ഥാന ആശയങ്ങൾ നമുക്ക് പര്യവേക്ഷണം ചെയ്യാം.
ജനറൽ പർപ്പസ് ഇൻപുട്ട്/ഔട്ട്പുട്ട് (GPIO)
ലോകവുമായി നിങ്ങളുടെ മൈക്രോകൺട്രോളറിനെ ഇടപഴകാൻ അനുവദിക്കുന്ന ഫിസിക്കൽ കണക്ഷനുകളാണ് GPIO പിന്നുകൾ. ഇവ ഇൻപുട്ടുകളായി (ബട്ടണുകളോ സെൻസറുകളോ പോലുള്ളവയിൽ നിന്ന് ഡാറ്റ വായിക്കാൻ) അല്ലെങ്കിൽ ഔട്ട്പുട്ടുകളായി (LED-കൾ, മോട്ടോറുകൾ അല്ലെങ്കിൽ റിലേകൾ നിയന്ത്രിക്കാൻ) കോൺഫിഗർ ചെയ്യാവുന്നതാണ്.
ഒരു ബട്ടൺ അമർത്തിയത് വായിക്കുന്നു (MicroPython):
import machine
import utime
button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
while True:
if button.value() == 1:
print("Button is pressed!")
utime.sleep(0.1)
ഇവിടെ, പിൻ 14 ഒരു ഇൻപുട്ടായി ആന്തരിക പുൾ-ഡൗൺ റെസിസ്റ്റർ ഉപയോഗിച്ച് കോൺഫിഗർ ചെയ്യുന്നു. ബട്ടണിന്റെ മൂല്യം 1 (ഉയർന്നത്) ആണോയെന്ന് ലൂപ്പ് തുടർച്ചയായി പരിശോധിക്കുന്നു, ഇത് അമർത്തിയെന്ന് സൂചിപ്പിക്കുന്നു.
സെൻസറുകൾ ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നു
ഏറ്റവും രസകരമായ പ്രോജക്റ്റുകളിൽ സെൻസറുകൾ ഉൾപ്പെടുന്നു. അനലോഗ്, ഡിജിറ്റൽ സെൻസറുകളിൽ നിന്ന് എളുപ്പത്തിൽ വായിക്കാൻ പൈത്തൺ നിങ്ങളെ സഹായിക്കുന്നു.
- അനലോഗ് സെൻസറുകൾ: ഫോട്ടോറെസിസ്റ്ററുകൾ (പ്രകാശം അളക്കുന്നത്) അല്ലെങ്കിൽ പൊട്ടൻഷ്യോമീറ്ററുകൾ പോലുള്ള ഈ സെൻസറുകൾ ഒരു വേരിയബിൾ വോൾട്ടേജ് നൽകുന്നു. മൈക്രോകൺട്രോളറിന്റെ അനലോഗ്-ടു-ഡിജിറ്റൽ കൺവെർട്ടർ (ADC) ഈ വോൾട്ടേജ് വായിക്കുകയും ഒരു നമ്പറായി പരിവർത്തനം ചെയ്യുകയും ചെയ്യുന്നു.
- ഡിജിറ്റൽ സെൻസറുകൾ: താപനില/ആർദ്രത സെൻസറുകൾ, ആക്സിലറോമീറ്ററുകൾ പോലുള്ള ഈ കൂടുതൽ നൂതനമായ സെൻസറുകൾ, നിർദ്ദിഷ്ട പ്രോട്ടോക്കോളുകൾ ഉപയോഗിച്ച് ആശയവിനിമയം നടത്തുന്നു. ഏറ്റവും സാധാരണമായ രണ്ട് പ്രോട്ടോക്കോളുകളാണ് I2C (Inter-Integrated Circuit) കൂടാതെ SPI (Serial Peripheral Interface). ഈ പ്രോട്ടോക്കോളുകൾ ഏതാനും പിന്നുകൾ മാത്രം ഉപയോഗിച്ച് ഒന്നിലധികം ഉപകരണങ്ങളെ മൈക്രോകൺട്രോളറുമായി ആശയവിനിമയം നടത്താൻ അനുവദിക്കുന്നു. ഭാഗ്യവശാൽ, ലൈബ്രറികൾ നിങ്ങൾക്കായി ആശയവിനിമയം കൈകാര്യം ചെയ്യുന്നതിനാൽ, നിങ്ങൾ കുറഞ്ഞ ലെവൽ വിശദാംശങ്ങൾ അറിയേണ്ടതില്ല.
BMP280 സെൻസർ ഉപയോഗിച്ച് താപനില അളക്കുന്നു (CircuitPython):
import board
import adafruit_bmp280
# Create an I2C bus object
i2c = board.I2C() # Uses the default SCL and SDA pins
# Create a sensor object
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c)
# Read the temperature
temperature = bmp280.temperature
print(f"Temperature: {temperature:.2f} C")
പൾസ് വിഡ്ത് മോഡുലേഷൻ (PWM)
ഒരു ഡിജിറ്റൽ പിന്നിൽ അനലോഗ് ഔട്ട്പുട്ട് അനുകരിക്കുന്നതിന് ഉപയോഗിക്കുന്ന ഒരു സാങ്കേതികതയാണ് PWM. ഒരു പിൻ വേഗത്തിൽ ഓൺ, ഓഫ് ചെയ്യുന്നത് വഴി, ശരാശരി വോൾട്ടേജ് നിയന്ത്രിക്കാൻ കഴിയും, ഇത് ഒരു LED കുറയ്ക്കുന്നതിനും, DC മോട്ടോറിന്റെ വേഗത നിയന്ത്രിക്കുന്നതിനും, അല്ലെങ്കിൽ ഒരു സെർവോ മോട്ടോർ സ്ഥാപിക്കുന്നതിനും ഉപയോഗപ്രദമാണ്.
ബന്ധവും, കാര്യങ്ങളുടെ ഇന്റർനെറ്റും (IoT)
ESP32, Pico W തുടങ്ങിയ ബോർഡുകൾ ശരിക്കും തിളങ്ങുന്നത് ഇവിടെയാണ്. ബിൽറ്റ്-ഇൻ Wi-Fi ഉപയോഗിച്ച്, IoT ഉപകരണങ്ങൾ ഉണ്ടാക്കുന്നത് പൈത്തൺ വളരെ ലളിതമാക്കുന്നു.
Wi-Fi-ലേക്ക് കണക്ട് ചെയ്യുന്നു
നിങ്ങളുടെ ഉപകരണം ഒരു നെറ്റ്വർക്കിലേക്ക് കണക്ട് ചെയ്യുന്നത് ആദ്യപടി. നിങ്ങളുടെ നെറ്റ്വർക്ക് ക്രെഡൻഷ്യലുകൾ സുരക്ഷിതമായി സംഭരിക്കുന്നതിന് നിങ്ങൾ ഒരു ഫയൽ ഉണ്ടാക്കേണ്ടതുണ്ട് (സാധാരണയായി CircuitPython-ൽ secrets.py എന്ന് വിളിക്കുന്നു).
ഒരു ESP32-യെ Wi-Fi-ലേക്ക് കണക്ട് ചെയ്യുന്നു (MicroPython):
import network
SSID = "YourNetworkName"
PASSWORD = "YourNetworkPassword"
station = network.WLAN(network.STA_IF)
station.active(True)
station.connect(SSID, PASSWORD)
while not station.isconnected():
pass
print("Connection successful")
print(station.ifconfig())
വെബ് അഭ്യർത്ഥനകൾ നടത്തുന്നു
കണക്ട് ചെയ്ത ശേഷം, നിങ്ങൾക്ക് ഇന്റർനെറ്റുമായി സംവദിക്കാൻ കഴിയും. നിങ്ങൾക്ക് ആപ്ലിക്കേഷൻ പ്രോഗ്രാമിംഗ് ഇന്റർഫേസുകളിൽ (APIs) നിന്ന് ഡാറ്റ നേടാനും, സെൻസർ ഡാറ്റ ഒരു വെബ് സേവനത്തിലേക്ക് പോസ്റ്റ് ചെയ്യാനും അല്ലെങ്കിൽ ഓൺലൈൻ പ്രവർത്തനങ്ങൾ ട്രിഗർ ചെയ്യാനും കഴിയും.
ഒരു API-യിൽ നിന്ന് JSON ഡാറ്റ കൊണ്ടുവരുന്നു (urequests ലൈബ്രറി ഉപയോഗിച്ച്):
import urequests
response = urequests.get("http://worldtimeapi.org/api/timezone/Etc/UTC")
data = response.json()
print(f"The current UTC time is: {data['datetime']}")
response.close()
MQTT: IoT-യുടെ ഭാഷ
HTTP ഉപയോഗപ്രദമാണെങ്കിലും, IoT ആശയവിനിമയത്തിനുള്ള സ്വർണ്ണ നിലവാരം MQTT (Message Queuing Telemetry Transport) ആണ്. കുറഞ്ഞ ബാൻഡ്വിഡ്ത്തും, ഉയർന്ന ലേറ്റൻസിയും ഉള്ള നെറ്റ്വർക്കുകൾക്കായി രൂപകൽപ്പന ചെയ്ത ഒരു ഭാരം കുറഞ്ഞ പ്രസിദ്ധീകരണ-സബ്സ്ക്രൈബ് പ്രോട്ടോക്കോൾ ആണിത്. ഒരു ഉപകരണത്തിന് സെൻസർ ഡാറ്റ ഒരു "വിഷയത്തിലേക്ക്" "പ്രസിദ്ധീകരിക്കാൻ" കഴിയും, കൂടാതെ ആ വിഷയത്തിലേക്ക് "സബ്സ്ക്രൈബ്" ചെയ്തിട്ടുള്ള മറ്റേതൊരു ഉപകരണവും (അല്ലെങ്കിൽ സെർവറും) തൽക്ഷണം ഡാറ്റ സ്വീകരിക്കും. ഒരു വെബ് സെർവറിനെ നിരന്തരം പോൾ ചെയ്യുന്നതിനേക്കാൾ വളരെ മികച്ചതാണിത്.
വിപുലമായ വിഷയങ്ങളും മികച്ച രീതികളും
നിങ്ങളുടെ പ്രോജക്റ്റുകൾ വളരുമ്പോൾ, ഒരു മൈക്രോകൺട്രോളറിന്റെ പരിമിതികൾ നിങ്ങൾ കണ്ടെത്തും. ശക്തമായ എംബെഡഡ് പൈത്തൺ കോഡ് എഴുതുന്നതിനുള്ള ചില മികച്ച രീതികൾ ഇതാ.
- മെമ്മറി മാനേജ്മെന്റ്: RAM ആണ് നിങ്ങളുടെ ഏറ്റവും വിലപ്പെട്ട resource. ലൂപ്പുകൾക്കുള്ളിൽ ലിസ്റ്റുകളോ, വലിയ സ്ട്രിംഗുകളോ പോലുള്ള വലിയ ഒബ്ജക്റ്റുകൾ ഉണ്ടാക്കുന്നത് ഒഴിവാക്കുക. മെമ്മറി സ്വതന്ത്രമാക്കാൻ
gcമൊഡ്യൂൾ ഉപയോഗിക്കുക (import gc; gc.collect()) കൂടാതെ ഗാർബേജ് ശേഖരണം സ്വമേധയാ ട്രിഗർ ചെയ്യുക. - പവർ മാനേജ്മെന്റ്: ബാറ്ററിയിൽ പ്രവർത്തിക്കുന്ന ഉപകരണങ്ങൾക്ക്, പവർ കാര്യക്ഷമത നിർണായകമാണ്. മിക്ക മൈക്രോകൺട്രോളറുകളിലും "ഡീപ്സ്ലീപ്" മോഡ് ഉണ്ട്, ഇത് ചിപ്പിന്റെ മിക്ക ഭാഗങ്ങളും ഷട്ട് ഡൗൺ ചെയ്യുന്നു, വളരെ കുറഞ്ഞ പവർ മാത്രമേ ഉപയോഗിക്കുകയുള്ളു, കൂടാതെ ഒരു നിശ്ചിത സമയത്തിനു ശേഷം അല്ലെങ്കിൽ ഒരു ബാഹ്യ ട്രിഗറിൽ നിന്ന് ഉണർത്താൻ കഴിയും.
- ഫയൽ സിസ്റ്റം: ഒരു സാധാരണ കമ്പ്യൂട്ടറിലേതുപോലെ, നിങ്ങൾക്ക് ഓൺബോർഡ് ഫ്ലാഷ് മെമ്മറിയിലേക്ക് ഫയലുകൾ വായിക്കാനും എഴുതാനും കഴിയും. ഡാറ്റ ലോഗ് ചെയ്യുന്നതിനോ, കോൺഫിഗറേഷൻ ക്രമീകരണങ്ങൾ സംഭരിക്കുന്നതിനോ ഇത് മികച്ചതാണ്.
- ഇടവേളകൾ: ഒരു ലൂപ്പിൽ ഒരു ബട്ടണിന്റെ അവസ്ഥ തുടർച്ചയായി പരിശോധിക്കുന്നതിനുപകരം (പോളിംഗ് എന്ന് വിളിക്കുന്ന ഒരു പ്രക്രിയ), നിങ്ങൾക്ക് ഒരു തടസ്സം ഉപയോഗിക്കാം. ഒരു തടസ്സ അഭ്യർത്ഥന (IRQ) എന്നത് പ്രധാന കോഡ് താൽക്കാലികമായി നിർത്തി ഒരു പ്രത്യേക ഫംഗ്ഷൻ പ്രവർത്തിപ്പിക്കുകയും, തുടർന്ന് പുനരാരംഭിക്കുകയും ചെയ്യുന്ന ഒരു ഹാർഡ്വെയർ സിഗ്നലാണ്. ഇത് വളരെ കാര്യക്ഷമവും പ്രതികരിക്കുന്നതുമാണ്.
യഥാർത്ഥ ലോക പ്രോജക്റ്റ് ആശയങ്ങളുടെ പ്രദർശനം
നിർമ്മിക്കാൻ തയ്യാറാണോ? നമ്മൾ ചർച്ച ചെയ്ത ആശയങ്ങൾ സംയോജിപ്പിക്കുന്ന ചില ആശയങ്ങൾ ഇതാ:
- Smart Weather Station: താപനില, ഈർപ്പം, മർദ്ദം എന്നിവ അളക്കാൻ BME280 സെൻസറുള്ള ഒരു ESP32 ഉപയോഗിക്കുക. ചെറിയ OLED സ്ക്രീനിൽ ഡാറ്റ പ്രദർശിപ്പിക്കുക, Adafruit IO അല്ലെങ്കിൽ Home Assistant പോലുള്ള ഡാഷ്ബോർഡിലേക്ക് MQTT വഴി പ്രസിദ്ധീകരിക്കുക.
- ഓട്ടോമേറ്റഡ് പ്ലാന്റ് വാട്ടറിംഗ് സിസ്റ്റം: ഒരു Raspberry Pi Pico-യിലേക്ക് ഒരു സോയിൽ മോയിസ്ചർ സെൻസർ കണക്ട് ചെയ്യുക. മണ്ണ് ഉണങ്ങുമ്പോൾ, കുറച്ച് നിമിഷങ്ങൾ ഒരു ചെറിയ വാട്ടർ പമ്പ് ഓണാക്കാൻ ഒരു GPIO പിൻ ഉപയോഗിക്കുക.
- Custom USB Macro Pad: ഒരു Pico അല്ലെങ്കിൽ നിരവധി Adafruit ബോർഡുകൾ പോലുള്ള USB HID (Human Interface Device) പിന്തുണയ്ക്കുന്ന ഒരു CircuitPython ബോർഡ് ഉപയോഗിക്കുക. സങ്കീർണ്ണമായ കീബോർഡ് ഷോർട്ട്കട്ടുകൾ അയയ്ക്കുന്നതിനോ, മുൻകൂട്ടി നിശ്ചയിച്ച ടെക്സ്റ്റ് ടൈപ്പ് ചെയ്യുന്നതിനോ, നിങ്ങളുടെ ഉൽപാദനക്ഷമത വർദ്ധിപ്പിക്കുന്നതിനോ ബട്ടണുകൾ പ്രോഗ്രാം ചെയ്യുക.
ഉപസംഹാരം: ഭാവി പൈത്തണിൽ ഉൾച്ചേർന്നിരിക്കുന്നു
എംബെഡഡ് വികസനത്തിന്റെ രീതിശാസ്ത്രം പൈത്തൺ അടിസ്ഥാനപരമായി മാറ്റിയിരിക്കുന്നു. പ്രവേശനത്തിനുള്ള തടസ്സം ഇത് കുറച്ചിട്ടുണ്ട്, സോഫ്റ്റ്വെയർ ഡെവലപ്പർമാരെ ഹാർഡ്വെയർ നിയന്ത്രിക്കാനും, ഹാർഡ്വെയർ എഞ്ചിനീയർമാരെ എന്നത്തേക്കാളും വേഗത്തിൽ പ്രോട്ടോടൈപ്പ് ചെയ്യാനും ഇത് പ്രാപ്തമാക്കുന്നു. കുറഞ്ഞ വരികളിൽ സെൻസർ റീഡ് ചെയ്യുകയോ, ഇന്റർനെറ്റിലേക്ക് കണക്ട് ചെയ്യുകയോ ചെയ്യുന്നത് ഒരു ഗെയിം-ചേഞ്ചറാണ്.
ഒരു LED-യിൽ നിന്ന്, പൂർണ്ണ ഫീച്ചറുള്ള ഒരു IoT ഉപകരണത്തിലേക്കുള്ള യാത്ര വളരെ പ്രയോജനകരമാണ്. വെല്ലുവിളികൾ നേരിടുമ്പോൾ, ഒരു ഗ്ലോബൽ കമ്മ്യൂണിറ്റിയും, ധാരാളം ഓപ്പൺ സോഴ്സ് ലൈബ്രറികളും നിങ്ങൾ ഒറ്റക്കല്ല എന്ന് ഉറപ്പുവരുത്തുന്നു. അതിനാൽ ഒരു ബോർഡ് തിരഞ്ഞെടുക്കുക, ഫേംവെയർ ഫ്ലാഷ് ചെയ്യുക, കൂടാതെ പൈത്തണിന്റെയും, ഭൗതിക ലോകത്തിന്റെയും ഈ ആവേശകരമായ സംഗമസ്ഥാനത്ത് നിങ്ങളുടെ സാഹസിക യാത്ര ആരംഭിക്കുക. ഭാവനയാണ് ഏക പരിധി.