Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Acties:
  • +1Henk 'm!

  • mcDavid
  • Registratie: april 2008
  • Nu online
quote:
Tom-Z schreef op dinsdag 1 mei 2018 @ 12:04:
[...]

Als het netwerk zou wegvallen zou hij een paar seconden per dag aan drift hebben,
maak dat gerust een paar minuten...

Als je hooguit korte onderbrekingen anticipeert is het inderdaad niet zo'n punt. Anders is mijn advies, bespaar jezelf die hoofdpijn voor 1 euro.

zcflevo.nl


Acties:
  • 0Henk 'm!

  • zwik
  • Registratie: maart 2001
  • Laatst online: 25-04 09:15

zwik

randomized

RTC besteld, komt goed ;) . Thanks guys :) .

Dikke kans dat ik via NTP de tijd ga ophalen en deze naar de RTC ga doorzetten.

zwik wijzigde deze reactie 01-05-2018 14:02 (48%)


Acties:
  • 0Henk 'm!

  • Raymond P
  • Registratie: september 2006
  • Laatst online: 23-04 14:44
quote:
mcDavid schreef op dinsdag 1 mei 2018 @ 12:15:
[...]

maak dat gerust een paar minuten...
Uit ervaring: een Huzzah (esp8266) drift hooguit enkele seconden op 24 uur.

Atmega328p is een heel ander verhaal.
quote:
Als je hooguit korte onderbrekingen anticipeert is het inderdaad niet zo'n punt. Anders is mijn advies, bespaar jezelf die hoofdpijn voor 1 euro.
Als je de data naar een server pusht dan is alleen de interval van belang. Dezelfde (of willekeurig andere) server kan een timestamp response (of een calculated millis() to next trigger) geven om grove afwijkingen te corrigeren.
Op een server de timestamp van een client gebruiken krijg je hoofdpijn van. ;)

Over een dataset van pakweg twee jaar met sensordata van meerdere esptjes wijken meetmomenten hier niet meer af dan 3 seconden van de (geplande) interval voordat ze weer eens een ntp sync doen.

Voor thuisgebruik van historische (mapreduce) buitentemperatuur is dat in vrijwel alle gevallen accuraat genoeg.

Dat gezegd: RTC is wel de makkelijke weg als je zo veel mogelijk op een microcontroller wilt doen.

---

BME280 is enorm gevoelig en reageert zeer snel op veranderingen van luchtdruk en relatieve luchtvochtigheid.
Je kan (en zal binnenshuis) letterlijk meten wanneer er iemand langs de sensor loopt.
De temperatuur (en dus ook RLv) ermee meten is out of the box haast niet te doen, de chip zelf wordt warm (en een esp8266 ook). Als je hier geen rekening mee houdt in je behuizing dan is de afwijking al snel te variabel om te gebruiken.
Temperatuursverschillen zijn wel enorm snel te registreren.

- knip -


Acties:
  • 0Henk 'm!

  • KevinSetz
  • Registratie: augustus 2014
  • Laatst online: 23-04 21:22
Ik heb hier een paar arduino's liggen.

Ik ben bezig om Wind simulator voor me race seat te maken alleen ben ik dus 12v nodig op mijn arduino wat heb ik:

Arduino Uno Chinees (Gefrituurd met de 12v adapter)
Arduino Mega Chinees (Werken wel met de zelfde adapter)
Monster motor shield (6a)
Fan 12V 6a

Ik vraag me dus af welke adapter ik het beste kan nemen (ik gebruik nu adapter van onbekend apparaat)
Specs:
12V - 0.5a

Ik denk dat ik nu 12V - 6a nodig ben.
zal deze werken op arduino:? https://www.abc-led.nl/we...ter-12-volt-6-ampere.html

Youtube Channel Setz Gaming


Acties:
  • +1Henk 'm!

  • _ferry_
  • Registratie: januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

Denk het wel, maar 6A Chinese voeding voor een verbruiker van 6A zal wel krap zijn. Wellicht ergens een >8 versie of betere kwaliteit 6A voeding (Meanwell) zoeken. Neem aan dat de fan niet in 1x naar vol vermogen hoeft? Want de aanloopstroom kan nog groter zijn.

Acties:
  • +2Henk 'm!

  • Piepersnijder
  • Registratie: december 2009
  • Laatst online: 27-11-2018
Ik zou de arduino niet op 12 volt laten werken. De voltage regulator van de arduino zal veel te warm worden.
Gebruik een step-down converter om van 12 volt 7 of 5 volt te maken.

Acties:
  • +1Henk 'm!

  • Lennyz
  • Registratie: januari 2010
  • Laatst online: 25-04 15:21
Zoals hierboven al gezegd wordt, de voorkeur heeft het om de Arduino niet te voeden met 12v. Ik heb al meerdere Arduino's waar ik de voltage regulator heb moeten vervangen omdat ik deze met 12v heb gevoed. Kan het werken? Jazeker, totdat je teveel stroom trekt met je Arduino dan frituurt de voltage regulator.

Acties:
  • +1Henk 'm!

  • mcDavid
  • Registratie: april 2008
  • Nu online
Ligt er een beetje aan wat de Arduino doet natuurlijk. Als die 99% van de tijd in deep sleep zit en soms een paar milliseconden wakker wordt om wat low power IO te doen, zal die onboard regelaar de beste keus zijn. Maar in dit geval lijkt me idd een schakelende DC-DC converter wel zo handig.

Die fan hoef je trouwens niet persé op 6A te laten werken als'ie achter een motorcontroller zit. Afhankelijk van hoeveel wind je wilt genereren kan het ook een oplossing zijn die fan gewoon op max 75% te laten werken of zo.

zcflevo.nl


Acties:
  • 0Henk 'm!

  • KevinSetz
  • Registratie: augustus 2014
  • Laatst online: 23-04 21:22
De fan gaat steeds sneller draaien als je sneller rijdt. de fan zal zeker niet op 100% draaien want hij blaast 70km/h wind

maar de fan specificaties zijn dus 12v 6a wat gebeurd er als ik er 2a voeding er aan hang?

Youtube Channel Setz Gaming


Acties:
  • 0Henk 'm!

  • Valen_76
  • Registratie: oktober 2009
  • Laatst online: 28-03 12:26
quote:
KevinSetz schreef op woensdag 9 mei 2018 @ 11:29:
De fan gaat steeds sneller draaien als je sneller rijdt. de fan zal zeker niet op 100% draaien want hij blaast 70km/h wind

maar de fan specificaties zijn dus 12v 6a wat gebeurd er als ik er 2a voeding er aan hang?
Dan komt die niet op maximale toeren. Als er meer dan 2 A gevraagd word door de fan zakt de spanning in en gaat het toerental ook omlaag. Of de spanning zakt zo laag dat de BLC controller fan de fan niet in staat meer is te schakelen. En dan zal deze onregelmatig op toeren komen.

Acties:
  • 0Henk 'm!

  • KevinSetz
  • Registratie: augustus 2014
  • Laatst online: 23-04 21:22
quote:
Valen_76 schreef op woensdag 9 mei 2018 @ 11:41:
[...]
Dan komt die niet op maximale toeren. Als er meer dan 2 A gevraagd word door de fan zakt de spanning in en gaat het toerental ook omlaag. Of de spanning zakt zo laag dat de BLC controller fan de fan niet in staat meer is te schakelen. En dan zal deze onregelmatig op toeren komen.
Dankjewel nou ben ik niet helemaal Electro gericht maar kan de fan stuk gaan als er minder ampère door heen komt. Of draait hij dan alleen heel gek?

KevinSetz wijzigde deze reactie 09-05-2018 14:37 (14%)

Youtube Channel Setz Gaming


Acties:
  • 0Henk 'm!

  • Valen_76
  • Registratie: oktober 2009
  • Laatst online: 28-03 12:26
Stuk gaan zal de fan niet. Maar die 2A 12 volt voeding misschien wel omdat er een veel grotere last aan hangt. Die wordt overvraagd. Het is helemaal de vraag hoeveel die fan werkelijk nodig heeft op een voor jou acceptabel toerental. (Stroom)meten is weten.

Een 2e hands ATX computervoeding is misschien ook een oplossing. Deze moeten dergelijke stromen makkelijk kunnen handelen. (Heb je gelijk ook 5 volt voor de Arduino) Al moet je wel een draadje van de ATX stekker verbinden met GND/0volt om de voeding in te schakelen. Weet ff niet meer welke kleur dat is.

Valen_76 wijzigde deze reactie 09-05-2018 16:27 (3%)
Reden: toevoeging 5 volt


Acties:
  • 0Henk 'm!

  • KevinSetz
  • Registratie: augustus 2014
  • Laatst online: 23-04 21:22
quote:
Valen_76 schreef op woensdag 9 mei 2018 @ 16:26:
Stuk gaan zal de fan niet. Maar die 2A 12 volt voeding misschien wel omdat er een veel grotere last aan hangt. Die wordt overvraagd. Het is helemaal de vraag hoeveel die fan werkelijk nodig heeft op een voor jou acceptabel toerental. (Stroom)meten is weten.

Een 2e hands ATX computervoeding is misschien ook een oplossing. Deze moeten dergelijke stromen makkelijk kunnen handelen. (Heb je gelijk ook 5 volt voor de Arduino) Al moet je wel een draadje van de ATX stekker verbinden met GND/0volt om de voeding in te schakelen. Weet ff niet meer welke kleur dat is.
Ik moet de arduino voor zien van 12v de fan is namelijk 12v en de arduino regelt de voltage van de fan.

Ik had nu een goedkopere pc fan die 3000rpm deed op 0.6a dit was net te weinig kracht. Dus ik denk als die 3x zoveel is al teveel wind genereerd ik kan het vrijdag testen :)

Youtube Channel Setz Gaming


Acties:
  • 0Henk 'm!

  • mcDavid
  • Registratie: april 2008
  • Nu online
quote:
KevinSetz schreef op woensdag 9 mei 2018 @ 16:35:
[...]


Ik moet de arduino voor zien van 12v de fan is namelijk 12v en de arduino regelt de voltage van de fan.
Nee hoor, je kunt je Arduino gewoon op 5V voeden (sterker nog, als je 12V op de atmega zou zetten, laat die instant zijn rook ontsnappen). Het schakelen van de 12V doen de mosfets van de motorcontroller.

zcflevo.nl


Acties:
  • 0Henk 'm!

  • Valen_76
  • Registratie: oktober 2009
  • Laatst online: 28-03 12:26
7-12 volt voor Arduino (in de jackplug of Vin/Vraw pin) hoeft niet perse. Je kunt ook een externe 5 volt voeding op de 5 volt pin aansluiten (en de interne regulator omzeilen), MITS je geen data via de USB poort hoeft te versturen. Wat in jou geval misschien wel nodig is. Dat is me uit jou verhaal nog niet duidelijk.

