Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

IoT Bouwen met Java ME 8 op Raspberry Pi: Deel 1 – GPIO-sensorintegratie

Ontdek hoe u sensoren op een Raspberry Pi kunt verbinden en besturen met Java ME 8, waarmee krachtige IoT-mogelijkheden ontgrendeld worden.

Gepubliceerd september 2014

De nieuwste release van Java ME 8 introduceert een robuuste Device I/O-API die het besturen van LEDs, relais, LCD's, sensoren, motoren, en schakelaars vereenvoudigt.

Dit artikel start een driedelige serie over het integreren van elektronische sensoren met de Raspberry Pi Model B via GPIO, I²C, SPI, of UART-interfaces.

Door Java ME 8 te benutten om apparaten via deze interfaces aan te sturen, kunt u een volledig functioneel IoT-ecosysteem bouwen.

In deze aflevering richten we ons op GPIO en bieden kant-en-klare Java ME 8-klassen voor:

  • Vlam detecteren met een DFRobot DFR0076-vlamsensor
  • Beweging detecteren met een HC‑SR501 PIR-sensor
  • Afstand meten met een HC‑SR04-ultrasonische module

Let op: Het complete NetBeans IDE 8.0-project, inclusief alle bronbestanden, kan hier gedownload worden.

Device I/O API Overzicht

De Device I/O API-specificatie definieert een generieke periferie-I/O-interface voor Java-applicaties op embedded-platforms. Het dekt veelvoorkomende apparaten zoals:

  • GPIO, I²C, SPI, UART
  • ADC en DAC
  • Geheugen-gekoppelde I/O
  • AT-commandomodules
  • Watchdog-timers en pulsteller
  • PWM-generators en generieke apparaten

Belangrijke Circuit-overwegingen

Alle Raspberry Pi GPIO-pins werken op 3,3 V. Voordat u een sensor aansluit, controleer de spanningsvereisten. Als een apparaat 5 V verwacht, gebruik een logic-level-converter (bijv. een BSS138 MOSFET-gebaseerde shifter) om signalen veilig te vertalen.

De Vlamdetector Aansluiten

De DFR0076-vlamsensor detecteert golflengtes tussen ~760 nm en 1100 nm, met een detectiebereik van 20–100 cm. Wanneer vlam aanwezig is, trekt de signaalpin hoog.

Bedraad de sensor naar de Pi's 3,3 V, GND, en GPIO 22 zoals geïllustreerd in Figuur 3, en maak een Java ME 8-klasse om het te besturen.

Listing 1 – DFR0076Device-klasse

public class DFR0076Device { private GPIOPin pin = null; // Pin voor vlam-sensorbesturing }

Listing 2 – De GPIO-pin Initialiseren

public DFR0076Device(int pinGPIO) { pin = (GPIOPin) DeviceManager.open(new GPIOPinConfig( 0, pinGPIO, GPIOPinConfig.DIR_INPUT_ONLY, GPIOPinConfig.MODE_INPUT_PULL_UP, GPIOPinConfig.TRIGGER_RISING_EDGE, false)); }

Listing 3 – Listener-registratie

public void setListener(PinListener flameListener) { if (pin != null) { pin.setInputListener(flameListener); } }

Listing 4 – Resource Cleanup

public void close() { if (pin != null) { pin.setInputListener(null); pin.close(); } }

Listing 5 – MIDlet die de vlamsensor gebruikt

public class TestSensors extends MIDlet { private DFR0076Device flame; private static final int FLAME_DETECTOR_PIN = 22; public void startApp() { flame = new DFR0076Device(FLAME_DETECTOR_PIN); flame.setListener(new FlameSensor()); } public void destroyApp(boolean unconditional) { flame.close(); } private static int waitNext = 1; private class FlameSensor implements PinListener { public void valueChanged(PinEvent event) { if (event.getValue() && --waitNext == 0) { System.out.println("WARNING Flame detected!!!"); waitNext = 10; } } } }

De Bewegingsdetector Aansluiten

Integreer de HC‑SR501 PIR-sensor, die een 3,3 V-puls uitgeeft wanneer beweging gedetecteerd wordt. De drie pins van de sensor zijn GND, VCC (3–5 V), en digitale uitgang.

Stel de PIR's gevoeligheid en vertraging in via de potentiometers, en zet de jumper op "L" voor enkele triggers of "H" voor herhaalbare triggers.

Bedraad de PIR naar 5 V, GND, en GPIO 24, en breid de MIDlet uit met een speciale HCSR501Device-klasse.

Listing 6 – HCSR501Device-klasse

public class HCSR501Device { private GPIOPin pin = null; }

Listing 7 – Pin-initialisatie met een 3-seconde vertraging

public HCSR501Device(int pinGPIO) { pin = (GPIOPin) DeviceManager.open(new GPIOPinConfig( 0, pinGPIO, GPIOPinConfig.DIR_INPUT_ONLY, GPIOPinConfig.MODE_INPUT_PULL_DOWN, GPIOPinConfig.TRIGGER_RISING_EDGE, false)); I2CUtils.I2Cdelay(3000); // Wacht op sensorstabilisatie }

Listing 8 – Een Bewegingslistener Registreren

public void setListener(PinListener pirListener) { if (pin != null) { pin.setInputListener(pirListener); } }

Listing 9 – Cleanup

public void close() { if (pin != null) { pin.setInputListener(null); pin.close(); } }

Breid de TestSensors MIDlet uit om bewegingsgebeurtenissen te verwerken:

Listing 10 – MIDlet met PIR-ondersteuning

// Initialiseer PIR-sensor private HCSR501Device pir; private static final int MOTION_DETECTOR_PIN = 24; @Override public void startApp() { pir = new HCSR501Device(MOTION_DETECTOR_PIN); pir.setListener(new PirSensor()); } @Override public void destroyApp(boolean unconditional) { pir.close(); } private class PirSensor implements PinListener { public void valueChanged(PinEvent event) { if (event.getValue()) { System.out.println("WARNING Motion detected!!!"); } } }

Voor een diepere duik, lees de volledige serie: Java ME 8 + Raspberry Pi + Sensoren = IoT World (Deel 1).

Productieproces

  1. Een Multikanaal Datalogger Bouwen Met Raspberry Pi – Deel 1: Vereisten & Architectuur
  2. Beginner IoT-tutorial: Temperatuurdata streamen vanaf een Raspberry Pi
  3. Analoge Sensoren Meten op de Raspberry Pi met een Enkele GPIO-pin
  4. Analoge Sensoren Meten op Raspberry Pi Zonder Native ADC
  5. Hoe een DS18B20 One-Wire Digitale Thermometer aan te Sluiten op een Raspberry Pi – Stapsgewijze Handleiding
  6. IoT Bouwen met Java ME 8 op Raspberry Pi: Deel 1 – GPIO-sensorintegratie
  7. Een Lineaire Hall-sensor Uitlezen met Raspberry Pi: Java-handleiding & ADC0832-inzichten
  8. Raspberry Pi Sensoren Meesterworden: Een Praktische Handleiding voor Elektronica en Communicatieprotocollen
  9. Je huis temperatuur monitoren met een Raspberry Pi-dashboard
  10. Een MCP3008 ADC gebruiken om analoge sensoren met Raspberry Pi uit te lezen
  11. Java Hello World: je eerste programma