Školení
Postup výuky
Inženýr umělé inteligence a hraničních zařízení - Training
Cílem tohoto studijního programu je vysvětlit, jak nasadit AI na hraničních zařízeních pomocí služeb Azure.
Tento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Kolíky GPIO (General-Purpose I/O) lze nakonfigurovat tak, aby přijímaly elektrické signály jako vstup. Na nejzásadnější úrovni je to užitečné ve scénářích, které detekují otevírání a zavírání okruhu. Tyto obvody mohou zahrnovat tlačítka, přepínače, perové spínače, tlakové spínače a další zařízení, která představují binární (zapnuto/vypnuto) hodnoty dokončením okruhu.
V tomto kurzu použijete .NET a piny GPIO raspberry Pi k detekci otevření a zavření okruhu.
Poznámka
Tento kurz je napsán za předpokladu, že cílové zařízení je Raspberry Pi. Tento kurz se ale dá použít pro jakýkoli linuxový SBC, který podporuje .NET, například Orange Pi, ODROID a další.
Ujistěte se, že je na vašem zařízení povolený protokol SSH. Informace o Raspberry Pi najdete v tématu Nastavení serveru SSH v dokumentaci k Raspberry Pi.
Pomocí hardwarových komponent sestavte okruh, jak je znázorněno v následujícím diagramu:
Obrázek výše znázorňuje přímé spojení mezi uzemněnou kolíkem a kolíkem 21.
Tip
Diagram znázorňuje breadboard a GPIO breakout pro ilustrativní účely, ale nebojte se připojit uzemněný kolík a připnout 21 pomocí propojkového drátu na Raspberry Pi.
Podle potřeby si projděte následující diagram pinout:
Obrázek se svolením Raspberry Pi Foundation.
V upřednostňovaném vývojovém prostředí proveďte následující kroky:
Vytvořte novou konzolovou aplikaci .NET pomocí rozhraní příkazového řádku .NET nebo sady Visual Studio. Pojmenujte ji InputTutorial.
dotnet new console -o InputTutorial
cd InputTutorial
Přidejte do projektu balíček System.Device.Gpio . Použijte rozhraní příkazového řádku .NET z adresáře projektu nebo sadu Visual Studio.
dotnet add package System.Device.Gpio --version 2.2.0-*
Obsah souboru Program.cs nahraďte tímto kódem:
using System.Device.Gpio;
using System.Threading.Tasks;
const int Pin = 21;
const string Alert = "ALERT 🚨";
const string Ready = "READY ✅";
using var controller = new GpioController();
controller.OpenPin(Pin, PinMode.InputPullUp);
Console.WriteLine(
$"Initial status ({DateTime.Now}): {(controller.Read(Pin) == PinValue.High ? Alert : Ready)}");
controller.RegisterCallbackForPinValueChangedEvent(
Pin,
PinEventTypes.Falling | PinEventTypes.Rising,
OnPinEvent);
await Task.Delay(Timeout.Infinite);
static void OnPinEvent(object sender, PinValueChangedEventArgs args)
{
Console.WriteLine(
$"({DateTime.Now}) {(args.ChangeType is PinEventTypes.Rising ? Alert : Ready)}");
}
V předchozím kódu:
GpioController
Deklarace using
zajišťuje odstranění objektu a správné uvolnění hardwarových prostředků.
GpioController
Instance se vytvoří bez parametrů, což znamená, že by měl zjistit, na které hardwarové platformě běží, a použít schéma logického číslování PIN.PinMode.InputPullUp
.
PinValue.Low
. Když je kolík odpojený od země a okruh je otevřený, vrátí PinValue.High
kolík .Read()
. Pokud je PinValue.High
, zapíše řetězec do konzoly Alert
. V opačném případě zapíše Ready
řetězec .RegisterCallbackForPinValueChangedEvent()
registruje funkci zpětného volání pro události a PinEventTypes.Rising
PinEventTypes.Falling
na pinu. Tyto události odpovídají stavům PinValue.High
připnutí a PinValue.Low
.OnPinEvent()
.
OnPinEvent()
používá jiný ternární výraz, který také zapisuje odpovídající Alert
řetězce nebo Ready
.Sestavení aplikace Pokud používáte .NET CLI, spusťte dotnet build
příkaz . K sestavení v sadě Visual Studio stiskněte klávesu Ctrl+Shift+B.
Nasaďte aplikaci do SBC jako samostatnou aplikaci. Pokyny najdete v tématu Nasazení aplikací .NET do Raspberry Pi. Ujistěte se, že jste spustitelnému souboru dali oprávnění ke spuštění pomocí příkazu chmod +x
.
Spusťte aplikaci na Raspberry Pi přepnutím do adresáře nasazení a spuštěním spustitelného souboru.
./InputTutorial
Konzola zobrazí text podobný tomuto:
Initial status (05/10/2022 15:59:25): READY ✅
Odpojte kolík 21 od země. Konzola zobrazí text podobný tomuto:
(05/10/2022 15:59:59) ALERT 🚨
Znovu připojte kolík 21 a uzemte. Konzola zobrazí text podobný tomuto:
(05/10/2022 16:00:25) READY ✅
Ukončete program stisknutím klávesy Ctrl+C.
Gratulujeme! Pomocí GPIO jste detekovali vstup pomocí System.Device.Gpio
balíčku NuGet. Tento typ vstupu má mnoho použití. Tento příklad lze použít v jakémkoli scénáři, kdy přepínač připojí nebo přeruší okruh. Tady je příklad použití s magnetickým jažbovým přepínačem, který se často používá k detekci otevřených dveří nebo oken.
Když rozšíříme koncept předchozího příkladu o trochu dál, podíváme se na to, jak by se to dalo použít při vytváření laserového trojdrátového drátu. Vytvoření laserového tripwire vyžaduje následující další součásti:
Poznámka
Modul snímače laserového přijímače je obecný název, který se používá u běžného modulu, který se nachází u mnoha internetových prodejců. Název nebo výrobce zařízení se může lišit, ale mělo by se podobat tomuto obrázku.
Připojte komponenty, jak je podrobně popsáno v následujícím diagramu.
Věnujte zvýšenou pozornost 10K Ω rezistorům. Ty implementují rozdělovač napětí. Je to proto, že modul laserového přijímače výstupem 5V označuje, že paprsek je rozbitý. Raspberry Pi podporuje pouze 3,3V pro vstup GPIO. Vzhledem k tomu, že odeslání plného 5V do kolíku by mohlo poškodit Raspberry Pi, proud z modulu přijímače prochází přes rozdělovač napětí na polovinu napětí na 2,5V.
Můžete použít téměř stejný kód jako dříve, s jednou výjimkou. V ostatních příkladech jsme použili PinMode.InputPullUp
tak, že když je kolík odpojený od země a okruh je otevřený, vrátí PinValue.High
kolík .
V případě modulu laserového přijímače ale nedetekujeme otevřený okruh. Místo toho chceme, aby kolík fungoval jako jímka pro proud přicházející z modulu laserového přijímače. V tomto případě otevřeme špendlík pomocí PinMode.InputPullDown
. Tímto způsobem se kolík vrátí PinValue.Low
, když nepřibírá žádný proud a PinValue.High
když přijímá proud z modulu laserového přijímače.
controller.OpenPin(pin, PinMode.InputPullDown);
Důležité
Před otestování laserového tripwire se ujistěte, že kód nasazený na Raspberry Pi obsahuje tuto změnu. Program funguje bez něj, ale použití nesprávného vstupního režimu riskuje poškození vašeho Raspberry Pi!
Zdroj pro tento kurz je k dispozici na GitHubu.
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Školení
Postup výuky
Inženýr umělé inteligence a hraničních zařízení - Training
Cílem tohoto studijního programu je vysvětlit, jak nasadit AI na hraničních zařízeních pomocí služeb Azure.