Die motor controller shield (of wat het ook is.. deze? https://www.sparkfun.com/products/10182) zal wel 12 volt nodig hebben om de fan te laten draaien. Maar de aansturing van die motor controller zal geheel op basis zijn van 5 volt signalen uit de Arduino.

De Arduino voeden met 12 volt zal vanwege het weinige eigen-verbruik wel meevallen. Maar als je nog andere hardware door de interne spanningsregelaar laat voeden (leds/displays/etc.) kan warmte opwekking inderdaad een probleem worden. Ze hebben over het algemeen geen koellichamen. Besef dat de overmaat van spanning keer de stroom 'verbrand' wordt in die interne spanningsregelaar. spanning(verschil) x stroom is vermogen dat als warmte vrijkomt. Hoe snel je aan oververhitting van de spanningsregelaar komt is afhankelijk van hoe makkelijk de warmte af gevoerd kan worden van de regelaar chip.

Acties:
  • 0Henk 'm!

  • KevinSetz
  • Registratie: augustus 2014
  • Laatst online: 23-04 21:22
quote:
Valen_76 schreef op woensdag 9 mei 2018 @ 16:55:
7-12 volt voor Arduino hoeft niet perse. Je kunt ook een externe 5 volt voeding op de 5 volt pin aansluiten (en de interne regulator omzeilen), MITS je geen data via de USB poort hoeft te versturen. Wat in jou geval misschien wel nodig is. Dat is me uit jou verhaal nog niet duidelijk.

Die motor controller shield (of wat het ook is.. deze? https://www.sparkfun.com/products/10182) zal wel 12 volt nodig hebben om de fan te laten draaien. Maar de aansturing van die motor controller zal geheel op basis zijn van 5 volt signalen uit de Arduino.

De Arduino voeden met 12 volt zal vanwege het weinige eigen-verbruik wel meevallen. Maar als je nog andere hardware door de interne spanningsregelaar laat voeden (leds/displays/etc.) kan warmte opwekking inderdaad een probleem worden. Ze hebben over het algemeen geen koellichamen. Besef dat de overmaat van spanning keer de stroom 'verbrand' wordt in die interne spanningsregelaar. spanning(verschil) x stroom is vermogen dat als warmte vrijkomt. Hoe snel je aan oververhitting van de spanningsregelaar komt is afhankelijk van hoe makkelijk de warmte af gevoerd kan worden van de regelaar chip.
Dat is hem inderdaad de shield.

Zal het even uit leggen.

De arduino mega wordt aangesloten via usb om data te krijgen van de game gegevens.
De shield word bovenop de mega gemonteerd,
om de fans te gaan aansluiten ben ik 12v nodig en ground dat is aansluiting A1 en B1 op de shield.

Het programma wat alles aanstuurt is simhub

Ik kan toch niet 5v aan gaan sluiten op de arduino want dan krijgen die fans nooit hun 12v. En de fans zijn niet pwm dus ze worden aangestuurd inmiddels voltage.

Youtube Channel Setz Gaming


Acties:
  • 0Henk 'm!

  • Valen_76
  • Registratie: oktober 2009
  • Laatst online: 28-03 12:26
Helaas is er geen gebruikelijke "Getting-started-guide" voor deze shield bij Sparkfun. Als je het schema bekijkt op de Sparkfun website (Documents tab). Die motor shield heeft zijn eigen 12 volt en GND aansluiting voor voeding. Die universele 12 6 A voeding zou je daar op moeten aansluiten. De 12 volt gaat NIET via het Arduino(Mega) board (door de Vin pin) naar de controller. Met 6 ampere door die koperbaantjes zou het snel mis kunnen gaan vermoed ik.

Je zou de Arduino met de 12 volt in zijn jackplug kunnen voeden als er verder geen stroomvreters aan hardware zijn. Maar als je toch USB moet gebruiken voor data dan heeft het geen zin om ook nog 12 volt naar 5 volt af te fakkelen in de interne spanningsregelaar. Gewoon de PC of USB hub als 5 volt voeding laten dienen en de Arduino jackplug niet gebruiken. Het Arduino board en de motor controller zelf zullen onder het standaard USB-stroombudget van 100mA blijven. De Arduino heeft detectie circuits die zullen merken dat er wel 5 volt is uit de USB poort maar niets uit de externe voeding komt en de interne regelaar omzeilen.

Acties:
  • 0Henk 'm!

  • Valen_76
  • Registratie: oktober 2009
  • Laatst online: 28-03 12:26
De vraag is dan wel of er een potentiaal verschil ontstaat tussen de min van de USB poort en de min van de 12 volt voeding. Als daar een geleidingspad ontstaat via de beide stopcontacten dan kan er stroom gaan lopen die je USB poort sloopt (Arduino is een minder zware investering). Als de 12 volt voeding geisoleerd is zou dat goed moeten gaan. Geen geleiding tussen de min en beide 220 volt pennen. Als er wel geleiding is dan moet je zo min mogelijk kabel en verlengdozen tussen mogen hebben zitten. Een lus kan nare gevolgen hebben voor de apparatuur.

Acties:
  • 0Henk 'm!

  • Raymond P
  • Registratie: september 2006
  • Laatst online: 23-04 14:44
quote:
KevinSetz schreef op woensdag 9 mei 2018 @ 17:04:
[...]

Ik kan toch niet 5v aan gaan sluiten op de arduino want dan krijgen die fans nooit hun 12v. En de fans zijn niet pwm dus ze worden aangestuurd inmiddels voltage.
Voor het gemak: je kan geen 6A door die arduino trekken. Die 12V/6A dient dus per definitie ergens anders vandaan te komen.

edit: vaker refreshen. :')

Raymond P wijzigde deze reactie 09-05-2018 17:44 (3%)

- knip -


Acties:
  • 0Henk 'm!

  • NoE
  • Registratie: oktober 2000
  • Laatst online: 25-04 11:04

NoE

Dat zeg ik...

Ik heb getracht het topic door te lezen maar door de vele diep technische termen ben ik een beetje de weg kwijt geraakt.

Ik zou graag mijn oude auto ('67) willen uitlezen door middel van sensoren. Ik heb een oude mercedes (w109) met luchtvering. Dus was benieuwd of ik met de arduino het volgende zou kunnen monitoren. Uiteraard heb ik op dit model nog geen ODB bus ;)

- Luchtdruk - 0-12 bar (zijn hier sensoren voor?)
- Voltage (V) - 0-14V
- Laadstroom (A) -
- Toerental (6 cylinder, aftermarket electronische onsteking (123 onsteking)

uiteraard zou het nog mooi zijn om wat temperaturen te meten, wellicht ook oliedruk (dit kan afgetapt worden op de bestaande.)

uiteindelijk zitten er ook al bestaande analoge sensoren op, die een bepaalde voltage afgeven bij een bepaalde meetwaarde.

Ik kan mij niet voorstellen dat ik de enige ben, dus hoop eigenlijk dat iemand al het wiel heeft uitgevonden.
Alvast bedankt.

Dus... ja ik heb ook een laptop en een versterker met leuke speakers... en een vissenbak... kopen?


  • toekie
  • Registratie: juli 2009
  • Laatst online: 16-04 04:03
Hoi,

Ik heb een hopelijk simpel vraagje, kon er niets over vinden verder op tweakers of HWI dus ik dacht post het hier (haal maar weg als het verkeerd gepost is!). Ik ben bezig met de zoveelste toevoeging aan mijn klimaat systeem voor mijn terrarium. Ik zou graag een uv sensor willen toevoegen en mijn oog viel op deze:
https://learn.sparkfun.co...11-uv-sensor-hookup-guide

Heb hem al besteld bij banggood, maar bij deze link van sparkfun is de code dat hij de waarde maar uitrekent naar de zon sterkte/irradiatie in mW/m^2. Nu is dat in principe genoeg maar ik wil ook graag dat hij hem omrekent naar de zogenaamde UV Index, een dementieloos getal maar meestal wordt deze gebruikt om de uv intensiteit aan te geven. Zo zit er een integraal in deze berekening en weet ik niet hoe je een integraal berekening doet in arduino sketch....
Formule bovenaan in de link.
https://www.esrl.noaa.gov/gmd/grad/neubrew/docs/UVindex.pdf

Mvg,
T

  • Tom-Z
  • Registratie: augustus 2010
  • Laatst online: 12:10
Die berekening kun je met die sensor überhaupt niet maken.
De UV-index waar jij naar linkt is in feite een soort gewogen gemiddelde van de intensiteit per golflengte. De output van die sensor is ook een gewogen gemiddelde, maar dan met andere wegingsfactoren. Je kan niet de intensiteit per golflengte uit die sensor krijgen, het beste wat je kan doen is het gewoon met een of andere lineaire factor omrekenen (experimenteel te bepalen).

  • KevinSetz
  • Registratie: augustus 2014
  • Laatst online: 23-04 21:22
quote:
Valen_76 schreef op woensdag 9 mei 2018 @ 17:34:
Helaas is er geen gebruikelijke "Getting-started-guide" voor deze shield bij Sparkfun. Als je het schema bekijkt op de Sparkfun website (Documents tab). Die motor shield heeft zijn eigen 12 volt en GND aansluiting voor voeding. Die universele 12 6 A voeding zou je daar op moeten aansluiten. De 12 volt gaat NIET via het Arduino(Mega) board (door de Vin pin) naar de controller. Met 6 ampere door die koperbaantjes zou het snel mis kunnen gaan vermoed ik.

Je zou de Arduino met de 12 volt in zijn jackplug kunnen voeden als er verder geen stroomvreters aan hardware zijn. Maar als je toch USB moet gebruiken voor data dan heeft het geen zin om ook nog 12 volt naar 5 volt af te fakkelen in de interne spanningsregelaar. Gewoon de PC of USB hub als 5 volt voeding laten dienen en de Arduino jackplug niet gebruiken. Het Arduino board en de motor controller zelf zullen onder het standaard USB-stroombudget van 100mA blijven. De Arduino heeft detectie circuits die zullen merken dat er wel 5 volt is uit de USB poort maar niets uit de externe voeding komt en de interne regelaar omzeilen.


Deze kwam ik net tegen, Deze heeft precies wat ik wil alleen dan met een Uno. De fans zijn het zelfde 2x 12v fans 6a. Als je ziet heeft hij een (auto accu) aan gesloten op de Shield.

Ik denk dat de accu meer ampère is. Denk dat ik een pc voeding ga halen want met simhub ben ik nog wel meer arduino nodig die op 12v / 5v moeten aan gesloten worden _/-\o_

Youtube Channel Setz Gaming


  • Raymond P
  • Registratie: september 2006
  • Laatst online: 23-04 14:44
1000 cmh (flinke bladblazer), doe je dan wel een helm op?

Een gemiddelde haarfohn doet geloof ik zo'n 200 cmh en imho is dat al onprettig om in je gezicht te krijgen.

Raymond P wijzigde deze reactie 10-05-2018 11:38 (6%)

- knip -


  • KevinSetz
  • Registratie: augustus 2014
  • Laatst online: 23-04 21:22
quote:
Raymond P schreef op donderdag 10 mei 2018 @ 11:34:
1000 cmh (flinke bladblazer), doe je dan wel een helm op?

Een gemiddelde haarfohn doet geloof ik zo'n 200 cmh en imho is dat al onprettig om in je gezicht te krijgen.
ben ik met je eens ze gaan echt niet op vol vermogen maar mijn pc fan (130cfm 3000rpm) is net te slap. _/-\o_

Youtube Channel Setz Gaming


  • Valen_76
  • Registratie: oktober 2009
  • Laatst online: 28-03 12:26
quote:
KevinSetz schreef op donderdag 10 mei 2018 @ 09:24:
[...]


[afbeelding]

Deze kwam ik net tegen, Deze heeft precies wat ik wil alleen dan met een Uno. De fans zijn het zelfde 2x 12v fans 6a. Als je ziet heeft hij een (auto accu) aan gesloten op de Shield.

Ik denk dat de accu meer ampère is. Denk dat ik een pc voeding ga halen want met simhub ben ik nog wel meer arduino nodig die op 12v / 5v moeten aan gesloten worden _/-\o_
Mooi voorbeeld inderdaad Goed zichtbaar met de kabel kleuren hoe het aangesloten moet worden.

Qua formaat lijkt deze meer op de accu in mijn UPS of modelbouw-accu dan op een auto accu. Ter vergelijking mijn UPS accu (AJC D7S(T1) is 12v 7Auur, met maximale initiële stroomvraag van 2,1 A. In een echte auto accu kan deze over het algemeen 4 to 6 keer in passen. En moet veel meer stroom kunnen leveren tijdens het starten en heeft een grotere capaciteit. Functioneert ook prima en gelijk. Maar wel een stuk lomper in de omgang.

  • KevinSetz
  • Registratie: augustus 2014
  • Laatst online: 23-04 21:22
quote:
Valen_76 schreef op donderdag 10 mei 2018 @ 13:21:
[...]
Mooi voorbeeld inderdaad Goed zichtbaar met de kabel kleuren hoe het aangesloten moet worden.

Qua formaat lijkt deze meer op de accu in mijn UPS of modelbouw-accu dan op een auto accu. Ter vergelijking mijn UPS accu (AJC D7S(T1) is 12v 7Auur, met maximale initiële stroomvraag van 2,1 A. In een echte auto accu kan deze over het algemeen 4 to 6 keer in passen. En moet veel meer stroom kunnen leveren tijdens het starten en heeft een grotere capaciteit. Functioneert ook prima en gelijk. Maar wel een stuk lomper in de omgang.
Die fans die hij gebruikt zijn precies de zelfde die ik nu heb ook 6a. en dan 2 stuks dus zal ik dan een 12a nodig hebben? nu hebben de voedingen vaak 25a+ maar ik ga het vrijdag zien dan komt de rest van de spulletjes. :)

Youtube Channel Setz Gaming


  • Valen_76
  • Registratie: oktober 2009
  • Laatst online: 28-03 12:26
quote:
KevinSetz schreef op donderdag 10 mei 2018 @ 09:24:
[...]


[afbeelding]

Deze kwam ik net tegen, Deze heeft precies wat ik wil alleen dan met een Uno. De fans zijn het zelfde 2x 12v fans 6a. Als je ziet heeft hij een (auto accu) aan gesloten op de Shield.

Ik denk dat de accu meer ampère is. Denk dat ik een pc voeding ga halen want met simhub ben ik nog wel meer arduino nodig die op 12v / 5v moeten aan gesloten worden _/-\o_
Mooi voorbeeld inderdaad Goed zichtbaar met de kabel kleuren hoe het aangesloten moet worden.

Qua formaat lijkt deze meer op de accu in mijn UPS of modelbouw-accu dan op een auto accu. Ter vergelijking mijn UPS accu (AJC D7S(T1) is 12v 7Auur, met maximale initiële stroomvraag van 2,1 A. In een echte auto accu kan deze over het algemeen 4 to 6 keer in passen. En moet veel meer stroom kunnen leveren tijdens het starten en heeft een grotere capaciteit. Functioneert ook prima en gelijk. Maar wel een stuk lomper in de omgang.

p.s. Als je een pc voeding gebruikt. Dan niet zowel de 12 volt kabels aansluiten op de jackplug en de 5 volt kabels aansluiten op de 5 volt pin. Alleen 12 volt of alleen 5 volt aansluiten op de Arduino board. De interne spanningsregelaar zowel op de ingang als op de uitgang met een spanning forceren vind hij niet leuk. En als je een USB aansluiting gaat gebruiken voor data dan liever niet apart voeden op de 5 volt pin omdat je dan misschien stroom richting de pc kan krijgen. Dat vind de pc ook niet leuk.

  • Raven
  • Registratie: november 2004
  • Niet online

Raven

Marion Raven fan

quote:
KevinSetz schreef op donderdag 10 mei 2018 @ 11:42:
[...]


ben ik met je eens ze gaan echt niet op vol vermogen maar mijn pc fan (130cfm 3000rpm) is net te slap. _/-\o_
Waarom moet ik nu aan
denken :P

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


  • KevinSetz
  • Registratie: augustus 2014
  • Laatst online: 23-04 21:22
quote:
Valen_76 schreef op donderdag 10 mei 2018 @ 13:29:
[...]
Mooi voorbeeld inderdaad Goed zichtbaar met de kabel kleuren hoe het aangesloten moet worden.

Qua formaat lijkt deze meer op de accu in mijn UPS of modelbouw-accu dan op een auto accu. Ter vergelijking mijn UPS accu (AJC D7S(T1) is 12v 7Auur, met maximale initiële stroomvraag van 2,1 A. In een echte auto accu kan deze over het algemeen 4 to 6 keer in passen. En moet veel meer stroom kunnen leveren tijdens het starten en heeft een grotere capaciteit. Functioneert ook prima en gelijk. Maar wel een stuk lomper in de omgang.

p.s. Als je een pc voeding gebruikt. Dan niet zowel de 12 volt kabels aansluiten op de jackplug en de 5 volt kabels aansluiten op de 5 volt pin. Alleen 12 volt of alleen 5 volt aansluiten op de Arduino board. De interne spanningsregelaar zowel op de ingang als op de uitgang met een spanning forceren vind hij niet leuk. En als je een USB aansluiting gaat gebruiken voor data dan liever niet apart voeden op de 5 volt pin omdat je dan misschien stroom richting de pc kan krijgen. Dat vind de pc ook niet leuk.
Ik zal alleen de 12v aansluiten op de shield, van + en - De arduino puur op usb alleen.

Youtube Channel Setz Gaming


Acties:
  • +1Henk 'm!

  • Raymond P
  • Registratie: september 2006
  • Laatst online: 23-04 14:44
quote:
Raven schreef op donderdag 10 mei 2018 @ 13:29:
[...]

Waarom moet ik nu aan [video] denken :P
Ik zit dus de hele ochtend met deze mental image:



---
o.t. Als de 12v perikelen te vervelend worden kan je natuurlijk ook gewoon een 230v fan aan een SSR+arduino hangen.

Raymond P wijzigde deze reactie 10-05-2018 13:41 (14%)

- knip -


Acties:
  • 0Henk 'm!

  • toekie
  • Registratie: juli 2009
  • Laatst online: 16-04 04:03
quote:
Tom-Z schreef op donderdag 10 mei 2018 @ 00:16:
Die berekening kun je met die sensor überhaupt niet maken.
De UV-index waar jij naar linkt is in feite een soort gewogen gemiddelde van de intensiteit per golflengte. De output van die sensor is ook een gewogen gemiddelde, maar dan met andere wegingsfactoren. Je kan niet de intensiteit per golflengte uit die sensor krijgen, het beste wat je kan doen is het gewoon met een of andere lineaire factor omrekenen (experimenteel te bepalen).
Hmm dan zal ik het wel verkeerd begrepen hebben. Voor zo ver ik het begreep ging er een spanning lopen tov de intensiteit die erop viel en die werd, na een correctie, omgerekend naar een zonnewaarde. Wat dan weer een lineair verband vormde en die uitkomsten dacht ik dan in die formule te zetten. Bedankt voor de info, ga ik weer even verder puzzelen! (y)

Acties:
  • 0Henk 'm!

  • toekie
  • Registratie: juli 2009
  • Laatst online: 16-04 04:03
@KevinSetz
Waarom zet je er niet zo'n 12v LED driver voeding tussen? Mosfet er tussen en klaar kan hij zelfs op de pwm om snelheid te sturen. Heb dat zelf gedaan met 2 12v fans bij mijn terrarium, die waren alleen geen 6A.
https://www.makeuseof.com...led-light-strips-arduino/ Gewoon led vervangen voor de fan.

Acties:
  • 0Henk 'm!

  • KevinSetz
  • Registratie: augustus 2014
  • Laatst online: 23-04 21:22
quote:
toekie schreef op vrijdag 11 mei 2018 @ 00:16:
@KevinSetz
Waarom zet je er niet zo'n 12v LED driver voeding tussen? Mosfet er tussen en klaar kan hij zelfs op de pwm om snelheid te sturen. Heb dat zelf gedaan met 2 12v fans bij mijn terrarium, die waren alleen geen 6A.
https://www.makeuseof.com...led-light-strips-arduino/ Gewoon led vervangen voor de fan.
Hardstikke top! dit kunnen we altijd nog proberen, ga eerst gewoon de 12v op de shield zetten als dat goed gaat is het prima, anders ga ik dit maken!

Alleen nog 1 vraag ik heb dus 2 fans van 6a per stuk ben ik dan totaal 12a nodig?

Youtube Channel Setz Gaming


Acties:
  • 0Henk 'm!

  • ResuCigam
  • Registratie: maart 2005
  • Laatst online: 12:37
quote:
KevinSetz schreef op vrijdag 11 mei 2018 @ 07:20:
[...]
Alleen nog 1 vraag ik heb dus 2 fans van 6a per stuk ben ik dan totaal 12a nodig?
Als je ze beide vol gas wilt laten draaien dan heb je inderdaad 12A nodig.

We do what we must because we can.


Acties:
  • 0Henk 'm!

  • jantje112
  • Registratie: maart 2002
  • Laatst online: 06:49
Zijn er handige Arduino tovenaars die dit kunnen oplossen? Ik hoop een arduino te kunnen gebruiken om de power status van mijn ""pc" te kunnen monitoren en via een harde aan / uit schakeling te kunnen schakelen.

Microcontroller (Arduino?) voor ATX aan / uit

Acties:
  • 0Henk 'm!

  • Raven
  • Registratie: november 2004
  • Niet online

Raven

Marion Raven fan

Even hardop denkend: Arduino + http://www.elecfreaks.com...nsor-ta17030405-p-85.html + relais? De stroomsensor gebruik je dan om op basis van het verbruik te bepalen of de pc wel/niet aan staat. Zie https://wei48221.blogspot...rking-with-ct-sensor.html voor enige info daarover.

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


Acties:
  • 0Henk 'm!

  • tsjoender
  • Registratie: april 2005
  • Laatst online: 11:36
quote:
Raven schreef op maandag 14 mei 2018 @ 16:05:
Even hardop denkend: Arduino + http://www.elecfreaks.com...nsor-ta17030405-p-85.html + relais? De stroomsensor gebruik je dan om op basis van het verbruik te bepalen of de pc wel/niet aan staat. Zie https://wei48221.blogspot...rking-with-ct-sensor.html voor enige info daarover.
Je kan de Arduino ook voeden met die PC. Dan hoef je niet meer te meten of de PC aan staat of niet :)

Acties:
  • 0Henk 'm!

  • Raven
  • Registratie: november 2004
  • Niet online

Raven

Marion Raven fan

quote:
tsjoender schreef op maandag 14 mei 2018 @ 16:27:
[...]

Je kan de Arduino ook voeden met die PC. Dan hoef je niet meer te meten of de PC aan staat of niet :)
Moet je de pc wel zo instellen dat ie de USB-poorten niet actief laat, sommige doen dat ;)

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


Acties:
  • 0Henk 'm!

  • tsjoender
  • Registratie: april 2005
  • Laatst online: 11:36
quote:
Raven schreef op maandag 14 mei 2018 @ 16:28:
[...]

Moet je de pc wel zo instellen dat ie de USB-poorten niet actief laat, sommige doen dat ;)
Da's dan wel slim idd :P

Het is me nog niet 100% duidelijk wat de bedoeling is (heb het nieuwe topic ook gelezen), maar als het puur is dat de decoder aan moet gaan als de PC aan gaat en uit als de PC uit gaat, dan zou je zelfs nog zonder Arduino kunnen werken en een 5V relais module kunnen nemen waarbij je de 5V uit de USB of voeding van de PC op de data pin van de relais module aansluit. Dan zal het relais sluiten als de PC aangaat en zal de verbinding weer verbroken worden als de PC uit gaat.

tsjoender wijzigde deze reactie 14-05-2018 16:36 (50%)


Acties:
  • 0Henk 'm!

  • Raymond P
  • Registratie: september 2006
  • Laatst online: 23-04 14:44
En hoe zet je 'm dan aan? :P

- knip -


Acties:
  • 0Henk 'm!

  • Raven
  • Registratie: november 2004
  • Niet online

Raven

Marion Raven fan

quote:
BIOS instelling: restore after AC-loss, of iets in die richting. Weet zo niet of dat alleen na stroomuitval tijdens aan staan geld of ook tijdens uit staan.

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


Acties:
  • 0Henk 'm!

  • itcouldbeanyone
  • Registratie: augustus 2014
  • Laatst online: 25-04 18:41
quote:
NoE schreef op woensdag 9 mei 2018 @ 22:15:
Ik heb getracht het topic door te lezen maar door de vele diep technische termen ben ik een beetje de weg kwijt geraakt.

Ik zou graag mijn oude auto ('67) willen uitlezen door middel van sensoren. Ik heb een oude mercedes (w109) met luchtvering. Dus was benieuwd of ik met de arduino het volgende zou kunnen monitoren. Uiteraard heb ik op dit model nog geen ODB bus ;)

- Luchtdruk - 0-12 bar (zijn hier sensoren voor?)
- Voltage (V) - 0-14V
- Laadstroom (A) -
- Toerental (6 cylinder, aftermarket electronische onsteking (123 onsteking)

uiteraard zou het nog mooi zijn om wat temperaturen te meten, wellicht ook oliedruk (dit kan afgetapt worden op de bestaande.)

uiteindelijk zitten er ook al bestaande analoge sensoren op, die een bepaalde voltage afgeven bij een bepaalde meetwaarde.

Ik kan mij niet voorstellen dat ik de enige ben, dus hoop eigenlijk dat iemand al het wiel heeft uitgevonden.
Alvast bedankt.
Dus je wilt er eigenlijk zelf ODB op bouwen, en dan aanvullen met sensoren?


Een diy ECU ?
Heb zo iets wel eens gemaakt, kan je alles op inpluggen , en dan toegangbaar via CAN

Pcb

Stratis : SbjhPeaHC2ufttT1T6DP3nDE2cDF4KtbUL


Acties:
  • 0Henk 'm!

  • NoE
  • Registratie: oktober 2000
  • Laatst online: 25-04 11:04

NoE

Dat zeg ik...

quote:
itcouldbeanyone schreef op dinsdag 15 mei 2018 @ 18:05:
[...]


Dus je wilt er eigenlijk zelf ODB op bouwen, en dan aanvullen met sensoren?


Een diy ECU ?
Heb zo iets wel eens gemaakt, kan je alles op inpluggen , en dan toegangbaar via CAN

[afbeelding]
de auto heeft allerlei analoge sensoren om zaken te schakelen. Gezien de leeftijd van de auto zit daar dus niets op qua ECU / ODB . Ik heb ondertussen ontdekt dat de 123ignition (= vervangende electronische onsteking ipv contactpuntjes) al behoorlijk wat info kan weergeven via BT, zoals toerental, voltage en inlaatdruk. Hier kunnen dus geen additionele sensoren bij op aan gesloten worden. (heb de vraag ondertussen wel uitstaan bij hen)


dit begint er al wat op te lijken:
https://create.arduino.cc...f=tag&ref_id=car&offset=8

NoE wijzigde deze reactie 15-05-2018 22:10 (8%)

Dus... ja ik heb ook een laptop en een versterker met leuke speakers... en een vissenbak... kopen?


Acties:
  • 0Henk 'm!

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

Ik probeer een SIM800L V2.0 (printje met voedingscircuit en antenneconnector) met m'n Nano te laten praten. Lib van VittorioEsposito gebruikt en het idee werkt. Als ik bv. de netwerkoperator opvraag, komt er data binnen (bekende AT + etc.) met daarin "KPN MOBILE". Signaalsterkte gaat ook goed. Wat een pret en dat voor 8 euro :)

Maar zodra ik deze commando's samen in de main loop gebruik, gaat het mis. Ik krijg dan vaak het anwoord op operator te zien terwijl ik signaalsterkte opvraag en vv.
Het heeft waarschijnlijk te maken met timing, ik heb na iedere instructie een delay(500); staan. Dat gaat redelijk (niet 100% dus). Bij kortere vertraging komt er onzin binnen, bij langere tijden wisselen de responses weer.

Alle codes die ik hierover kan vinden, plaatsen dit meestal in de setup. Leuk, maar ik wil die parameters bv. iedere minuut een keer uitlezen.

Iemand die zoiets al eens aan de hand gehad heeft?

Live solarinfo op PVoutput [6,625 kWp]


Acties:
  • 0Henk 'm!

  • donny007
  • Registratie: januari 2009
  • Laatst online: 23-04 21:18

donny007

Try the Nether!

quote:
Joepla schreef op zondag 27 mei 2018 @ 19:01:
Ik probeer een SIM800L V2.0 (printje met voedingscircuit en antenneconnector) met m'n Nano te laten praten. Lib van VittorioEsposito gebruikt en het idee werkt. Als ik bv. de netwerkoperator opvraag, komt er data binnen (bekende AT + etc.) met daarin "KPN MOBILE". Signaalsterkte gaat ook goed. Wat een pret en dat voor 8 euro :)

Maar zodra ik deze commando's samen in de main loop gebruik, gaat het mis. Ik krijg dan vaak het anwoord op operator te zien terwijl ik signaalsterkte opvraag en vv.
Het heeft waarschijnlijk te maken met timing, ik heb na iedere instructie een delay(500); staan. Dat gaat redelijk (niet 100% dus). Bij kortere vertraging komt er onzin binnen, bij langere tijden wisselen de responses weer.

Alle codes die ik hierover kan vinden, plaatsen dit meestal in de setup. Leuk, maar ik wil die parameters bv. iedere minuut een keer uitlezen.

Iemand die zoiets al eens aan de hand gehad heeft?
Met delay() pauzeer je de uitvoer van het gehele programma, je laat daarmee de Arduino een halve seconde duimendraaien terwijl de GSM-module allerlei data aan het verzenden is 8)7 . Als je de delay() te lang maakt is de kans zelfs groot dat de ontvangst-buffer van de seriële poort overstroomt waardoor je helemaal niets bruikbaars meer ontvangt.

Leer daarom om nooit delay() te gebruiken in je code, gebruik altijd een timer als millis() of micros() om tijdsintervallen toe te passen (zie het bekende BlinkWithoutDelay voorbeeld).

/dev/null


Acties:
  • 0Henk 'm!

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@donny007 Op zich heb je helemaal gelijk. Het is geen goede manier om zo code te schrijven. Ik gebruik het dan ook eigenlijk alleen tijdens het ontwikkelen, het is dan niet erg dat de Arduino even bevriest. Maar in dit geval zou de delay functie inderdaad wel eens de boel in de war kunnen schoppen met de seriele buffer...

Ik ga in ieder geval eens met de millis() functie proberen, thx!

Edit: Lijkt nu goed te werken! Ik heb het prg met de millis() functie zo geschreven, dat de verschillende AT-commando's met een interval van 2 seconden worden aangeroepen Dat bleek geen verschil te maken. Toen een functie gemaakt die de (software-) seriële buffer na iedere actie compleet uitleest (effectief dus: wist).
Dat was blijkbaar de truuk, het ontgaat me helaas waarom dat zo is.

Edit 2: na een tijdje gaat de boel toch weer door elkaar lopen :(
Baudrate naar de SIM800 aangepast van 4800 naar 38400 (hoger gaat af en toe problemen geven).
Draait nu al wel een paar uur stabiel...

Vind de millis() functie wel erg handig, die kende ik nog niet. Ik maakte tot nu toe meestal een state-machine, die met een eigen counter werkt. Gaat prima, maar niet als je nauwkeurige timing nodig hebt.

Joepla wijzigde deze reactie 27-05-2018 22:49 (52%)

Live solarinfo op PVoutput [6,625 kWp]


Acties:
  • +1Henk 'm!

  • donny007
  • Registratie: januari 2009
  • Laatst online: 23-04 21:18

donny007

Try the Nether!

@Joepla Welke library gebruik je precies? VitroEsposito heeft twee varianten van zijn SIM800L library op Github staan.

Een ding valt me wel op aan zijn libraries: alles is gebaseerd (hard coded) op SoftwareSerial. In tegenstelling tot HardwareSerial is SoftwareSerial, zoals de naam al aangeeft, volledig geïmplementeerd in software.

In tegenstelling tot HardwareSerial kan SoftwareSerial ook geen gebruikmaken van de dedicated FIFO buffers, het opvangen van inkomende data is dus volledig afhankelijk van het op tijd uitlezen van een bepaalde pin. Dit maakt het qua timing nog tien keer kritischer.

Er zijn betere software-based serial implementaties (zoals AltSoftSerial), maar niets kan uiteindelijk tippen aan een hardware UART met dedicated buffers (de TXD/RXI poort op je Arduino bordje)...

Mijn advies: gebruik HardwareSerial om te communiceren met de GSM-module, mocht je daarnaast nog data willen pushen naar een PC/andere gadget kun je daarvoor AltSoftSerial gebruiken met een lage baudrate (4800/9600).



Millis() en micros() zijn gebruiksvriendelijke manieren om de dedicated 16-bits teller in de AVR-chip uit te lezen en om te rekenen naar een bruikbare waarde. Een eigen teller maken kan natuurlijk ook, maar dat is zonde van de geheugenruimte :P .

/dev/null


Acties:
  • 0Henk 'm!

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@donny007 Ik maak gebruik van "Sim800L-Arduino-Library-revised". Inderdaad gebruikt die de SoftwareSerial. Het duurde even voor ik dat door had, ik ging ervan uit dat de normale Tx/Rx pins zouden worden gebruikt. Aangezien ik verder alleen een I2C LCD en wat sensoren aansluit, is de UART gewoon beschikbaar.

Ik zie ook dat er bij hele lage en hoge (nouja, vanaf 57600 baud ongeveer) snelheden data corrupt raakt. Dat geeft wel aan dat de limiet bereikt is.

Voor nu is het fijn om te zien dat de SIM800 werkt, maar ik ga zeker jouw suggestie ook proberen. Eerlijk gezegd valt de library me een beetje tegen. Het stuurt het AT-commando voor je, maar retourneert gewoon ook de volledige response van de SIM800. Ik had eigenlijk gehoopt dat daar de relevante data zou zijn uitgefilterd, zonder de overhead. Niet dus en dat moet je dan voor ieder commando zelf uit de string gaan filteren.

Denk dat ik een paar functies maak die AT cmds via de UART sturen en simpel de gewenste parameters teruggeven. Wel zo makkelijk en dan kun je iedere feature benutten die in de manual te vinden is. De libs zijn wat dat betreft een beetje beperkt, hoewel het meest gebruikte er wel in zit.

Live solarinfo op PVoutput [6,625 kWp]


Acties:
  • 0Henk 'm!

  • zwik
  • Registratie: maart 2001
  • Laatst online: 25-04 09:15

zwik

randomized

Vraagje voor de NodeMCU gebruikers. Een maatje van me heeft een NodeMCU Lolin en een BME280 I2C sensor. hij heeft deze wired op D3 en D4 op de NodeMCU als i2c pinnen en gebruikt de volgende code om de pinnen als i2c pinnen te gebruiken:
code:
1
Wire.begin(D3, D4);

Volgens veel website zou je op deze manier de sda en scl pinnen definieren. Wanneer hij vervolgens zijn programma start kan het de sensor niet vinden. Dezelfde code op een Arduino werkt wel, kleine wijziging though, daar geeft hij geen parameters mee aan begin().

Nou heb ik door de documentatie zitten lezen van Wire.begin() maar zie daar alleen geen parameters (default) en een adres, geen parameters om aan te geven welke pinnen je wilt gebruiken. Iemand enig idee hoe we dit op kunnen lossen?

Ik lees dus verschillende, aan de ene kant moet je de pinnen kunnen selecteren, en in de documentatie (van Arduino) staat daar niks over beschreven.

Acties:
  • 0Henk 'm!

  • Lennyz
  • Registratie: januari 2010
  • Laatst online: 25-04 15:21
quote:
zwik schreef op dinsdag 29 mei 2018 @ 08:48:
Vraagje voor de NodeMCU gebruikers. Een maatje van me heeft een NodeMCU Lolin en een BME280 I2C sensor. hij heeft deze wired op D3 en D4 op de NodeMCU als i2c pinnen en gebruikt de volgende code om de pinnen als i2c pinnen te gebruiken:
code:
1
Wire.begin(D3, D4);

Volgens veel website zou je op deze manier de sda en scl pinnen definieren. Wanneer hij vervolgens zijn programma start kan het de sensor niet vinden. Dezelfde code op een Arduino werkt wel, kleine wijziging though, daar geeft hij geen parameters mee aan begin().

Nou heb ik door de documentatie zitten lezen van Wire.begin() maar zie daar alleen geen parameters (default) en een adres, geen parameters om aan te geven welke pinnen je wilt gebruiken. Iemand enig idee hoe we dit op kunnen lossen?

Ik lees dus verschillende, aan de ene kant moet je de pinnen kunnen selecteren, en in de documentatie (van Arduino) staat daar niks over beschreven.
De fout zit hem er in dat je van de verkeerde pin layout uitgaat. Vergeet de layout die aangegeven is met D. De GPIO zijn anders gelabeld. De labels die geprint zijn op je chip gebruik je nooit.

D3 = GPIO0
D4 = GPIO2

Correct is dus:

Wire.begin(0, 2);


ps beter gebruik je een andere pin dan GPIO0. Deze kan je beter niet gebruiken als je nog andere pins over hebt vanwege het feit dat als je de ESP8266 opstart en de GPIO0 naar LOW brengt deze de chip in de flashmodus. Ik zie dat een dev van de port de pins 0 en 2 aanraadt.

Zie ook:


Acties:
  • 0Henk 'm!

  • DurkVell
  • Registratie: augustus 2011
  • Laatst online: 00:11
Volgens mij moet je A4 (SDA) en A5 (SCL) daarvoor gebruiken! Want geen Arduino! 8)7

DurkVell wijzigde deze reactie 29-05-2018 09:30 (20%)


Acties:
  • 0Henk 'm!

  • zwik
  • Registratie: maart 2001
  • Laatst online: 25-04 09:15

zwik

randomized

Thanks! lekker handig inderdaad, dan kunnen ze net zo goed de fysieke labels verwijderen van de print wat mij betreft :) . We gaan het vanavond eens proberen met 0 en 2 :) . Wat ik overigens wel gek vind, is dat de compiler waardes als D3 en D4 accepteerd. Blijkbaar is er dus wel ergens een vertaaltabel ofzo?

zwik wijzigde deze reactie 29-05-2018 09:55 (28%)


Acties:
  • 0Henk 'm!

  • beerten
  • Registratie: juni 2003
  • Laatst online: 16-03 13:04
Hoi,

ik wil graag data heen en weer sturen. Van een pc met database naar een Arduino wifi bordje en vice versa.
Ik zou een URL met variabelen aan kunnen roepen. De webserver op de Arduino cq databasecomputer kan dit uitlezen.
Op de Arduino wifi dan zowel een webclient alsmede webserver opzetten.

Maar is dit wel de meest handige methode? Is er niet een slimmere, specifiek voor dit doel ontworpen protocol/iets/tool?

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

Ben al een tijdje aan het knutselen met een Nano en een GSM SIM800L module. Zie ook posts hierboven.

Ik lees een aantal parameters uit de module: network operator (KPN MOBILE), signal strength (bv. -80 dBm), firmware versie, IMSI nr. en netwerkdatum en -tijd.
Ook wordt er af en toe een SMSje verstuurd, werkt allemaal eigenlijk best aardig.

Maar niet perfect... Heel af en toe gaat het mis, dan zie je bv. ipv networkoperator een ruwe AT response van bv. de signal strength terugkomen.
Het AT protocol is voor mij lastig te implementeren. Ik heb dat vroeger voor een vorige werkgever eens gemaakt in assembly en ik herinner me dat ik daar best wel wat hoofdpijn van heb gehad ;)

De manier waarop ik het nu heb gemaakt:

1) Initialisatie
2) state machine die iedere 2 sec. een ander AT commando stuurt
3) check wat voor response er binnenkomt (bv. string begint met +COPS voor networkoperator)
4) strippen van de response (benodigde parameter eruit filteren en zonodig converteren)
5) weergeven op LCD en via de serieele poort naar de PC wat debugdata sturen

