Sisällysluettelo:
- Vaihe 1: Materiaalit ja työkalut
- Vaihe 2: Piirin kokoaminen
- Vaihe 3: MCU: n vilkkuminen
- Vaihe 4: Piirikotelon kokoaminen
- Vaihe 5: Rig -johtojen liittäminen ohjaimeen
- Vaihe 6: Säätimen testaus
- Vaihe 7: Konfigurointi I2C: n kautta konsolitulon avulla
- Vaihe 8: Seuraavat vaiheet
Video: IOT123 - SOLAR TRACKER - OHJAIN: 8 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Tämä on Instructable -ohjelman laajennus
IOT123 - SOLAR TRACKER - KALLISTUS/PANEELI, PANEELIKEHYKSET, LDR -KIINNIKKEET RIG. Täällä keskitymme servojen ohjaimeen ja auringon aseman antureihin. On tärkeää huomata, että tässä suunnittelussa oletetaan, että käytetään 2 MCU: ta: yksi (3,3 V: n 8 MHz: n Arduino Pro Mini) aurinkokennolle ja yksi riippumaton MCU antureille/toimijoille.
Tämä on versio 0.3
Sen sijaan, että julkaisin kaikki projektit täydellisen tyytyväisyyden jälkeen, aion harjoittaa jatkuvaa integraatiota ja toimittaa jotain useammin, muuttamalla toimitustani tarpeen mukaan. Kirjoitan toisen ohjeen akkulaturille _ kun_ohjaimen ohjelmiston/laitteiston optimointi on valmis. Kerron, missä optimointeja tarvitaan, kun siirrymme tämän läpi.
Yksi syy tähän lähestymistapaan on asiakaspalaute. Jos näet tarvetta tai sinulla on parempi lähestymistapa, kommentoi, mutta muista, etten voi toimittaa kaikkea ja mahdollisesti ei sinulle sopivaa aikataulua. Koska nämä selitykset näyttävät vähemmän merkityksellisiltä, ne poistetaan tästä artikkelista.
Mitä tämä sisältää:
- Käytä alkuperäisen Instructable -laitteen LDR -tunnisteita auringon likimääräisen sijainnin tunnistamiseen.
- Siirrä servot aurinkoa vasten.
- Vaihtoehdot liikkeiden herkkyydelle.
- Vaihtoehdot askelkoon, kun siirrytään aurinkoon.
- Vaihtoehdot servoissa käytettäville kulmarajoille.
- Vaihtoehdot liikkeiden viivästymisille.
- I2C -liitäntä arvojen asettamiseen/saamiseen MCU: iden välillä.
- Syvä uni liikkeiden välillä.
Mitä tämä ei sisällä (ja se käsitellään aikalisänä):
- Käytä virtaa vain päiväsaikaan.
- Muistetaan aamunkoittoasento ja mennään sinne hämärässä.
- Säätimen irrottaminen MCU: sta.
- MCU: n LED -valojen poistaminen käytöstä.
- Virran uudelleenohjaus VCC: n kautta RAW: n sijaan.
- Tarjoaa ratkaisuja vilkkumiseen ilman säädettyä virtaa USB -sarja -TTL -muuntimesta.
- Akun jännitteen valvonta.
HISTORIA
20. joulukuuta 2017 V0.1 -KOODI
Alkuperäinen versio seuraa valonlähdettä, aina päällä, ei latausta
7. tammikuuta 2018 V0.2 -KOODI
-
LAITTEISTON MUUTOKSET
- Lisää I2C -nastat
- Lisää kytkin servo GND: hen
- Painettu tarra ohjainkotelon kotelossa
-
OHJELMISTON MUUTOKSET
- Lue määritykset EEPROMista
- I2C -väylätuki toisen MCU: n orjana (3.3V)
- Aseta kokoonpano I2C: n kautta
- Ota käyttöön I2C: n kautta
- Hanki kokoonpano I2C: n kautta
- Hanki ajonaikaisia ominaisuuksia I2C: n kautta (tällä hetkellä käytössä ja nykyinen valovoima)
- Poista sarjakirjaus (se vaikutti I2C -arvoihin)
19. tammikuuta 2018 V0.3 -KOODI
-
LAITTEISTO
Tunniste päivitetty. Kytkintä käytetään nyt joko CONFIG- tai TRACK -tilan valitsemiseen
-
OHJELMISTO
- I2C: tä käytetään vain kokoonpanoon
- Ohjain odottaa 5 sekuntia ennen seurannan alustamista, mahdollistaa käsien liikuttamisen
- Jos haluat käyttää I2C -kokoonpanoa, SPDT: n on oltava käytössä CONFIG -yksikön käynnistyksenä
- Liikkeen seurannan välillä laite on syvässä lepotilassa konfiguraatioarvoa SLEEP MINUTES (oletus 20 minuuttia) varten.
Vaihe 1: Materiaalit ja työkalut
Materiaalit ja lähteet on nyt täynnä.
- 3D -painetut osat.
- Arduino Pro Mini 3.3V 8mHz
- 1/4 x 6 cm: n kaksipuolinen prototyyppinen PCB -yleispiirilevy (leikattava puoliksi)
- 1 pois 40P urospuolinen otsikko (leikattava kokoon).
- 1 off 40P naarasliitin (leikattava kokoon).
- 4 off 10K 1/4W vastusta.
- Liitäntäjohto.
- Juotos ja rauta.
- 20 kpl 4G x 6mm ruostumattomasta pannusta valmistettuja ruuveja.
- 4 off 4G x 6mm ruostumatonta upotettua itsekelausruuvia.
- 1 pois 3,7 V LiPo -akku ja pidike (päättyy 2P -dupontiliittimiin).
- 1 pois 2P uros suorakulma otsikko
- 1 pois SPDT -kytkin 3 -nastainen 2,54 mm: n askel
- Vahva syanoakrylaattiliima
- Dupont -liittimien naaras 1P -otsikko (1 pois sinistä, 1 pois vihreää).
Vaihe 2: Piirin kokoaminen
Piirissä ei tällä hetkellä ole jännitteenjakajapiiriä (voltimittaria).
- Leikkaa 4x6 cm: n kaksipuolinen prototyyppinen PCB -yleispiirilevy puoliksi pitkän akselin poikki.
-
Leikkaa 40P -urosliitin paloiksi:
- 2 pois päältä 12P
- 3 pois päältä 3P
- 6 pois päältä 2P.
-
Leikkaa 40P -naarasliitin paloiksi:
- 2 pois päältä 12P
- 1 pois päältä 6P
- Juotos 2 pois 12 naarasliitin kuvan mukaisesti.
- Liimaa 3P -uroksen (lisä) otsikosta irrotettu välikappale SPDT -kytkimen alapuolelle syanoakrylaattiliimalla
- Aseta toiselle puolelle sitten juote 6 pois 2P, 2 pois 3Pmale -otsikko ja SPDT -kytkin kuvan mukaisesti.
- Juotos 4 pois 10K -vastuksista (A, B, C, D, musta) johdon kautta GND -nastan otsikkoon (#2 musta) ja A0 -A3 -nastatappeihin (#5, #6, #7, #8) ja sitten reiän läpi (keltainen) kuten kuvassa (3 kuvaa + 1 kaavio).
- Jäljitä 3.3V LDR -PINS -juotos -PINS #4, #6, #8, #10 ja pujota reikä feamale -otsikon VCC -nastaan (vihreä).
- Jäljitä 3.3V naaraspuolisen otsikon puolella, kuten on esitetty (punainen), juottamalla PINS #1, #12, #15.
- 3.3V läpimenevä reikä juotettu sivun yli (punainen) RAW -otsikon PIN #1.
- Seuraa oranssia kytkentää PIN -nro 11 reiästä juotokseen Naarasnappi toisella puolella kuvan osoittamalla tavalla.
- Jäljitä ja juota sininen kytkentälanka #20 - #30 ja #31 - #13 ja #16.
- Juotos naarasotsikon PIN #11 urosotsikon PIN #11 reikään.
- Valmistele kaksi 30 mm pitkää dupont -liitintä naaraspuolisella 1P -liittimellä (1 pois sinisestä, yksi vihreästä). Kaista ja tina toinen pää.
- Juotos sininen Dupont -lanka numeroon 28; juota vihreä Dupont -johto numeroon 29.
- Kiinnitä Arduinon yläpuolelle 6P -naarasliitin ja sitten juota.
- Kiinnitä Arduinon yläpuolelle 2P: n suorakulmainen naarasotsikko int #29 ja #30 ja sitten juota.
- Kiinnitä Arduinon alapuolelle 2 12P ja 1 3P urosnasta ja sitten juota.
- Aseta Arduino -urospuoliset 12P -nastat piirilevyn 12P -naaraspäähän.
Vaihe 3: MCU: n vilkkuminen
Arduino Pro Mini välähtää kätevästi käyttämällä FTDI232 USB -TTL -muunninta 6P -naarasotsikon avulla. Katso yllä olevasta kuvasta kahden levyn kohdistus.
Varmista, että FTDI232 -laitteessa on valittu 3.3V -asetus. Seuraa ohjeita alla olevan koodin avulla (käytä GIST -linkkiä).
Lowpower-kirjasto (liitteenä ja https://github.com/rocketscream/Low-Power) on asennettava.
Kun Arduino Pro Mini + -piirilevy on asennettu koteloon, sitä voidaan silti vilkuttaa, kun otsikkotapit paljastuvat. Irrota vain ohjausyksikkö paneelikehyksestä paljastamalla otsikko.
Kallista aurinkokenno, jossa on I2C/EEPROM -kokoonpano ja lepotila liikkeiden välillä. Leposyklin keston tarkkuus pienenee keston kasvaessa, mutta riittävä tähän tarkoitukseen
/* |
* muutettu koodista |
* Mathias Leroy |
* |
* V0.2 MUUTOKSET |
** I2C SET GET |
** EEPROM SET GET |
** POISTA SARJALÄHTÖ - AFFECTED I2C |
** SEURANTAA KÄYTÖSSÄ/KÄYTÖSSÄ |
** SIIRRÄ SERVOT RAJOILLE I2C: N KANSSA |
** LUE NYKYINEN AVG INTENSITEETI I2C |
* V0.3 MUUTOKSET |
** KYTKIN 2 TILAA - TRACK (NO I2C) ja CONFIGURE (USES I2C) |
** NUKKU RAITATILASSA (ERITTÄIN MATKA TARKKUUS 8 SEKUNNIN TAKANA) |
** IRROTA/LIITÄ PALVELUJA NUKUTTAMISESSA/KÄYTÄ (TAPAHTUMASSA KÄYTETTY TRANSISTORI) |
** POISTA MÄÄRITETTÄVÄ ALKUPOSITIO (REDUNDANTTI) |
** POISTA MUKAUTETTAVAT WAKE SECONDS (REDUNDANT) |
** POISTA MÄÄRITETTÄVÄ KÄYTÖSSÄ/KÄYTÖSSÄ (REDUNDANT) |
** POISTA MUKAUTETTAVA SEURANTAA KÄYTÖSSÄ (KÄYTÄ LAITTEISTOKYTKINTÄ) |
** POISTA JÄNNITTEET - KÄYTETÄÄN I2C -KOMPONENTTIA |
** LISÄÄ SERIAL LOGGING, kun et käytä I2C: tä |
*/ |
#sisältää |
#sisältää |
#sisältää |
#sisältää |
#sisältää |
#defineEEPROM_VERSION1 |
#defineI2C_MSG_IN_SIZE3 |
#definePIN_LDR_TL A0 |
#definePIN_LDR_TR A1 |
#definePIN_LDR_BR A3 |
#definePIN_LDR_BL A2 |
#definePIN_SERVO_V11 |
#definePIN_SERVO_H5 |
#defineIDX_I2C_ADDR0 |
#defineIDX_V_ANGLE_MIN1 |
#defineIDX_V_ANGLE_MAX2 |
#defineIDX_V_SENSITIVITY3 |
#defineIDX_V_STEP4 |
#defineIDX_H_ANGLE_MIN5 |
#defineIDX_H_ANGLE_MAX6 |
#defineIDX_H_SENSITIVITY7 |
#defineIDX_H_STEP8 |
#defineIDX_SLEEP_MINUTES9 |
#defineIDX_V_DAWN_ANGLE10 |
#defineIDX_H_DAWN_ANGLE11 |
#defineIDX_DAWN_INTENSITY12 // kaikkien LDRS -tietojen keskiarvo |
#defineIDX_DUSK_INTENSITY13 // kaikkien LDRS -tietojen keskiarvo |
#defineIDX_END_EEPROM_SET14 |
#defineIDX_CURRENT_INTENSITY15 // kaikkien LDRS -arvojen keskiarvo - käytetään IDX_DAWN_INTENSITY -ympäristön epäsuoran valon laskemiseen |
#defineIDX_END_VALUES_GET16 |
#defineIDX_SIGN_117 |
#defineIDX_SIGN_218 |
#defineIDX_SIGN_319 |
Servo _servoH; |
Servo _servoV; |
tavu _i2cVals [20] = {10, 10, 170, 20, 5, 10, 170, 20, 5, 20, 40, 10, 30, 40, 0, 0, 0, 0, 0, 0}; |
int _servoLoopDelay = 10; |
int _slowingDelay = 0; |
int _kulmaH = 90; |
int _kulmaV = 90; |
int _verageTop = 0; |
int _verageRight = 0; |
int _verageBottom = 0; |
int _verageLeft = 0; |
tavu _i2cResponse = 0; |
bool _inConfigMode = epätosi; |
voidsetup () |
{ |
Sarja.alku (115200); |
getFromEeprom (); |
if (inConfigMode ()) { |
Serial.println ("Konfigurointitila"); |
Serial.print ("I2C -osoite:"); |
Sarja.println (_i2cVals [IDX_I2C_ADDR]); |
Wire.begin (_i2cVals [IDX_I2C_ADDR]); |
Wire.onRecept (ReceiveEvent); |
Wire.onRequest (requestEvent); |
}muu{ |
Serial.println ("Seurantatila"); |
delay (5000); // aika päästä käsistä tieltä, jos liität akun jne. |
} |
} |
voidloop () |
{ |
getLightValues (); |
if (! _inConfigMode) { |
// Tehtävät: KÄYTÄ TRANSISTORIN KYTKIN |
_servoH.attach (PIN_SERVO_H); |
_servoV.attach (PIN_SERVO_V); |
(int i = 0; i <20; i ++) { |
jos (i! = 0) { |
getLightValues (); |
} |
moveServos (); |
} |
viive (500); |
_servoH.detach (); |
_servoV.detach (); |
// Tehtävät: PÄÄLTÄ TRANSISTORIN KYTKIN |
viive (500); |
sleepFor ((_ i2cVals [IDX_SLEEP_MINUTES] * 60) / 8); |
} |
} |
// --------------------------------- NYKYINEN TILA |
boolinConfigMode () { |
pinMode (PIN_SERVO_H, INPUT); |
_inConfigMode = digitalRead (PIN_SERVO_H) == 1; |
return _inConfigMode; |
} |
// --------------------------------- EEPROM |
voidgetFromEeprom () { |
jos( |
EEPROM.read (IDX_SIGN_1)! = 'S' || |
EEPROM.read (IDX_SIGN_2)! = 'T' || |
EEPROM.read (IDX_SIGN_3)! = EEPROM_VERSION |
) EEPROM_write_default_configuration (); |
EEPROM_read_configuration (); |
} |
voidEEPROM_write_default_configuration () { |
Serial.println ("EEPROM_write_default_configuration"); |
for (int i = 0; i <IDX_END_EEPROM_SET; i ++) { |
EEPROM.update (i, _i2cVals ); |
} |
EEPROM.update (IDX_SIGN_1, 'S'); |
EEPROM.update (IDX_SIGN_2, 'T'); |
EEPROM.update (IDX_SIGN_3, EEPROM_VERSION); |
} |
voidEEPROM_read_configuration () { |
Serial.println ("EEPROM_read_configuration"); |
for (int i = 0; i <IDX_END_EEPROM_SET; i ++) { |
_i2cVals = EEPROM.read (i); |
//Sarja.println(String(i) + "=" + _i2cVals ); |
} |
} |
// --------------------------------- I2C |
voidreceptEvent (int count) { |
jos (määrä == I2C_MSG_IN_SIZE) |
{ |
char cmd = Wire.read (); |
tavu -indeksi = Wire.read (); |
tavun arvo = Wire.read (); |
kytkin (cmd) { |
tapaus G: |
jos (hakemisto <IDX_END_VALUES_GET) { |
_i2cResponse = _i2cVals [hakemisto]; |
} |
tauko; |
tapaus: |
jos (indeksi <IDX_END_EEPROM_SET) { |
_i2cVals [indeksi] = arvo; |
EEPROM.update (indeksi, _i2cVals [hakemisto]); |
} |
tauko; |
oletus: |
palata; |
} |
} |
} |
voidrequestEvent () |
{ |
Wire.write (_i2cResponse); |
} |
// --------------------------------- LDR: t |
voidgetLightValues () { |
int valueTopLeft = analoginenLuku (PIN_LDR_TL); |
int valueTopRight = analoginenLuku (PIN_LDR_TR); |
int valueBottomRight = analoginenLuku (PIN_LDR_BR); |
int valueBottomLeft = analoginenLuku (PIN_LDR_BL); |
_averageTop = (valueTopLeft + valueTopRight) / 2; |
_averageRight = (valueTopRight + valueBottomRight) / 2; |
_averageBottom = (valueBottomRight + valueBottomLeft) / 2; |
_averageLeft = (valueBottomLeft + valueTopLeft) / 2; |
int avgIntensity = (valueTopLeft + valueTopRight + valueBottomRight + valueBottomLeft) / 4; |
_i2cVals [IDX_CURRENT_INTENSITY] = kartta (keskiarvo, 0, 1024, 0, 255); |
} |
// --------------------------------- SERVOS |
voidmoveServos () { |
Serial.println ("moveServos"); |
if ((_averageLeft-_averageRight)> _ i2cVals [IDX_H_SENSITIVITY] && (_angleH-_i2cVals [IDX_H_STEP])> _ i2cVals [IDX_H_ANGLE_MIN]) { |
// menee vasemmalle |
Serial.println ("moveServos menee vasemmalle"); |
delay (_slowingDelay); |
for (int i = 0; i <_i2cVals [IDX_H_STEP]; i ++) { |
_servoH.write (_angleH--); |
delay (_servoLoopDelay); |
} |
} |
elseif ((_averageRight-_averageLeft)> _ i2cVals [IDX_H_SENSITIVITY] && (_angleH+_i2cVals [IDX_H_STEP]) <_ i2cVals [IDX_H_ANGLE_MAX]) { |
// menee oikein |
Serial.println ("moveServos menee vasemmalle"); |
delay (_slowingDelay); |
for (int i = 0; i <_i2cVals [IDX_H_STEP]; i ++) { |
_servoH.write (_angleH ++); |
delay (_servoLoopDelay); |
} |
} |
muu { |
// tekemättä mitään |
Serial.println ("moveServos ei tee mitään"); |
delay (_slowingDelay); |
} |
jos ((_averageTop-_averageBottom)> _ i2cVals [IDX_V_SENSITIVITY] && (_angleV+_i2cVals [IDX_V_STEP]) <_ i2cVals [IDX_V_ANGLE_MAX]) { |
// menossa ylös |
Serial.println ("moveServos nousee"); |
delay (_slowingDelay); |
for (int i = 0; i <_i2cVals [IDX_V_STEP]; i ++) { |
_servoV.write (_angleV ++); |
delay (_servoLoopDelay); |
} |
} |
elseif ((_averageBottom-_averageTop)> _ i2cVals [IDX_V_SENSITIVITY] && (_angleV-_i2cVals [IDX_V_STEP])> _ i2cVals [IDX_V_ANGLE_MIN]) { |
// menee alas |
Serial.println ("moveServos menee alas"); |
delay (_slowingDelay); |
for (int i = 0; i <_i2cVals [IDX_V_STEP]; i ++) { |
_servoV.write (_angleV--); |
delay (_servoLoopDelay); |
} |
} |
muu { |
Serial.println ("moveServos ei tee mitään"); |
delay (_slowingDelay); |
} |
} |
//---------------------------------NUKKUA |
voidasleepFor (unsignedint eightSecondSegments) { |
Serial.println ("sleepFor"); |
for (unsignedint sleepCounter = eightSecondSegments; sleepCounter> 0; sleepCounter--) |
{ |
LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); |
} |
} |
katso rawtilt_pan_tracker_0.3.ino, jota isännöi GitHub ❤ kanssa
Vaihe 4: Piirikotelon kokoaminen
- Varmista, että Ardiuno Pro Mini on asetettu piirilevyn otsikoihin.
- Aseta SOLAR TRACKER -ohjainkotelon pohja SOLAR TRACKER -ohjainkotelon seiniin ja kiinnitä 2 ruostumattomalla 4G x 6 mm: n upotetulla itsekelausruuvilla.
- Aseta Ardiuno Pro Mini + -piirilevy, jossa on 6P -otsikko, SOLAR TRACKER -ohjainkotelon pohjassa olevaan tyhjyyteen.
- Aseta SOLAR TRACKER -ohjainkotelon kansi SOLAR TRACKER -ohjainkotelon seiniin ja kiinnitä 2: lla 4G x 6 mm: n ruostumattomalla upotetulla itsekelausruuvilla.
- Kiinnitä kokoonpano paneelikehyksen pohjaan neljällä 4G x 6mm ruostumattomalla upotetulla itsekelausruuvilla.
Vaihe 5: Rig -johtojen liittäminen ohjaimeen
Edellisestä Instructable -ohjelmasta valmiit liitännät ovat 4 off 2P LDR -yhteydet ja 2 off 3P -liitännät servoista. Akku on väliaikainen, kunnes lataus on valmis. Käytä toistaiseksi 3,7 V LiPo -liitäntää, joka päättyy 2P DuPont -yhteyteen.
-
Aseta LDR -liitännät (ei napaisuutta) ylhäältä:
- Yläoikea
- Ylävasen
- Ala oikea
- Alhaalla vasemmalla
-
Aseta servoliitännät (signaalijohto vasemmalle) ylhäältä:
- Vaakasuora
- Pystysuora
- ODOTA VALMIS TESTAAMISEKSI SITTEN: Työnnä 3,7 V: n tasavirtajohto +ve ylhäälle, -ve alas.
Vaihe 6: Säätimen testaus
Kuten aiemmin todettiin, ohjelmistoa ei ole optimoitu Solar Charging -työnkulkuun. Sitä voidaan kuitenkin testata ja säätää käyttämällä luonnollisia (aurinko) ja epäluonnollisia valonlähteitä.
Jos haluat testata seurantaa kontrolloidussa ympäristössä, saattaa olla kätevää asettaa SLEEP MINUTES -arvo pienemmäksi (katso seuraava vaihe).
Vaihe 7: Konfigurointi I2C: n kautta konsolitulon avulla
Tämä selittää ohjaimen määrittämisen toisen MCU: n kautta, asetusten syöttämisen konsoli -ikkunaan.
- Lataa seuraava komentosarja D1M WIFI BLOCK (tai Wemos D1 Mini) -laitteeseen.
- Irrota USB tietokoneesta
-
PIN-LIITÄNNÄT: -ve (ohjain) => GND (D1M)+ve (ohjain) => 3V3 (D1M) SCL (ohjain) => D1 (D1M)
SDA (ohjain) => D2 (D1M)
- Käännä SPDT -kytkin asentoon CONFIG
- Liitä USB tietokoneeseen
- Käynnistä Arduino IDE -konsolista oikea COM -portti
- Varmista, että "Newline" ja "9600 baud" on valittu
- Komennot syötetään Lähetä tekstikenttään ja sen jälkeen Enter -näppäintä
- Komennot ovat muodossa Merkkitavu
- Jos toinen tavu (kolmas segmentti) ei sisälly, komentosarja lähettää 0 (nolla)
- Ole varovainen sarjatulon kanssa; tarkista syöttämäsi tiedot ennen Enter -näppäimen painamista. Jos olet lukittu (esimerkiksi muutat I2C -osoitteen arvoksi, jonka olet unohtanut), sinun on vilkkuttava ohjaimen laiteohjelmisto uudelleen.
Tuetut muunnelmat komennon ensimmäisessä merkissä ovat:
- E (Ota servoseuranta käyttöön) hyödyllinen pysäyttämään liike määrityksen aikana. Tämä syötetään käyttämällä: E 0
- D (Poista servoseuranta käytöstä) hyödyllinen automaattisen seurannan aloittamiseksi, jos et käynnistä laitetta uudelleen. Tämä syötetään käyttämällä: D 0
- G (Hae kokoonpanoarvo) lukee arvot EEPROMista ja IN -MEMORY: Tämä syötetään käyttämällä: G (indeksi on kelvollinen tavuarvot 0 - 13 ja 15)
- S (Aseta EEPROM -arvo) asettaa arvoiksi EEPROM, jotka ovat käytettävissä uudelleenkäynnistyksen jälkeen. Tämä syötetään käyttämällä: S (indeksi on kelvollinen tavuarvo 0-13, arvo on kelvollinen tavuarvo ja vaihtelee ominaisuuden mukaan)
Koodi on totuuspiste indekseille, mutta seuraavaa käytetään oppaana kelvollisille arvoille/kommenteille:
- I2C -OSOITE 0 - ohjaimen orjaosoite, isäntä tarvitsee tämän kommunikoidakseen ohjaimen kanssa (oletus 10)
- MINIMAALINEN PYSTYKULMA 1 - pystysuoran servokulman alaraja (oletus 10, alue 0-180)
- MAXIMUM Pystysuora kulma 2 - kulma pystysuora servo yläraja (oletus 170, alue 0-180)
- SENSITIVITY VERTICAL LDR 3 - Pystysuora LDR -lukumarginaali (oletus 20, alue 0-1024)
- PYSTYKULMA VAIHE 4 - kulma pystysuorat servoaskeleet jokaisella säädöllä (oletus 5, alue 1-20)
- MINIMAALI VAAKAKULMA 5 - kulma vaakasuora servo alaraja (oletus 10, alue 0-180)
- MAKSIMI VAAKA KULMA 6 - kulma vaakasuora servo yläraja (oletus 170, alue 0-180)
- SENSITIVITY HORIZONTAL LDR 7 - Vaakasuora LDR -lukumarginaali (oletus 20, alue 0-1024)
- VAAKA KULMAVAIHE 8 - vaakasuorat servovaiheet jokaisessa säädössä (oletus 5, alue 1-20)
- SLEEP MINUTES 9 - likimääräinen uniaika seurannan välillä (oletus 20, alue 1-255)
- PYSTYSUORA KULMA 10 - TULEVA KÄYTTÖ - pystykulma, johon palataan auringon laskiessa
- VAAKA KÄYTTÖKULMA 11 - TULEVA KÄYTTÖ - vaakasuora kulma, johon palataan auringon laskiessa
- DAWN INTENSITY 12 - TULEVA KÄYTTÖ - kaikkien LDR: ien vähimmäiskeskiarvo, joka käynnistää päivittäisen auringonseurannan
- DUSK INTENSITY 13 - TULEVA KÄYTTÖ - kaikkien LDR: ien vähimmäiskeskiarvo, joka käynnistää päivittäisen auringonseurannan
- EEPROM -ARVOJEN LOPPU MERKKI 14 - ARVO EI KÄYTETTY
- CURRENT INTENSITY 15 - nykyinen keskimääräinen prosenttiosuus valon voimakkuudesta
- MUISTIIN LIITTYVIEN ARVOJEN LOPPU MERKKI 16 - ARVO EI KÄYTETTY.
Sieppaa sarjatulon (näppäimistötulo konsoli -ikkunassa) ja välittää sen I2C -orjalle muodossa char, tavu, tavu
#sisältää |
#defineI2C_MSG_IN_SIZE2 |
#defineI2C_MSG_OUT_SIZE3 |
#defineI2C_SLAVE_ADDRESS10 |
boolean _newData = epätosi; |
const tavu _numChars = 32; |
char _receivedChars [_numChars]; // matriisi vastaanotetun datan tallentamiseksi |
voidsetup () { |
Sarja.alku (9600); |
Wire.begin (D2, D1); |
viive (5000); |
} |
voidloop () { |
recvWithEndMarker (); |
parseSendCommands (); |
} |
voidrecvWithEndMarker () { |
staattinen tavu ndx = 0; |
char endMarker = '\ n'; |
char rc; |
while (Serial.available ()> 0 && _newData == false) { |
rc = Serial.read (); |
jos (rc! = endMarker) { |
_receivedChars [ndx] = rc; |
ndx ++; |
jos (ndx> = _numChars) { |
ndx = _numerohahmot - 1; |
} |
} muuta { |
_receivedChars [ndx] = '\ 0'; // lopettaa merkkijono |
ndx = 0; |
_newData = totta; |
} |
} |
} |
voidparseSendCommands () { |
if (_newData == true) { |
constchar delim [2] = ""; |
char *-merkki; |
merkki = strtok (_receivedChars, delim); |
char cmd = _saanutChars [0]; |
tavuindeksi = 0; |
tavun arvo = 0; |
int i = 0; |
while (merkki! = NULL) { |
//Serial.println(token); |
i ++; |
kytkin (i) { |
tapaus 1: |
merkki = strtok (NULL, delim); |
indeksi = atoi (merkki); |
tauko; |
tapaus 2: |
merkki = strtok (NULL, delim); |
jos (merkki! = NULL) { |
arvo = atoi (merkki); |
} |
tauko; |
oletus: |
merkki = NULL; |
} |
} |
sendCmd (cmd, indeksi, arvo); |
_newData = epätosi; |
} |
} |
voidsendCmd (char cmd, tavuindeksi, tavuarvo) { |
Sarja.println ("-----"); |
Serial.println ("Lähetyskomento:"); |
Serial.println ("\ t" + merkkijono (cmd) + "" + merkkijono (hakemisto) + "" + merkkijono (arvo)); |
Sarja.println ("-----"); |
Wire.beginTransmission (I2C_SLAVE_ADDRESS); // lähettää laitteelle |
Wire.write (cmd); // lähettää merkin |
Wire.write (hakemisto); // lähettää yhden tavun |
Wire.write (arvo); // lähettää yhden tavun |
Wire.endTransmission (); |
tavuvaste = 0; |
bool hadResponse = epätosi; |
jos (cmd == 'G') { |
Wire.requestFrom (I2C_SLAVE_ADDRESS, 1); |
kun taas (Wire.available ()) // orja voi lähettää vähemmän kuin pyydetty |
{ |
hadResponse = totta; |
vastaus = Wire.read (); |
} |
jos (hadResponse == true) { |
Serial.println ("Vastauksen saaminen:"); |
Serial.println (vastaus); |
}muu{ |
Serial.println ("Ei vastausta, tarkista osoite/yhteys"); |
} |
} |
} |
Näytä rawd1m_serial_input_i2c_char_byte_byte_v0.1.ino isännöi GitHub ❤
Vaihe 8: Seuraavat vaiheet
Tarkista säännöllisesti, onko ohjelmistossa/laitteistossa muutoksia.
Muokkaa ohjelmistoa/laitteistoa tarpeidesi mukaan.
Kommentoi mahdollisia pyyntöjä/optimointeja.
Suositeltava:
LoRa GPS Tracker -opetusohjelma - LoRaWAN Dragino- ja TTN -tekniikoilla: 7 vaihetta
LoRa GPS Tracker -opetusohjelma | LoRaWAN Dragino ja TTN: Hei, mitä kuuluu, kaverit! Akarsh täällä CETechistä. Pari projektia taaksepäin katsoimme Draginon LoRaWAN -yhdyskäytävää. Yhdistimme eri solmut yhdyskäytävään ja lähetimme tietoja solmuista yhdyskäytävään käyttämällä TheThingsNetwork -palvelua
DIY Fitness Tracker -älykello oksimetrillä ja sykkeellä - Modulaariset elektroniset moduulit pienistä piireistä - Pienin pelihalli: 6 vaihetta
DIY Fitness Tracker -älykello oksimetrillä ja sykkeellä | Modulaariset elektroniset moduulit pienistä piireistä | Pienin pelihalli: Hei, mitä kuuluu, kaverit! Tänään meillä on mukana joitain anturimoduuleja, jotka ovat erittäin hyödyllisiä jokapäiväisessä elämässämme, mutta pienenä versiona itsestään. Nykyiset anturit ovat kooltaan hyvin pieniä verrattuna
Työpöydän COVID19 -seuranta kellolla! Raspberry Pi Powered Tracker: 6 vaihetta
Työpöydän COVID19 -seuranta kellolla! Raspberry Pi Powered Tracker: Tiedämme, että voimme kuolla milloin tahansa, jopa minä voin kuolla kirjoittaessani tätä viestiä, loppujen lopuksi minä, sinä, me kaikki olemme kuolevaisia. Koko maailma järisi COVID19 -pandemian vuoksi. Tiedämme, miten tämä voidaan estää, mutta hei! osaamme rukoilla ja miksi rukoilla, osaammeko
Kuinka tehdä koronavirus COVID 19 Live Data Tracker ESP8266: n, sähköisen paperin näytön avulla: 7 vaihetta
Kuinka tehdä koronavirus COVID 19 Live Data Tracker ESP8266: n, sähköisen paperin näytön avulla: 1
Herra Tracker: 3 vaihetta
Herra Tracker: Solar tracker tarjoaa 30% enemmän sähköä kuin tavallinen aurinkopaneeli Hei Haluatko tehdä oman Solar Trackerin? Tässä on muutamia helppoja vaiheita, joilla voit tehdä oman aurinkoseurannan.Materiaali vaaditaan. p