Мазмуну:

Smart Buoy [GPS, Radio (NRF24) жана SD Card Module]: 5 кадам (Сүрөттөр менен)
Smart Buoy [GPS, Radio (NRF24) жана SD Card Module]: 5 кадам (Сүрөттөр менен)

Video: Smart Buoy [GPS, Radio (NRF24) жана SD Card Module]: 5 кадам (Сүрөттөр менен)

Video: Smart Buoy [GPS, Radio (NRF24) жана SD Card Module]: 5 кадам (Сүрөттөр менен)
Video: Smart Buoy Final Project 2024, Ноябрь
Anonim
Image
Image

Бул Smart Buoy сериясы биздин (амбициялуу) даяр продукцияларды колдонуу менен деңиз жөнүндө маанилүү өлчөөлөрдү ала турган илимий бука куруу аракетибизди көрсөтөт. Бул төртөөнүн экиден үйрөткүчү - жаңыртылган экениңизди текшериңиз жана эгер сизге долбоор менен тез таанышуу керек болсо, биздин кыскача баяндаманы карап көрүңүз.

1 -бөлүк: Толкунду жана температураны өлчөө

Бул үйрөткүчтө биз сизге GPS маалыматын кантип алууну, аны SD картка сактоону жана радионун жардамы менен бир жерге жөнөтүүнү көрсөтөбүз.

Биз муну деңизде сүзүүчү Буубуздун жайгашкан жерине көз салып туруу үчүн жасадык. Радио биз аны алыстан көрө алабыз дегенди билдирет жана SD карта кокусунан бир нерсе бузулуп, адашып кетет дегенди билдирет, биз пландаштырылбаган экскурсия учурунда чогулткан маалыматтарды түшүрө алабыз - эгерде биз аны ала алсак!

Жабдуулар

GPS модулу - Amazon

SD карта модулу - Amazon

SD карта - Amazon

2 X радио модулдары (NRF24L01+) - Amazon

2 X Arduino - Амазонка

1 -кадам: GPS маалыматын алуу

GPS маалыматын радио аркылуу жөнөтүү
GPS маалыматын радио аркылуу жөнөтүү

Акылдуу сүзүүчү деңизде отурганда сенсордук өлчөөлөрдү жүргүзөт, анын ичинде GPS жайгашкан жери жана датасы. Схеманы карап көрүңүз, ал схеманы кантип орнотконубузду көрсөтөт. GPS модулу сериялык туташуу аркылуу байланышат, андыктан биз Arduino программалык сериялык китепканасын жана кичинекей GPS китепканасын колдонобуз. Бул китепканалар баарын супер жөнөкөй кылат. Келгиле, сизди код аркылуу карап көрөлү …

#кошуу

#include // TinyGPS ++ объектиси TinyGPSPlus gps; // SoftwareSerial ss GPS түзмөгүнө сериялык туташуу (4, 3); struct dataStruct {кош кеңдик; кош бойлуулук; кол коюлбаган узак дата; кол коюлбаган көп убакыт; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); }}} жараксыз getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } else {Serial.println ("Жараксыз жайгашкан жер"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Жараксыз күн"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Жараксыз убакыт"); }} void printResults () {Serial.print ("Жайгашкан жери:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Дата:"); Serial.print (gpsData.date); Serial.print ("Убакыт:"); Serial.print (gpsData.time); Serial.println (); }