Ik probeer nu de inkomende data in een string array te stoppen, als een soort buffer. Maar tot nu toe geeft dat geen verbetering.
Iemand die mij in de goede richting kan wijzen misschien?

Live solarinfo op PVoutput [6,625 kWp]


  • Valen_76
  • Registratie: oktober 2009
  • Laatst online: 28-03 12:26
quote:
Joepla schreef op woensdag 13 juni 2018 @ 10:17:
...Het AT protocol is voor mij lastig te implementeren. Ik heb dat vroeger voor een vorige werkgever eens gemaakt in assembly en ik herinner me dat ik daar best wel wat hoofdpijn van heb gehad ;).
Assembly en hoofdpijn gaan hand in hand als je het mij vraagt. Niet onmogelijk maar wel behoorlijk lastig. Maar dat terzijde.

Heb je ook een voorbeeld van de ruwe AT-strings die je ontvangt?

Valen_76 wijzigde deze reactie 13-06-2018 12:44 (7%)
Reden: quote-UBB-code messup


  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@Valen_76 Zeker, dit bijvoorbeeld:
Network operator:

TX:
AT+COPS?\r

RX:
AT+COPS?\r\rr\n
+COPS: 0,0,"KPN MOBILE"\r\n
\r\n
OK\r\n


TA returns the current mode and the currently selected operator. If no
operator is selected, <format> and <oper> are omitted.
+COPS: <mode>[,<format>, <oper>]
OK
If error is related to ME functionality:
+CME ERROR: <err>



