Næste elektronik project: Sensor input

Efter at jeg har fået min SPI->DCC enhed og booster færdig er jeg klar til næste elektronik projekt: Sensor input.

Jeg har allerede S88 moduler, så det letteste er nok at bruge dem - men der er et problem med dem: De er digitale enheder, de fleste sensorer er analoge.

I mine første forsøg ignorerede jeg dette og tilsluttede mine magnet (reed) kontakter direkte. Det virkede med den indbyggede pull-down/up (eller hvad det nu er), men det er ikke den mest stabile løsning - kommer der "falske" eller manglende meldinger er der ikke noget at skrue på.

De fleste sensorer vil derfor bruge noget i stil med det her:

https://circuitdigest.com/electronic-circuits/ir-sensor-circuit-diagram

Her sammenlignes modstanden gennem photodioden med en justerbar reference spænding. 

Kredsløbet er egentlig enkelt nok, og komponenterne er utrolig billige. Men det er noget rod at skulle sidde med en comparator, en variabel modstand, og et par faste modstande for hver éneste sensor.

Så min plan er at måle det analoge signal istedet for - og så lade en mikroprocessor afgøre om signalet er over eller under et reference punkt der kan sættes per sensor. Jeg kan evt også få den til at lave debounce, detektere ændring istedet for absolut værdi o.s.v.

Min første idé var egentlig at blive i samme stil som min SPI->DCC enhed: Nogle få standard 74xx kredse det vælger input foran en TLC5510 analog til digital konverter - igen drevet med SPI så min raspberry PI kan "spole" det hele ind på et par millisekunder.

Men jeg får nok brug for et par stykker for at slippe for at trække lange ledninger til et centralt sted for hver sensor. Nu er mit anlæg godt nok MEGET lille (180cm) så det kan gøres, men elegant er det ikke. Så jeg vil egentlig helst have mere end én enhed - 2 skulle gøre det. SPI er stadig en mulighed så længe man kører rimeligt langsom (som stadig er meget hurtig i modeltog verdenen), men det er egentlig mere en kort distance protokol.

Så jeg har bestemt mig for nu at bevæge mig over i den anden grøft i forhold til min SPI->DCC enhed: Jeg bruge en mikroprocessor til mine inputs der ellers let kunne laves med standard 74xx kredse.  Glasses

Den klassiske løsning her er en Arduino (der egentlig bare er en mikroprocessor med USB og power kredsløb samt en pinheader til GPIO). Og den kan naturligvis klare opgaven, men jeg har fundet en anden løsning jeg finder en anelse bedre: ESP32.

Det er en opdateret version af den mere kendte ESP8266 som mange bruger til at få WIFI eller Bluetooth på deres Arduino - selv om den egentlig har en processor der er kraftigere end den man finder på en Arduino. Smile

Den kan programmeres med Arduino SDK'et og køre de fleste sketches, men jeg ender nok med at bruge dens "indfødte" udviklingsværktøj: ESP-IDF.

Ud over den "rå" chip, kan man købe ESP32 i et par formater:

  • ESP32-WROOM: Et lille PCB med processor, clock, flash hukommelse,og antenne (ud over WROOM er der et par alternativer, for eksempel med ekstern antenne istedet for PCB antenne). Især antenner er ikke det letteste at designe, så det giver en lille kompakt løsning man let kan lodde på sine egne PCB designs. Koster omkring 35kr leveret.
    ESP32-WROOM

  • Development kit: Minder meget om en af de mindre Arduinoer. Består af en USB forbindelse, 3.3V konverter, pin-headers til GPIO etc og et af de nævnte ESP32-WROOM moduler. Næsten perfekt til breadboard - den er dog lige 2.54mm for bred til et enkelt breadboard, og 2.54 for smal til at den kan nå over to breadboards med hver deres +/- "rails". Men disse rails kan heldigvis fjernes så det kan brygges sammen. Der findes smallere udgaver, men det var jeg ikke lige opmærksom på da jeg bestilte. Sådan en tingest er rigtig dyr - næsten helt oppe på 40kr. Tongue
    ESP32 DevKitC

Jeg eksperimenterer med et "dev kit", men regner med at lave PCB's med ESP32-WROOM moduler når jeg kommer dertil.

Et par "facts" om ESP32-WROOM:

  • Understøtter WIFI (2.4ghz) og Bluetooth.
  • 100Mb ethernet (kræver en ekstra chip og æder en masse GPIO pins).
  • 4 UART forbindelser (seriel),
  • 2xSPI der kan bruges som master eller slave (den har egentlig 4, men WROOM modulet bruger selv 2).
  • 2xI2C igen master eller slave.
  • 4MB flash hukommelse.
  • "Over the air" firmware opdateringer. Ikke noget med at rode med at opdatere via Raspberry Pi eller ved at pille dem ud af anlægget.
  • 2xAnalog til Digital og 2xDigital til Analog (ikke bare PWM, men det kan den naturligvis også).
  • Open source hardware (ikke selve chippen, men devkits og WROOM moduler schematic og PCB design).
  • Open source software - ESP32-IDF og Arduino SDK'et er på GitHub.
  • 2 ARM cores på 80, 160, eller 240mhz
  • Real time OS. Har man brug for realtime lader man typisk de interrupt styrede ting (WIFI, UART, SPI, ...) køre på én core, og en realtime task kan så køre uforstyret på den anden core.

Jeg har endnu ikke besluttet mig helt for hvordan jeg vil forbinde modulerne med min Raspberry Pi. Jeg regner med at det bliver en kablet løsning, men vi får se.

Jeg vil formegentlig bruge Bluetooth til konfiguration - den kan lige få Wifi password m.m. fra telefonen eller en laptop, så kan den selv hente firmware opdateringer. Eventuelt vil jeg bruge bluetooth til hele konfigurationen (reference volt for hver indgang o.s.v.) - men ellers bliver det nok en web løsing.

Jeg har allerede DCC dekodere til at styre mine sporskifter, så jeg ender nok med at bruge dem - ellers kunne en ESP32 naturligvis også klare det med et par motor drivere.

Jeg vender tilbage efterhånden som designet skrider frem over de næste dage eller år. Smile

__________________

mvh
Lars M

Er så småt ved at begynde at pille i skala n, epoke III, DB.

Like 1 kan lide
Top

Picture

DanskBjergbane

Minimalt

Kastrup

Indlæg: 503

PB  Blog

ESP er smarte tingenster og går man amok med lysstyring i huse så kan de relativt nemt indbygges, Ved godt det er out og ikke input

__________________

Hilsen Jan

Märklin K-skinne, Epoke I/II Syd Bavarisk landskab. Tysk (Bayern, Württemberg, Baden) Epoke I, II & III rullende.

ESU Ecos 2, SwitchPilot II, Viessman, LDT. Philips Hue, TrainController Gold V9.0 med SmartHand+, og lidt hjemmekodet diverse

Like 0 kan lide
Top

Kommentarvisning

Vælg din foretrukne kommentarvisning og klik på "Gem indstillinger" for at aktivere dit valg.