મેં વર્ષો સુધી અલ્ગોરિધમમાં ખોવાઈને વિતાવ્યા છે. કોઈ રાત્રે હું પચાસ વર્ષ જૂના ઓસિલોસ્કોપનું ટીયરડાઉન (teardown) જોઈ રહ્યો હોઉં; તો બીજી સવારે હું રોબોટ-આર્મનું સ્કીમેટિક કોપી કરી રહ્યો હોઉં જે મને માંડ સમજાયું હોય અને જે ટ્યુટોરિયલમાં અડધા સ્ટેપ્સ છોડી દેવામાં આવ્યા હોય. હું રેન્ડમ YouTube વિડિયોથી લઈને અધૂરા બ્લોગ પોસ્ટ્સ સુધી કૂદતો રહ્યો, અને મેં એવા પ્રોજેક્ટ્સ પર મારા વીકેન્ડ્સ બગાડ્યા જે કાં તો કંઈ શીખવા માટે ખૂબ જ સરળ હતા અથવા એટલા જટિલ હતા કે તે અડધા વાયરિંગ સાથે ડ્રોઅરમાં પડ્યા રહી ગયા. જો હું રિસેટ દબાવી શકતો હોત અને 2026 માં ઇલેક્ટ્રોનિક્સની નવી શરૂઆત કરી શકતો હોત, તો હું એ અરાજકતાના બદલે એક સિંગલ, સુનિશ્ચિત માર્ગ પસંદ કરત. ઇન્ટરનેટ મારા માટે શિક્ષણ તૈયાર કરી દેશે તેવી આશા રાખવાનું હવે બંધ.
અહીં એ રોડમેપ છે જે હું અનુસર્યો હોત તો સારું હોત.
Phase 1: વીજળી ખરેખર શું કરે છે તે સમજો
દરેક કોપર ટ્રેસ અને સોલ્ડર જોઈન્ટ પાછળ રહેલા ભૌતિક વિજ્ઞાન (physics) થી શરૂઆત કરો. તમારે વોલ્ટેજ, કરંટ અને રેઝિસ્ટન્સને માત્ર ફ્લેશકાર્ડ પરના શબ્દો તરીકે નહીં, પણ એવી શક્તિઓ તરીકે જાણવાની જરૂર છે જેને તમે અનુભવી શકો અને અનુમાન લગાવી શકો. ઓહ્મનો નિયમ (Ohm's Law) એટલો શીખો કે તમે બેન્ચ પર ચાલતા હોવ ત્યારે પણ મનમાં જ રેઝિસ્ટરની કિંમતનો અંદાજ લગાવી શકો. તે નાનું પેકેજ કેમ બ્રાઉન (બળી) ગયું તે વિચારતા પહેલા પાવર કેલ્ક્યુલેશન માટે ગણતરી કરો. બ્રેડબોર્ડ પર સીરીઝ અને પેરેલલ સર્કિટ બનાવો અને તેને માપો. કિર્ચોફના નિયમો (Kirchhoff's Laws) શૈક્ષણિક લાગે છે, પરંતુ જ્યારે માપેલ વોલ્ટેજ કોઈ અર્થ ન ધરાવતો હોય ત્યારે સર્કિટને ડીબગ કરવા માટે આ જ કામ આવે છે. ઇલેક્ટ્રિકલ સેફ્ટી પર વાસ્તવિક સમય આપો. શીખો કે કરંટ લિમિટ ધરાવતું બેન્ચ સપ્લાય તમારા ઘટકો (components) અને તમારી આંગળીઓને કેવી રીતે બચાવશે. સમજો કે પાવર બંધ હોય ત્યારે પણ ચાર્જ થયેલ કેપેસિટર તમને કરડી શકે છે. સાધનોનું સન્માન કરો, કારણ કે હોસ્પિટલના બેડ પરથી કોઈ સારું શીખી શકતું નથી.
Phase 2: ઘટકોને તમારા સાથી બનાવો
પરીક્ષા માટે ગોખતા હોવ તેમ ભાગોને ગોખશો નહીં. તેનો ઉપયોગ કરો. LED સાથે સીરીઝમાં એક રેઝિસ્ટર મૂકો અને તેની વેલ્યુ બદલવાથી શું થાય છે તે જુઓ. કોઈ અવાજ કરતા મોટર પર કેપેસિટર લગાવો અને જુઓ કે મલ્ટિમીટર પરનો રિપલ (ripple) કેવી રીતે અદૃશ્ય થઈ જાય છે. ઇન્ડક્ટર દ્વારા કરંટ પસાર કરો અને જુઓ કે તે કેવી રીતે ફેરફારનો વિરોધ કરે છે. ડાયોડ ઇલેક્ટ્રોનને એક જ દિશામાં વાળે છે; સર્કિટને ઉલટા બેટરીથી બચાવવા માટે તેનો ઉપયોગ કરો. ટ્રાન્ઝિસ્ટરને સ્વિચ તરીકે વાપરો. BJT (જેને તેના બેઝ પર કરંટની જરૂર હોય છે) અને MOSFET (જે ચાલુ થયા પછી લગભગ કોઈ કરંટની જરૂર નથી હોતી) વચ્ચેનો તફાવત અનુભવો. રિલે (relay) ચલાવો અને તે મિકેનિકલ સ્નેપ સાંભળો જે તમારા નાજુક લોજિકને 12V પંપના અવાજથી અલગ કરે છે. લિનિયર વોલ્ટેજ રેગ્યુલેટર કેવી રીતે વધારાના વોલ્ટેજને ગરમી તરીકે બહાર કાઢે છે તે જુઓ, અને પછી સમજો કે તમને તે ગરમી કેમ અનુભવાઈ. જ્યાં સુધી તમે સોલ્ડરની સુગંધ ન લો અને પાર્ટને કામ કરતા ન જુઓ ત્યાં સુધી પાઠ્યપુસ્તકના ડાયાગ્રામનો કોઈ અર્થ નથી.
Phase 3: જાણીજોઈને કંઈક નકામું બનાવો
જ્યારે તમારા હાથ ગંદા થાય (કામ કરો) ત્યારે જ થીયરી મજબૂત બને છે. બટન, પોટેન્શિયોમીટર અને બઝરથી શરૂઆત કરો. જો તમે ઈચ્છો તો પોટ (pot) અને 555 સાથે સ્લાઇડિંગ-ટોન નોઈઝમેકર બનાવો, અથવા પછી પછીથી કોડ દ્વારા કરો. અલ્ટ્રાસોનિક સેન્સર અને સર્વો મોટર ઉમેરો. તેમને સસ્તા પાર્કિંગ સેન્સરની જેમ સાથે કામ કરતા કરો. LCD ડિસ્પ્લે ચલાવો અને તમે જે અંતર અથવા વોલ્ટેજ વાંચી રહ્યા છો તે પ્રિન્ટ કરો. આ તબક્કાનો સાચો ધ્યેય પ્રોજેક્ટ નથી, પરંતુ ડેટાશીટ (datasheet) વાંચતા શીખવું છે. ટ્યુટોરિયલ્સ જૂના થઈ જાય છે. લિંક્સ કામ કરતી બંધ થઈ જાય છે. બીજાની GitHub રિપોઝિટરી કોપી કરવાથી તમને માત્ર એક ઝબકતો પ્રકાશ મળશે અને સમજણ શૂન્ય હશે. ડેટાશીટ તમને ચોક્કસ I2C એડ્રેસ, તમારા સિગ્નલને કેટલો સમય રાખવાની જરૂર છે તે ટાઈમિંગ, અને એવા એબ્સોલ્યુટ મેક્સિમમ રેટિંગ્સ જણાવે છે જે કામ કરતી સર્કિટ અને કચરા વચ્ચેનો તફાવત છે. બ્લોગ પોસ્ટ વાંચતા પહેલા મેન્યુફેક્ચરરની PDF વાંચતા શીખો.
Phase 4: એવો કોડ લખો જે હાર્ડવેર વિશે જાણતો હોય
એમ્બેડેડ પ્રોગ્રામિંગ વેબ એપ લખવા જેવું નથી. તમે સિલિકોનથી માત્ર થોડા જ ઇંચ દૂર છો જે તમને બચાવવા માટે કોઈ ઓપરેટિંગ સિસ્ટમ ધરાવતું નથી. વેરિયેબલ્સ અને લૂપ્સ તમારું મૂળભૂત વ્યાકરણ છે. ફંક્શન્સ તમારા લોજિકને અસ્તવ્યસ્ત (spaghetti) થતું અટકાવે છે. એરેઝ (Arrays) તમને સેન્સર ડેટા બફર કરવામાં મદદ કરે છે. પોઇન્ટર્સ (Pointers) અહીં એવી રીતે મહત્વના છે જે રીતે તે ૩૨ GB RAM ધરાવતા સર્વર પર ભાગ્યે જ હોય છે, કારણ કે માઇક્રોકન્ટ્રોલર પર તમે સીધા જ હાર્ડવેર રજિસ્ટરમાં કિંમતો મોકલી રહ્યા છો. ઇન્ટરપ્ટ્સ (interrupts) શીખો જેથી તમારો કોડ મેઈન લૂપ મોટરને કંટ્રોલ કરવામાં વ્યસ્ત હોય ત્યારે પણ બટન દબાવવા અથવા ટાઈમર પર પ્રતિક્રિયા આપી શકે. મેમરી મેનેજમેન્ટનો અભ્યાસ કરો. એમ્બેડેડ ચિપ પર સ્ટેક ઓવરફ્લો (Stack overflow) કોઈ મૈત્રીપૂર્ણ એરર પ્રિન્ટ નથી કરતું; તે શાંતિથી વેરિયેબલ્સને બગાડે છે અને તમને કલાકો સુધી ડીબગ કરવામાં મૂકી દે છે.
Phase 5: ઉપકરણો કેવી રીતે વાતચીત કરે છે તે શીખો
આધુનિક પ્રોજેક્ટ ભાગ્યે જ માત્ર એક જ ચિપ પર આધારિત હોય છે. જોડાણ માટે તમારે એક શબ્દભંડોળની જરૂર છે. UART એ ડિબગિંગ અને GPS મોડ્યુલ્સ અથવા જૂના સીરીયલ ઉપકરણો સાથે વાતચીત કરવા માટેનું મુખ્ય સાધન છે. I2C એ અત્યંત સચોટ છે: બે વાયર, અનેક સેન્સર્સ, તાપમાન ચિપ્સ અથવા OLED સ્ક્રીનને જોડવા માટે ઉત્તમ. SPI વધુ ઝડપી છે અને વધુ પિનની જરૂર પડે છે, જ્યારે તમે ડિસ્પ્લે પર પિક્સેલ્સ મોકલી રહ્યા હોવ અથવા ADC માંથી ડેટા સ્ટ્રીમ કરી રહ્યા હોવ ત્યારે તે આદર્શ છે. CAN એ કાર અને ઔદ્યોગિક મશીનોની ભાષા છે; તે એવા ઇલેક્ટ્રિકલી નોઈઝી વાતાવરણમાં પણ ટકી શકે છે જે અન્ય શાંત પ્રોટોકોલને ખોરવી નાખે. USB સમજવું જરૂરી છે કારણ કે કોઈ તબક્કે તમારે તમારી એમ્બેડેડ દુનિયાને લેપટોપ સાથે જોડવાની જરૂર પડશે. માત્ર લાઈબ્રેરી ફંક્શનનો ઉપયોગ ન કરો. લોજિક એનાલાઈઝર અથવા ફક્ત એક LED જોડો અને બીટ્સ (bits) ને કેવી રીતે ખસે છે તે જુઓ. પ્રોટોકોલનું જ્ઞાન મોડ્યુલ્સના ઢગલાને એક વ્યવસ્થિત સિસ્ટમમાં ફેરવી દે છે.
ફેઝ 6: એવું માઇક્રોકન્ટ્રોલર પસંદ કરો જે તમારી સાથે આગળ વધે
ESP32 નો ઉપયોગ કરો. તે દરેક કામ માટે સંપૂર્ણ નથી, પરંતુ દસ ડોલરથી ઓછામાં તમે જે શ્રેષ્ઠ શિક્ષક ખરીદી શકો છો તે છે. ડ્યુઅલ-કોર પ્રોસેસિંગનો અર્થ એ છે કે તમે એક કોર પર Wi-Fi કોમ્યુનિકેશન અને બીજા કોર પર રિયલ-ટાઇમ કંટ્રોલ સંભાળી શકો છો, જેથી તેઓ એકબીજામાં દખલ ન કરે. ઇન-બિલ્ટ Wi-Fi અને Bluetooth તમને શીલ્ડ સ્ટેક્સ અને જમ્પર-વાયરના જાળા વગર તમારા ફોન અથવા ઇન્ટરનેટ પર ડેટા મોકલવાની સુવિધા આપે છે. તેના લો પાવર મોડ્સ ખરેખર કામ કરે છે, જે ત્યારે મહત્વનું છે જ્યારે તમે એવું રિમોટ સેન્સર બનાવો છો જેને બેટરી પેક પર છ મહિના સુધી ચાલવું હોય. તેનો ઉપયોગ હોમ ઓટોમેશન માટે કરો. તમારા ગેરેજ, તમારા છોડ અથવા તમારા પાવર વપરાશનું ગમે ત્યાંથી મોનિટરિંગ કરો. કંઈક એવું બનાવો જે વાસ્તવિક દુનિયામાં જીવે, માત્ર તમારા ડેસ્ક પર નહીં.
ફેઝ 7: બ્રેડબોર્ડથી બહાર નીકળો
બ્રેડબોર્ડ છેતરે છે. તે રેઝિસ્ટન્સ, કેપેસીટન્સ અને અસ્થિર કનેક્શન ઉમેરે છે જેના માટે તમારે દિવસો સુધી દોડવું પડી શકે છે. અસલી ઉત્પાદનો પ્રિન્ટેડ સર્કિટ બોર્ડ (PCB) પર હોય છે. KiCad ડાઉનલોડ કરો અથવા EasyEDA શરૂ કરો અને સંપૂર્ણ પ્રક્રિયા શીખો. પહેલા સ્કીમેટિક દોરો. કોઈપણ વસ્તુને ઓટોરૂટ કરતા પહેલા લેઆઉટ વિશે વિચારો. રૂટિંગ પર ધ્યાન આપો: હાઇ-સ્પીડ સિગ્નલ્સને ટૂંકા રાખો, પાવર ટ્રેસને એટલી પહોળાઈ આપો કે જેથી તે ગરમ થયા વગર કરંટ વહન કરી શકે, અને ગ્રાઉન્ડને ક્યારેય પૂરતું મહત્વ ન આપવાનું ભૂલશો નહીં. એક મજબૂત ગ્રાઉન્ડ પ્લેન એ નોઈઝ સામે તમારું શ્રેષ્ઠ સંરક્ષણ છે. જ્યારે તમે તૈયાર હોવ, ત્યારે Gerber ફાઇલો જનરેટ કરો અને તેને ઉત્પાદકને મોકલો. તમે ડિઝાઇન કરેલું બોર્ડ હાથમાં લેવું, જેના પર સિલ્કસ્ક્રીનમાં તમારું નામ હોય, તે એક અલગ જ અનુભવ છે.
ફેઝ 8: પાવર સપ્લાયનું સન્માન કરો
જો પાવર રેલ જતી રહે તો શાનદાર ફર્મવેરનો કોઈ અર્થ નથી. લિનિયર રેગ્યુલેટર્સ સરળ છે પરંતુ બિનકાર્યક્ષમ છે; તેઓ વધારાના વોલ્ટેજને ગરમીમાં ફેરવે છે, જે નાના લોજિક ડ્રો માટે ઠીક છે પરંતુ બેટરી ઉપકરણ માટે ખરાબ છે. વોલ્ટેજને કાર્યક્ષમ રીતે ઘટાડવા માટે buck converters અને જ્યારે તમારી બેટરીનો વોલ્ટેજ તમારા સર્કિટની જરૂરિયાત કરતા ઘટી જાય ત્યારે boost converters વિશે શીખો. જો તમે Li-ion અથવા LiPo સેલનો ઉપયોગ કરી રહ્યા હોવ, તો બેટરી મેનેજમેન્ટ સિસ્ટમ (BMS) અનિવાર્ય છે. તે સેલને સંતુલિત કરે છે, ઓવર-ડિસ્ચાર્જને અટકાવે છે જે કેમિસ્ટ્રીને બગાડે છે, અને થર્મલ રનઅવેને અટકાવે છે જે બેટરીને આગમાં ફેરવી શકે છે. જો તમે ઓફ-ગ્રીડ પ્રોજેક્ટ્સ કરવા માંગતા હોવ તો સોલર ચાર્જિંગનો અભ્યાસ કરો. સમજો કે જો તમે રેગ્યુલેટ ન કરો તો પૂરા સૂર્યપ્રકાશમાં રહેલું પેનલ બેટરીમાં ઓવરવોલ્ટેજ કરી શકે છે. સ્થિર પાવર એ અદ્રશ્ય પાયો છે જેના પર દરેક વિશ્વસનીય પ્રોજેક્ટ ટકેલો હોય છે.
ફેઝ 9: ક્યારે કમ્પ્યુટર બદલવું તે જાણો
માઇક્રોકન્ટ્રોલર્સ અને એમ્બેડેડ કમ્પ્યુટર્સ વચ્ચે એક સ્પષ્ટ ભેદ છે. ESP32 એક અદભૂત વસ્તુ છે, પરંતુ તે એકસાથે સંપૂર્ણ ઓપરેટિંગ સિસ્ટમ ચલાવી શકતું નથી અને વિડિયો સ્ટ્રીમ પ્રોસેસ કરી શકતું નથી. ત્યાં Raspberry Pi જેવી વસ્તુની જરૂર પડે છે. તેનો ઉપયોગ કમ્પ્યુટર વિઝન પ્રોજેક્ટ્સ માટે કરો જ્યાં તમારે વસ્તુઓ અથવા ચહેરાઓને ઓળખવા માટે OpenCV ની જરૂર હોય. આ તફાવત ક્યાં છે તે ધ્યાનથી જુઓ. માઇક્રોકન્ટ્રોલર્સ તમને ચોક્કસ સમયગાળો (deterministic timing) અને GPIO પાવર આપે છે. એમ્બેડેડ Linux કમ્પ્યુટર્સ તમને પ્રોસેસિંગ પાવર અને સોફ્ટવેર ઇકોસિસ્ટમ આપે છે. શ્રેષ્ઠ એન્જિનિયરો જાણે છે કે દરેક સમસ્યા માટે કયા પ્લેટફોર્મનો ઉપયોગ કરવો.
ફેઝ 10: ડિબગિંગને એક ધર્મ બનાવો
તમારું મલ્ટિમીટર એ તમારું સૌથી પ્રમાણિક સાધન છે. તે અનુમાન લગાવતું નથી. તે તમને જણાવશે કે તમારું 3.3V રેલ ખરેખર 2.1V પર છે કારણ કે તમારું રેગ્યુલેટર ઇનપુટ માટે પૂરતું નથી અથવા લોડ હેઠળ તમારી બેટરીનો વોલ્ટેજ ઘટી રહ્યો છે. જ્યારે તમારી આંખો કહે કે સોલ્ડર જોઈન્ટ બરાબર લાગે છે, ત્યારે તે કન્ટિન્યુટીની પુષ્ટિ કરશે. પાવર આપતા પહેલા તે ઉલટા ડાયોડને પકડી લેશે. ડિબગિંગ એ ઉતાવળમાં પતાવવાનું કામ નથી. તે એક એવી સુપરપાવર છે જે એકવાર બનાવનારા લોકો અને દસ વર્ઝન બહાર લાવનારા લોકો વચ્ચે તફાવત કરે છે. સર્કિટ શું કરી રહી છે તે વાંચતા શીખો, નહીં કે તમે શું આશા રાખી હતી તે.
ફેઝ 11: લોકોને તમારું કામ જોવા દો
પૂર્ણ થયેલા પ્રોજેક્ટ્સને ડેસ્ક ડ્રોઅરમાં ધૂળ ખાતા ન છોડો. તેમને GitHub પર મૂકો. એક README લખો જે સમજાવે કે શું કામ કરી ગયું, શું નિષ્ફળ ગયું અને શેના કારણે ધુમાડો નીકળી ગયો. તમારા બિલ્ડ્સ LinkedIn અથવા પર્સનલ બ્લોગ પર પોસ્ટ કરો. તમારા પાવર બજેટ, તમારા પ્રોટોકોલની પસંદગી, અથવા તમે તમારું પહેલું PCB લેઆઉટ કેમ રદ કરીને ફરીથી શરૂઆત કરી તે વિશે સમજાવો. શીખવવાથી તમે જે જાણો છો તેનું સંક્ષિપ્તમાં રજૂઆત થાય છે અને તમારી ખામીઓ સામે આવે છે. તે તમને તમારા પોતાના નિર્ણયો સમજવા માટે મજબૂર કરે છે. તે તમારી ક્ષમતાનો એવો માર્ગ પણ બનાવે છે જેની સાથે કોઈ સર્ટિફિકેશન પરીક્ષાનો સામનો કરી શકાતો નથી.
મુખ્ય વાત
વાસ્તવિક embedded systems બનાવવા માટે તમારે ડિગ્રીની જરૂર નથી. તમારે સાતત્યની જરૂર છે. એક resistor, એક LED અને એક બેટરીથી શરૂઆત કરો. દરરોજ બેન્ચ પર વીસ મિનિટ વિતાવો. વસ્તુઓ બગાડો. પાવર ઉલટો આપો. જો તે તમને polarity વિશે શીખવે તો કેપેસિટરને ફૂટી જવા દો. તેને સુધારો. ટ્યુટોરિયલે મને ક્યારેય એ નહોતું શીખવ્યું કે તે ખાસ પ્રકારની ગંધનો અર્થ શું હતો અથવા જ્યારે ચિપ વધુ પડતો કરંટ ખેંચે છે ત્યારે તે કેવી લાગે છે. તમે તે બનાવવાથી, debugging કરવાથી અને તમારી ભૂલો છુપાવવાનો ઇનકાર કરવાથી શીખો છો.