Signal strength:

TX:
AT+CSQ\r

RX:
AT+CSQ \r\r\n
+CSQ: 11,0\r\n
\r\n
OK\r\n


+CSQ: <rssi>,<ber>
OK
If error is related to ME functionality:
+CME ERROR: <err>
Execution Command returns received signal strength indication <rssi>
and channel bit error rate <ber> from the ME. Test Command returns
values supported by the TA.

Live solarinfo op PVoutput [6,625 kWp]


  • Valen_76
  • Registratie: oktober 2009
  • Laatst online: 28-03 12:26
quote:
Joepla schreef op woensdag 13 juni 2018 @ 20:22:
@Valen_76 Zeker, dit bijvoorbeeld:
Network operator:

TX:
AT+COPS?\r

RX:
AT+COPS?\r\rr\n
Die laatste "\r\rr\n" (carriage return en new-lines neem ik aan). Heb je dat handmatig getypt in jouw bericht of is dat de werkelijke uitvoer in de terminal?

[edit] Ook bij de signal strength lijkt er een newline character weg te vallen.

Valen_76 wijzigde deze reactie 13-06-2018 22:34 (9%)


  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@Valen_76 je hebt gelijk, het is \r\r\n
In het terminal window wordt dit weergegeven (met een tooltje dat ik gevonden heb) als %13%%13%%10%. Voor de leesbaarheid heb ik dit als \r\r\n weergegeven.