(Бул код үчүн видеону https://www.youtube.com/embed/xz1ix76U28E дарегинен караңыз)

2 -кадам: GPS маалыматын радио аркылуу жөнөтүү

GPS маалыматын радио аркылуу жөнөтүү
GPS маалыматын радио аркылуу жөнөтүү

Буя деңизде, өлчөөлөрдү алып жатат дейли, бирок биз буттарыбызды ным кылбай же буйду жээкке чыгарбастан көргүбүз келет. Алыстан өлчөөлөрдү алуу үчүн, биз байланыштын эки тарабында Arduino менен туташкан радио модулду колдонобуз. Келечекте биз кабыл алуучу тараптагы Arduino-ны малина пи менен алмаштырабыз. Радио эки интерфейс менен бирдей иштейт, ошондуктан аларды алмаштыруу абдан жөнөкөй.

Радио модулу SPI аркылуу байланышат, ал I2Cге караганда дагы бир нече байланышты талап кылат, бирок NRF24 китепканасынан улам дагы эле колдонууга оңой. Сенсорду өлчөө үчүн GPS модулун колдонуп, биз анын маалыматын бир Arduinoдон экинчисине өткөрүп беребиз. Биз GPS жана радио модулду Arduino менен, экинчи жагынан радио модулу бар Arduino менен байланыштырабыз - схеманы карап көрүңүз.

Бергич

#кошуу

#кошуу #кошуу #кошуу #кошуу TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 радиосу (8, 7); // CE, CSN struct dataStruct {кош кеңдик; кош бойлуулук; кол коюлбаган узак дата; кол коюлбаган көп убакыт; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Радиону жөндөө"); // Орнотуу берүүчү радио radio.begin (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Жөнөтүлө баштады"); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); radio.write (& gpsData, sizeof (gpsData)); }}} жараксыз getInfo () {if (gps.location.isValid ()) {gpsData.longitude = gps.location.lng (); gpsData.latitude = gps.location.lat (); } else {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } башка {gpsData.date = 0; } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } башка {gpsData.time = 0; }}

АЛУУЧУ

#кошуу

#кошуу #кошуу RF24 радиосу (8, 7); // CE, CSN struct dataStruct {кош кеңдик; кош бойлуулук; кол коюлбаган узак дата; кол коюлбаган көп убакыт; } gpsData; void setup () {Serial.begin (115200); // Радио кабыл алгычты орнотуу.begin (); radio.openReadingPipe (1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.startListening (); radio.enableDynamicPayloads (); radio.powerUp (); } void loop () {if (radio.available ()) {radio.read (& gpsData, sizeof (gpsData)); Serial.print ("Жайгашкан жери:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Дата:"); Serial.print (gpsData.date); Serial.print ("Убакыт:"); Serial.print (gpsData.time); Serial.println ();}}

(Бул код үчүн видеону https://www.youtube.com/embed/xz1ix76U28E дарегинен караңыз)

3 -кадам: SD карта модулун колдонуу менен маалыматтарды сактоо

SD карта модулун колдонуу менен маалыматтарды сактоо
SD карта модулун колдонуу менен маалыматтарды сактоо

Радио модуль абдан ишенимдүү, бирок кээде кабыл алуучу тарапта электр жарыгы өчүп калса же радио диапазондон чыгып кетсе, күтүлбөгөн кырдаалдар планы керек болот. Биздин күтүлбөгөн кырдаалдар планыбыз - бул биз чогулткан маалыматты сактоого мүмкүндүк берген SD карта модулу. Чогултулган маалыматтын саны анча чоң эмес, андыктан кичинекей SD карта да бир күндүк маалыматты оңой сактай алат.

#кошуу

#кошуу #кошуу #кошуу TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {кош кеңдик; кош бойлуулук; кол коюлбаган узак дата; кол коюлбаган көп убакыт; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("Карта ишке ашпай калды, же жок"); кайтуу; } Serial.println ("карта инициализацияланган."); FileFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Кеңдик, Узундук, Күн, Убакыт"); dataFile.close (); } else {Serial.println ("жок файлды ача албайт"); }} void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); saveInfo (); }}} жараксыз getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } else {Serial.println ("Жараксыз жайгашкан жер"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Жараксыз күн"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Жараксыз убакыт"); }} void printResults () {Serial.print ("Жайгашкан жери:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Date:"); Serial.print (gpsData.date); Serial.print ("Убакыт:"); Serial.print (gpsData.time); Serial.println (); } void saveInfo () {File dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.print (gpsData.latitude); dataFile.print (","); dataFile.print (gpsData.longitude); dataFile.print (","); dataFile.print (gpsData.date); dataFile.print (","); dataFile.println (gpsData.time); dataFile.close (); } else {Serial.println ("жок файлдар жок"); }}

(Биз бул код аркылуу https://www.youtube.com/embed/xz1ix76U28E видеосунда сүйлөшөбүз)

4 -кадам: GPS маалыматын жөнөтүү жана сактоо

GPS маалыматын жөнөтүү жана сактоо
GPS маалыматын жөнөтүү жана сактоо
GPS маалыматын жөнөтүү жана сактоо
GPS маалыматын жөнөтүү жана сактоо

5 -кадам: рахмат

Рахмат!
Рахмат!

Кат таратуу кызматынын тизмесине кол коет!

1 -бөлүк: Wave жана Температураны өлчөө

2 -бөлүк: GPS NRF24 радио жана SD карта

3 -бөлүк: Буукка кубаттуулукту пландаштыруу

4 -бөлүк: Буйрукту жайылтуу

Сунушталууда: