Microcontroller

ESP32

ESP32 ist ein Microcontroller, der für ein paar Euro zu bekommen ist und sich wunderbar für kleine Steuer- und Regel-Basteleien eignet.

ESP32 und Bluetooth

ESP32 verfügt über Bluetooth. Das kann man sich zu Nutze machen um z.B. mit dem Handy Daten vom ESP32 zu erhalten oder umgekehrt Daten zum ESP32 zu schicken. Hier ist ein kleines Beispiel für das Ein- und Aus-Schalten einer LED über das Handy.

Der ESP32 auf einem Breadboard mit LED

Das Beispielprogramm

include "BluetoothSerial.h"
 BluetoothSerial SerialBT;
 int i = 0;
 String txt = "Hallo";
 int j = 0;
 void setup() {
   Serial.begin(9600);
   SerialBT.begin("ESP32");
   //LED setzen (GPIO18) als OUTPUT
   pinMode(18, OUTPUT);
   digitalWrite(18, HIGH);
 }
 void loop() {
   if (Serial.available()) { 
       i = Serial.read();
       SerialBT.write(i);
   // i == 48 entspricht arduino ASCII Tabelle = 0   
  if (i == 48){     
    digitalWrite(18, LOW);   
  }   
  if (i == 49){     
  // i == 48 entspricht arduino ASCII Tabelle = 0     
  digitalWrite(18, HIGH);   
  }
 }
   if (SerialBT.available()) {
      j = SerialBT.read();
      Serial.write(j);
   }
   delay(20);
 }

Mit diesem Programm kann man über die Serielle Bluetooth-Schnittstelle durch das Senden eier 1 die LED anschalten und mit dem Senden einer 0 die LED ausschalten. Für die Steuerung mittels Handy kann man im Appstore das Serial Bluetooth Terminal runterladen (siehe Screenshot)

Serial Bluetooth Terminal Programm
Der Programmcode und die EIn- und Ausgabe des Terminals.

NodeMCU und Lua

Lua ist eine Scriptsprache. Diese läuft z.B. auf einem ESP8266 Microprozessor. Der ist recht cool, da auf dem Board schon eine WIFI Verbindung mit dabei ist. Man kann den NodeMCU so programmieren, dass der Microprozessor autark läuft sobald er Strom bekommt.

Der Prozessor wird über einen normalen Rechner programmiert. Hierzu ist ein bisschen Vorbereitung notwendig. Er muss zuerst mit einer Firmware geflasht werden. Dann kann man mit Hilfe eines geeigneten Programmes Lua Scripte an den NodeMCU übertragen.

Beispiel Distanz-Sensor HCSR-04

--- Measurement of distance
 --- hardware HCSR-04
function dist()
   --- exapmle =dist()
   --- input trigger pin and echo pin
   local trigger = 6
   local echo = 8
--- initialize GPIO
   gpio.mode(trigger,gpio.OUTPUT)
   gpio.mode(echo,gpio.INPUT)
   gpio.write(trigger, gpio.LOW)
   local dist = 0
   for variable = 0, 200, 1 do
     dist = dist + gpio.read(echo)
   end  
   gpio.write(trigger, gpio.HIGH)
   --- not calibrated output!
   return dist
 end

Hier sind zwei Bilder von einem Aufbau mit einem Distanz-Sensor.


HC-SR04

Aufruf in dem Programm ESPlorer

Beispiel Bewegungssenor





--- bsp_naeherung
 --- (c) Michael Röbel
 --- switch LED on
function bewegung()
 local led_pin = 8
 local on_pin = 6--- set pin
 local status = gpio.LOW      --- shut off
 local status_on = 0
--- erst mal alles auf 0 setzten so dass nicht der Outpu überschrieben wird
gpio.mode(led_pin, gpio.OUTPUT)
 status = gpio.LOW
 gpio.write(led_pin, status)
 print("Check!")
 status = gpio.HIGH
 gpio.write(led_pin, status)
 tmr.delay(1000000)
status = gpio.LOW
 gpio.write(led_pin, status)
local i=0
while (i <=1000) do
i = i+1
-- Initialising pin
 gpio.mode(on_pin, gpio.OUTPUT)
 gpio.write(on_pin, gpio.LOW)
 tmr.delay(100000)
 gpio.mode(on_pin, gpio.INPUT)
 status_on = gpio.read(on_pin)
print(status_on)
if (status_on == 1) then
     print("Connection is on")
     gpio.write(led_pin, gpio.HIGH)
     i = i+1000
else
     print("Connection is off")
     gpio.write(led_pin, gpio.LOW)
 end
end   
 --- return status
 return
 end