Het lastige is dat niet alle responses met + beginnen. Bv. het ATI commando is daar een uitzondering op, dat begint met ATI.
De 1e regel is overigens steeds een echo van het verstuurde commando. Is evt. ook uit te schakelen, maar denk niet dat het daardoor makkeljjker wordt.

Live solarinfo op PVoutput [6,625 kWp]


  • Valen_76
  • Registratie: oktober 2009
  • Laatst online: 28-03 12:26
Mijn idee was eerst uitsluiten of er sprake is van electronische signaal verstoring. bitjes in het UART signaal die niet goed vallen waardoor er gehele characters genegeerd worden in de Arduino UART. Ik kan me goed voorstellen dat je programma daarvan in de war raakt als die een 0x10 character mist in de hele string. Maar ik heb je eerdere code nog niet gezien waarover je sprak. Ga ik later naar op snuffeltocht.

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@Valen_76 De communicatie ziet er goed en consequent uit, heb al heel wat responses bekeken en nooit ook maar 1 karakter fout zien binnenkomen. Verbinding is heel kort (15 cm draadjes / 38400 baud), wel maak ik voor nu nog gebruik van de software serial ivm het makkelijk & snel uploaden en testen van sketches, maar ook dat lijkt goed te gaan. En mogelijk laat ik dat zo, zodat ik een software update vanaf de buitenkant van het kastje kan uitvoeren zonder de Rx en Tx lijntjes eerst los te halen.

Apart is dat je heel veel info kan vinden over het AT Hayes protocol, maar gewoon een stukje code dat de responses checkt en stript, is zeldzaam of verre van compleet. AT bestaat al >30 jaar, je zou verwachten dat er toch heel wat programmeurs hiermee te maken hebben gehad...

Ik denk erover om de hele opzet te veranderen en alle responses als losse karakters in te lezen, te checken op begin ("+") en eind (\n) en die als een string te laten checken (welke respons het betreft) en te laten omzetten naar de parameters die ik zoek (dus bv. +CSQ: 11,0\r\n -> integer 11).

Voor de paar responses die afwijken (niet met een '+' beginnen), zal ik dan wat uitzonderingen moeten maken.

Joepla wijzigde deze reactie 15-06-2018 09:51 (4%)

Live solarinfo op PVoutput [6,625 kWp]


  • itcouldbeanyone
  • Registratie: augustus 2014
  • Laatst online: 25-04 18:41
quote:
donny007 schreef op zondag 27 mei 2018 @ 19:59:
[...]


Met delay() pauzeer je de uitvoer van het gehele programma, je laat daarmee de Arduino een halve seconde duimendraaien terwijl de GSM-module allerlei data aan het verzenden is 8)7 . Als je de delay() te lang maakt is de kans zelfs groot dat de ontvangst-buffer van de seriële poort overstroomt waardoor je helemaal niets bruikbaars meer ontvangt.

Leer daarom om nooit delay() te gebruiken in je code, gebruik altijd een timer als millis() of micros() om tijdsintervallen toe te passen (zie het bekende BlinkWithoutDelay voorbeeld).
Ook millis en micros is erg amateuristisch ,
Gebeurt een hoop op de achtergrond, en echt op tijd iets verstuuren wil er niet mee als je meer aan het doen bent.
Ik gebruik altijd ISR zo genereer ik een interrupt waarme ik op het juiste tijdsinterval een actie kan ondernemen.

Stratis : SbjhPeaHC2ufttT1T6DP3nDE2cDF4KtbUL


  • farlane
  • Registratie: maart 2000
  • Laatst online: 11:55
quote:
Joepla schreef op woensdag 13 juni 2018 @ 10:17:
De manier waarop ik het nu heb gemaakt:

1) Initialisatie
2) state machine die iedere 2 sec. een ander AT commando stuurt
3) check wat voor response er binnenkomt (bv. string begint met +COPS voor networkoperator)
4) strippen van de response (benodigde parameter eruit filteren en zonodig converteren)
5) weergeven op LCD en via de serieele poort naar de PC wat debugdata sturen

Ik probeer nu de inkomende data in een string array te stoppen, als een soort buffer. Maar tot nu toe geeft dat geen verbetering.
Iemand die mij in de goede richting kan wijzen misschien?
Dit is een correcte aanpak. Heb je al vastgesteld waar het nu fout gaat?

[edit]
Als je met AT commando achtige structuur werkt (of ueberhaupt dit soort protocollen) is het zaak eerst de binnenkomende data op te splitsen in "frames". Vaak is bufferen tot er een end-of-line (\r\n of variaties daarop) is ontvangen en dan de string te verwerken stap 1.

farlane wijzigde deze reactie 16-06-2018 20:39 (15%)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0Henk 'm!

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@farlane Ik ben bezig om eerst een werkende applicatie te bouwen, zodat ik in ieder geval iets heb, er is enigszins haast bij. Dus ik lees de signaalsterkte uit, dat gaat vrijwel altijd goed en is makkelijk te detecteren als het toch misgaat. Deze wordt weergegeven op het LCD. Er wordt na een trigger een SMS verstuurd en dit werkt al een paar dagen stabiel.
Ik wacht nu op de aankomst van een 2e SIM800L module, zodat ik verder kan ontwikkelen en meerdere responses correct kan afhandelen.

Jouw frames-suggestie is inderdaad waar ik mee bezig was. Dat zou theoretisch goed moeten werken. Het zou alleen fijn zijn als er ook een vast start-karakter/-sequence zou zijn. Dat is helaas niet zo en maakt het iets lastiger, maar zeker niet onmogelijk.

Live solarinfo op PVoutput [6,625 kWp]


Acties:
  • +1Henk 'm!

  • farlane
  • Registratie: maart 2000
  • Laatst online: 11:55
quote:
Joepla schreef op zondag 17 juni 2018 @ 11:59:
Jouw frames-suggestie is inderdaad waar ik mee bezig was. Dat zou theoretisch goed moeten werken. Het zou alleen fijn zijn als er ook een vast start-karakter/-sequence zou zijn. Dat is helaas niet zo en maakt het iets lastiger, maar zeker niet onmogelijk.
Dat is in feite niet nodig; het start van een frame is het eerste karakter na het einde van het vorige frame.

(Een eerste) Synchronisatie kun je doen door karakters te lezen (en te discarden) totdat je een tijd lang (1000ms, ik zeg maar wat) niets meer binnen krijgt.

Tijdens het binnenharken van een frame houd je ook bij hoeveel karakters er binnengekomen zijn en hoe lang het duurt voordat je een end-of-frame ziet. Vaak is het zo dat een te lange response of een response die er te lang over doet om in geheel binnen te komen "fout" zijn en waarschijnlijk een indicatie zijn dat het device (modem) iets aan het doen is wat je niet had verwacht.

Te alle tijden ga je, als je een "fout" frame binnenkrijgt weer een synchronisatie doen.

De uitdaging bij AT style protocollen vind ik dat er soms iets langskomt dat niet helemaal netjes "past". Dus als je gaat lezen tot een "\r\n" voor een frame komt er soms wel, soms niet een leeg frame voorbij omdat het modem "\r\n\r\n" verstuurd heeft. De kunst is om aan deze "uitzonderingen" geen betekenis te hangen (als het niet hoeft) maar te negeren en wachten op het frame waar je wel wat aan hebt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@farlane Ik zal het eens bouwen zoals jij beschrijft. Alleen weet ik niet of het timen van binnenkomende data zin heeft, er zijn nogal wat verschillen in lengtes. Zo is een "lees SMS 1" respons meestal veel langer dan wat er terugkomt op een simpel AT commando ("OK").

Hoe zou jij een frame laten herkennen als het eenmaal binnen is? Ik maak nu gebruik van startsWith(), maar je zou ook per karakter kunnen laten checken of iets met substring oid.

Kwam er gisteren overigens achter dat ik wat ruimtegebrek krijg in de Nano, bij compileren krijg ik een waarschuwing dat het global variables geheugen vol raakt. Omdat er nogal wat met strings wordt geknutseld, is dat wel te verwachten. Ik heb wat declaraties aangepast (byte ipv int bv.) maar dat schiet niet echt op. Ook heb ik een tabel waarin het voortschrijdend gemiddelde van een inkomende meting wordt bijgehouden, die zou wat kleiner kunnen.

Live solarinfo op PVoutput [6,625 kWp]


Acties:
  • +1Henk 'm!

  • Lennyz
  • Registratie: januari 2010
  • Laatst online: 25-04 15:21
quote:
Joepla schreef op maandag 18 juni 2018 @ 10:24:
@farlane Ik zal het eens bouwen zoals jij beschrijft. Alleen weet ik niet of het timen van binnenkomende data zin heeft, er zijn nogal wat verschillen in lengtes. Zo is een "lees SMS 1" respons meestal veel langer dan wat er terugkomt op een simpel AT commando ("OK").

Hoe zou jij een frame laten herkennen als het eenmaal binnen is? Ik maak nu gebruik van startsWith(), maar je zou ook per karakter kunnen laten checken of iets met substring oid.

Kwam er gisteren overigens achter dat ik wat ruimtegebrek krijg in de Nano, bij compileren krijg ik een waarschuwing dat het global variables geheugen vol raakt. Omdat er nogal wat met strings wordt geknutseld, is dat wel te verwachten. Ik heb wat declaraties aangepast (byte ipv int bv.) maar dat schiet niet echt op. Ook heb ik een tabel waarin het voortschrijdend gemiddelde van een inkomende meting wordt bijgehouden, die zou wat kleiner kunnen.
Misschien handig om een paar van deze op voorraad te hebben. Een STM32 die Arduino compatible is. Dan hoef je ook niet meer met softwareserial aan de slag en heb je 128kb flash (niet 64kb zoals er vermeldt staat) en 20K SRAM.

https://nl.aliexpress.com...7d9d97a&priceBeautifyAB=0

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@Lennyz Die kende ik nog niet. Ik zal er een paar bestellen. Dat maakt het inderdaad een stuk makkelijker, ik ben anders toch wel wat beperkt als ik er code bij ga schrijven.

Live solarinfo op PVoutput [6,625 kWp]


  • Lennyz
  • Registratie: januari 2010
  • Laatst online: 25-04 15:21
quote:
Joepla schreef op maandag 18 juni 2018 @ 11:34:
@Lennyz Die kende ik nog niet. Ik zal er een paar bestellen. Dat maakt het inderdaad een stuk makkelijker, ik ben anders toch wel wat beperkt als ik er code bij ga schrijven.
Je kunt ook goedkopere versies krijgen rond de € 1,50 per stuk, maar bij die versie dien je zelf een Arduino compatible bootloader te flashen en moet je even een resistor vervangen op het board. Anders kan je geen gebruik maken van usb.

http://www.stm32duino.com/ is de website waar meer informatie over de stm32 in combinatie met Arduino te vinden is.

  • mcDavid
  • Registratie: april 2008
  • Nu online
Ja met een paar libraries (GPS, GSM) kan het hard gaan met het geheugen idd. Wemos D1 is evt ook de moeite waard, de ESP8266 is behoorlijk populair aan het worden.

zcflevo.nl


  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

quote:
Lennyz schreef op maandag 18 juni 2018 @ 11:46:
[...]


Je kunt ook goedkopere versies krijgen rond de € 1,50 per stuk, maar bij die versie dien je zelf een Arduino compatible bootloader te flashen en moet je even een resistor vervangen op het board. Anders kan je geen gebruik maken van usb.

http://www.stm32duino.com/ is de website waar meer informatie over de stm32 in combinatie met Arduino te vinden is.
Ja die was ik ook tegengekomen en vroeg me al af waar het enorme prijsverschil (relatief dan) vandaan kwam ;) Ik ga voorlopig even van jouw versie uit, dan kan ik meteen aan de slag.
quote:
mcDavid schreef op maandag 18 juni 2018 @ 12:06:
Ja met een paar libraries (GPS, GSM) kan het hard gaan met het geheugen idd. Wemos D1 is evt ook de moeite waard, de ESP8266 is behoorlijk populair aan het worden.
Klopt, ik dacht dat de tijden van zuinig aan doen met geheugen lang voorbij waren, maar met de Nano is het zo gebeurd. Ik zal de ESP8266 ook eens uitgebreid bekijken, thx.

Live solarinfo op PVoutput [6,625 kWp]


  • mcDavid
  • Registratie: april 2008
  • Nu online
sja de Atmega328 is dan ook van ver vóór die tijden ;) Dat ding is ontworpen in de jaren '90.

zcflevo.nl


  • itcouldbeanyone
  • Registratie: augustus 2014
  • Laatst online: 25-04 18:41
quote:
mcDavid schreef op maandag 18 juni 2018 @ 12:06:
Ja met een paar libraries (GPS, GSM) kan het hard gaan met het geheugen idd. Wemos D1 is evt ook de moeite waard, de ESP8266 is behoorlijk populair aan het worden.
Dan heb je het ook wel over libraries die slecht gemaakt zijn, als je alles gewoon zelf programeerd, en je strings hergebruikt en zo nog wat andere trukjes, kan je heel veel geheugen besparen

Stratis : SbjhPeaHC2ufttT1T6DP3nDE2cDF4KtbUL


  • farlane
  • Registratie: maart 2000
  • Laatst online: 11:55
quote:
Joepla schreef op maandag 18 juni 2018 @ 10:24:
@farlane Ik zal het eens bouwen zoals jij beschrijft. Alleen weet ik niet of het timen van binnenkomende data zin heeft, er zijn nogal wat verschillen in lengtes. Zo is een "lees SMS 1" respons meestal veel langer dan wat er terugkomt op een simpel AT commando ("OK").
Die timeout is enkel om te voorkomen dat je blijft wachten als er niets meer komt, dus die kun je ruim zetten. Zie het als een fallback.
quote:
Hoe zou jij een frame laten herkennen als het eenmaal binnen is? Ik maak nu gebruik van startsWith(), maar je zou ook per karakter kunnen laten checken of iets met substring oid.
Zoeken naar phrases die voor je afhandeling van belang zijn, zoals +CMGR etc
quote:
Kwam er gisteren overigens achter dat ik wat ruimtegebrek krijg in de Nano, bij compileren krijg ik een waarschuwing dat het global variables geheugen vol raakt. Omdat er nogal wat met strings wordt geknutseld, is dat wel te verwachten.
Helegaar niet. De strings die je gebruikt om te comparen zouden constant strings moeten zijn en staan in flash als het goed is, niet in RAM. En omdat je een ancient platform gebruikt (AVR) mag je daarvoor gaan liggen pielen met progmem declaraties

Het Arduino string type is hier niet echt geschikt voor overigens, das een beetje een knutsel string class die niet voor serieus embedded werk geschreven is; ben bang dat je terug moet vallen op kale C strings voor dit werk.

Zie ook https://www.arduino.cc/re...riables/utilities/progmem

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • sloth
  • Registratie: januari 2010
  • Niet online
quote:
Joepla schreef op zondag 27 mei 2018 @ 19:01:
Ik probeer een SIM800L V2.0 (printje met voedingscircuit en antenneconnector) met m'n Nano te laten praten.
Niet echt een antwoord op je vraag, maar hoe heb jij de SIM800L i.c.m. je Nano in gebruik genomen? Ik lees namelijk wat dingen over instabiliteit die op te lossen zouden zijn als je een externe voeding van minstens 2A gebruikt. De standaard I/O pins zouden niet genoeg stroom voor de module kunnen leveren.

Acties:
  • +1Henk 'm!

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

quote:
farlane schreef op maandag 18 juni 2018 @ 21:15:
[...]

Die timeout is enkel om te voorkomen dat je blijft wachten als er niets meer komt, dus die kun je ruim zetten. Zie het als een fallback.
Ok duidelijk!
quote:
Zoeken naar phrases die voor je afhandeling van belang zijn, zoals +CMGR etc
[...]
Helegaar niet. De strings die je gebruikt om te comparen zouden constant strings moeten zijn en staan in flash als het goed is, niet in RAM. En omdat je een ancient platform gebruikt (AVR) mag je daarvoor gaan liggen pielen met progmem declaraties

Het Arduino string type is hier niet echt geschikt voor overigens, das een beetje een knutsel string class die niet voor serieus embedded werk geschreven is; ben bang dat je terug moet vallen op kale C strings voor dit werk.

Zie ook https://www.arduino.cc/re...riables/utilities/progmem
Ik had daar (strings) ook wat over gevonden, maar toch gebruik van gemaakt. Zal weer eens wat kennis moeten opduiken over strings, niet mijn favoriete hobby overigens.
quote:
sloth schreef op maandag 18 juni 2018 @ 22:36:
[...]


Niet echt een antwoord op je vraag, maar hoe heb jij de SIM800L i.c.m. je Nano in gebruik genomen? Ik lees namelijk wat dingen over instabiliteit die op te lossen zouden zijn als je een externe voeding van minstens 2A gebruikt. De standaard I/O pins zouden niet genoeg stroom voor de module kunnen leveren.
De voeding voor de SIM800 haal ik uit een 5V/2A netadapter (die overigens ook de Nano gaat voeden en wat sensoren). De Nano is zeker niet in staat om de piekstromen te leveren die de SIM800 vraagt tijdens zenden. Ik ga ervan uit dat deze GSM module zijn zendvermogen ook aanpast aan de omstandigheden, dus worst case zal hij flink stroom trekken, waardoor de spanning dipt en zullen waarschijnlijk zowel je SIM800 als je Nano geregeld herstarten. Mijn voeding is zelfs al wat krap denk ik, maar tot nu toe gaat het goed. Wellicht is het ook goed om rekening te houden met je antenneplaatsing. Als die te dicht bij je Nano of de bedrading zit, zou je wel eens wat rare effecten kunnen krijgen door inductie. Afschermen en/of afstand zijn dan de oplossing (of kleine condensatoren/ferrietkralen plaatsen, maar dan wordt het wat complexer).

Ik heb wel een functie ingebouwd die het resetlijntje 0,5 sec. laag trekt, zodra de signaalsterkte enige tijd op zijn laagst is. Ik heb gemerkt dat de SIM800 anders niet meer zelf online komt. Moet er wel bij zeggen dat de signaalsterkte bij mij thuis minimaal is en het antennetje dat ik gebruik ook erg klein is. Misschien dat hij uiteindelijk zelf er wel weer uitkomt, maar dat duurt dan langer dan een half uur ofzo.

Live solarinfo op PVoutput [6,625 kWp]


  • mcDavid
  • Registratie: april 2008
  • Nu online
quote:
sloth schreef op maandag 18 juni 2018 @ 22:36:
[...]


Niet echt een antwoord op je vraag, maar hoe heb jij de SIM800L i.c.m. je Nano in gebruik genomen? Ik lees namelijk wat dingen over instabiliteit die op te lossen zouden zijn als je een externe voeding van minstens 2A gebruikt. De standaard I/O pins zouden niet genoeg stroom voor de module kunnen leveren.
zo te zien is het probleem niet zozeer de stroom, maar de spanning. Een arduino draait echter ook prima op 3,7-4,2 V dus dat hoeft helemaal geen punt te zijn.

zcflevo.nl


  • farlane
  • Registratie: maart 2000
  • Laatst online: 11:55
quote:
Joepla schreef op dinsdag 19 juni 2018 @ 11:39:
[...]
Ik had daar (strings) ook wat over gevonden, maar toch gebruik van gemaakt. Zal weer eens wat kennis moeten opduiken over strings, niet mijn favoriete hobby overigens.
Als je het *aha!* moment hebt gehad zul je zien dat het allemaal meevalt. >:)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • +2Henk 'm!

  • Blomminator
  • Registratie: augustus 2012
  • Laatst online: 19-04 10:22
Zojuist een Arduino besteld! Morgen ophalen. Ik ben benieuwd.

Ik kan niet programmeren en heb NUL ervaring met electronica... maar het speelt al zolang in mn hoofd.. Net in de pauze er maar aan toegegeven en de StarterKit besteld.

Ik ben wel weg van prutsen, dus het spreekt wel aan! Hopelijk als ik het morgen openmaak is het niet te overweldigend.. en kan ik al meteen iets frøbelen.

Denk nu zelf aan een secondeteller.. Tot je op de knop drukt voor een reset...

Blomminator

A great deal of money has been invested in this project and we can't allow it to fail.


  • Lizzydizzy
  • Registratie: juli 2017
  • Laatst online: 27-01 16:02
Hallo allemaal,

Ik ben net een beetje begonnen met het programmeren en pielen met Arduino. nu lijkt het me gaaf om mijn PC aan te kunnen zetten doormidden van RFID. nu heb ik een RFID lezer gekocht met een tag.

Ik had een code van internet af gehaald waarmee ik een ledje aan kon zetten met het juiste tagje. en dat werkte. alleen wat ik moet hebben om mijn pc aan te zetten, is een doorverbinding van 2 kabels.

Is dat mogelijk?

Groetjes

  • mcDavid
  • Registratie: april 2008
  • Nu online
Is een beetje afhankelijk van wat je wilt doen. Als je de stroom wilt inschakelen heb je een relais nodig. Als je de aan-knop van je PC wilt gebruiken kun je met een optocoupler af.

Je zou ook kunnen kijken of je PC een boot from USB/Keyboard optie heeft. En dan met je arduino (makkelijkst met een Leonardo) een keypress simuleren.

zcflevo.nl


  • Lizzydizzy
  • Registratie: juli 2017
  • Laatst online: 27-01 16:02
quote:
mcDavid schreef op donderdag 21 juni 2018 @ 17:28:
Is een beetje afhankelijk van wat je wilt doen. Als je de stroom wilt inschakelen heb je een relais nodig. Als je de aan-knop van je PC wilt gebruiken kun je met een optocoupler af.

Je zou ook kunnen kijken of je PC een boot from USB/Keyboard optie heeft. En dan met je arduino (makkelijkst met een Leonardo) een keypress simuleren.
bedankt voor je reactie. ik denk dat ik het eerst ga proberen met relais. aangezien het lukte om een ledje voor een halve seconde haan te houden met de juiste rfid tag.

  • jobr
  • Registratie: januari 2009
  • Laatst online: 12:31
quote:
Lizzydizzy schreef op donderdag 21 juni 2018 @ 21:17:
[...]


bedankt voor je reactie. ik denk dat ik het eerst ga proberen met relais. aangezien het lukte om een ledje voor een halve seconde haan te houden met de juiste rfid tag.
Let erop dat je niet meer dan 20ma mag schakelen met een port. Je hebt waarschijnlijk nog wat extra electronica (transistor) nodig. Je kunt wel voldoende voorbeelden vinden met google.

Acties:
  • 0Henk 'm!

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

Ik merk dat het gebruik van de eeprom erg simpel, maar niet helemaal vlekkeloos werkt, bij mij.

Zo heb ik o.a. 2 bytes in eeprom die bijhouden hoe vaak de Nano gestart is (power off/on of een onbedoelde reset) en na een x aantal restarts raakt dit corrupt. Ik lees en schrijf deze posities alleen in de setup, niet in de main loop.

Ik zou graag de bootloader willen vervangen door Optiboot, om de watchdog te kunnen gebruiken en om de fuses voor brownhout te kunnen instellen. Helaas is me dat ooit maar 1x gelukt (via een Uno als programmer), op een of andere manier krijg ik steeds dat avrdude klaagt over de "Expected signature for ATmega328P is 1E 95 0F" error. Ook na edit van de conf wil het niet.

Live solarinfo op PVoutput [6,625 kWp]


Acties:
  • +1Henk 'm!

  • itcouldbeanyone
  • Registratie: augustus 2014
  • Laatst online: 25-04 18:41
quote:
Joepla schreef op zondag 1 juli 2018 @ 16:15:
Ik merk dat het gebruik van de eeprom erg simpel, maar niet helemaal vlekkeloos werkt, bij mij.

Zo heb ik o.a. 2 bytes in eeprom die bijhouden hoe vaak de Nano gestart is (power off/on of een onbedoelde reset) en na een x aantal restarts raakt dit corrupt. Ik lees en schrijf deze posities alleen in de setup, niet in de main loop.

Ik zou graag de bootloader willen vervangen door Optiboot, om de watchdog te kunnen gebruiken en om de fuses voor brownhout te kunnen instellen. Helaas is me dat ooit maar 1x gelukt (via een Uno als programmer), op een of andere manier krijg ik steeds dat avrdude klaagt over de "Expected signature for ATmega328P is 1E 95 0F" error. Ook na edit van de conf wil het niet.
Plaats een delay van 50ms voor elke write naar je eeprom, en vermijdt adress 0

Stratis : SbjhPeaHC2ufttT1T6DP3nDE2cDF4KtbUL


Acties:
  • 0Henk 'm!

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@itcouldbeanyone Toevallig had ik er gisteren nog bij wijze van test een 100 ms voor en achter gezet. Tot nu toe gaat 't inderdaad goed, maar ik wil graag een heleboel probleemloze lees-/schrijfacties zien. Ik gebruik al de adressen vanaf 1, dus dat zou dan ook moeten helpen.

Live solarinfo op PVoutput [6,625 kWp]


Acties:
  • 0Henk 'm!

  • itcouldbeanyone
  • Registratie: augustus 2014
  • Laatst online: 25-04 18:41
quote:
Joepla schreef op maandag 2 juli 2018 @ 12:21:
@itcouldbeanyone Toevallig had ik er gisteren nog bij wijze van test een 100 ms voor en achter gezet. Tot nu toe gaat 't inderdaad goed, maar ik wil graag een heleboel probleemloze lees-/schrijfacties zien. Ik gebruik al de adressen vanaf 1, dus dat zou dan ook moeten helpen.
Je kan er een error corectie aan toepassen,
Makelijkste manier is om je data 3 keer op te slaan, en dan tijdens het lezen de 3 waardes vergelijkt en waarnodig een correctie aan toe voegd.

Heb hier zelf een stuk code een keer voor geschreven die dat automatisch afhandelt voor de gehele eeprom

Stratis : SbjhPeaHC2ufttT1T6DP3nDE2cDF4KtbUL


Acties:
  • 0Henk 'm!

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@itcouldbeanyone Zeker mogelijk, ik heb ook ooit zoiets gemaakt, dus meerdere keren opslaan en ook nog een eenvoudige checksum per dataset. Dat is al jaren geleden (op totaal andere hardware) en we hadden toen geen tijd/zin om de onderliggende oorzaak op te lossen.
Ik had eigenlijk gehoopt dat dit wel makkelijk op te lossen is, met de brown-out detectie bv., maar zo kan het zeker ook.

Live solarinfo op PVoutput [6,625 kWp]


  • Shamone
  • Registratie: november 2012
  • Laatst online: 18-02 15:40
Hallo allemaal,

Ik wil een kleine installatie voor iemand maken waarin de intensiteit van een lamp verandert als er iemand praat.

Wat ik denk dat ik nodig heb:
  • Arduino UNO
  • LED(?) lampen
  • Microfoons/geluidsdetector
  • Rotary encoder
Ik wil graag meerdere lampen en microfoons aansluiten op de Arduino. Wanneer een microfoon geluid opvangt moeten alle lampen feller branden. Via een rotary encoder wil ik de gevoeligheid aan kunnen passen van ofwel de lampen of het geluid dat ontvangen wordt.

Heeft iemand tips over hoe ik dit het beste aan kan pakken? Is dit bijvoorbeeld goed genoeg om van een afstand geluid te detecteren? Hoe sluit ik bijvoorbeeld een grotere LED lamp aan?

  • Lennyz
  • Registratie: januari 2010
  • Laatst online: 25-04 15:21
quote:
Shamone schreef op donderdag 5 juli 2018 @ 18:52:
Hallo allemaal,

Ik wil een kleine installatie voor iemand maken waarin de intensiteit van een lamp verandert als er iemand praat.

Wat ik denk dat ik nodig heb:
  • Arduino UNO
  • LED(?) lampen
  • Microfoons/geluidsdetector
  • Rotary encoder
Ik wil graag meerdere lampen en microfoons aansluiten op de Arduino. Wanneer een microfoon geluid opvangt moeten alle lampen feller branden. Via een rotary encoder wil ik de gevoeligheid aan kunnen passen van ofwel de lampen of het geluid dat ontvangen wordt.

Heeft iemand tips over hoe ik dit het beste aan kan pakken? Is dit bijvoorbeeld goed genoeg om van een afstand geluid te detecteren? Hoe sluit ik bijvoorbeeld een grotere LED lamp aan?
Dat moet prima werken. Ik zou wel de rotary encoder vervangen door een potentiometer van 10k weerstand. Dat is namelijk veel makkelijker te programmeren en aan te sluiten.

Ik zou ook kiezen voor een Arduino Mega omdat ik bij mijn projecten uiteindelijk vaak pins te kort kwam. Maar dat hoeft niet, dat is een persoonlijke voorkeur. Voor de prijs hoef je het niet te laten in ieder geval.

Leds die je niet rechtstreeks op je Arduino kunt aansluiten kan je aansturen met een mosfet of transistor.

Acties:
  • 0Henk 'm!

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

Het eerder genoemde eeprom probleem ligt bij mij hoogstwaarschijnlijk aan het aan- en afschakelen van de voedingsspanning. Eerdere projectjes had ik batterijgevoed, daar speelde het probleem niet.

Wat ik nu zie, is dat de eprom niet alleen vaak wordt stukgeschreven, maar waarbij geregeld ook de Nano niet meer opstart. Een keer of 3 spanningsloos maken is meestal genoeg om dit voor elkaar te krijgen.
De sketch moet dan opnieuw gedownload worden voordat deze weer start.

Er gaat dus meer mis. Ik vermoed dat de spanning te langzaam stijgt en daalt, waardoor de processor rare dingen doet. De brown-out fuses zijn bij de niet-offciële Arduino's waarschijnlijk niet altijd ingeschakeld, wat eea zou verklaren.

Live solarinfo op PVoutput [6,625 kWp]


Acties:
  • 0Henk 'm!

  • itcouldbeanyone
  • Registratie: augustus 2014
  • Laatst online: 25-04 18:41
quote:
Joepla schreef op vrijdag 6 juli 2018 @ 11:58:
Het eerder genoemde eeprom probleem ligt bij mij hoogstwaarschijnlijk aan het aan- en afschakelen van de voedingsspanning. Eerdere projectjes had ik batterijgevoed, daar speelde het probleem niet.

Wat ik nu zie, is dat de eprom niet alleen vaak wordt stukgeschreven, maar waarbij geregeld ook de Nano niet meer opstart. Een keer of 3 spanningsloos maken is meestal genoeg om dit voor elkaar te krijgen.
De sketch moet dan opnieuw gedownload worden voordat deze weer start.

Er gaat dus meer mis. Ik vermoed dat de spanning te langzaam stijgt en daalt, waardoor de processor rare dingen doet. De brown-out fuses zijn bij de niet-offciële Arduino's waarschijnlijk niet altijd ingeschakeld, wat eea zou verklaren.
Nog een ding om eeprom schade te voorkomen,
Lees eerst het adress uit op je eeprom, voordat je schrijft, je wilt namelijk alleen er naar toe scrijven waneer je een verandering in data hebt.

Waneer je spanning te laag is raakt je eeprom corrupt, dus ik zou een condensator van 470uf of hoger op je 5Vbus zetten, zodat je arduino iets langer aan blijft, schijdt dit echter met een diode in serie van je ingangsspanning, en meet je ingangsspanning.

Dus wanneer je spanning weg valt, kun je dat meten, dat terwijl je arduino nog spanning heeft, doe je schrijf actie 1 keer, en dan zit je veilig.

Stratis : SbjhPeaHC2ufttT1T6DP3nDE2cDF4KtbUL


Acties:
  • 0Henk 'm!

  • MartijnV03
  • Registratie: september 2017
  • Laatst online: 25-04 00:16
Vorige week een arduino startsetje gekocht, en al een beetje aan het proberen.
Nu wil ik een bepaalde opstelling proberen, maar het loopt niet helemaal zoals ik wil.

het gaat over 2 knoppen en 3 leds. iedere knop is gekoppeld aan een led, en de derde led moet alleen aangaan wanneer beide toetsen zijn ingedrukt.
Heb al een stukje code geschreven en het werkt bijna.
De led's gaan aan wanneer het moet, maar wanneer beide toetsen ingedrukt worden dan moeten eigenlijk led1 en led2 uitgaan.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*
 3 leds met 2 toetsen
 eerste 2 leds een eigen toets
 */

const int buttonPin1 = 3; //button1 op pin3
const int buttonPin2 = 2; //button2 op pin2
const int ledPin1 = 12; // led op pin12
const int ledPin2 = 11; // led op pin11
const int ledPin3 = 10; // led op pin10

int buttonState1 = 0;
int buttonState2 = 0;

void setup() {
  // put your setup code here, to run once:
pinMode(buttonPin1, INPUT); //button1 = input
pinMode(buttonPin1, INPUT); //button2 = input
pinMode(ledPin1, OUTPUT); //led1 = output
pinMode(ledPin2, OUTPUT); //led2 = output
pinMode(ledPin3, OUTPUT); //led3 = output
}

void loop() {
  // uitlezen van button1 en button2:
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);

//als buton1 ingedrukt is, led1 aan
//andere leds uit
if (buttonState1 == HIGH) {
  digitalWrite(ledPin1, HIGH);
} else {
  digitalWrite(ledPin1, LOW);
}
//als button2 ingedrukt is, led2 aan
//andere leds uit
if (buttonState2 == HIGH) {
  digitalWrite(ledPin2, HIGH);
} else {
  digitalWrite(ledPin2, LOW);
}

//als button1 en button2 ingedrukt zijn, led3 aan
//andere leds uit
if (buttonState1 and buttonState2 == HIGH) {
  digitalWrite(ledPin3, HIGH);
  digitalWrite(ledPin2, LOW);
  digitalWrite(ledPin1, LOW);
} else {

 digitalWrite(ledPin3, LOW);
}
}

Zelf heb ik het idee dat het probleem zit in het feit dat ik maar 2 'buttonState" heb staan.

iRacing Profiel


Acties:
  • 0Henk 'm!

  • Shamone
  • Registratie: november 2012
  • Laatst online: 18-02 15:40
quote:
Lennyz schreef op donderdag 5 juli 2018 @ 20:57:
[...]


Dat moet prima werken. Ik zou wel de rotary encoder vervangen door een potentiometer van 10k weerstand. Dat is namelijk veel makkelijker te programmeren en aan te sluiten.

Ik zou ook kiezen voor een Arduino Mega omdat ik bij mijn projecten uiteindelijk vaak pins te kort kwam. Maar dat hoeft niet, dat is een persoonlijke voorkeur. Voor de prijs hoef je het niet te laten in ieder geval.

Leds die je niet rechtstreeks op je Arduino kunt aansluiten kan je aansturen met een mosfet of transistor.
Ik heb al een Arduino UNO, dus dat is toch het makkelijkst nu. Heb je tips om grotere lampen aan te sluiten? Iets wat een kamer kan verlichten.

Acties:
  • 0Henk 'm!

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 10:43

Joepla

Geavanceerde micro-elektronica

@itcouldbeanyone Ik had al een condensator in de voeding en later ook op de 5V geplaatst, maar dat gaf eigenlijk geen verbetering. Het stukschrijven van de code gebeurde ook als ik alle eprom schrijfacties had uitgezet. Ik vrees dat ik me toch wat dieper in het flashen van de bootloader moet verdiepen om de BOD in te schakelen (waarvan ik hoop dat die nu standaard uitstaat in de Nano die ik hier heb).


@MartijnV03 Als je het met het if-statement wil oplossen, zou je zoiets kunnen doen:
code:
1
2
3
4
5
6
7
8
if (buttonState1 == HIGH && buttonState2 == LOW) digitalWrite(ledPin1, HIGH);
else digitalWrite(ledPin1, LOW); 

if (buttonState1 == LOW && buttonState2 == HIGH) digitalWrite(ledPin2, HIGH);
else digitalWrite(ledPin2, LOW); 

if (buttonState1 == HIGH && buttonState2 == HIGH) digitalWrite(ledPin3, HIGH);
else digitalWrite(ledPin3, LOW);

Joepla wijzigde deze reactie 06-07-2018 21:38 (32%)

Live solarinfo op PVoutput [6,625 kWp]


  • Frank J.
  • Registratie: juli 2003
  • Laatst online: 22-04 23:02
Hi Guys,

ik ben wat aan het hobbyen geweest om via een watchdog een LED te laten knipperen en als het programma vast loopt de controller te resetten.

Tevens handmatig via serial te resetten door het commando SOFT RESET te sturen.
En te testen via serial het command LOOP te sturen (dan zit het programma in een loop en na 8s reset de controller vanzelf)

Misschien hebben jullie er iets aan :)

Naslag werk:
https://tushev.org/articl...rduino-and-watchdog-timer
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <avr/wdt.h>

int PinD0 = 2;                              // Declare Watchdog LED pin
unsigned long WatchdogT2;                   // Declare WatchdogT2 last time blinked
const long WatchdogInterval = 1000;         // Blink Interval (milliseconds)
String SerialInput;                         // Serial input string variable
int i;

void setup(){
    wdt_enable(WDTO_8S);        // Enable WDT and set watchdog time to 8s
    Serial.begin(9600);         // Open serial
    StartUpMessage();           // Show startup message
}

void loop (){
    Watchdog();
    SerialFunction();
}

void StartUpMessage(){
    Serial.println("##########################");               
    Serial.println("##    SYSTEM STARTED    ##");
    Serial.println("##########################");   
    Serial.println("");
}

void SerialFunction(){
    if (Serial.available() > 0) {
        SerialInput = Serial.readString();
        Serial.print("Received: ");
        Serial.println(SerialInput);
        if (SerialInput == "SOFT RESET"){
            SoftReset();
        } else if (SerialInput == "LOOP") {
            LoopFunction(1);
        } else {
            Serial.println("########################");             
            Serial.println("##    INPUT NOT OK    ##");
            Serial.println("########################");
            Serial.println("");
        }
    }
}

void LoopFunction(int i){
    if (i==1){
        LoopFunction(1);
    }
}

void SoftReset(){
    Serial.println("#################");                
    Serial.println("##  SOFTRESET  ##");
    Serial.println("#################");
    Serial.println("");
    delay(500);                         // Wait for serial print to finish
    wdt_enable(WDTO_15MS);              // Set watchdog timer 15ms
    delay(100);                         // Wait delay 100ms so that watchdog timer will be triggered
}

void Watchdog(){
    unsigned long WatchdogT1 = millis();
    wdt_reset();                                            // Reset watchdog timer. IF program hangs, or takes longer then the wathdog timer. The wdt_reset isnt generated so the controller will reset
    if (WatchdogT1 - WatchdogT2 >= WatchdogInterval) {      // If Current time minus previous blink time is bigger or equal to watchdog interval time
        digitalWrite(PinD0, !digitalRead(PinD0));           // Set the LED inverse to current LED status
        WatchdogT2 = WatchdogT1;                            // Save  last blink time
  }
}

Frank J. wijzigde deze reactie 07-07-2018 13:28 (3%)

PS4: 500GB PSN: Bierbeer TV: Sony 50W755C


Acties:
  • 0Henk 'm!

  • Frank J.
  • Registratie: juli 2003
  • Laatst online: 22-04 23:02
Omdat we toch bezig zijn, dit kan best handig zijn voor sommigen :).

