I detta exempel visas hur en IoT SBC-PT kan användas för att styra en lampa via en digital GPIO-pinne. Med hjälp av ett enkelt Python-program konfigureras en GPIO-utgång som används för att kontrollera lampans funktioner.

Exemplet illustrerar ett grundläggande men mycket viktigt koncept inom IoT och inbyggda system: hur mjukvara (programkod) samverkar med hårdvara (GPIO-pinnar) för att styra externa komponenter. Samma princip används i allt från enkla indikatorlampor till mer avancerade lösningar med sensorer, reläer och andra aktuatorer.
Phyton-program – grundversion
Programmet nedan visar ett första exempel på hur en lampa kan styras genom att växla en GPIO-pinne mellan lägena HIGH och LOW.
from gpio import *
from time import *
def main():
pinMode(1, OUT)
print("Blinking")
while True:
digitalWrite(1, HIGH);
delay(1000)
digitalWrite(1, LOW);
delay(500)
if __name__ == "__main__":
main()
Programmet inleds med standard kod där importeras två bibliotek:
from gpio import * from time import *
Biblioteket gpio innehåller funktioner som används för att konfigurera och styra GPIO-pinnar, medan time används för att skapa tidsfördröjningar. Dessa fördröjningar gör det möjligt att styra hur länge lampan ska vara tänd respektive släckt.
Huvudfunktionen main()
All programlogik är samlad i funktionen main(). Detta är en vanlig och rekommenderad struktur i Python, eftersom det gör koden mer lättläst och enklare att felsöka.
def main():
Konfigurera GPIO-pinnen
pinMode(1, OUT)
Här konfigureras GPIO-pinne 1 som en utgång. Detta är ett nödvändigt steg eftersom en pinne som inte är korrekt konfigurerad inte kan styra en extern komponent. Utan denna inställning skulle lampan inte reagera på programmets instruktioner.
Startmeddelande
print("Blinking")
Denna rad skriver ut texten Blinking i konsolen. Meddelandet fungerar som en enkel bekräftelse på att programmet har startat korrekt.
Oändlig loop
while True:
Med hjälp av en oändlig loop säkerställs att programmet fortsätter att köras utan avbrott. Så länge programmet är aktivt kommer instruktionerna inuti loopen att upprepas om och om igen, vilket gör att lampan blinkar kontinuerligt.
Tända och släcka lampan
digitalWrite(1, HIGH) delay(1000)
När GPIO-pinnen sätts till HIGH skickas spänning ut på pinnen och lampan tänds. Programmet väntar därefter i 1000 millisekunder (1 sekund).
digitalWrite(1, LOW) delay(500)
När pinnen sätts till LOW tas spänningen bort och lampan släcks. Programmet väntar sedan i 500 millisekunder innan loopen börjar om.
Start av programmet
if __name__ == "__main__": main()
Denna konstruktion säkerställer att funktionen main() körs när programmet startas. Det är en standardlösning i Python som gör det möjligt att återanvända koden i andra sammanhang utan att den körs automatiskt.
Styrning av lampa enligt dataspecifikation
I detta exempel används en lampa som inte styrs enbart av elektriska nivåer (HIGH/LOW), utan av definierade tillstånd enligt en dataspecifikation. Lampan är en smart IoT-enhet och kräver därför att rätt typ av data skickas från IoT SBC-PT.
Enligt lampans Data Specifications ska ett meddelande med formatet [state] skickas till enheten, där värdet på state avgör hur lampan beter sig:
- 0 – lampan är avstängd (Off)
- 1 – lampan lyser dämpat (Dim)
- 2 – lampan är tänd (On)
Eftersom digitalWrite() endast kan skicka binära värden (HIGH eller LOW) är den funktionen inte tillräcklig i detta fall. För att följa dataspecifikationen måste istället funktionen customWrite() användas.
Användning av customWrite()
Funktionen customWrite(pin, value) används för att skicka data till en IoT-enhet enligt dess dataspecifikation. I detta fall skickas ett heltalsvärde som representerar lampans tillstånd.
Eftersom lampan är ansluten till GPIO D0, används pinne 0 i programmet. När customWrite(0, 2) anropas skickas värdet 2, vilket gör att lampan tänds. På motsvarande sätt släcks lampan när värdet 0 skickas.
Anpassat Python-program
from gpio import *
from time import *
def main():
pinMode(0, OUT)
print("Blinking lamp with customWrite")
while True:
customWrite(0, '0')
delay(1000)
customWrite(0, '1')
delay(500)
customWrite(0, '2')
delay(1000)
if __name__ == "__main__":
main()
Praktiskt resultat
Genom att växla mellan olika state-värden i en loop kan lampan:
- tändas
- släckas
- dimmas
Detta gör det möjligt att skapa tydliga ljusmönster och samtidigt visa hur mjukvara styr hårdvara via definierade gränssnitt. Exemplet demonstrerar skillnaden mellan enkel GPIO-styrning och databaserad styrning av smarta IoT-enheter, vilket är en central del i modern IoT-utveckling.
Sammanfattning
I detta exempel används en GPIO-pinne på IoT SBC-PT för att styra en lampa. För enkla komponenter kan styrning ske med HIGH och LOW, men smarta IoT-enheter kräver att styrningen följer en dataspecifikation. Genom att använda customWrite() kan lampans olika lägen styras korrekt. Exemplet visar tydligt skillnaden mellan enkel GPIO-styrning och databaserad styrning av smarta IoT-enheter, vilket är en central del i modern IoT-utveckling.