Deze DRO-adapter is gebaseerd op de nieuwe 32-bit ESP32-module en maakt gebruik van de tweede generatie universele TouchDRO-firmware die gegevens kan decoderen van kwadratuur-encoders, iGaging 21-bits schalen, iGaging absolute schalen en Shahe BIN6-schalen. In feite is de firmware functioneel identiek aan de versie die wordt geleverd op de voorgemonteerde iGaging- en Shahe-schaaladapters.
Het circuit is identiek aan dat van de TouchDRO DIY Kit en is geoptimaliseerd voor 5V- en 3,3V-weegschalen. Dit omvat glazen/magnetische DRO-uitleesschalen, iGaging EZ-View DRO, iGaging DigiMag DRO, iGaging Absolute DRO lineaire uitleesschalen en Shahe Liner Remote DRO-uitleesschalen. Dit ontwerp is gekozen vanwege de goede balans tussen doe-het-zelfvriendelijk zijn en goede geluids- en storingsbestendigheid.
Het bundelen van deze schakeling op een prototypebord is nogal een uitdaging vanwege het aantal vereiste point-to-point-verbindingen. Daarom gaan we ervan uit dat iedereen die deze constructie uitvoert, al een goed begrip van elektronica en goede soldeervaardigheden heeft. Er zijn dan ook geen gedetailleerde montage-instructies, omdat er van wordt uitgegaan dat je het meegeleverde schakelschema kunt lezen en volgen.
Circuitoverzicht
De kern van deze adapter wordt gevormd door het ESP32 DevKit V1-ontwikkelbord. Het is een op zichzelf staand circuit dat de ESP32 WROOM-module, USB-naar-seriële interface, spanningsregelaar en status-LED’s omvat. ESP32 WROOM heeft twee krachtige processors, hardware-kwadratuurdecoders, hardware-toerenteller en ingebouwde BlueTooth-transceiver. Bovendien is het erg goedkoop en gemakkelijk verkrijgbaar in de meeste delen van de wereld.
Als gevolg hiervan is het een geweldig platform voor een doe-het-zelf-DRO. Het heeft één opmerkelijk nadeel: het is niet ontworpen om rechtstreeks met de buitenwereld te communiceren, dus de invoerpinnen hebben geen ingebouwde Schmitt-triggers, enz.. Als gevolg hiervan kunnen we de uitleesschaal niet rechtstreeks aansluiten en in plaats daarvan, moeten een geschikt ingangsconditioneringscircuit bouwen.
Het circuit voor deze doe-het-zelf-adapter maakt gebruik van twee 74HC14 hex inverterende Schmitt-triggers om een robuuste en ruisbestendige conditionering van het ingangssignaal te bieden. In wezen heeft elke schaalingangslijn een serieweerstand van 4,7 KOhm en een NOT-poort met een Schmitt-trigger. De lijn wordt door een weerstand van 47 KOhm omhoog getrokken naar de schaal Vcc.
De serieweerstand is nodig om het IC tegen overspanning te beschermen. Omdat de 74HC14 wordt gevoed door een voeding van 3,3 V (dus het hoge uitgangssignaal is 3,3 V), ligt de ingang op de schaal van 5 V buiten de aanbevolen hoge ingangsspanning. Om het IC tegen schade te beschermen, voegen we een weerstand van 4,7 K toe, die de stroom beperkt tot een niveau dat veilig kan worden verwerkt door de interne diodes van de chip.
Bovendien heeft elke schaalingang, evenals de toerenteller- en probleemingangen, 0,1 uF bypass-condensatoren. Deze zijn nodig om de ruis op de voedingslijn van de weegschaal te verminderen. Deze condensatoren moeten zo dicht mogelijk bij de schaalingangen worden geïnstalleerd. Op dezelfde manier bevindt zich naast elk van de 74HC14 een bypass-condensator van 0,1 uF.
Ten slotte zijn er twee elektrolytische condensatoren van 100 uF, één op de 3,3 V-voedingsrail en één op de 5 V-voedingsrail. Als u van plan bent slechts één van die rails te gebruiken om de weegschaal van stroom te voorzien, kunt u de tweede condensator achterwege laten.
Circuitschema
Onderdelen / Stuklijst
Deze DIY (Doe Het Zelf) DRO-kit bevat alle componenten die nodig zijn om een TouchDRO-adapter te monteren.
Waarde
Beschrijving
Aantal
Referentie
ESP32 Devkit V1
ESP32 WROOM Dev. Kit
1
U1
74xx14
SN74HC14N Hex Schmitt Trigger
2
IC1, IC2
Condensator, 100 uF
Condensator elektrolytisch, 100uF, 35V
2
C14, C15
Condensator, 0.1 uF
Condensator keramisch, 0,1uF 50V
8
C1, C3, C5, C7, C9, C10, C11 en C12
Weerstand, 4,7 KOhm
Metaalfilmweerstand, 4,7 KOhm, 1/4W, 5%
10
R1 tot en met R10
Weerstand, 47 KOhm
Metaalfilmweerstand, 47 KOhm, 1/4W, 5%
10
R21 tot en met R30
Configuratie schaalinvoer
Voor elke ingang moet u de Vcc-pin op de juiste voedingsrail aansluiten. Als u het schema volgt, worden hierdoor ook de pull-up-weerstanden op dezelfde rail aangesloten (dit is erg belangrijk; anders kunt u uw uitleesschaal permanent beschadigen). Bovendien moet op iGaging 21-bits weegschalen de “CLOCK OUT”-pin zijn aangesloten (jumpers zijn gemarkeerd R11-R14 in het schema).
Veel voorkomende configuraties zijn als volgt:
Glazen en magnetische uitleesschalen gebruiken een 5V-rail; Lijn “CLOCK OUT” (R11-R14) niet aangesloten
iGaging Absolute DRO en Shahe Remote DRO-uitleesschalen gebruiken een 3,3V-rail; “CLOCK OUT”-lijn niet aangesloten
Opmerking: Hoewel het 3,3V-signaal afkomstig van capacitieve uitleesschalen [over het algemeen] veilig is voor ESP32, kunt u ze niet rechtstreeks aansluiten. Allereerst verwacht de firmware een omgekeerd signaal en zal niet werken zonder een “NOT”-poort. Ten tweede zou de uitlezing zonder de Schmitt-trigger te haperend kunnen zijn. Ten slotte kunnen eventuele geluidspieken boven de 3,6 V de ingangspinnen van de ESP32 permanent beschadigen.
DRO-firmware
De firmware die nodig is om deze DIY DRO-adapter uit te voeren, kunt u vinden in de sectie Downloads (Universele Firmware – 32 Bit). Deze ESP32-firmware is geschreven in low-level C, niet in Arduino. Om het in de ESP32-module te flashen, moet u Espressif tool chain callend IDF installeren. Het proces is ingewikkelder dan het uploaden van een schets naar een Arduino en vereist de installatie van USB-stuurprogramma’s en een paar opdrachtregelprogramma’s. De documentatie is te vinden op de Espressif-site.
Om te controleren of de Espressif IDF correct is geïnstalleerd, voert u de volgende opdracht uit: esptool.py versie Uw resultaat zou er ongeveer zo uit moeten zien:
Zodra u een werkomgeving heeft, decomprimeert u de gedownloade firmware in een map en voert u op de opdrachtregel het volgende uit:
esptool.py \
-p /dev/ttyACM0 \
-b 460800 \
--before default_reset \
--after hard_reset \
--chip esp32 write_flash \
--flash_mode dio \
--flash_size detect \
--flash_freq 40m \
0x1000 bootloader.bin \
0x8000 partition-table.bin \
0x10000 touchdro-universal-32-v14.bin
Afhankelijk van uw besturingssysteem zullen de parameters waarschijnlijk variëren. Met name de parameter -p die de poort specificeert.
Op een op UNIX/Linux gebaseerd besturingssysteem kunt u ‘ls /dev/TTy*‘ uitvoeren om alle TTY-apparaten te zien voordat u ESP32 op de USB-poort aansluit, en daarna hetzelfde commando uitvoeren en het verschil vinden (wat de poort zal zijn voor ESP32). In de meeste gevallen zal dit “TTy……….” zijn.
Op Windows vindt u de poort die door ESP32 wordt gebruikt in het gedeelte “Seriële poorten” van Apparaatbeheer.
Bouwtips en testen
Het bouwproces voor deze adapter kent twee uitdagingen:
Het flashen van de firmware op ESP32 is een ingewikkeld proces
Het ingangscircuit vereist een aantal point-to-point-verbindingen
Om het testen te vereenvoudigen, wilt u het misschien in deze twee fasen opdelen en elke fase afzonderlijk testen.
ESP32-firmware
ESP32 is een op zichzelf staande module en kan de TouchDRO-firmware prima uitvoeren zonder de ondersteunende circuits. Daarom zou uw eerste stap het flashen van de firmware op de module moeten zijn en ervoor zorgen dat deze werkt zoals verwacht:
Schakel de module in via USB en controleer of de rode LED brandt en de blauwe LED knippert
Koppel de module met uw Android-tablet en zorg ervoor dat het koppelingsproces slaagt. Apparaatnaam in de BT-apparaatlijst moet “TouchDRO DIY” zijn
Open de TouchDRO-applicatie en sluit deze aan op de module
Laat TouchDRO minimaal een minuut draaien. De applicatie mag de verbinding niet verliezen
Optioneel kunt u een BlueTooth-terminaltoepassing (zoals BlueTerm) installeren en het volgende doen:
Ontkoppel de TouchDRO-applicatie (indien aangesloten)
Maak verbinding met de DRO-adapter via BlueTerm
U zou een gegevensstroom moeten zien die x0;y0;z0;w0;t0;p0;
Zoek de sondepin (zie pin-out hierboven) en sluit deze kort met de aarde
De waarde voor p in de datastroom moet veranderen naar p1; en de stroom zou moeten versnellen
Koppel de pin los van de aarde; p moet terugkeren naar p0;
Als de tests slagen, werkt de firmware zoals verwacht.
Ingangscircuit
Nadat u het ingangscircuit hebt gebouwd (voordat u iets op de ESP32-module aansluit), is het een goed idee om elke lijn te testen om er zeker van te zijn dat de verbindingen werken.
Hiervoor kunt u het volgende doen:
Sluit 5V, 3,3V en aarde aan op de ESP32-module (zie pin-out hierboven). Als alternatief kunt u een bankvoeding of zelfs batterijen gebruiken.
Controleer met behulp van een voltmeter de spanning op elke ingangspin. Omdat de pinnen omhoog zijn getrokken naar Vcc, moet de spanning zeer dicht bij de nominale Vcc liggen (5V of 3,3V, afhankelijk van uw configuratie)
Controleer met behulp van een voltmeter de spanning op elke uitgang (de lijn die op ESP32 wordt aangesloten). De spanning moet dichtbij 0V liggen, aangezien 74HC14 een inverterende Schmitt-trigger is.
Aard elke ingangslijn en controleer de spanning aan de uitgang. Het moet dichtbij de 3,3V liggen
Als al deze tests slagen, werkt uw schakeling zoals verwacht en kunt u deze nu aansluiten op de ESP32-module. Controleer anders uw verbinding opnieuw, los eventuele problemen op en voer de test opnieuw uit.
Uitleesschaal bedrading
Glazen en magnetische uitleesschalen zijn over het algemeen zeer goed bestand tegen storende lijnruis enz. De 0,1 uF-condensatoren zijn niet strikt noodzakelijk, maar bieden wel enige bescherming tegen ruispieken op de toevoerlijn.
Voor capacitieve uitleesschalen zijn de bypass-condensatoren erg belangrijk, omdat deze uitleesschalen zeer gevoelig zijn voor ruis en storingen. Idealiter zouden deze condensatoren in de leeskop van de uitleesschaal moeten worden geïnstalleerd. Als u het niet prettig vindt om de leeskop aan te passen, moeten de condensatoren op de USB-breakout-kaarten worden geïnstalleerd [tenzij u van plan bent de uitleesschaal op de hoofd-PCB aan te sluiten].
De tijden dat Arduino alleen maar Arduino Uno betekende, zijn allang voorbij. Tegenwoordig staat Arduino voor een voortdurend groeiende familie van kaarten die de trends in de elektronica op de voet volgen. De MKR-tak van de Arduino-familie is gericht op het Internet of Things (IoT) en probeert daarom oplossingen te leveren voor opkomende standaards en technologieën. Twee nieuwe kaarten in de MKR familie, de MKR WiFi 1010 en MKR NB 1500, geven ontwerpers opnieuw meer keuzemogelijkheden.
MKR WiFi 1010
De MKR WiFi 1010 is een verbeterde versie van de bestaande Arduino MKR1000. In principe vervangt deze module het draadloze gedeelte van de MKR1000’s ATSAMW25 SoC, de WINC1500, door een op de ESP32 gebaseerde module van u-blox. De SAMD21 ARM Cortex-M0+ controller en de ECC508 CryptoAuthentication-chip van de MKR1000 zijn behouden, zodat de “1010” achterwaarts compatibel is met de “1000”, want ook de “1010” ondersteunt Bluetooth. Lees verder → Bericht ID 5318
Om je bordje te kunnen gebruiken onder Arduino moet je de juiste drivers en software in Arduino installeren, dit doen we als volgt:
Als je dit nog niet hebt gedaan, geef jezelf rechten om je usb poorten te benaderen, dit doe je door jezelf toe te voegen aan ‘dialout’ of via de opdracht in je terminal: ($USER verander je natuurlijk in $en-je-eigen-gebruikernaam)
sudo usermod-a-Gdialout$USER
Nu hebben we ‘git’ nodig, deze installeren we met:
Deze lichtintensiteit sensor BH1750 (GY-302) heeft een groot bereik en kan bijv. gebruikt worden om de backlight van een LCD scherm bij te stellen aan de hand van het licht dat aanwezig is.
Deze module heeft een standaard bereik van 1 – 65535 lx.
Enkele voorbeelden van lichtsterkte:
Nacht: 0.001–0.02
Nacht met maanlicht: 0.02–0.3
Bewolkt binnen huis: 5–50
Bewolkt buiten huis: 50–500
Zonnig binnen huis: 100–1000
Eigenschappen (ENG)
I2C bus Interface
Spectral responsibility is approximately human eye response
Illuminance to Digital Converter
Wide range and High resolution. ( 1 – 65535 lx )
Low Current by power down function
50Hz / 60Hz Light noise reject-function
Light source dependency is little. ( ex. Incandescent Lamp. Fluorescent Lamp. Halogen Lamp. White LED. Sun Light)
It is possible to select 2 type of I2C slave-address
Adjustable measurement result for influence of optical window