Ik heb de debounce tutorial (https://www.arduino.cc/en/Tutorial/Debounce) aangepast.
Zodat deze een functie omvat en een variabele functie aanroept die bij die input hoort. Zodat je dus niet voor elke input dit apart moet maken.
  • Dit voorbeeld heeft 16 inputs (A0-A15) en 20 outputs (D0-D19)
  • Debounce tijd staat op 25ms (int DebounceDelay = 25;) dit is voor een test draadje voldoende, een piezo drukker werkt het beste rond de 10ms wat ik gemerkt heb
  • Als een input hoog wordt dan gaat de output hoog of laag afhankelijk van de huidige stand van die output. A0 schakelt D0 etc
  • Tevens wat Serial logging
Tevens kun je door middel van een array ook een variabele functie aanroepen die bij die input hoort.
C++:
1
vvFunction VarFunction[16] = { InputA0Function, etc };

En je kunt aangeven of je Input bij een HIGH of LOW status een functie aanroept.
C++:
1
int ButtonStateValue[16] = { HIGH, etc };

Wat uitleg over een Array:
Een array omvat variabelen die je kunt aanroepen bijvoorbeeld in een functie.
Voorbeeld van een Array, is een array met 5 posities met op posities 0-4 een waarde van 1-5.
C++:
1
int Array[5] = { 1, 2, 3, 4, 5 } ;

Nu de code:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include <avr/wdt.h>

// Declare Pin numbers: //
    // OUTPUTS //
int PinD0 = 2;          
int PinD1 = 3;          
int PinD2 = 4;          
int PinD3 = 5;
int PinD4 = 6;
int PinD5 = 7;
int PinD6 = 8;
int PinD7 = 9;
int PinD8 = 10;
int PinD9 = 11;
int PinD10 = 12;
int PinD11 = 13;
int PinD12 = 42;
int PinD13 = 43;
int PinD14 = 44;
int PinD15 = 45;
int PinD16 = 46;
int PinD17 = 47; 
int PinD18 = 48; 
int PinD19 = 49; 

    // INPUTS //
int PinA0 = A0;
int PinA1 = A1;
int PinA2 = A2;
int PinA3 = A3;
int PinA4 = A4;
int PinA5 = A5;
int PinA6 = A6;
int PinA7 = A7;
int PinA8 = A8;
int PinA9 = A9;
int PinA10 = A10;
int PinA11 = A11;
int PinA12 = A12;
int PinA13 = A13;
int PinA14 = A14;
int PinA15 = A15;

// Declare Variables //
int LogVariable;
int i, n;
int OutputPin[20] { PinD0, PinD1, PinD2, PinD3, PinD4, PinD5, PinD6, PinD7, PinD8, PinD9, PinD10, PinD11, PinD12, PinD13, PinD14, PinD15, PinD16, PinD17, PinD18, PinD19 };
int InputRead[16];
int OutputRead[20];
int InputPin[16] = { PinA0, PinA1, PinA2, PinA3, PinA4, PinA5, PinA6, PinA7, PinA8, PinA9, PinA10, PinA11, PinA12, PinA13, PinA14, PinA15 };
int InputLastState[16];
int InputButtonState[16];
int ButtonStateValue[16] = { HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH } ;
String LogText, SerialInput;
String InputLogText[16] = { "InputA0 = ", "InputA1 = ", "InputA2 = ", "InputA3 = ", "InputA4 = ","InputA5 = ","InputA6 = ", "InputA7 = ", "InputA8 = ", "InputA9 = ", "InputA10 = ","InputA11 = ", "InputA12 = ", "InputA13 = ", "InputA14 = ", "InputA15 = " };
String OutputLogText[20] = { "OutputD0 = ", "OutputD1 = ", "OutputD2 = ", "OutputD3 = ", "OutputD4 = ","OutputD5 = ","OutputD6 = ", "OutputD7 = ", "OutputD8 = ", "OutputD9 = ", "OutputD10 = ","OutputD11 = ", "OutputD12 = ", "OutputD13 = ", "OutputD14 = ", "OutputD15 = ", "OutputD16 = ", "OutputD17 = ", "OutputD18 = ", "OutputD19 = " };
unsigned long InputDebounceT1[16];
unsigned long WatchdogT2;
void InputA0Function(int i), InputA1Function(int i), InputA2Function(int i), InputA3Function(int i), InputA4Function(int i), InputA5Function(int i), InputA6Function(int i), InputA7Function(int i), InputA8Function(int i), InputA9Function(int i), InputA10Function(int i), InputA11Function(int i), InputA12Function(int i), InputA13Function(int i), InputA14Function(int i), InputA15Function(int i);
int DebounceDelay = 25;                     // Button Debounce delay (milliseconds)    
const long WatchdogInterval = 1000;         // Blink Interval (milliseconds)

typedef void (*vvFunction)(int i);
vvFunction VarFunction[16] = { InputA0Function, InputA1Function, InputA2Function, InputA3Function, InputA4Function, InputA5Function, InputA6Function, InputA7Function, InputA8Function, InputA9Function, InputA10Function, InputA11Function, InputA12Function, InputA13Function, InputA14Function, InputA15Function } ;


void setup() {
    wdt_enable(WDTO_8S);
    Serial.begin(9600);
    PinMode();
}

void loop() {
    Watchdog();
    for (n=0; n<=15; n=n+1){
            InputRead[n] = digitalRead(InputPin[n]);
            if (InputRead[n] != InputLastState[n]) {
                InputDebounceT1[n] = millis();
            } else {
                InputDebounce(n);
            }
        InputLastState[n] = InputRead[n];
    }
    n=0;
}

void InputDebounce(int i){
    if (InputRead[i] != InputLastState[i]) {
        InputDebounceT1[i] = millis();
    } else {
        if ((millis() - InputDebounceT1[i]) > DebounceDelay) {
            if (InputRead[i] != InputButtonState[i]) {
                InputButtonState[i] = InputRead[i];
                if (InputButtonState[i] == ButtonStateValue[i]) {
                    VarFunction[i](i);
                    Serial.println(""); 
                } else{
                    if (InputLogText[i].length() > 0){
                        SerialLog(InputLogText[i], InputRead[i]);
                        Serial.println("");
                    }
                }
            }
        }
    }
}

void PinMode(){
    for (i=0; i<=19; i=i+1){
        pinMode(OutputPin[i], OUTPUT);
    }
}

void InputA0Function(int i){
    InputFunction(i); 
}

void InputA1Function(int i){
    InputFunction(i); 
}

void InputA2Function(int i){
    InputFunction(i); 
}

void InputA3Function(int i){
    InputFunction(i); 
}

void InputA4Function(int i){
    InputFunction(i); 
}

void InputA5Function(int i){
    InputFunction(i); 
}

void InputA6Function(int i){
    InputFunction(i); 
}

void InputA7Function(int i){
    InputFunction(i); 
}

void InputA8Function(int i){
    InputFunction(i); 
}

void InputA9Function(int i){
    InputFunction(i); 
}

void InputA10Function(int i){
    InputFunction(i); 
}

void InputA11Function(int i){
    InputFunction(i); 
}

void InputA12Function(int i){
    InputFunction(i); 
}

void InputA13Function(int i){
    InputFunction(i); 
}

void InputA14Function(int i){
    InputFunction(i); 
}

void InputA15Function(int i){
    InputFunction(i); 
}

void InputFunction(int i){
    SerialLog(InputLogText[i], InputRead[i]);
    digitalWrite(OutputPin[i], !digitalRead(OutputPin[i]));
    SerialLog(OutputLogText[i], digitalRead(OutputPin[i]));
}

void SerialLog(String LogText, int LogVariable){
    Serial.print(LogText);
    Serial.println(LogVariable, DEC);
}

void Watchdog(){
    unsigned long WatchdogT1 = millis();
    wdt_reset();
    if (WatchdogT1 - WatchdogT2 >= WatchdogInterval) {
        WatchdogT2 = WatchdogT1;                            
        digitalWrite(PinD16, !digitalRead(PinD16));         
  }
}

Frank J. wijzigde deze reactie 08-07-2018 00:43 (4%)

PS4: 500GB PSN: Bierbeer TV: Sony 50W755C


Acties:
  • +1Henk 'm!

  • Lennyz
  • Registratie: januari 2010
  • Laatst online: 25-04 15:21
quote:
Shamone schreef op vrijdag 6 juli 2018 @ 15:33:
[...]


Ik heb al een Arduino UNO, dus dat is toch het makkelijkst nu. Heb je tips om grotere lampen aan te sluiten? Iets wat een kamer kan verlichten.
Er zijn veel tutorials te vinden die dat beschrijven. Een goede is bijvoorbeeld deze:

http://bildr.org/2012/03/rfp30n06le-arduino/

Acties:
  • 0Henk 'm!

  • itcouldbeanyone
  • Registratie: augustus 2014
  • Laatst online: 25-04 18:41
quote:
Joepla schreef op maandag 2 juli 2018 @ 14:24:
@itcouldbeanyone Zeker mogelijk, ik heb ook ooit zoiets gemaakt, dus meerdere keren opslaan en ook nog een eenvoudige checksum per dataset. Dat is al jaren geleden (op totaal andere hardware) en we hadden toen geen tijd/zin om de onderliggende oorzaak op te lossen.
Ik had eigenlijk gehoopt dat dit wel makkelijk op te lossen is, met de brown-out detectie bv., maar zo kan het zeker ook.
Met eeprom en flash komt data corruptie altijd wel voor, gewoon kwestie van tijd,
Kheb daarvoor een soort filesystem bedacht speciaal voor eeprom, welke via I2C makkelijk meerdere eeproms te koppelen zijn. (Zie het als een array die alsmaar groter word)
elke byte word 3 keer op geslagen, of waneer er meerdere memory IC’s aanwezig zijn in raid 5 modus.
Wanneer 1 byte bitrot vertoond of om andere redene niet meer bruikbaar is, word dit automatisch gecorigeerd.
Daarboven heb ik een layer die gebruik maakt van de sram, zodat je data snel kun lezen en wijzigen zonder dat je direct je eeprom benaderd, een bepaald deel van het geheugen houd vervolgens bij welke bytes gewijzigd zijn, en schrijft dit dan zo nodig naar de eeprom, welke vervolgens checkt of de bytes in de eeprom niet toevallig er al in staan, voordat het weg schrijft.(dus geen 0 schrijven als er al 0 in staat)


Alle varriabelen in me code zijn synchroon met dit file systeem, het is zo bedacht dat er 0.0 lag is vergeleken normale variabelen.
zo kan ik dus snel data benaderen, wijzigen en is nog bestemd tegen corruptie of bitjes overbodig veel overschrijven.

Ik wil hier in de toekomst nog wear leveling aan toe voegen, omdat ik nu meer ga focusen op parralel NAND geheugen.

Stratis : SbjhPeaHC2ufttT1T6DP3nDE2cDF4KtbUL


  • SToRM666
  • Registratie: juli 2005
  • Laatst online: 24-04 19:14
Ik ben momenteel bezig met mijn eerste Arduino project, een wake-up light. De bedoeling is om de wekker eruit te laten zien als een redelijk standaard (retro) wekker met een 8 bij 32 dots matrix display.En ik heb dan een losse ledstrip die ik ga gebruiken voor achter mijn bed om de zonsopkomst te simuleren.

Tot nu toe loopt het behoorlijk vlot, af en toe is het qua aansluiten en aansturen even zoeken, maar in principe kan ik het geheel wel al bijna volledig afwerken. De taal is nieuw voor mij, maar als programmeur van beroep is het niet al te ingewikkeld om er vertrouwd mee te raken :)

Ik heb nu wel een technisch probleem waar ik nog niet direct een oplossing voor gevonden heb. Ik heb nu namelijk een mp3 module met een vaste speaker voorzien voor het afspelen van het geluid (vogels, zee, etc...) en als ik deze bij de rest van mijn opstelling aansluit dan krijg ik vreemde effecten. In het begin kreeg ik enkel gekraak te horen uit de speaker, maar dit heb ik dan op kunnen lossen door de speaker op een eigen GND aansluiting te zetten (wel dezelfde 5V aansluiting als de rest) . Al het overige (RTC, knoppen, matrix display) deelt zowel dezelfde voeding als GND. De ledstrip is de enige die aparte voeding heeft.

Als ik nu de mp3 module laat werken, dan krijg ik soms toch nog gekke effecten en zelfs het led display dat erop reageert. Mijn vraag is nu of ik misschien teveel vermogen van de 5V vraag of kan ik eventueel op een andere manier toch alles op dezelfde 5V laten zitten en een andere aanpassing doen?

Ik heb zelf het vermoeden dat het komt door een plotse grote verandering in de spanning. Hoe zou ik dit eventueel op kunnen vangen? Het speakertje heeft een vermogen van 1W/8Ohm.

Enkele foto's: foto 1 foto 2 foto 3
quote:
itcouldbeanyone schreef op vrijdag 15 juni 2018 @ 18:22:
Ook millis en micros is erg amateuristisch ,
Gebeurt een hoop op de achtergrond, en echt op tijd iets verstuuren wil er niet mee als je meer aan het doen bent.
Ik gebruik altijd ISR zo genereer ik een interrupt waarme ik op het juiste tijdsinterval een actie kan ondernemen.
Goeie tip! Dat ga ik ook eens in mijn code implementeren :)

SToRM666 wijzigde deze reactie 10-07-2018 10:11 (9%)

PSN id: NL_SToRM

Pagina: 1 ... 90 ... 93 Laatste


OnePlus 7 Microsoft Xbox One S All-Digital Edition LG W7 Google Pixel 3 XL OnePlus 6T (6GB ram) FIFA 19 Samsung Galaxy S10 Sony PlayStation 5

Tweakers vormt samen met Tweakers Elect, Hardware.Info, Autotrack, Nationale Vacaturebank, Intermediair en Independer de Persgroep Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True